diff --git a/.gitattributes b/.gitattributes index 81514fe..0c9fb29 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,6 +1,8 @@ calcit.cirru -diff linguist-generated yarn.lock -diff linguist-generated +.pnp.cjs -diff linguist-generated +.pnp.loader.mjs -diff linguist-generated Agents.md -diff linguist-generated llms/*.md -diff linguist-generated diff --git a/.github/workflows/upload.yaml b/.github/workflows/upload.yaml index bc1e1e1..b95509d 100644 --- a/.github/workflows/upload.yaml +++ b/.github/workflows/upload.yaml @@ -12,10 +12,15 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v6 with: - node-version: 20 - cache: yarn + node-version: 24 + + - name: Enable Corepack + run: | + corepack enable + corepack prepare yarn@4.12.0 --activate + yarn --version - uses: calcit-lang/setup-cr@0.0.8 diff --git a/.gitignore b/.gitignore index 4788c7a..990b394 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,5 @@ node_modules/ dist/ .DS_Store + +.yarn diff --git a/.pnp.cjs b/.pnp.cjs new file mode 100755 index 0000000..8213f4c --- /dev/null +++ b/.pnp.cjs @@ -0,0 +1,9316 @@ +#!/usr/bin/env node +/* eslint-disable */ +// @ts-nocheck +"use strict"; + +const RAW_RUNTIME_STATE = +'{\ + "__info": [\ + "This file is automatically generated. Do not touch it, or risk",\ + "your modifications being lost."\ + ],\ + "dependencyTreeRoots": [\ + {\ + "name": "root-workspace-0b6124",\ + "reference": "workspace:."\ + }\ + ],\ + "enableTopLevelFallback": true,\ + "ignorePatternData": "(^(?:\\\\.yarn\\\\/sdks(?:\\\\/(?!\\\\.{1,2}(?:\\\\/|$))(?:(?:(?!(?:^|\\\\/)\\\\.{1,2}(?:\\\\/|$)).)*?)|$))$)",\ + "pnpZipBackend": "libzip",\ + "fallbackExclusionList": [\ + ["root-workspace-0b6124", ["workspace:."]]\ + ],\ + "fallbackPool": [\ + ],\ + "packageRegistryData": [\ + [null, [\ + [null, {\ + "packageLocation": "./",\ + "packageDependencies": [\ + ["@calcit/procs", "npm:0.12.0"],\ + ["@calcit/std", "npm:0.0.3"],\ + ["bottom-tip", "npm:0.1.5"],\ + ["root-workspace-0b6124", "workspace:."],\ + ["vite", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:7.3.0"]\ + ],\ + "linkType": "SOFT"\ + }]\ + ]],\ + ["@calcit/procs", [\ + ["npm:0.12.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@calcit-procs-npm-0.12.0-39d59bd72a-10c0.zip/node_modules/@calcit/procs/",\ + "packageDependencies": [\ + ["@calcit/procs", "npm:0.12.0"],\ + ["@calcit/ternary-tree", "npm:0.0.25"],\ + ["@cirru/parser.ts", "npm:0.0.8"],\ + ["@cirru/writer.ts", "npm:0.1.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@calcit/std", [\ + ["npm:0.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/@calcit-std-npm-0.0.3-540befb9a6-10c0.zip/node_modules/@calcit/std/",\ + "packageDependencies": [\ + ["@calcit/std", "npm:0.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@calcit/ternary-tree", [\ + ["npm:0.0.25", {\ + "packageLocation": "../../../.yarn/berry/cache/@calcit-ternary-tree-npm-0.0.25-9fe008f777-10c0.zip/node_modules/@calcit/ternary-tree/",\ + "packageDependencies": [\ + ["@calcit/ternary-tree", "npm:0.0.25"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@cirru/parser.ts", [\ + ["npm:0.0.8", {\ + "packageLocation": "../../../.yarn/berry/cache/@cirru-parser.ts-npm-0.0.8-9b8400220e-10c0.zip/node_modules/@cirru/parser.ts/",\ + "packageDependencies": [\ + ["@cirru/parser.ts", "npm:0.0.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@cirru/writer.ts", [\ + ["npm:0.1.7", {\ + "packageLocation": "../../../.yarn/berry/cache/@cirru-writer.ts-npm-0.1.7-8af4bd8836-10c0.zip/node_modules/@cirru/writer.ts/",\ + "packageDependencies": [\ + ["@cirru/writer.ts", "npm:0.1.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/aix-ppc64", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-aix-ppc64-npm-0.27.2-345b18ab38/node_modules/@esbuild/aix-ppc64/",\ + "packageDependencies": [\ + ["@esbuild/aix-ppc64", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/android-arm", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-android-arm-npm-0.27.2-b9ce8adb94/node_modules/@esbuild/android-arm/",\ + "packageDependencies": [\ + ["@esbuild/android-arm", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/android-arm64", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-android-arm64-npm-0.27.2-15df2cdd67/node_modules/@esbuild/android-arm64/",\ + "packageDependencies": [\ + ["@esbuild/android-arm64", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/android-x64", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-android-x64-npm-0.27.2-66d99a6933/node_modules/@esbuild/android-x64/",\ + "packageDependencies": [\ + ["@esbuild/android-x64", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/darwin-arm64", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-darwin-arm64-npm-0.27.2-d675c4a521/node_modules/@esbuild/darwin-arm64/",\ + "packageDependencies": [\ + ["@esbuild/darwin-arm64", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/darwin-x64", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-darwin-x64-npm-0.27.2-ae63bf405f/node_modules/@esbuild/darwin-x64/",\ + "packageDependencies": [\ + ["@esbuild/darwin-x64", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/freebsd-arm64", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-freebsd-arm64-npm-0.27.2-e37daed3be/node_modules/@esbuild/freebsd-arm64/",\ + "packageDependencies": [\ + ["@esbuild/freebsd-arm64", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/freebsd-x64", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-freebsd-x64-npm-0.27.2-4cb2e19a78/node_modules/@esbuild/freebsd-x64/",\ + "packageDependencies": [\ + ["@esbuild/freebsd-x64", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/linux-arm", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-linux-arm-npm-0.27.2-43d77dd61a/node_modules/@esbuild/linux-arm/",\ + "packageDependencies": [\ + ["@esbuild/linux-arm", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/linux-arm64", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-linux-arm64-npm-0.27.2-bf1b0979ac/node_modules/@esbuild/linux-arm64/",\ + "packageDependencies": [\ + ["@esbuild/linux-arm64", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/linux-ia32", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-linux-ia32-npm-0.27.2-9e57150846/node_modules/@esbuild/linux-ia32/",\ + "packageDependencies": [\ + ["@esbuild/linux-ia32", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/linux-loong64", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-linux-loong64-npm-0.27.2-a322ec9c1d/node_modules/@esbuild/linux-loong64/",\ + "packageDependencies": [\ + ["@esbuild/linux-loong64", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/linux-mips64el", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-linux-mips64el-npm-0.27.2-9b26d4ee73/node_modules/@esbuild/linux-mips64el/",\ + "packageDependencies": [\ + ["@esbuild/linux-mips64el", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/linux-ppc64", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-linux-ppc64-npm-0.27.2-28d849768e/node_modules/@esbuild/linux-ppc64/",\ + "packageDependencies": [\ + ["@esbuild/linux-ppc64", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/linux-riscv64", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-linux-riscv64-npm-0.27.2-73c96cf77f/node_modules/@esbuild/linux-riscv64/",\ + "packageDependencies": [\ + ["@esbuild/linux-riscv64", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/linux-s390x", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-linux-s390x-npm-0.27.2-1b2065e648/node_modules/@esbuild/linux-s390x/",\ + "packageDependencies": [\ + ["@esbuild/linux-s390x", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/linux-x64", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-linux-x64-npm-0.27.2-11f1a3d9db/node_modules/@esbuild/linux-x64/",\ + "packageDependencies": [\ + ["@esbuild/linux-x64", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/netbsd-arm64", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-netbsd-arm64-npm-0.27.2-dd6c103966/node_modules/@esbuild/netbsd-arm64/",\ + "packageDependencies": [\ + ["@esbuild/netbsd-arm64", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/netbsd-x64", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-netbsd-x64-npm-0.27.2-1e03e8a7a5/node_modules/@esbuild/netbsd-x64/",\ + "packageDependencies": [\ + ["@esbuild/netbsd-x64", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/openbsd-arm64", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-openbsd-arm64-npm-0.27.2-1d7a76cae4/node_modules/@esbuild/openbsd-arm64/",\ + "packageDependencies": [\ + ["@esbuild/openbsd-arm64", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/openbsd-x64", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-openbsd-x64-npm-0.27.2-27238acba8/node_modules/@esbuild/openbsd-x64/",\ + "packageDependencies": [\ + ["@esbuild/openbsd-x64", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/openharmony-arm64", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-openharmony-arm64-npm-0.27.2-b815985320/node_modules/@esbuild/openharmony-arm64/",\ + "packageDependencies": [\ + ["@esbuild/openharmony-arm64", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/sunos-x64", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-sunos-x64-npm-0.27.2-fb3c4c523d/node_modules/@esbuild/sunos-x64/",\ + "packageDependencies": [\ + ["@esbuild/sunos-x64", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/win32-arm64", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-win32-arm64-npm-0.27.2-78a0e828ec/node_modules/@esbuild/win32-arm64/",\ + "packageDependencies": [\ + ["@esbuild/win32-arm64", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/win32-ia32", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-win32-ia32-npm-0.27.2-f7488076af/node_modules/@esbuild/win32-ia32/",\ + "packageDependencies": [\ + ["@esbuild/win32-ia32", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@esbuild/win32-x64", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-win32-x64-npm-0.27.2-fb03408001/node_modules/@esbuild/win32-x64/",\ + "packageDependencies": [\ + ["@esbuild/win32-x64", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@isaacs/balanced-match", [\ + ["npm:4.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@isaacs-balanced-match-npm-4.0.1-8965afafe6-10c0.zip/node_modules/@isaacs/balanced-match/",\ + "packageDependencies": [\ + ["@isaacs/balanced-match", "npm:4.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@isaacs/brace-expansion", [\ + ["npm:5.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@isaacs-brace-expansion-npm-5.0.0-754d3cb3f5-10c0.zip/node_modules/@isaacs/brace-expansion/",\ + "packageDependencies": [\ + ["@isaacs/balanced-match", "npm:4.0.1"],\ + ["@isaacs/brace-expansion", "npm:5.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@isaacs/fs-minipass", [\ + ["npm:4.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@isaacs-fs-minipass-npm-4.0.1-677026e841-10c0.zip/node_modules/@isaacs/fs-minipass/",\ + "packageDependencies": [\ + ["@isaacs/fs-minipass", "npm:4.0.1"],\ + ["minipass", "npm:7.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@npmcli/agent", [\ + ["npm:4.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@npmcli-agent-npm-4.0.0-502e5ae4f0-10c0.zip/node_modules/@npmcli/agent/",\ + "packageDependencies": [\ + ["@npmcli/agent", "npm:4.0.0"],\ + ["agent-base", "npm:7.1.4"],\ + ["http-proxy-agent", "npm:7.0.2"],\ + ["https-proxy-agent", "npm:7.0.6"],\ + ["lru-cache", "npm:11.2.5"],\ + ["socks-proxy-agent", "npm:8.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@npmcli/fs", [\ + ["npm:5.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@npmcli-fs-npm-5.0.0-9d737ae2f3-10c0.zip/node_modules/@npmcli/fs/",\ + "packageDependencies": [\ + ["@npmcli/fs", "npm:5.0.0"],\ + ["semver", "npm:7.7.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-android-arm-eabi", [\ + ["npm:4.54.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-android-arm-eabi-npm-4.54.0-5c987bc0f8/node_modules/@rollup/rollup-android-arm-eabi/",\ + "packageDependencies": [\ + ["@rollup/rollup-android-arm-eabi", "npm:4.54.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-android-arm64", [\ + ["npm:4.54.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-android-arm64-npm-4.54.0-e241a385d6/node_modules/@rollup/rollup-android-arm64/",\ + "packageDependencies": [\ + ["@rollup/rollup-android-arm64", "npm:4.54.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-darwin-arm64", [\ + ["npm:4.54.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-darwin-arm64-npm-4.54.0-d009a30342/node_modules/@rollup/rollup-darwin-arm64/",\ + "packageDependencies": [\ + ["@rollup/rollup-darwin-arm64", "npm:4.54.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-darwin-x64", [\ + ["npm:4.54.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-darwin-x64-npm-4.54.0-16524b986e/node_modules/@rollup/rollup-darwin-x64/",\ + "packageDependencies": [\ + ["@rollup/rollup-darwin-x64", "npm:4.54.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-freebsd-arm64", [\ + ["npm:4.54.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-freebsd-arm64-npm-4.54.0-e4f127efa2/node_modules/@rollup/rollup-freebsd-arm64/",\ + "packageDependencies": [\ + ["@rollup/rollup-freebsd-arm64", "npm:4.54.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-freebsd-x64", [\ + ["npm:4.54.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-freebsd-x64-npm-4.54.0-7536eb9474/node_modules/@rollup/rollup-freebsd-x64/",\ + "packageDependencies": [\ + ["@rollup/rollup-freebsd-x64", "npm:4.54.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-arm-gnueabihf", [\ + ["npm:4.54.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-arm-gnueabihf-npm-4.54.0-63328931bb/node_modules/@rollup/rollup-linux-arm-gnueabihf/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-arm-gnueabihf", "npm:4.54.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-arm-musleabihf", [\ + ["npm:4.54.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-arm-musleabihf-npm-4.54.0-c8e78f6a7d/node_modules/@rollup/rollup-linux-arm-musleabihf/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-arm-musleabihf", "npm:4.54.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-arm64-gnu", [\ + ["npm:4.54.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-arm64-gnu-npm-4.54.0-9b5636373e/node_modules/@rollup/rollup-linux-arm64-gnu/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-arm64-gnu", "npm:4.54.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-arm64-musl", [\ + ["npm:4.54.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-arm64-musl-npm-4.54.0-a26520c963/node_modules/@rollup/rollup-linux-arm64-musl/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-arm64-musl", "npm:4.54.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-loong64-gnu", [\ + ["npm:4.54.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-loong64-gnu-npm-4.54.0-74f934ff03/node_modules/@rollup/rollup-linux-loong64-gnu/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-loong64-gnu", "npm:4.54.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-ppc64-gnu", [\ + ["npm:4.54.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-ppc64-gnu-npm-4.54.0-eabf73b6dc/node_modules/@rollup/rollup-linux-ppc64-gnu/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-ppc64-gnu", "npm:4.54.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-riscv64-gnu", [\ + ["npm:4.54.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-riscv64-gnu-npm-4.54.0-9e6355f649/node_modules/@rollup/rollup-linux-riscv64-gnu/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-riscv64-gnu", "npm:4.54.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-riscv64-musl", [\ + ["npm:4.54.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-riscv64-musl-npm-4.54.0-d0d77f7451/node_modules/@rollup/rollup-linux-riscv64-musl/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-riscv64-musl", "npm:4.54.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-s390x-gnu", [\ + ["npm:4.54.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-s390x-gnu-npm-4.54.0-846557d0d4/node_modules/@rollup/rollup-linux-s390x-gnu/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-s390x-gnu", "npm:4.54.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-x64-gnu", [\ + ["npm:4.54.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-x64-gnu-npm-4.54.0-a9c3b4c818/node_modules/@rollup/rollup-linux-x64-gnu/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-x64-gnu", "npm:4.54.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-x64-musl", [\ + ["npm:4.54.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-x64-musl-npm-4.54.0-d360cc585a/node_modules/@rollup/rollup-linux-x64-musl/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-x64-musl", "npm:4.54.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-openharmony-arm64", [\ + ["npm:4.54.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-openharmony-arm64-npm-4.54.0-b8650f377b/node_modules/@rollup/rollup-openharmony-arm64/",\ + "packageDependencies": [\ + ["@rollup/rollup-openharmony-arm64", "npm:4.54.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-win32-arm64-msvc", [\ + ["npm:4.54.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-win32-arm64-msvc-npm-4.54.0-904aed0643/node_modules/@rollup/rollup-win32-arm64-msvc/",\ + "packageDependencies": [\ + ["@rollup/rollup-win32-arm64-msvc", "npm:4.54.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-win32-ia32-msvc", [\ + ["npm:4.54.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-win32-ia32-msvc-npm-4.54.0-7a6f5aade6/node_modules/@rollup/rollup-win32-ia32-msvc/",\ + "packageDependencies": [\ + ["@rollup/rollup-win32-ia32-msvc", "npm:4.54.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-win32-x64-gnu", [\ + ["npm:4.54.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-win32-x64-gnu-npm-4.54.0-d0ee0ef445/node_modules/@rollup/rollup-win32-x64-gnu/",\ + "packageDependencies": [\ + ["@rollup/rollup-win32-x64-gnu", "npm:4.54.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-win32-x64-msvc", [\ + ["npm:4.54.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-win32-x64-msvc-npm-4.54.0-567c4adf25/node_modules/@rollup/rollup-win32-x64-msvc/",\ + "packageDependencies": [\ + ["@rollup/rollup-win32-x64-msvc", "npm:4.54.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/estree", [\ + ["npm:1.0.8", {\ + "packageLocation": "../../../.yarn/berry/cache/@types-estree-npm-1.0.8-2195bac6d6-10c0.zip/node_modules/@types/estree/",\ + "packageDependencies": [\ + ["@types/estree", "npm:1.0.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["abbrev", [\ + ["npm:4.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/abbrev-npm-4.0.0-7d848a1ef0-10c0.zip/node_modules/abbrev/",\ + "packageDependencies": [\ + ["abbrev", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["agent-base", [\ + ["npm:7.1.4", {\ + "packageLocation": "../../../.yarn/berry/cache/agent-base-npm-7.1.4-cb8b4604d5-10c0.zip/node_modules/agent-base/",\ + "packageDependencies": [\ + ["agent-base", "npm:7.1.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["bottom-tip", [\ + ["npm:0.1.5", {\ + "packageLocation": "../../../.yarn/berry/cache/bottom-tip-npm-0.1.5-a08d7463a4-10c0.zip/node_modules/bottom-tip/",\ + "packageDependencies": [\ + ["bottom-tip", "npm:0.1.5"],\ + ["nanoid", "npm:4.0.2"],\ + ["virtual-dom", "npm:2.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["browser-split", [\ + ["npm:0.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/browser-split-npm-0.0.1-3bb65062e4-10c0.zip/node_modules/browser-split/",\ + "packageDependencies": [\ + ["browser-split", "npm:0.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["cacache", [\ + ["npm:20.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/cacache-npm-20.0.3-5f244d5bdd-10c0.zip/node_modules/cacache/",\ + "packageDependencies": [\ + ["@npmcli/fs", "npm:5.0.0"],\ + ["cacache", "npm:20.0.3"],\ + ["fs-minipass", "npm:3.0.3"],\ + ["glob", "npm:13.0.0"],\ + ["lru-cache", "npm:11.2.5"],\ + ["minipass", "npm:7.1.2"],\ + ["minipass-collect", "npm:2.0.1"],\ + ["minipass-flush", "npm:1.0.5"],\ + ["minipass-pipeline", "npm:1.2.4"],\ + ["p-map", "npm:7.0.4"],\ + ["ssri", "npm:13.0.0"],\ + ["unique-filename", "npm:5.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["camelize", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/camelize-npm-1.0.1-d86ebe085a-10c0.zip/node_modules/camelize/",\ + "packageDependencies": [\ + ["camelize", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["chownr", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/chownr-npm-3.0.0-5275e85d25-10c0.zip/node_modules/chownr/",\ + "packageDependencies": [\ + ["chownr", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["debug", [\ + ["npm:4.4.3", {\ + "packageLocation": "../../../.yarn/berry/cache/debug-npm-4.4.3-0105c6123a-10c0.zip/node_modules/debug/",\ + "packageDependencies": [\ + ["debug", "npm:4.4.3"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:643ed7cc338bcf145a82d8b05b3bef6bcf150ca545df386225596f10ce53cc90b88b3ca83e348ade1ccea5f3f8e76c92d2f0e2ba544da60d40aff9921c56872d#npm:4.4.3", {\ + "packageLocation": "./.yarn/__virtual__/debug-virtual-5da9fc757d/4/.yarn/berry/cache/debug-npm-4.4.3-0105c6123a-10c0.zip/node_modules/debug/",\ + "packageDependencies": [\ + ["@types/supports-color", null],\ + ["debug", "virtual:643ed7cc338bcf145a82d8b05b3bef6bcf150ca545df386225596f10ce53cc90b88b3ca83e348ade1ccea5f3f8e76c92d2f0e2ba544da60d40aff9921c56872d#npm:4.4.3"],\ + ["ms", "npm:2.1.3"],\ + ["supports-color", null]\ + ],\ + "packagePeers": [\ + "@types/supports-color",\ + "supports-color"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["dom-walk", [\ + ["npm:0.1.2", {\ + "packageLocation": "../../../.yarn/berry/cache/dom-walk-npm-0.1.2-7d20a1a8d8-10c0.zip/node_modules/dom-walk/",\ + "packageDependencies": [\ + ["dom-walk", "npm:0.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["encoding", [\ + ["npm:0.1.13", {\ + "packageLocation": "../../../.yarn/berry/cache/encoding-npm-0.1.13-82a1837d30-10c0.zip/node_modules/encoding/",\ + "packageDependencies": [\ + ["encoding", "npm:0.1.13"],\ + ["iconv-lite", "npm:0.6.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["env-paths", [\ + ["npm:2.2.1", {\ + "packageLocation": "../../../.yarn/berry/cache/env-paths-npm-2.2.1-7c7577428c-10c0.zip/node_modules/env-paths/",\ + "packageDependencies": [\ + ["env-paths", "npm:2.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["err-code", [\ + ["npm:2.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/err-code-npm-2.0.3-082e0ff9a7-10c0.zip/node_modules/err-code/",\ + "packageDependencies": [\ + ["err-code", "npm:2.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["error", [\ + ["npm:4.4.0", {\ + "packageLocation": "../../../.yarn/berry/cache/error-npm-4.4.0-dc2d401d15-10c0.zip/node_modules/error/",\ + "packageDependencies": [\ + ["camelize", "npm:1.0.1"],\ + ["error", "npm:4.4.0"],\ + ["string-template", "npm:0.2.1"],\ + ["xtend", "npm:4.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["esbuild", [\ + ["npm:0.27.2", {\ + "packageLocation": "./.yarn/unplugged/esbuild-npm-0.27.2-7789e62c6d/node_modules/esbuild/",\ + "packageDependencies": [\ + ["@esbuild/aix-ppc64", "npm:0.27.2"],\ + ["@esbuild/android-arm", "npm:0.27.2"],\ + ["@esbuild/android-arm64", "npm:0.27.2"],\ + ["@esbuild/android-x64", "npm:0.27.2"],\ + ["@esbuild/darwin-arm64", "npm:0.27.2"],\ + ["@esbuild/darwin-x64", "npm:0.27.2"],\ + ["@esbuild/freebsd-arm64", "npm:0.27.2"],\ + ["@esbuild/freebsd-x64", "npm:0.27.2"],\ + ["@esbuild/linux-arm", "npm:0.27.2"],\ + ["@esbuild/linux-arm64", "npm:0.27.2"],\ + ["@esbuild/linux-ia32", "npm:0.27.2"],\ + ["@esbuild/linux-loong64", "npm:0.27.2"],\ + ["@esbuild/linux-mips64el", "npm:0.27.2"],\ + ["@esbuild/linux-ppc64", "npm:0.27.2"],\ + ["@esbuild/linux-riscv64", "npm:0.27.2"],\ + ["@esbuild/linux-s390x", "npm:0.27.2"],\ + ["@esbuild/linux-x64", "npm:0.27.2"],\ + ["@esbuild/netbsd-arm64", "npm:0.27.2"],\ + ["@esbuild/netbsd-x64", "npm:0.27.2"],\ + ["@esbuild/openbsd-arm64", "npm:0.27.2"],\ + ["@esbuild/openbsd-x64", "npm:0.27.2"],\ + ["@esbuild/openharmony-arm64", "npm:0.27.2"],\ + ["@esbuild/sunos-x64", "npm:0.27.2"],\ + ["@esbuild/win32-arm64", "npm:0.27.2"],\ + ["@esbuild/win32-ia32", "npm:0.27.2"],\ + ["@esbuild/win32-x64", "npm:0.27.2"],\ + ["esbuild", "npm:0.27.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ev-store", [\ + ["npm:7.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/ev-store-npm-7.0.0-1ae84fd275-10c0.zip/node_modules/ev-store/",\ + "packageDependencies": [\ + ["ev-store", "npm:7.0.0"],\ + ["individual", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["exponential-backoff", [\ + ["npm:3.1.3", {\ + "packageLocation": "../../../.yarn/berry/cache/exponential-backoff-npm-3.1.3-28be78d98e-10c0.zip/node_modules/exponential-backoff/",\ + "packageDependencies": [\ + ["exponential-backoff", "npm:3.1.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fdir", [\ + ["npm:6.5.0", {\ + "packageLocation": "../../../.yarn/berry/cache/fdir-npm-6.5.0-8814a0dec7-10c0.zip/node_modules/fdir/",\ + "packageDependencies": [\ + ["fdir", "npm:6.5.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:0e783aadbd2b4b8e6f6056033c0b290501892d23bc7c5dad5477e00e48ad8bd3e4434c3962a52dd75a58e06dbb7218094a494bac954ef2f7f6fdb65d9717e5f4#npm:6.5.0", {\ + "packageLocation": "./.yarn/__virtual__/fdir-virtual-abd4ab2082/4/.yarn/berry/cache/fdir-npm-6.5.0-8814a0dec7-10c0.zip/node_modules/fdir/",\ + "packageDependencies": [\ + ["@types/picomatch", null],\ + ["fdir", "virtual:0e783aadbd2b4b8e6f6056033c0b290501892d23bc7c5dad5477e00e48ad8bd3e4434c3962a52dd75a58e06dbb7218094a494bac954ef2f7f6fdb65d9717e5f4#npm:6.5.0"],\ + ["picomatch", "npm:4.0.3"]\ + ],\ + "packagePeers": [\ + "@types/picomatch",\ + "picomatch"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fs-minipass", [\ + ["npm:3.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/fs-minipass-npm-3.0.3-d148d6ac19-10c0.zip/node_modules/fs-minipass/",\ + "packageDependencies": [\ + ["fs-minipass", "npm:3.0.3"],\ + ["minipass", "npm:7.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fsevents", [\ + ["patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1", {\ + "packageLocation": "./.yarn/unplugged/fsevents-patch-6b67494872/node_modules/fsevents/",\ + "packageDependencies": [\ + ["fsevents", "patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1"],\ + ["node-gyp", "npm:12.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["glob", [\ + ["npm:13.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/glob-npm-13.0.0-8e50143ca8-10c0.zip/node_modules/glob/",\ + "packageDependencies": [\ + ["glob", "npm:13.0.0"],\ + ["minimatch", "npm:10.1.1"],\ + ["minipass", "npm:7.1.2"],\ + ["path-scurry", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["global", [\ + ["npm:4.4.0", {\ + "packageLocation": "../../../.yarn/berry/cache/global-npm-4.4.0-888ee8033d-10c0.zip/node_modules/global/",\ + "packageDependencies": [\ + ["global", "npm:4.4.0"],\ + ["min-document", "npm:2.19.2"],\ + ["process", "npm:0.11.10"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["graceful-fs", [\ + ["npm:4.2.11", {\ + "packageLocation": "../../../.yarn/berry/cache/graceful-fs-npm-4.2.11-24bb648a68-10c0.zip/node_modules/graceful-fs/",\ + "packageDependencies": [\ + ["graceful-fs", "npm:4.2.11"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["http-cache-semantics", [\ + ["npm:4.2.0", {\ + "packageLocation": "../../../.yarn/berry/cache/http-cache-semantics-npm-4.2.0-fadacfb3ad-10c0.zip/node_modules/http-cache-semantics/",\ + "packageDependencies": [\ + ["http-cache-semantics", "npm:4.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["http-proxy-agent", [\ + ["npm:7.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/http-proxy-agent-npm-7.0.2-643ed7cc33-10c0.zip/node_modules/http-proxy-agent/",\ + "packageDependencies": [\ + ["agent-base", "npm:7.1.4"],\ + ["debug", "virtual:643ed7cc338bcf145a82d8b05b3bef6bcf150ca545df386225596f10ce53cc90b88b3ca83e348ade1ccea5f3f8e76c92d2f0e2ba544da60d40aff9921c56872d#npm:4.4.3"],\ + ["http-proxy-agent", "npm:7.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["https-proxy-agent", [\ + ["npm:7.0.6", {\ + "packageLocation": "../../../.yarn/berry/cache/https-proxy-agent-npm-7.0.6-27a95c2690-10c0.zip/node_modules/https-proxy-agent/",\ + "packageDependencies": [\ + ["agent-base", "npm:7.1.4"],\ + ["debug", "virtual:643ed7cc338bcf145a82d8b05b3bef6bcf150ca545df386225596f10ce53cc90b88b3ca83e348ade1ccea5f3f8e76c92d2f0e2ba544da60d40aff9921c56872d#npm:4.4.3"],\ + ["https-proxy-agent", "npm:7.0.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["iconv-lite", [\ + ["npm:0.6.3", {\ + "packageLocation": "../../../.yarn/berry/cache/iconv-lite-npm-0.6.3-24b8aae27e-10c0.zip/node_modules/iconv-lite/",\ + "packageDependencies": [\ + ["iconv-lite", "npm:0.6.3"],\ + ["safer-buffer", "npm:2.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["imurmurhash", [\ + ["npm:0.1.4", {\ + "packageLocation": "../../../.yarn/berry/cache/imurmurhash-npm-0.1.4-610c5068a0-10c0.zip/node_modules/imurmurhash/",\ + "packageDependencies": [\ + ["imurmurhash", "npm:0.1.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["individual", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/individual-npm-3.0.0-783c0f5e37-10c0.zip/node_modules/individual/",\ + "packageDependencies": [\ + ["individual", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ip-address", [\ + ["npm:10.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/ip-address-npm-10.1.0-d5d5693401-10c0.zip/node_modules/ip-address/",\ + "packageDependencies": [\ + ["ip-address", "npm:10.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-object", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/is-object-npm-1.0.2-f72f6facf4-10c0.zip/node_modules/is-object/",\ + "packageDependencies": [\ + ["is-object", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["isexe", [\ + ["npm:3.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/isexe-npm-3.1.1-9c0061eead-10c0.zip/node_modules/isexe/",\ + "packageDependencies": [\ + ["isexe", "npm:3.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["lru-cache", [\ + ["npm:11.2.5", {\ + "packageLocation": "../../../.yarn/berry/cache/lru-cache-npm-11.2.5-a56eb40aef-10c0.zip/node_modules/lru-cache/",\ + "packageDependencies": [\ + ["lru-cache", "npm:11.2.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["make-fetch-happen", [\ + ["npm:15.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/make-fetch-happen-npm-15.0.3-10a832fcad-10c0.zip/node_modules/make-fetch-happen/",\ + "packageDependencies": [\ + ["@npmcli/agent", "npm:4.0.0"],\ + ["cacache", "npm:20.0.3"],\ + ["http-cache-semantics", "npm:4.2.0"],\ + ["make-fetch-happen", "npm:15.0.3"],\ + ["minipass", "npm:7.1.2"],\ + ["minipass-fetch", "npm:5.0.0"],\ + ["minipass-flush", "npm:1.0.5"],\ + ["minipass-pipeline", "npm:1.2.4"],\ + ["negotiator", "npm:1.0.0"],\ + ["proc-log", "npm:6.1.0"],\ + ["promise-retry", "npm:2.0.1"],\ + ["ssri", "npm:13.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["min-document", [\ + ["npm:2.19.2", {\ + "packageLocation": "../../../.yarn/berry/cache/min-document-npm-2.19.2-3ed02fe99d-10c0.zip/node_modules/min-document/",\ + "packageDependencies": [\ + ["dom-walk", "npm:0.1.2"],\ + ["min-document", "npm:2.19.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minimatch", [\ + ["npm:10.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/minimatch-npm-10.1.1-453db4ee1a-10c0.zip/node_modules/minimatch/",\ + "packageDependencies": [\ + ["@isaacs/brace-expansion", "npm:5.0.0"],\ + ["minimatch", "npm:10.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minipass", [\ + ["npm:3.3.6", {\ + "packageLocation": "../../../.yarn/berry/cache/minipass-npm-3.3.6-b8d93a945b-10c0.zip/node_modules/minipass/",\ + "packageDependencies": [\ + ["minipass", "npm:3.3.6"],\ + ["yallist", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:7.1.2", {\ + "packageLocation": "../../../.yarn/berry/cache/minipass-npm-7.1.2-3a5327d36d-10c0.zip/node_modules/minipass/",\ + "packageDependencies": [\ + ["minipass", "npm:7.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minipass-collect", [\ + ["npm:2.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/minipass-collect-npm-2.0.1-73d3907e40-10c0.zip/node_modules/minipass-collect/",\ + "packageDependencies": [\ + ["minipass", "npm:7.1.2"],\ + ["minipass-collect", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minipass-fetch", [\ + ["npm:5.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/minipass-fetch-npm-5.0.0-e53c2bae4c-10c0.zip/node_modules/minipass-fetch/",\ + "packageDependencies": [\ + ["encoding", "npm:0.1.13"],\ + ["minipass", "npm:7.1.2"],\ + ["minipass-fetch", "npm:5.0.0"],\ + ["minipass-sized", "npm:1.0.3"],\ + ["minizlib", "npm:3.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minipass-flush", [\ + ["npm:1.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/minipass-flush-npm-1.0.5-efe79d9826-10c0.zip/node_modules/minipass-flush/",\ + "packageDependencies": [\ + ["minipass", "npm:3.3.6"],\ + ["minipass-flush", "npm:1.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minipass-pipeline", [\ + ["npm:1.2.4", {\ + "packageLocation": "../../../.yarn/berry/cache/minipass-pipeline-npm-1.2.4-5924cb077f-10c0.zip/node_modules/minipass-pipeline/",\ + "packageDependencies": [\ + ["minipass", "npm:3.3.6"],\ + ["minipass-pipeline", "npm:1.2.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minipass-sized", [\ + ["npm:1.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/minipass-sized-npm-1.0.3-306d86f432-10c0.zip/node_modules/minipass-sized/",\ + "packageDependencies": [\ + ["minipass", "npm:3.3.6"],\ + ["minipass-sized", "npm:1.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minizlib", [\ + ["npm:3.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/minizlib-npm-3.1.0-6680befdba-10c0.zip/node_modules/minizlib/",\ + "packageDependencies": [\ + ["minipass", "npm:7.1.2"],\ + ["minizlib", "npm:3.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ms", [\ + ["npm:2.1.3", {\ + "packageLocation": "../../../.yarn/berry/cache/ms-npm-2.1.3-81ff3cfac1-10c0.zip/node_modules/ms/",\ + "packageDependencies": [\ + ["ms", "npm:2.1.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["nanoid", [\ + ["npm:3.3.11", {\ + "packageLocation": "../../../.yarn/berry/cache/nanoid-npm-3.3.11-f98c1f9ef6-10c0.zip/node_modules/nanoid/",\ + "packageDependencies": [\ + ["nanoid", "npm:3.3.11"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/nanoid-npm-4.0.2-ae010cad86-10c0.zip/node_modules/nanoid/",\ + "packageDependencies": [\ + ["nanoid", "npm:4.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["negotiator", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/negotiator-npm-1.0.0-47d727e27e-10c0.zip/node_modules/negotiator/",\ + "packageDependencies": [\ + ["negotiator", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["next-tick", [\ + ["npm:0.2.2", {\ + "packageLocation": "../../../.yarn/berry/cache/next-tick-npm-0.2.2-2d1ea03b94-10c0.zip/node_modules/next-tick/",\ + "packageDependencies": [\ + ["next-tick", "npm:0.2.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["node-gyp", [\ + ["npm:12.2.0", {\ + "packageLocation": "./.yarn/unplugged/node-gyp-npm-12.2.0-11f8fe84f1/node_modules/node-gyp/",\ + "packageDependencies": [\ + ["env-paths", "npm:2.2.1"],\ + ["exponential-backoff", "npm:3.1.3"],\ + ["graceful-fs", "npm:4.2.11"],\ + ["make-fetch-happen", "npm:15.0.3"],\ + ["node-gyp", "npm:12.2.0"],\ + ["nopt", "npm:9.0.0"],\ + ["proc-log", "npm:6.1.0"],\ + ["semver", "npm:7.7.3"],\ + ["tar", "npm:7.5.7"],\ + ["tinyglobby", "npm:0.2.15"],\ + ["which", "npm:6.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["nopt", [\ + ["npm:9.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/nopt-npm-9.0.0-81316ec15c-10c0.zip/node_modules/nopt/",\ + "packageDependencies": [\ + ["abbrev", "npm:4.0.0"],\ + ["nopt", "npm:9.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["p-map", [\ + ["npm:7.0.4", {\ + "packageLocation": "../../../.yarn/berry/cache/p-map-npm-7.0.4-39386109d0-10c0.zip/node_modules/p-map/",\ + "packageDependencies": [\ + ["p-map", "npm:7.0.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["path-scurry", [\ + ["npm:2.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/path-scurry-npm-2.0.1-7744619e5d-10c0.zip/node_modules/path-scurry/",\ + "packageDependencies": [\ + ["lru-cache", "npm:11.2.5"],\ + ["minipass", "npm:7.1.2"],\ + ["path-scurry", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["picocolors", [\ + ["npm:1.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/picocolors-npm-1.1.1-4fede47cf1-10c0.zip/node_modules/picocolors/",\ + "packageDependencies": [\ + ["picocolors", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["picomatch", [\ + ["npm:4.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/picomatch-npm-4.0.3-0a647b87cc-10c0.zip/node_modules/picomatch/",\ + "packageDependencies": [\ + ["picomatch", "npm:4.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["postcss", [\ + ["npm:8.5.6", {\ + "packageLocation": "../../../.yarn/berry/cache/postcss-npm-8.5.6-e7f126c6f3-10c0.zip/node_modules/postcss/",\ + "packageDependencies": [\ + ["nanoid", "npm:3.3.11"],\ + ["picocolors", "npm:1.1.1"],\ + ["postcss", "npm:8.5.6"],\ + ["source-map-js", "npm:1.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["proc-log", [\ + ["npm:6.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/proc-log-npm-6.1.0-84e609b3f4-10c0.zip/node_modules/proc-log/",\ + "packageDependencies": [\ + ["proc-log", "npm:6.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["process", [\ + ["npm:0.11.10", {\ + "packageLocation": "../../../.yarn/berry/cache/process-npm-0.11.10-aeb3b641ae-10c0.zip/node_modules/process/",\ + "packageDependencies": [\ + ["process", "npm:0.11.10"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["promise-retry", [\ + ["npm:2.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/promise-retry-npm-2.0.1-871f0b01b7-10c0.zip/node_modules/promise-retry/",\ + "packageDependencies": [\ + ["err-code", "npm:2.0.3"],\ + ["promise-retry", "npm:2.0.1"],\ + ["retry", "npm:0.12.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["retry", [\ + ["npm:0.12.0", {\ + "packageLocation": "../../../.yarn/berry/cache/retry-npm-0.12.0-72ac7fb4cc-10c0.zip/node_modules/retry/",\ + "packageDependencies": [\ + ["retry", "npm:0.12.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["rollup", [\ + ["npm:4.54.0", {\ + "packageLocation": "../../../.yarn/berry/cache/rollup-npm-4.54.0-5690763b57-10c0.zip/node_modules/rollup/",\ + "packageDependencies": [\ + ["@rollup/rollup-android-arm-eabi", "npm:4.54.0"],\ + ["@rollup/rollup-android-arm64", "npm:4.54.0"],\ + ["@rollup/rollup-darwin-arm64", "npm:4.54.0"],\ + ["@rollup/rollup-darwin-x64", "npm:4.54.0"],\ + ["@rollup/rollup-freebsd-arm64", "npm:4.54.0"],\ + ["@rollup/rollup-freebsd-x64", "npm:4.54.0"],\ + ["@rollup/rollup-linux-arm-gnueabihf", "npm:4.54.0"],\ + ["@rollup/rollup-linux-arm-musleabihf", "npm:4.54.0"],\ + ["@rollup/rollup-linux-arm64-gnu", "npm:4.54.0"],\ + ["@rollup/rollup-linux-arm64-musl", "npm:4.54.0"],\ + ["@rollup/rollup-linux-loong64-gnu", "npm:4.54.0"],\ + ["@rollup/rollup-linux-ppc64-gnu", "npm:4.54.0"],\ + ["@rollup/rollup-linux-riscv64-gnu", "npm:4.54.0"],\ + ["@rollup/rollup-linux-riscv64-musl", "npm:4.54.0"],\ + ["@rollup/rollup-linux-s390x-gnu", "npm:4.54.0"],\ + ["@rollup/rollup-linux-x64-gnu", "npm:4.54.0"],\ + ["@rollup/rollup-linux-x64-musl", "npm:4.54.0"],\ + ["@rollup/rollup-openharmony-arm64", "npm:4.54.0"],\ + ["@rollup/rollup-win32-arm64-msvc", "npm:4.54.0"],\ + ["@rollup/rollup-win32-ia32-msvc", "npm:4.54.0"],\ + ["@rollup/rollup-win32-x64-gnu", "npm:4.54.0"],\ + ["@rollup/rollup-win32-x64-msvc", "npm:4.54.0"],\ + ["@types/estree", "npm:1.0.8"],\ + ["fsevents", "patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1"],\ + ["rollup", "npm:4.54.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["root-workspace-0b6124", [\ + ["workspace:.", {\ + "packageLocation": "./",\ + "packageDependencies": [\ + ["@calcit/procs", "npm:0.12.0"],\ + ["@calcit/std", "npm:0.0.3"],\ + ["bottom-tip", "npm:0.1.5"],\ + ["root-workspace-0b6124", "workspace:."],\ + ["vite", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:7.3.0"]\ + ],\ + "linkType": "SOFT"\ + }]\ + ]],\ + ["safer-buffer", [\ + ["npm:2.1.2", {\ + "packageLocation": "../../../.yarn/berry/cache/safer-buffer-npm-2.1.2-8d5c0b705e-10c0.zip/node_modules/safer-buffer/",\ + "packageDependencies": [\ + ["safer-buffer", "npm:2.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["semver", [\ + ["npm:7.7.3", {\ + "packageLocation": "../../../.yarn/berry/cache/semver-npm-7.7.3-9cf7b3b46c-10c0.zip/node_modules/semver/",\ + "packageDependencies": [\ + ["semver", "npm:7.7.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["smart-buffer", [\ + ["npm:4.2.0", {\ + "packageLocation": "../../../.yarn/berry/cache/smart-buffer-npm-4.2.0-5ac3f668bb-10c0.zip/node_modules/smart-buffer/",\ + "packageDependencies": [\ + ["smart-buffer", "npm:4.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["socks", [\ + ["npm:2.8.7", {\ + "packageLocation": "../../../.yarn/berry/cache/socks-npm-2.8.7-d1d20aae19-10c0.zip/node_modules/socks/",\ + "packageDependencies": [\ + ["ip-address", "npm:10.1.0"],\ + ["smart-buffer", "npm:4.2.0"],\ + ["socks", "npm:2.8.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["socks-proxy-agent", [\ + ["npm:8.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/socks-proxy-agent-npm-8.0.5-24d77a90dc-10c0.zip/node_modules/socks-proxy-agent/",\ + "packageDependencies": [\ + ["agent-base", "npm:7.1.4"],\ + ["debug", "virtual:643ed7cc338bcf145a82d8b05b3bef6bcf150ca545df386225596f10ce53cc90b88b3ca83e348ade1ccea5f3f8e76c92d2f0e2ba544da60d40aff9921c56872d#npm:4.4.3"],\ + ["socks", "npm:2.8.7"],\ + ["socks-proxy-agent", "npm:8.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["source-map-js", [\ + ["npm:1.2.1", {\ + "packageLocation": "../../../.yarn/berry/cache/source-map-js-npm-1.2.1-b9a47d7e1a-10c0.zip/node_modules/source-map-js/",\ + "packageDependencies": [\ + ["source-map-js", "npm:1.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ssri", [\ + ["npm:13.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/ssri-npm-13.0.0-f5fa93375d-10c0.zip/node_modules/ssri/",\ + "packageDependencies": [\ + ["minipass", "npm:7.1.2"],\ + ["ssri", "npm:13.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["string-template", [\ + ["npm:0.2.1", {\ + "packageLocation": "../../../.yarn/berry/cache/string-template-npm-0.2.1-e8fa722df5-10c0.zip/node_modules/string-template/",\ + "packageDependencies": [\ + ["string-template", "npm:0.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["tar", [\ + ["npm:7.5.7", {\ + "packageLocation": "../../../.yarn/berry/cache/tar-npm-7.5.7-053aec5a88-10c0.zip/node_modules/tar/",\ + "packageDependencies": [\ + ["@isaacs/fs-minipass", "npm:4.0.1"],\ + ["chownr", "npm:3.0.0"],\ + ["minipass", "npm:7.1.2"],\ + ["minizlib", "npm:3.1.0"],\ + ["tar", "npm:7.5.7"],\ + ["yallist", "npm:5.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["tinyglobby", [\ + ["npm:0.2.15", {\ + "packageLocation": "../../../.yarn/berry/cache/tinyglobby-npm-0.2.15-0e783aadbd-10c0.zip/node_modules/tinyglobby/",\ + "packageDependencies": [\ + ["fdir", "virtual:0e783aadbd2b4b8e6f6056033c0b290501892d23bc7c5dad5477e00e48ad8bd3e4434c3962a52dd75a58e06dbb7218094a494bac954ef2f7f6fdb65d9717e5f4#npm:6.5.0"],\ + ["picomatch", "npm:4.0.3"],\ + ["tinyglobby", "npm:0.2.15"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["unique-filename", [\ + ["npm:5.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/unique-filename-npm-5.0.0-605f54f18e-10c0.zip/node_modules/unique-filename/",\ + "packageDependencies": [\ + ["unique-filename", "npm:5.0.0"],\ + ["unique-slug", "npm:6.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["unique-slug", [\ + ["npm:6.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/unique-slug-npm-6.0.0-f26b186e99-10c0.zip/node_modules/unique-slug/",\ + "packageDependencies": [\ + ["imurmurhash", "npm:0.1.4"],\ + ["unique-slug", "npm:6.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["virtual-dom", [\ + ["npm:2.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/virtual-dom-npm-2.1.1-8a39158cf1-10c0.zip/node_modules/virtual-dom/",\ + "packageDependencies": [\ + ["browser-split", "npm:0.0.1"],\ + ["error", "npm:4.4.0"],\ + ["ev-store", "npm:7.0.0"],\ + ["global", "npm:4.4.0"],\ + ["is-object", "npm:1.0.2"],\ + ["next-tick", "npm:0.2.2"],\ + ["virtual-dom", "npm:2.1.1"],\ + ["x-is-array", "npm:0.1.0"],\ + ["x-is-string", "npm:0.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["vite", [\ + ["npm:7.3.0", {\ + "packageLocation": "../../../.yarn/berry/cache/vite-npm-7.3.0-70284f6792-10c0.zip/node_modules/vite/",\ + "packageDependencies": [\ + ["vite", "npm:7.3.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:7.3.0", {\ + "packageLocation": "./.yarn/__virtual__/vite-virtual-3ccef3a9b4/4/.yarn/berry/cache/vite-npm-7.3.0-70284f6792-10c0.zip/node_modules/vite/",\ + "packageDependencies": [\ + ["@types/jiti", null],\ + ["@types/less", null],\ + ["@types/lightningcss", null],\ + ["@types/node", null],\ + ["@types/sass", null],\ + ["@types/sass-embedded", null],\ + ["@types/stylus", null],\ + ["@types/sugarss", null],\ + ["@types/terser", null],\ + ["@types/tsx", null],\ + ["@types/yaml", null],\ + ["esbuild", "npm:0.27.2"],\ + ["fdir", "virtual:0e783aadbd2b4b8e6f6056033c0b290501892d23bc7c5dad5477e00e48ad8bd3e4434c3962a52dd75a58e06dbb7218094a494bac954ef2f7f6fdb65d9717e5f4#npm:6.5.0"],\ + ["fsevents", "patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1"],\ + ["jiti", null],\ + ["less", null],\ + ["lightningcss", null],\ + ["picomatch", "npm:4.0.3"],\ + ["postcss", "npm:8.5.6"],\ + ["rollup", "npm:4.54.0"],\ + ["sass", null],\ + ["sass-embedded", null],\ + ["stylus", null],\ + ["sugarss", null],\ + ["terser", null],\ + ["tinyglobby", "npm:0.2.15"],\ + ["tsx", null],\ + ["vite", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:7.3.0"],\ + ["yaml", null]\ + ],\ + "packagePeers": [\ + "@types/jiti",\ + "@types/less",\ + "@types/lightningcss",\ + "@types/node",\ + "@types/sass-embedded",\ + "@types/sass",\ + "@types/stylus",\ + "@types/sugarss",\ + "@types/terser",\ + "@types/tsx",\ + "@types/yaml",\ + "jiti",\ + "less",\ + "lightningcss",\ + "sass-embedded",\ + "sass",\ + "stylus",\ + "sugarss",\ + "terser",\ + "tsx",\ + "yaml"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["which", [\ + ["npm:6.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/which-npm-6.0.0-48f25f0ec8-10c0.zip/node_modules/which/",\ + "packageDependencies": [\ + ["isexe", "npm:3.1.1"],\ + ["which", "npm:6.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["x-is-array", [\ + ["npm:0.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/x-is-array-npm-0.1.0-c49b0e68b6-10c0.zip/node_modules/x-is-array/",\ + "packageDependencies": [\ + ["x-is-array", "npm:0.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["x-is-string", [\ + ["npm:0.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/x-is-string-npm-0.1.0-a254bc0c3e-10c0.zip/node_modules/x-is-string/",\ + "packageDependencies": [\ + ["x-is-string", "npm:0.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["xtend", [\ + ["npm:4.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/xtend-npm-4.0.2-7f2375736e-10c0.zip/node_modules/xtend/",\ + "packageDependencies": [\ + ["xtend", "npm:4.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["yallist", [\ + ["npm:4.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/yallist-npm-4.0.0-b493d9e907-10c0.zip/node_modules/yallist/",\ + "packageDependencies": [\ + ["yallist", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/yallist-npm-5.0.0-8732dd9f1c-10c0.zip/node_modules/yallist/",\ + "packageDependencies": [\ + ["yallist", "npm:5.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]]\ + ]\ +}'; + +function $$SETUP_STATE(hydrateRuntimeState, basePath) { + return hydrateRuntimeState(JSON.parse(RAW_RUNTIME_STATE), {basePath: basePath || __dirname}); +} + +const fs = require('fs'); +const path = require('path'); +const crypto = require('crypto'); +const os = require('os'); +const events = require('events'); +const nodeUtils = require('util'); +const stream = require('stream'); +const zlib = require('zlib'); +const require$$0 = require('module'); +const StringDecoder = require('string_decoder'); +const url = require('url'); +const buffer = require('buffer'); +const readline = require('readline'); +const assert = require('assert'); + +const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e }; + +function _interopNamespace(e) { + if (e && e.__esModule) return e; + const n = Object.create(null); + if (e) { + for (const k in e) { + if (k !== 'default') { + const d = Object.getOwnPropertyDescriptor(e, k); + Object.defineProperty(n, k, d.get ? d : { + enumerable: true, + get: () => e[k] + }); + } + } + } + n.default = e; + return Object.freeze(n); +} + +const fs__default = /*#__PURE__*/_interopDefaultLegacy(fs); +const path__default = /*#__PURE__*/_interopDefaultLegacy(path); +const nodeUtils__namespace = /*#__PURE__*/_interopNamespace(nodeUtils); +const zlib__default = /*#__PURE__*/_interopDefaultLegacy(zlib); +const require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0); +const StringDecoder__default = /*#__PURE__*/_interopDefaultLegacy(StringDecoder); +const buffer__default = /*#__PURE__*/_interopDefaultLegacy(buffer); +const assert__default = /*#__PURE__*/_interopDefaultLegacy(assert); + +const S_IFMT = 61440; +const S_IFDIR = 16384; +const S_IFREG = 32768; +const S_IFLNK = 40960; +const SAFE_TIME = 456789e3; + +function makeError$1(code, message) { + return Object.assign(new Error(`${code}: ${message}`), { code }); +} +function EBUSY(message) { + return makeError$1(`EBUSY`, message); +} +function ENOSYS(message, reason) { + return makeError$1(`ENOSYS`, `${message}, ${reason}`); +} +function EINVAL(reason) { + return makeError$1(`EINVAL`, `invalid argument, ${reason}`); +} +function EBADF(reason) { + return makeError$1(`EBADF`, `bad file descriptor, ${reason}`); +} +function ENOENT(reason) { + return makeError$1(`ENOENT`, `no such file or directory, ${reason}`); +} +function ENOTDIR(reason) { + return makeError$1(`ENOTDIR`, `not a directory, ${reason}`); +} +function EISDIR(reason) { + return makeError$1(`EISDIR`, `illegal operation on a directory, ${reason}`); +} +function EEXIST(reason) { + return makeError$1(`EEXIST`, `file already exists, ${reason}`); +} +function EROFS(reason) { + return makeError$1(`EROFS`, `read-only filesystem, ${reason}`); +} +function ENOTEMPTY(reason) { + return makeError$1(`ENOTEMPTY`, `directory not empty, ${reason}`); +} +function EOPNOTSUPP(reason) { + return makeError$1(`EOPNOTSUPP`, `operation not supported, ${reason}`); +} +function ERR_DIR_CLOSED() { + return makeError$1(`ERR_DIR_CLOSED`, `Directory handle was closed`); +} + +const DEFAULT_MODE = S_IFREG | 420; +class StatEntry { + uid = 0; + gid = 0; + size = 0; + blksize = 0; + atimeMs = 0; + mtimeMs = 0; + ctimeMs = 0; + birthtimeMs = 0; + atime = /* @__PURE__ */ new Date(0); + mtime = /* @__PURE__ */ new Date(0); + ctime = /* @__PURE__ */ new Date(0); + birthtime = /* @__PURE__ */ new Date(0); + dev = 0; + ino = 0; + mode = DEFAULT_MODE; + nlink = 1; + rdev = 0; + blocks = 1; + isBlockDevice() { + return false; + } + isCharacterDevice() { + return false; + } + isDirectory() { + return (this.mode & S_IFMT) === S_IFDIR; + } + isFIFO() { + return false; + } + isFile() { + return (this.mode & S_IFMT) === S_IFREG; + } + isSocket() { + return false; + } + isSymbolicLink() { + return (this.mode & S_IFMT) === S_IFLNK; + } +} +class BigIntStatsEntry { + uid = BigInt(0); + gid = BigInt(0); + size = BigInt(0); + blksize = BigInt(0); + atimeMs = BigInt(0); + mtimeMs = BigInt(0); + ctimeMs = BigInt(0); + birthtimeMs = BigInt(0); + atimeNs = BigInt(0); + mtimeNs = BigInt(0); + ctimeNs = BigInt(0); + birthtimeNs = BigInt(0); + atime = /* @__PURE__ */ new Date(0); + mtime = /* @__PURE__ */ new Date(0); + ctime = /* @__PURE__ */ new Date(0); + birthtime = /* @__PURE__ */ new Date(0); + dev = BigInt(0); + ino = BigInt(0); + mode = BigInt(DEFAULT_MODE); + nlink = BigInt(1); + rdev = BigInt(0); + blocks = BigInt(1); + isBlockDevice() { + return false; + } + isCharacterDevice() { + return false; + } + isDirectory() { + return (this.mode & BigInt(S_IFMT)) === BigInt(S_IFDIR); + } + isFIFO() { + return false; + } + isFile() { + return (this.mode & BigInt(S_IFMT)) === BigInt(S_IFREG); + } + isSocket() { + return false; + } + isSymbolicLink() { + return (this.mode & BigInt(S_IFMT)) === BigInt(S_IFLNK); + } +} +function makeDefaultStats() { + return new StatEntry(); +} +function clearStats(stats) { + for (const key in stats) { + if (Object.hasOwn(stats, key)) { + const element = stats[key]; + if (typeof element === `number`) { + stats[key] = 0; + } else if (typeof element === `bigint`) { + stats[key] = BigInt(0); + } else if (nodeUtils__namespace.types.isDate(element)) { + stats[key] = /* @__PURE__ */ new Date(0); + } + } + } + return stats; +} +function convertToBigIntStats(stats) { + const bigintStats = new BigIntStatsEntry(); + for (const key in stats) { + if (Object.hasOwn(stats, key)) { + const element = stats[key]; + if (typeof element === `number`) { + bigintStats[key] = BigInt(element); + } else if (nodeUtils__namespace.types.isDate(element)) { + bigintStats[key] = new Date(element); + } + } + } + bigintStats.atimeNs = bigintStats.atimeMs * BigInt(1e6); + bigintStats.mtimeNs = bigintStats.mtimeMs * BigInt(1e6); + bigintStats.ctimeNs = bigintStats.ctimeMs * BigInt(1e6); + bigintStats.birthtimeNs = bigintStats.birthtimeMs * BigInt(1e6); + return bigintStats; +} +function areStatsEqual(a, b) { + if (a.atimeMs !== b.atimeMs) + return false; + if (a.birthtimeMs !== b.birthtimeMs) + return false; + if (a.blksize !== b.blksize) + return false; + if (a.blocks !== b.blocks) + return false; + if (a.ctimeMs !== b.ctimeMs) + return false; + if (a.dev !== b.dev) + return false; + if (a.gid !== b.gid) + return false; + if (a.ino !== b.ino) + return false; + if (a.isBlockDevice() !== b.isBlockDevice()) + return false; + if (a.isCharacterDevice() !== b.isCharacterDevice()) + return false; + if (a.isDirectory() !== b.isDirectory()) + return false; + if (a.isFIFO() !== b.isFIFO()) + return false; + if (a.isFile() !== b.isFile()) + return false; + if (a.isSocket() !== b.isSocket()) + return false; + if (a.isSymbolicLink() !== b.isSymbolicLink()) + return false; + if (a.mode !== b.mode) + return false; + if (a.mtimeMs !== b.mtimeMs) + return false; + if (a.nlink !== b.nlink) + return false; + if (a.rdev !== b.rdev) + return false; + if (a.size !== b.size) + return false; + if (a.uid !== b.uid) + return false; + const aN = a; + const bN = b; + if (aN.atimeNs !== bN.atimeNs) + return false; + if (aN.mtimeNs !== bN.mtimeNs) + return false; + if (aN.ctimeNs !== bN.ctimeNs) + return false; + if (aN.birthtimeNs !== bN.birthtimeNs) + return false; + return true; +} + +const PortablePath = { + root: `/`, + dot: `.`, + parent: `..` +}; +const Filename = { + home: `~`, + nodeModules: `node_modules`, + manifest: `package.json`, + lockfile: `yarn.lock`, + virtual: `__virtual__`, + /** + * @deprecated + */ + pnpJs: `.pnp.js`, + pnpCjs: `.pnp.cjs`, + pnpData: `.pnp.data.json`, + pnpEsmLoader: `.pnp.loader.mjs`, + rc: `.yarnrc.yml`, + env: `.env` +}; +const npath = Object.create(path__default.default); +const ppath = Object.create(path__default.default.posix); +npath.cwd = () => process.cwd(); +ppath.cwd = process.platform === `win32` ? () => toPortablePath(process.cwd()) : process.cwd; +if (process.platform === `win32`) { + ppath.resolve = (...segments) => { + if (segments.length > 0 && ppath.isAbsolute(segments[0])) { + return path__default.default.posix.resolve(...segments); + } else { + return path__default.default.posix.resolve(ppath.cwd(), ...segments); + } + }; +} +const contains = function(pathUtils, from, to) { + from = pathUtils.normalize(from); + to = pathUtils.normalize(to); + if (from === to) + return `.`; + if (!from.endsWith(pathUtils.sep)) + from = from + pathUtils.sep; + if (to.startsWith(from)) { + return to.slice(from.length); + } else { + return null; + } +}; +npath.contains = (from, to) => contains(npath, from, to); +ppath.contains = (from, to) => contains(ppath, from, to); +const WINDOWS_PATH_REGEXP = /^([a-zA-Z]:.*)$/; +const UNC_WINDOWS_PATH_REGEXP = /^\/\/(\.\/)?(.*)$/; +const PORTABLE_PATH_REGEXP = /^\/([a-zA-Z]:.*)$/; +const UNC_PORTABLE_PATH_REGEXP = /^\/unc\/(\.dot\/)?(.*)$/; +function fromPortablePathWin32(p) { + let portablePathMatch, uncPortablePathMatch; + if (portablePathMatch = p.match(PORTABLE_PATH_REGEXP)) + p = portablePathMatch[1]; + else if (uncPortablePathMatch = p.match(UNC_PORTABLE_PATH_REGEXP)) + p = `\\\\${uncPortablePathMatch[1] ? `.\\` : ``}${uncPortablePathMatch[2]}`; + else + return p; + return p.replace(/\//g, `\\`); +} +function toPortablePathWin32(p) { + p = p.replace(/\\/g, `/`); + let windowsPathMatch, uncWindowsPathMatch; + if (windowsPathMatch = p.match(WINDOWS_PATH_REGEXP)) + p = `/${windowsPathMatch[1]}`; + else if (uncWindowsPathMatch = p.match(UNC_WINDOWS_PATH_REGEXP)) + p = `/unc/${uncWindowsPathMatch[1] ? `.dot/` : ``}${uncWindowsPathMatch[2]}`; + return p; +} +const toPortablePath = process.platform === `win32` ? toPortablePathWin32 : (p) => p; +const fromPortablePath = process.platform === `win32` ? fromPortablePathWin32 : (p) => p; +npath.fromPortablePath = fromPortablePath; +npath.toPortablePath = toPortablePath; +function convertPath(targetPathUtils, sourcePath) { + return targetPathUtils === npath ? fromPortablePath(sourcePath) : toPortablePath(sourcePath); +} + +const defaultTime = new Date(SAFE_TIME * 1e3); +const defaultTimeMs = defaultTime.getTime(); +async function copyPromise(destinationFs, destination, sourceFs, source, opts) { + const normalizedDestination = destinationFs.pathUtils.normalize(destination); + const normalizedSource = sourceFs.pathUtils.normalize(source); + const prelayout = []; + const postlayout = []; + const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : await sourceFs.lstatPromise(normalizedSource); + await destinationFs.mkdirpPromise(destinationFs.pathUtils.dirname(destination), { utimes: [atime, mtime] }); + await copyImpl(prelayout, postlayout, destinationFs, normalizedDestination, sourceFs, normalizedSource, { ...opts, didParentExist: true }); + for (const operation of prelayout) + await operation(); + await Promise.all(postlayout.map((operation) => { + return operation(); + })); +} +async function copyImpl(prelayout, postlayout, destinationFs, destination, sourceFs, source, opts) { + const destinationStat = opts.didParentExist ? await maybeLStat(destinationFs, destination) : null; + const sourceStat = await sourceFs.lstatPromise(source); + const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : sourceStat; + let updated; + switch (true) { + case sourceStat.isDirectory(): + { + updated = await copyFolder(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + } + break; + case sourceStat.isFile(): + { + updated = await copyFile(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + } + break; + case sourceStat.isSymbolicLink(): + { + updated = await copySymlink(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + } + break; + default: { + throw new Error(`Unsupported file type (${sourceStat.mode})`); + } + } + if (opts.linkStrategy?.type !== `HardlinkFromIndex` || !sourceStat.isFile()) { + if (updated || destinationStat?.mtime?.getTime() !== mtime.getTime() || destinationStat?.atime?.getTime() !== atime.getTime()) { + postlayout.push(() => destinationFs.lutimesPromise(destination, atime, mtime)); + updated = true; + } + if (destinationStat === null || (destinationStat.mode & 511) !== (sourceStat.mode & 511)) { + postlayout.push(() => destinationFs.chmodPromise(destination, sourceStat.mode & 511)); + updated = true; + } + } + return updated; +} +async function maybeLStat(baseFs, p) { + try { + return await baseFs.lstatPromise(p); + } catch { + return null; + } +} +async function copyFolder(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { + if (destinationStat !== null && !destinationStat.isDirectory()) { + if (opts.overwrite) { + prelayout.push(async () => destinationFs.removePromise(destination)); + destinationStat = null; + } else { + return false; + } + } + let updated = false; + if (destinationStat === null) { + prelayout.push(async () => { + try { + await destinationFs.mkdirPromise(destination, { mode: sourceStat.mode }); + } catch (err) { + if (err.code !== `EEXIST`) { + throw err; + } + } + }); + updated = true; + } + const entries = await sourceFs.readdirPromise(source); + const nextOpts = opts.didParentExist && !destinationStat ? { ...opts, didParentExist: false } : opts; + if (opts.stableSort) { + for (const entry of entries.sort()) { + if (await copyImpl(prelayout, postlayout, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts)) { + updated = true; + } + } + } else { + const entriesUpdateStatus = await Promise.all(entries.map(async (entry) => { + await copyImpl(prelayout, postlayout, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts); + })); + if (entriesUpdateStatus.some((status) => status)) { + updated = true; + } + } + return updated; +} +async function copyFileViaIndex(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts, linkStrategy) { + const sourceHash = await sourceFs.checksumFilePromise(source, { algorithm: `sha1` }); + const defaultMode = 420; + const sourceMode = sourceStat.mode & 511; + const indexFileName = `${sourceHash}${sourceMode !== defaultMode ? sourceMode.toString(8) : ``}`; + const indexPath = destinationFs.pathUtils.join(linkStrategy.indexPath, sourceHash.slice(0, 2), `${indexFileName}.dat`); + let AtomicBehavior; + ((AtomicBehavior2) => { + AtomicBehavior2[AtomicBehavior2["Lock"] = 0] = "Lock"; + AtomicBehavior2[AtomicBehavior2["Rename"] = 1] = "Rename"; + })(AtomicBehavior || (AtomicBehavior = {})); + let atomicBehavior = 1 /* Rename */; + let indexStat = await maybeLStat(destinationFs, indexPath); + if (destinationStat) { + const isDestinationHardlinkedFromIndex = indexStat && destinationStat.dev === indexStat.dev && destinationStat.ino === indexStat.ino; + const isIndexModified = indexStat?.mtimeMs !== defaultTimeMs; + if (isDestinationHardlinkedFromIndex) { + if (isIndexModified && linkStrategy.autoRepair) { + atomicBehavior = 0 /* Lock */; + indexStat = null; + } + } + if (!isDestinationHardlinkedFromIndex) { + if (opts.overwrite) { + prelayout.push(async () => destinationFs.removePromise(destination)); + destinationStat = null; + } else { + return false; + } + } + } + const tempPath = !indexStat && atomicBehavior === 1 /* Rename */ ? `${indexPath}.${Math.floor(Math.random() * 4294967296).toString(16).padStart(8, `0`)}` : null; + let tempPathCleaned = false; + prelayout.push(async () => { + if (!indexStat) { + if (atomicBehavior === 0 /* Lock */) { + await destinationFs.lockPromise(indexPath, async () => { + const content = await sourceFs.readFilePromise(source); + await destinationFs.writeFilePromise(indexPath, content); + }); + } + if (atomicBehavior === 1 /* Rename */ && tempPath) { + const content = await sourceFs.readFilePromise(source); + await destinationFs.writeFilePromise(tempPath, content); + try { + await destinationFs.linkPromise(tempPath, indexPath); + } catch (err) { + if (err.code === `EEXIST`) { + tempPathCleaned = true; + await destinationFs.unlinkPromise(tempPath); + } else { + throw err; + } + } + } + } + if (!destinationStat) { + await destinationFs.linkPromise(indexPath, destination); + } + }); + postlayout.push(async () => { + if (!indexStat) { + await destinationFs.lutimesPromise(indexPath, defaultTime, defaultTime); + if (sourceMode !== defaultMode) { + await destinationFs.chmodPromise(indexPath, sourceMode); + } + } + if (tempPath && !tempPathCleaned) { + await destinationFs.unlinkPromise(tempPath); + } + }); + return false; +} +async function copyFileDirect(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { + if (destinationStat !== null) { + if (opts.overwrite) { + prelayout.push(async () => destinationFs.removePromise(destination)); + destinationStat = null; + } else { + return false; + } + } + prelayout.push(async () => { + const content = await sourceFs.readFilePromise(source); + await destinationFs.writeFilePromise(destination, content); + }); + return true; +} +async function copyFile(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { + if (opts.linkStrategy?.type === `HardlinkFromIndex`) { + return copyFileViaIndex(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts, opts.linkStrategy); + } else { + return copyFileDirect(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + } +} +async function copySymlink(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { + if (destinationStat !== null) { + if (opts.overwrite) { + prelayout.push(async () => destinationFs.removePromise(destination)); + destinationStat = null; + } else { + return false; + } + } + prelayout.push(async () => { + await destinationFs.symlinkPromise(convertPath(destinationFs.pathUtils, await sourceFs.readlinkPromise(source)), destination); + }); + return true; +} + +class CustomDir { + constructor(path, nextDirent, opts = {}) { + this.path = path; + this.nextDirent = nextDirent; + this.opts = opts; + } + closed = false; + throwIfClosed() { + if (this.closed) { + throw ERR_DIR_CLOSED(); + } + } + async *[Symbol.asyncIterator]() { + try { + let dirent; + while ((dirent = await this.read()) !== null) { + yield dirent; + } + } finally { + await this.close(); + } + } + read(cb) { + const dirent = this.readSync(); + if (typeof cb !== `undefined`) + return cb(null, dirent); + return Promise.resolve(dirent); + } + readSync() { + this.throwIfClosed(); + return this.nextDirent(); + } + close(cb) { + this.closeSync(); + if (typeof cb !== `undefined`) + return cb(null); + return Promise.resolve(); + } + closeSync() { + this.throwIfClosed(); + this.opts.onClose?.(); + this.closed = true; + } +} +function opendir(fakeFs, path, entries, opts) { + const nextDirent = () => { + const filename = entries.shift(); + if (typeof filename === `undefined`) + return null; + const entryPath = fakeFs.pathUtils.join(path, filename); + return Object.assign(fakeFs.statSync(entryPath), { + name: filename, + path: void 0 + }); + }; + return new CustomDir(path, nextDirent, opts); +} + +function assertStatus(current, expected) { + if (current !== expected) { + throw new Error(`Invalid StatWatcher status: expected '${expected}', got '${current}'`); + } +} +class CustomStatWatcher extends events.EventEmitter { + fakeFs; + path; + bigint; + status = "ready" /* Ready */; + changeListeners = /* @__PURE__ */ new Map(); + lastStats; + startTimeout = null; + static create(fakeFs, path, opts) { + const statWatcher = new CustomStatWatcher(fakeFs, path, opts); + statWatcher.start(); + return statWatcher; + } + constructor(fakeFs, path, { bigint = false } = {}) { + super(); + this.fakeFs = fakeFs; + this.path = path; + this.bigint = bigint; + this.lastStats = this.stat(); + } + start() { + assertStatus(this.status, "ready" /* Ready */); + this.status = "running" /* Running */; + this.startTimeout = setTimeout(() => { + this.startTimeout = null; + if (!this.fakeFs.existsSync(this.path)) { + this.emit("change" /* Change */, this.lastStats, this.lastStats); + } + }, 3); + } + stop() { + assertStatus(this.status, "running" /* Running */); + this.status = "stopped" /* Stopped */; + if (this.startTimeout !== null) { + clearTimeout(this.startTimeout); + this.startTimeout = null; + } + this.emit("stop" /* Stop */); + } + stat() { + try { + return this.fakeFs.statSync(this.path, { bigint: this.bigint }); + } catch { + const statInstance = this.bigint ? new BigIntStatsEntry() : new StatEntry(); + return clearStats(statInstance); + } + } + /** + * Creates an interval whose callback compares the current stats with the previous stats and notifies all listeners in case of changes. + * + * @param opts.persistent Decides whether the interval should be immediately unref-ed. + */ + makeInterval(opts) { + const interval = setInterval(() => { + const currentStats = this.stat(); + const previousStats = this.lastStats; + if (areStatsEqual(currentStats, previousStats)) + return; + this.lastStats = currentStats; + this.emit("change" /* Change */, currentStats, previousStats); + }, opts.interval); + return opts.persistent ? interval : interval.unref(); + } + /** + * Registers a listener and assigns it an interval. + */ + registerChangeListener(listener, opts) { + this.addListener("change" /* Change */, listener); + this.changeListeners.set(listener, this.makeInterval(opts)); + } + /** + * Unregisters the listener and clears the assigned interval. + */ + unregisterChangeListener(listener) { + this.removeListener("change" /* Change */, listener); + const interval = this.changeListeners.get(listener); + if (typeof interval !== `undefined`) + clearInterval(interval); + this.changeListeners.delete(listener); + } + /** + * Unregisters all listeners and clears all assigned intervals. + */ + unregisterAllChangeListeners() { + for (const listener of this.changeListeners.keys()) { + this.unregisterChangeListener(listener); + } + } + hasChangeListeners() { + return this.changeListeners.size > 0; + } + /** + * Refs all stored intervals. + */ + ref() { + for (const interval of this.changeListeners.values()) + interval.ref(); + return this; + } + /** + * Unrefs all stored intervals. + */ + unref() { + for (const interval of this.changeListeners.values()) + interval.unref(); + return this; + } +} + +const statWatchersByFakeFS = /* @__PURE__ */ new WeakMap(); +function watchFile(fakeFs, path, a, b) { + let bigint; + let persistent; + let interval; + let listener; + switch (typeof a) { + case `function`: + { + bigint = false; + persistent = true; + interval = 5007; + listener = a; + } + break; + default: + { + ({ + bigint = false, + persistent = true, + interval = 5007 + } = a); + listener = b; + } + break; + } + let statWatchers = statWatchersByFakeFS.get(fakeFs); + if (typeof statWatchers === `undefined`) + statWatchersByFakeFS.set(fakeFs, statWatchers = /* @__PURE__ */ new Map()); + let statWatcher = statWatchers.get(path); + if (typeof statWatcher === `undefined`) { + statWatcher = CustomStatWatcher.create(fakeFs, path, { bigint }); + statWatchers.set(path, statWatcher); + } + statWatcher.registerChangeListener(listener, { persistent, interval }); + return statWatcher; +} +function unwatchFile(fakeFs, path, cb) { + const statWatchers = statWatchersByFakeFS.get(fakeFs); + if (typeof statWatchers === `undefined`) + return; + const statWatcher = statWatchers.get(path); + if (typeof statWatcher === `undefined`) + return; + if (typeof cb === `undefined`) + statWatcher.unregisterAllChangeListeners(); + else + statWatcher.unregisterChangeListener(cb); + if (!statWatcher.hasChangeListeners()) { + statWatcher.stop(); + statWatchers.delete(path); + } +} +function unwatchAllFiles(fakeFs) { + const statWatchers = statWatchersByFakeFS.get(fakeFs); + if (typeof statWatchers === `undefined`) + return; + for (const path of statWatchers.keys()) { + unwatchFile(fakeFs, path); + } +} + +class FakeFS { + pathUtils; + constructor(pathUtils) { + this.pathUtils = pathUtils; + } + async *genTraversePromise(init, { stableSort = false } = {}) { + const stack = [init]; + while (stack.length > 0) { + const p = stack.shift(); + const entry = await this.lstatPromise(p); + if (entry.isDirectory()) { + const entries = await this.readdirPromise(p); + if (stableSort) { + for (const entry2 of entries.sort()) { + stack.push(this.pathUtils.join(p, entry2)); + } + } else { + throw new Error(`Not supported`); + } + } else { + yield p; + } + } + } + async checksumFilePromise(path, { algorithm = `sha512` } = {}) { + const fd = await this.openPromise(path, `r`); + try { + const CHUNK_SIZE = 65536; + const chunk = Buffer.allocUnsafeSlow(CHUNK_SIZE); + const hash = crypto.createHash(algorithm); + let bytesRead = 0; + while ((bytesRead = await this.readPromise(fd, chunk, 0, CHUNK_SIZE)) !== 0) + hash.update(bytesRead === CHUNK_SIZE ? chunk : chunk.slice(0, bytesRead)); + return hash.digest(`hex`); + } finally { + await this.closePromise(fd); + } + } + async removePromise(p, { recursive = true, maxRetries = 5 } = {}) { + let stat; + try { + stat = await this.lstatPromise(p); + } catch (error) { + if (error.code === `ENOENT`) { + return; + } else { + throw error; + } + } + if (stat.isDirectory()) { + if (recursive) { + const entries = await this.readdirPromise(p); + await Promise.all(entries.map((entry) => { + return this.removePromise(this.pathUtils.resolve(p, entry)); + })); + } + for (let t = 0; t <= maxRetries; t++) { + try { + await this.rmdirPromise(p); + break; + } catch (error) { + if (error.code !== `EBUSY` && error.code !== `ENOTEMPTY`) { + throw error; + } else if (t < maxRetries) { + await new Promise((resolve) => setTimeout(resolve, t * 100)); + } + } + } + } else { + await this.unlinkPromise(p); + } + } + removeSync(p, { recursive = true } = {}) { + let stat; + try { + stat = this.lstatSync(p); + } catch (error) { + if (error.code === `ENOENT`) { + return; + } else { + throw error; + } + } + if (stat.isDirectory()) { + if (recursive) + for (const entry of this.readdirSync(p)) + this.removeSync(this.pathUtils.resolve(p, entry)); + this.rmdirSync(p); + } else { + this.unlinkSync(p); + } + } + async mkdirpPromise(p, { chmod, utimes } = {}) { + p = this.resolve(p); + if (p === this.pathUtils.dirname(p)) + return void 0; + const parts = p.split(this.pathUtils.sep); + let createdDirectory; + for (let u = 2; u <= parts.length; ++u) { + const subPath = parts.slice(0, u).join(this.pathUtils.sep); + if (!this.existsSync(subPath)) { + try { + await this.mkdirPromise(subPath); + } catch (error) { + if (error.code === `EEXIST`) { + continue; + } else { + throw error; + } + } + createdDirectory ??= subPath; + if (chmod != null) + await this.chmodPromise(subPath, chmod); + if (utimes != null) { + await this.utimesPromise(subPath, utimes[0], utimes[1]); + } else { + const parentStat = await this.statPromise(this.pathUtils.dirname(subPath)); + await this.utimesPromise(subPath, parentStat.atime, parentStat.mtime); + } + } + } + return createdDirectory; + } + mkdirpSync(p, { chmod, utimes } = {}) { + p = this.resolve(p); + if (p === this.pathUtils.dirname(p)) + return void 0; + const parts = p.split(this.pathUtils.sep); + let createdDirectory; + for (let u = 2; u <= parts.length; ++u) { + const subPath = parts.slice(0, u).join(this.pathUtils.sep); + if (!this.existsSync(subPath)) { + try { + this.mkdirSync(subPath); + } catch (error) { + if (error.code === `EEXIST`) { + continue; + } else { + throw error; + } + } + createdDirectory ??= subPath; + if (chmod != null) + this.chmodSync(subPath, chmod); + if (utimes != null) { + this.utimesSync(subPath, utimes[0], utimes[1]); + } else { + const parentStat = this.statSync(this.pathUtils.dirname(subPath)); + this.utimesSync(subPath, parentStat.atime, parentStat.mtime); + } + } + } + return createdDirectory; + } + async copyPromise(destination, source, { baseFs = this, overwrite = true, stableSort = false, stableTime = false, linkStrategy = null } = {}) { + return await copyPromise(this, destination, baseFs, source, { overwrite, stableSort, stableTime, linkStrategy }); + } + copySync(destination, source, { baseFs = this, overwrite = true } = {}) { + const stat = baseFs.lstatSync(source); + const exists = this.existsSync(destination); + if (stat.isDirectory()) { + this.mkdirpSync(destination); + const directoryListing = baseFs.readdirSync(source); + for (const entry of directoryListing) { + this.copySync(this.pathUtils.join(destination, entry), baseFs.pathUtils.join(source, entry), { baseFs, overwrite }); + } + } else if (stat.isFile()) { + if (!exists || overwrite) { + if (exists) + this.removeSync(destination); + const content = baseFs.readFileSync(source); + this.writeFileSync(destination, content); + } + } else if (stat.isSymbolicLink()) { + if (!exists || overwrite) { + if (exists) + this.removeSync(destination); + const target = baseFs.readlinkSync(source); + this.symlinkSync(convertPath(this.pathUtils, target), destination); + } + } else { + throw new Error(`Unsupported file type (file: ${source}, mode: 0o${stat.mode.toString(8).padStart(6, `0`)})`); + } + const mode = stat.mode & 511; + this.chmodSync(destination, mode); + } + async changeFilePromise(p, content, opts = {}) { + if (Buffer.isBuffer(content)) { + return this.changeFileBufferPromise(p, content, opts); + } else { + return this.changeFileTextPromise(p, content, opts); + } + } + async changeFileBufferPromise(p, content, { mode } = {}) { + let current = Buffer.alloc(0); + try { + current = await this.readFilePromise(p); + } catch { + } + if (Buffer.compare(current, content) === 0) + return; + await this.writeFilePromise(p, content, { mode }); + } + async changeFileTextPromise(p, content, { automaticNewlines, mode } = {}) { + let current = ``; + try { + current = await this.readFilePromise(p, `utf8`); + } catch { + } + const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content; + if (current === normalizedContent) + return; + await this.writeFilePromise(p, normalizedContent, { mode }); + } + changeFileSync(p, content, opts = {}) { + if (Buffer.isBuffer(content)) { + return this.changeFileBufferSync(p, content, opts); + } else { + return this.changeFileTextSync(p, content, opts); + } + } + changeFileBufferSync(p, content, { mode } = {}) { + let current = Buffer.alloc(0); + try { + current = this.readFileSync(p); + } catch { + } + if (Buffer.compare(current, content) === 0) + return; + this.writeFileSync(p, content, { mode }); + } + changeFileTextSync(p, content, { automaticNewlines = false, mode } = {}) { + let current = ``; + try { + current = this.readFileSync(p, `utf8`); + } catch { + } + const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content; + if (current === normalizedContent) + return; + this.writeFileSync(p, normalizedContent, { mode }); + } + async movePromise(fromP, toP) { + try { + await this.renamePromise(fromP, toP); + } catch (error) { + if (error.code === `EXDEV`) { + await this.copyPromise(toP, fromP); + await this.removePromise(fromP); + } else { + throw error; + } + } + } + moveSync(fromP, toP) { + try { + this.renameSync(fromP, toP); + } catch (error) { + if (error.code === `EXDEV`) { + this.copySync(toP, fromP); + this.removeSync(fromP); + } else { + throw error; + } + } + } + async lockPromise(affectedPath, callback) { + const lockPath = `${affectedPath}.flock`; + const interval = 1e3 / 60; + const startTime = Date.now(); + let fd = null; + const isAlive = async () => { + let pid; + try { + [pid] = await this.readJsonPromise(lockPath); + } catch { + return Date.now() - startTime < 500; + } + try { + process.kill(pid, 0); + return true; + } catch { + return false; + } + }; + while (fd === null) { + try { + fd = await this.openPromise(lockPath, `wx`); + } catch (error) { + if (error.code === `EEXIST`) { + if (!await isAlive()) { + try { + await this.unlinkPromise(lockPath); + continue; + } catch { + } + } + if (Date.now() - startTime < 60 * 1e3) { + await new Promise((resolve) => setTimeout(resolve, interval)); + } else { + throw new Error(`Couldn't acquire a lock in a reasonable time (via ${lockPath})`); + } + } else { + throw error; + } + } + } + await this.writePromise(fd, JSON.stringify([process.pid])); + try { + return await callback(); + } finally { + try { + await this.closePromise(fd); + await this.unlinkPromise(lockPath); + } catch { + } + } + } + async readJsonPromise(p) { + const content = await this.readFilePromise(p, `utf8`); + try { + return JSON.parse(content); + } catch (error) { + error.message += ` (in ${p})`; + throw error; + } + } + readJsonSync(p) { + const content = this.readFileSync(p, `utf8`); + try { + return JSON.parse(content); + } catch (error) { + error.message += ` (in ${p})`; + throw error; + } + } + async writeJsonPromise(p, data, { compact = false } = {}) { + const space = compact ? 0 : 2; + return await this.writeFilePromise(p, `${JSON.stringify(data, null, space)} +`); + } + writeJsonSync(p, data, { compact = false } = {}) { + const space = compact ? 0 : 2; + return this.writeFileSync(p, `${JSON.stringify(data, null, space)} +`); + } + async preserveTimePromise(p, cb) { + const stat = await this.lstatPromise(p); + const result = await cb(); + if (typeof result !== `undefined`) + p = result; + await this.lutimesPromise(p, stat.atime, stat.mtime); + } + async preserveTimeSync(p, cb) { + const stat = this.lstatSync(p); + const result = cb(); + if (typeof result !== `undefined`) + p = result; + this.lutimesSync(p, stat.atime, stat.mtime); + } +} +class BasePortableFakeFS extends FakeFS { + constructor() { + super(ppath); + } +} +function getEndOfLine(content) { + const matches = content.match(/\r?\n/g); + if (matches === null) + return os.EOL; + const crlf = matches.filter((nl) => nl === `\r +`).length; + const lf = matches.length - crlf; + return crlf > lf ? `\r +` : ` +`; +} +function normalizeLineEndings(originalContent, newContent) { + return newContent.replace(/\r?\n/g, getEndOfLine(originalContent)); +} + +class ProxiedFS extends FakeFS { + getExtractHint(hints) { + return this.baseFs.getExtractHint(hints); + } + resolve(path) { + return this.mapFromBase(this.baseFs.resolve(this.mapToBase(path))); + } + getRealPath() { + return this.mapFromBase(this.baseFs.getRealPath()); + } + async openPromise(p, flags, mode) { + return this.baseFs.openPromise(this.mapToBase(p), flags, mode); + } + openSync(p, flags, mode) { + return this.baseFs.openSync(this.mapToBase(p), flags, mode); + } + async opendirPromise(p, opts) { + return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(p), opts), { path: p }); + } + opendirSync(p, opts) { + return Object.assign(this.baseFs.opendirSync(this.mapToBase(p), opts), { path: p }); + } + async readPromise(fd, buffer, offset, length, position) { + return await this.baseFs.readPromise(fd, buffer, offset, length, position); + } + readSync(fd, buffer, offset, length, position) { + return this.baseFs.readSync(fd, buffer, offset, length, position); + } + async writePromise(fd, buffer, offset, length, position) { + if (typeof buffer === `string`) { + return await this.baseFs.writePromise(fd, buffer, offset); + } else { + return await this.baseFs.writePromise(fd, buffer, offset, length, position); + } + } + writeSync(fd, buffer, offset, length, position) { + if (typeof buffer === `string`) { + return this.baseFs.writeSync(fd, buffer, offset); + } else { + return this.baseFs.writeSync(fd, buffer, offset, length, position); + } + } + async closePromise(fd) { + return this.baseFs.closePromise(fd); + } + closeSync(fd) { + this.baseFs.closeSync(fd); + } + createReadStream(p, opts) { + return this.baseFs.createReadStream(p !== null ? this.mapToBase(p) : p, opts); + } + createWriteStream(p, opts) { + return this.baseFs.createWriteStream(p !== null ? this.mapToBase(p) : p, opts); + } + async realpathPromise(p) { + return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(p))); + } + realpathSync(p) { + return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(p))); + } + async existsPromise(p) { + return this.baseFs.existsPromise(this.mapToBase(p)); + } + existsSync(p) { + return this.baseFs.existsSync(this.mapToBase(p)); + } + accessSync(p, mode) { + return this.baseFs.accessSync(this.mapToBase(p), mode); + } + async accessPromise(p, mode) { + return this.baseFs.accessPromise(this.mapToBase(p), mode); + } + async statPromise(p, opts) { + return this.baseFs.statPromise(this.mapToBase(p), opts); + } + statSync(p, opts) { + return this.baseFs.statSync(this.mapToBase(p), opts); + } + async fstatPromise(fd, opts) { + return this.baseFs.fstatPromise(fd, opts); + } + fstatSync(fd, opts) { + return this.baseFs.fstatSync(fd, opts); + } + lstatPromise(p, opts) { + return this.baseFs.lstatPromise(this.mapToBase(p), opts); + } + lstatSync(p, opts) { + return this.baseFs.lstatSync(this.mapToBase(p), opts); + } + async fchmodPromise(fd, mask) { + return this.baseFs.fchmodPromise(fd, mask); + } + fchmodSync(fd, mask) { + return this.baseFs.fchmodSync(fd, mask); + } + async chmodPromise(p, mask) { + return this.baseFs.chmodPromise(this.mapToBase(p), mask); + } + chmodSync(p, mask) { + return this.baseFs.chmodSync(this.mapToBase(p), mask); + } + async fchownPromise(fd, uid, gid) { + return this.baseFs.fchownPromise(fd, uid, gid); + } + fchownSync(fd, uid, gid) { + return this.baseFs.fchownSync(fd, uid, gid); + } + async chownPromise(p, uid, gid) { + return this.baseFs.chownPromise(this.mapToBase(p), uid, gid); + } + chownSync(p, uid, gid) { + return this.baseFs.chownSync(this.mapToBase(p), uid, gid); + } + async renamePromise(oldP, newP) { + return this.baseFs.renamePromise(this.mapToBase(oldP), this.mapToBase(newP)); + } + renameSync(oldP, newP) { + return this.baseFs.renameSync(this.mapToBase(oldP), this.mapToBase(newP)); + } + async copyFilePromise(sourceP, destP, flags = 0) { + return this.baseFs.copyFilePromise(this.mapToBase(sourceP), this.mapToBase(destP), flags); + } + copyFileSync(sourceP, destP, flags = 0) { + return this.baseFs.copyFileSync(this.mapToBase(sourceP), this.mapToBase(destP), flags); + } + async appendFilePromise(p, content, opts) { + return this.baseFs.appendFilePromise(this.fsMapToBase(p), content, opts); + } + appendFileSync(p, content, opts) { + return this.baseFs.appendFileSync(this.fsMapToBase(p), content, opts); + } + async writeFilePromise(p, content, opts) { + return this.baseFs.writeFilePromise(this.fsMapToBase(p), content, opts); + } + writeFileSync(p, content, opts) { + return this.baseFs.writeFileSync(this.fsMapToBase(p), content, opts); + } + async unlinkPromise(p) { + return this.baseFs.unlinkPromise(this.mapToBase(p)); + } + unlinkSync(p) { + return this.baseFs.unlinkSync(this.mapToBase(p)); + } + async utimesPromise(p, atime, mtime) { + return this.baseFs.utimesPromise(this.mapToBase(p), atime, mtime); + } + utimesSync(p, atime, mtime) { + return this.baseFs.utimesSync(this.mapToBase(p), atime, mtime); + } + async lutimesPromise(p, atime, mtime) { + return this.baseFs.lutimesPromise(this.mapToBase(p), atime, mtime); + } + lutimesSync(p, atime, mtime) { + return this.baseFs.lutimesSync(this.mapToBase(p), atime, mtime); + } + async mkdirPromise(p, opts) { + return this.baseFs.mkdirPromise(this.mapToBase(p), opts); + } + mkdirSync(p, opts) { + return this.baseFs.mkdirSync(this.mapToBase(p), opts); + } + async rmdirPromise(p, opts) { + return this.baseFs.rmdirPromise(this.mapToBase(p), opts); + } + rmdirSync(p, opts) { + return this.baseFs.rmdirSync(this.mapToBase(p), opts); + } + async rmPromise(p, opts) { + return this.baseFs.rmPromise(this.mapToBase(p), opts); + } + rmSync(p, opts) { + return this.baseFs.rmSync(this.mapToBase(p), opts); + } + async linkPromise(existingP, newP) { + return this.baseFs.linkPromise(this.mapToBase(existingP), this.mapToBase(newP)); + } + linkSync(existingP, newP) { + return this.baseFs.linkSync(this.mapToBase(existingP), this.mapToBase(newP)); + } + async symlinkPromise(target, p, type) { + const mappedP = this.mapToBase(p); + if (this.pathUtils.isAbsolute(target)) + return this.baseFs.symlinkPromise(this.mapToBase(target), mappedP, type); + const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target)); + const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget); + return this.baseFs.symlinkPromise(mappedTarget, mappedP, type); + } + symlinkSync(target, p, type) { + const mappedP = this.mapToBase(p); + if (this.pathUtils.isAbsolute(target)) + return this.baseFs.symlinkSync(this.mapToBase(target), mappedP, type); + const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target)); + const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget); + return this.baseFs.symlinkSync(mappedTarget, mappedP, type); + } + async readFilePromise(p, encoding) { + return this.baseFs.readFilePromise(this.fsMapToBase(p), encoding); + } + readFileSync(p, encoding) { + return this.baseFs.readFileSync(this.fsMapToBase(p), encoding); + } + readdirPromise(p, opts) { + return this.baseFs.readdirPromise(this.mapToBase(p), opts); + } + readdirSync(p, opts) { + return this.baseFs.readdirSync(this.mapToBase(p), opts); + } + async readlinkPromise(p) { + return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(p))); + } + readlinkSync(p) { + return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(p))); + } + async truncatePromise(p, len) { + return this.baseFs.truncatePromise(this.mapToBase(p), len); + } + truncateSync(p, len) { + return this.baseFs.truncateSync(this.mapToBase(p), len); + } + async ftruncatePromise(fd, len) { + return this.baseFs.ftruncatePromise(fd, len); + } + ftruncateSync(fd, len) { + return this.baseFs.ftruncateSync(fd, len); + } + watch(p, a, b) { + return this.baseFs.watch( + this.mapToBase(p), + // @ts-expect-error - reason TBS + a, + b + ); + } + watchFile(p, a, b) { + return this.baseFs.watchFile( + this.mapToBase(p), + // @ts-expect-error - reason TBS + a, + b + ); + } + unwatchFile(p, cb) { + return this.baseFs.unwatchFile(this.mapToBase(p), cb); + } + fsMapToBase(p) { + if (typeof p === `number`) { + return p; + } else { + return this.mapToBase(p); + } + } +} + +function direntToPortable(dirent) { + const portableDirent = dirent; + if (typeof dirent.path === `string`) + portableDirent.path = npath.toPortablePath(dirent.path); + return portableDirent; +} +class NodeFS extends BasePortableFakeFS { + realFs; + constructor(realFs = fs__default.default) { + super(); + this.realFs = realFs; + } + getExtractHint() { + return false; + } + getRealPath() { + return PortablePath.root; + } + resolve(p) { + return ppath.resolve(p); + } + async openPromise(p, flags, mode) { + return await new Promise((resolve, reject) => { + this.realFs.open(npath.fromPortablePath(p), flags, mode, this.makeCallback(resolve, reject)); + }); + } + openSync(p, flags, mode) { + return this.realFs.openSync(npath.fromPortablePath(p), flags, mode); + } + async opendirPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (typeof opts !== `undefined`) { + this.realFs.opendir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.opendir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }).then((dir) => { + const dirWithFixedPath = dir; + Object.defineProperty(dirWithFixedPath, `path`, { + value: p, + configurable: true, + writable: true + }); + return dirWithFixedPath; + }); + } + opendirSync(p, opts) { + const dir = typeof opts !== `undefined` ? this.realFs.opendirSync(npath.fromPortablePath(p), opts) : this.realFs.opendirSync(npath.fromPortablePath(p)); + const dirWithFixedPath = dir; + Object.defineProperty(dirWithFixedPath, `path`, { + value: p, + configurable: true, + writable: true + }); + return dirWithFixedPath; + } + async readPromise(fd, buffer, offset = 0, length = 0, position = -1) { + return await new Promise((resolve, reject) => { + this.realFs.read(fd, buffer, offset, length, position, (error, bytesRead) => { + if (error) { + reject(error); + } else { + resolve(bytesRead); + } + }); + }); + } + readSync(fd, buffer, offset, length, position) { + return this.realFs.readSync(fd, buffer, offset, length, position); + } + async writePromise(fd, buffer, offset, length, position) { + return await new Promise((resolve, reject) => { + if (typeof buffer === `string`) { + return this.realFs.write(fd, buffer, offset, this.makeCallback(resolve, reject)); + } else { + return this.realFs.write(fd, buffer, offset, length, position, this.makeCallback(resolve, reject)); + } + }); + } + writeSync(fd, buffer, offset, length, position) { + if (typeof buffer === `string`) { + return this.realFs.writeSync(fd, buffer, offset); + } else { + return this.realFs.writeSync(fd, buffer, offset, length, position); + } + } + async closePromise(fd) { + await new Promise((resolve, reject) => { + this.realFs.close(fd, this.makeCallback(resolve, reject)); + }); + } + closeSync(fd) { + this.realFs.closeSync(fd); + } + createReadStream(p, opts) { + const realPath = p !== null ? npath.fromPortablePath(p) : p; + return this.realFs.createReadStream(realPath, opts); + } + createWriteStream(p, opts) { + const realPath = p !== null ? npath.fromPortablePath(p) : p; + return this.realFs.createWriteStream(realPath, opts); + } + async realpathPromise(p) { + return await new Promise((resolve, reject) => { + this.realFs.realpath(npath.fromPortablePath(p), {}, this.makeCallback(resolve, reject)); + }).then((path) => { + return npath.toPortablePath(path); + }); + } + realpathSync(p) { + return npath.toPortablePath(this.realFs.realpathSync(npath.fromPortablePath(p), {})); + } + async existsPromise(p) { + return await new Promise((resolve) => { + this.realFs.exists(npath.fromPortablePath(p), resolve); + }); + } + accessSync(p, mode) { + return this.realFs.accessSync(npath.fromPortablePath(p), mode); + } + async accessPromise(p, mode) { + return await new Promise((resolve, reject) => { + this.realFs.access(npath.fromPortablePath(p), mode, this.makeCallback(resolve, reject)); + }); + } + existsSync(p) { + return this.realFs.existsSync(npath.fromPortablePath(p)); + } + async statPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.stat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.stat(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + statSync(p, opts) { + if (opts) { + return this.realFs.statSync(npath.fromPortablePath(p), opts); + } else { + return this.realFs.statSync(npath.fromPortablePath(p)); + } + } + async fstatPromise(fd, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.fstat(fd, opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.fstat(fd, this.makeCallback(resolve, reject)); + } + }); + } + fstatSync(fd, opts) { + if (opts) { + return this.realFs.fstatSync(fd, opts); + } else { + return this.realFs.fstatSync(fd); + } + } + async lstatPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.lstat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.lstat(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + lstatSync(p, opts) { + if (opts) { + return this.realFs.lstatSync(npath.fromPortablePath(p), opts); + } else { + return this.realFs.lstatSync(npath.fromPortablePath(p)); + } + } + async fchmodPromise(fd, mask) { + return await new Promise((resolve, reject) => { + this.realFs.fchmod(fd, mask, this.makeCallback(resolve, reject)); + }); + } + fchmodSync(fd, mask) { + return this.realFs.fchmodSync(fd, mask); + } + async chmodPromise(p, mask) { + return await new Promise((resolve, reject) => { + this.realFs.chmod(npath.fromPortablePath(p), mask, this.makeCallback(resolve, reject)); + }); + } + chmodSync(p, mask) { + return this.realFs.chmodSync(npath.fromPortablePath(p), mask); + } + async fchownPromise(fd, uid, gid) { + return await new Promise((resolve, reject) => { + this.realFs.fchown(fd, uid, gid, this.makeCallback(resolve, reject)); + }); + } + fchownSync(fd, uid, gid) { + return this.realFs.fchownSync(fd, uid, gid); + } + async chownPromise(p, uid, gid) { + return await new Promise((resolve, reject) => { + this.realFs.chown(npath.fromPortablePath(p), uid, gid, this.makeCallback(resolve, reject)); + }); + } + chownSync(p, uid, gid) { + return this.realFs.chownSync(npath.fromPortablePath(p), uid, gid); + } + async renamePromise(oldP, newP) { + return await new Promise((resolve, reject) => { + this.realFs.rename(npath.fromPortablePath(oldP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject)); + }); + } + renameSync(oldP, newP) { + return this.realFs.renameSync(npath.fromPortablePath(oldP), npath.fromPortablePath(newP)); + } + async copyFilePromise(sourceP, destP, flags = 0) { + return await new Promise((resolve, reject) => { + this.realFs.copyFile(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags, this.makeCallback(resolve, reject)); + }); + } + copyFileSync(sourceP, destP, flags = 0) { + return this.realFs.copyFileSync(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags); + } + async appendFilePromise(p, content, opts) { + return await new Promise((resolve, reject) => { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + if (opts) { + this.realFs.appendFile(fsNativePath, content, opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.appendFile(fsNativePath, content, this.makeCallback(resolve, reject)); + } + }); + } + appendFileSync(p, content, opts) { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + if (opts) { + this.realFs.appendFileSync(fsNativePath, content, opts); + } else { + this.realFs.appendFileSync(fsNativePath, content); + } + } + async writeFilePromise(p, content, opts) { + return await new Promise((resolve, reject) => { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + if (opts) { + this.realFs.writeFile(fsNativePath, content, opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.writeFile(fsNativePath, content, this.makeCallback(resolve, reject)); + } + }); + } + writeFileSync(p, content, opts) { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + if (opts) { + this.realFs.writeFileSync(fsNativePath, content, opts); + } else { + this.realFs.writeFileSync(fsNativePath, content); + } + } + async unlinkPromise(p) { + return await new Promise((resolve, reject) => { + this.realFs.unlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + }); + } + unlinkSync(p) { + return this.realFs.unlinkSync(npath.fromPortablePath(p)); + } + async utimesPromise(p, atime, mtime) { + return await new Promise((resolve, reject) => { + this.realFs.utimes(npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject)); + }); + } + utimesSync(p, atime, mtime) { + this.realFs.utimesSync(npath.fromPortablePath(p), atime, mtime); + } + async lutimesPromise(p, atime, mtime) { + return await new Promise((resolve, reject) => { + this.realFs.lutimes(npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject)); + }); + } + lutimesSync(p, atime, mtime) { + this.realFs.lutimesSync(npath.fromPortablePath(p), atime, mtime); + } + async mkdirPromise(p, opts) { + return await new Promise((resolve, reject) => { + this.realFs.mkdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + }); + } + mkdirSync(p, opts) { + return this.realFs.mkdirSync(npath.fromPortablePath(p), opts); + } + async rmdirPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.rmdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.rmdir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + rmdirSync(p, opts) { + return this.realFs.rmdirSync(npath.fromPortablePath(p), opts); + } + async rmPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.rm(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.rm(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + rmSync(p, opts) { + return this.realFs.rmSync(npath.fromPortablePath(p), opts); + } + async linkPromise(existingP, newP) { + return await new Promise((resolve, reject) => { + this.realFs.link(npath.fromPortablePath(existingP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject)); + }); + } + linkSync(existingP, newP) { + return this.realFs.linkSync(npath.fromPortablePath(existingP), npath.fromPortablePath(newP)); + } + async symlinkPromise(target, p, type) { + return await new Promise((resolve, reject) => { + this.realFs.symlink(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type, this.makeCallback(resolve, reject)); + }); + } + symlinkSync(target, p, type) { + return this.realFs.symlinkSync(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type); + } + async readFilePromise(p, encoding) { + return await new Promise((resolve, reject) => { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + this.realFs.readFile(fsNativePath, encoding, this.makeCallback(resolve, reject)); + }); + } + readFileSync(p, encoding) { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + return this.realFs.readFileSync(fsNativePath, encoding); + } + async readdirPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + if (opts.recursive && process.platform === `win32`) { + if (opts.withFileTypes) { + this.realFs.readdir(npath.fromPortablePath(p), opts, this.makeCallback((results) => resolve(results.map(direntToPortable)), reject)); + } else { + this.realFs.readdir(npath.fromPortablePath(p), opts, this.makeCallback((results) => resolve(results.map(npath.toPortablePath)), reject)); + } + } else { + this.realFs.readdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } + } else { + this.realFs.readdir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + readdirSync(p, opts) { + if (opts) { + if (opts.recursive && process.platform === `win32`) { + if (opts.withFileTypes) { + return this.realFs.readdirSync(npath.fromPortablePath(p), opts).map(direntToPortable); + } else { + return this.realFs.readdirSync(npath.fromPortablePath(p), opts).map(npath.toPortablePath); + } + } else { + return this.realFs.readdirSync(npath.fromPortablePath(p), opts); + } + } else { + return this.realFs.readdirSync(npath.fromPortablePath(p)); + } + } + async readlinkPromise(p) { + return await new Promise((resolve, reject) => { + this.realFs.readlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + }).then((path) => { + return npath.toPortablePath(path); + }); + } + readlinkSync(p) { + return npath.toPortablePath(this.realFs.readlinkSync(npath.fromPortablePath(p))); + } + async truncatePromise(p, len) { + return await new Promise((resolve, reject) => { + this.realFs.truncate(npath.fromPortablePath(p), len, this.makeCallback(resolve, reject)); + }); + } + truncateSync(p, len) { + return this.realFs.truncateSync(npath.fromPortablePath(p), len); + } + async ftruncatePromise(fd, len) { + return await new Promise((resolve, reject) => { + this.realFs.ftruncate(fd, len, this.makeCallback(resolve, reject)); + }); + } + ftruncateSync(fd, len) { + return this.realFs.ftruncateSync(fd, len); + } + watch(p, a, b) { + return this.realFs.watch( + npath.fromPortablePath(p), + // @ts-expect-error - reason TBS + a, + b + ); + } + watchFile(p, a, b) { + return this.realFs.watchFile( + npath.fromPortablePath(p), + // @ts-expect-error - reason TBS + a, + b + ); + } + unwatchFile(p, cb) { + return this.realFs.unwatchFile(npath.fromPortablePath(p), cb); + } + makeCallback(resolve, reject) { + return (err, result) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }; + } +} + +const MOUNT_MASK = 4278190080; +class MountFS extends BasePortableFakeFS { + baseFs; + mountInstances; + fdMap = /* @__PURE__ */ new Map(); + nextFd = 3; + factoryPromise; + factorySync; + filter; + getMountPoint; + magic; + maxAge; + maxOpenFiles; + typeCheck; + isMount = /* @__PURE__ */ new Set(); + notMount = /* @__PURE__ */ new Set(); + realPaths = /* @__PURE__ */ new Map(); + constructor({ baseFs = new NodeFS(), filter = null, magicByte = 42, maxOpenFiles = Infinity, useCache = true, maxAge = 5e3, typeCheck = fs.constants.S_IFREG, getMountPoint, factoryPromise, factorySync }) { + if (Math.floor(magicByte) !== magicByte || !(magicByte > 1 && magicByte <= 127)) + throw new Error(`The magic byte must be set to a round value between 1 and 127 included`); + super(); + this.baseFs = baseFs; + this.mountInstances = useCache ? /* @__PURE__ */ new Map() : null; + this.factoryPromise = factoryPromise; + this.factorySync = factorySync; + this.filter = filter; + this.getMountPoint = getMountPoint; + this.magic = magicByte << 24; + this.maxAge = maxAge; + this.maxOpenFiles = maxOpenFiles; + this.typeCheck = typeCheck; + } + getExtractHint(hints) { + return this.baseFs.getExtractHint(hints); + } + getRealPath() { + return this.baseFs.getRealPath(); + } + saveAndClose() { + unwatchAllFiles(this); + if (this.mountInstances) { + for (const [path, { childFs }] of this.mountInstances.entries()) { + childFs.saveAndClose?.(); + this.mountInstances.delete(path); + } + } + } + discardAndClose() { + unwatchAllFiles(this); + if (this.mountInstances) { + for (const [path, { childFs }] of this.mountInstances.entries()) { + childFs.discardAndClose?.(); + this.mountInstances.delete(path); + } + } + } + resolve(p) { + return this.baseFs.resolve(p); + } + remapFd(mountFs, fd) { + const remappedFd = this.nextFd++ | this.magic; + this.fdMap.set(remappedFd, [mountFs, fd]); + return remappedFd; + } + async openPromise(p, flags, mode) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.openPromise(p, flags, mode); + }, async (mountFs, { subPath }) => { + return this.remapFd(mountFs, await mountFs.openPromise(subPath, flags, mode)); + }); + } + openSync(p, flags, mode) { + return this.makeCallSync(p, () => { + return this.baseFs.openSync(p, flags, mode); + }, (mountFs, { subPath }) => { + return this.remapFd(mountFs, mountFs.openSync(subPath, flags, mode)); + }); + } + async opendirPromise(p, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.opendirPromise(p, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.opendirPromise(subPath, opts); + }, { + requireSubpath: false + }); + } + opendirSync(p, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.opendirSync(p, opts); + }, (mountFs, { subPath }) => { + return mountFs.opendirSync(subPath, opts); + }, { + requireSubpath: false + }); + } + async readPromise(fd, buffer, offset, length, position) { + if ((fd & MOUNT_MASK) !== this.magic) + return await this.baseFs.readPromise(fd, buffer, offset, length, position); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`read`); + const [mountFs, realFd] = entry; + return await mountFs.readPromise(realFd, buffer, offset, length, position); + } + readSync(fd, buffer, offset, length, position) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.readSync(fd, buffer, offset, length, position); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`readSync`); + const [mountFs, realFd] = entry; + return mountFs.readSync(realFd, buffer, offset, length, position); + } + async writePromise(fd, buffer, offset, length, position) { + if ((fd & MOUNT_MASK) !== this.magic) { + if (typeof buffer === `string`) { + return await this.baseFs.writePromise(fd, buffer, offset); + } else { + return await this.baseFs.writePromise(fd, buffer, offset, length, position); + } + } + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`write`); + const [mountFs, realFd] = entry; + if (typeof buffer === `string`) { + return await mountFs.writePromise(realFd, buffer, offset); + } else { + return await mountFs.writePromise(realFd, buffer, offset, length, position); + } + } + writeSync(fd, buffer, offset, length, position) { + if ((fd & MOUNT_MASK) !== this.magic) { + if (typeof buffer === `string`) { + return this.baseFs.writeSync(fd, buffer, offset); + } else { + return this.baseFs.writeSync(fd, buffer, offset, length, position); + } + } + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`writeSync`); + const [mountFs, realFd] = entry; + if (typeof buffer === `string`) { + return mountFs.writeSync(realFd, buffer, offset); + } else { + return mountFs.writeSync(realFd, buffer, offset, length, position); + } + } + async closePromise(fd) { + if ((fd & MOUNT_MASK) !== this.magic) + return await this.baseFs.closePromise(fd); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`close`); + this.fdMap.delete(fd); + const [mountFs, realFd] = entry; + return await mountFs.closePromise(realFd); + } + closeSync(fd) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.closeSync(fd); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`closeSync`); + this.fdMap.delete(fd); + const [mountFs, realFd] = entry; + return mountFs.closeSync(realFd); + } + createReadStream(p, opts) { + if (p === null) + return this.baseFs.createReadStream(p, opts); + return this.makeCallSync(p, () => { + return this.baseFs.createReadStream(p, opts); + }, (mountFs, { archivePath, subPath }) => { + const stream = mountFs.createReadStream(subPath, opts); + stream.path = npath.fromPortablePath(this.pathUtils.join(archivePath, subPath)); + return stream; + }); + } + createWriteStream(p, opts) { + if (p === null) + return this.baseFs.createWriteStream(p, opts); + return this.makeCallSync(p, () => { + return this.baseFs.createWriteStream(p, opts); + }, (mountFs, { subPath }) => { + return mountFs.createWriteStream(subPath, opts); + }); + } + async realpathPromise(p) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.realpathPromise(p); + }, async (mountFs, { archivePath, subPath }) => { + let realArchivePath = this.realPaths.get(archivePath); + if (typeof realArchivePath === `undefined`) { + realArchivePath = await this.baseFs.realpathPromise(archivePath); + this.realPaths.set(archivePath, realArchivePath); + } + return this.pathUtils.join(realArchivePath, this.pathUtils.relative(PortablePath.root, await mountFs.realpathPromise(subPath))); + }); + } + realpathSync(p) { + return this.makeCallSync(p, () => { + return this.baseFs.realpathSync(p); + }, (mountFs, { archivePath, subPath }) => { + let realArchivePath = this.realPaths.get(archivePath); + if (typeof realArchivePath === `undefined`) { + realArchivePath = this.baseFs.realpathSync(archivePath); + this.realPaths.set(archivePath, realArchivePath); + } + return this.pathUtils.join(realArchivePath, this.pathUtils.relative(PortablePath.root, mountFs.realpathSync(subPath))); + }); + } + async existsPromise(p) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.existsPromise(p); + }, async (mountFs, { subPath }) => { + return await mountFs.existsPromise(subPath); + }); + } + existsSync(p) { + return this.makeCallSync(p, () => { + return this.baseFs.existsSync(p); + }, (mountFs, { subPath }) => { + return mountFs.existsSync(subPath); + }); + } + async accessPromise(p, mode) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.accessPromise(p, mode); + }, async (mountFs, { subPath }) => { + return await mountFs.accessPromise(subPath, mode); + }); + } + accessSync(p, mode) { + return this.makeCallSync(p, () => { + return this.baseFs.accessSync(p, mode); + }, (mountFs, { subPath }) => { + return mountFs.accessSync(subPath, mode); + }); + } + async statPromise(p, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.statPromise(p, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.statPromise(subPath, opts); + }); + } + statSync(p, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.statSync(p, opts); + }, (mountFs, { subPath }) => { + return mountFs.statSync(subPath, opts); + }); + } + async fstatPromise(fd, opts) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.fstatPromise(fd, opts); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`fstat`); + const [mountFs, realFd] = entry; + return mountFs.fstatPromise(realFd, opts); + } + fstatSync(fd, opts) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.fstatSync(fd, opts); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`fstatSync`); + const [mountFs, realFd] = entry; + return mountFs.fstatSync(realFd, opts); + } + async lstatPromise(p, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.lstatPromise(p, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.lstatPromise(subPath, opts); + }); + } + lstatSync(p, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.lstatSync(p, opts); + }, (mountFs, { subPath }) => { + return mountFs.lstatSync(subPath, opts); + }); + } + async fchmodPromise(fd, mask) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.fchmodPromise(fd, mask); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`fchmod`); + const [mountFs, realFd] = entry; + return mountFs.fchmodPromise(realFd, mask); + } + fchmodSync(fd, mask) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.fchmodSync(fd, mask); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`fchmodSync`); + const [mountFs, realFd] = entry; + return mountFs.fchmodSync(realFd, mask); + } + async chmodPromise(p, mask) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.chmodPromise(p, mask); + }, async (mountFs, { subPath }) => { + return await mountFs.chmodPromise(subPath, mask); + }); + } + chmodSync(p, mask) { + return this.makeCallSync(p, () => { + return this.baseFs.chmodSync(p, mask); + }, (mountFs, { subPath }) => { + return mountFs.chmodSync(subPath, mask); + }); + } + async fchownPromise(fd, uid, gid) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.fchownPromise(fd, uid, gid); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`fchown`); + const [zipFs, realFd] = entry; + return zipFs.fchownPromise(realFd, uid, gid); + } + fchownSync(fd, uid, gid) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.fchownSync(fd, uid, gid); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`fchownSync`); + const [zipFs, realFd] = entry; + return zipFs.fchownSync(realFd, uid, gid); + } + async chownPromise(p, uid, gid) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.chownPromise(p, uid, gid); + }, async (mountFs, { subPath }) => { + return await mountFs.chownPromise(subPath, uid, gid); + }); + } + chownSync(p, uid, gid) { + return this.makeCallSync(p, () => { + return this.baseFs.chownSync(p, uid, gid); + }, (mountFs, { subPath }) => { + return mountFs.chownSync(subPath, uid, gid); + }); + } + async renamePromise(oldP, newP) { + return await this.makeCallPromise(oldP, async () => { + return await this.makeCallPromise(newP, async () => { + return await this.baseFs.renamePromise(oldP, newP); + }, async () => { + throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); + }); + }, async (mountFsO, { subPath: subPathO }) => { + return await this.makeCallPromise(newP, async () => { + throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); + }, async (mountFsN, { subPath: subPathN }) => { + if (mountFsO !== mountFsN) { + throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); + } else { + return await mountFsO.renamePromise(subPathO, subPathN); + } + }); + }); + } + renameSync(oldP, newP) { + return this.makeCallSync(oldP, () => { + return this.makeCallSync(newP, () => { + return this.baseFs.renameSync(oldP, newP); + }, () => { + throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); + }); + }, (mountFsO, { subPath: subPathO }) => { + return this.makeCallSync(newP, () => { + throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); + }, (mountFsN, { subPath: subPathN }) => { + if (mountFsO !== mountFsN) { + throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); + } else { + return mountFsO.renameSync(subPathO, subPathN); + } + }); + }); + } + async copyFilePromise(sourceP, destP, flags = 0) { + const fallback = async (sourceFs, sourceP2, destFs, destP2) => { + if ((flags & fs.constants.COPYFILE_FICLONE_FORCE) !== 0) + throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${sourceP2}' -> ${destP2}'`), { code: `EXDEV` }); + if (flags & fs.constants.COPYFILE_EXCL && await this.existsPromise(sourceP2)) + throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EEXIST` }); + let content; + try { + content = await sourceFs.readFilePromise(sourceP2); + } catch { + throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EINVAL` }); + } + await destFs.writeFilePromise(destP2, content); + }; + return await this.makeCallPromise(sourceP, async () => { + return await this.makeCallPromise(destP, async () => { + return await this.baseFs.copyFilePromise(sourceP, destP, flags); + }, async (mountFsD, { subPath: subPathD }) => { + return await fallback(this.baseFs, sourceP, mountFsD, subPathD); + }); + }, async (mountFsS, { subPath: subPathS }) => { + return await this.makeCallPromise(destP, async () => { + return await fallback(mountFsS, subPathS, this.baseFs, destP); + }, async (mountFsD, { subPath: subPathD }) => { + if (mountFsS !== mountFsD) { + return await fallback(mountFsS, subPathS, mountFsD, subPathD); + } else { + return await mountFsS.copyFilePromise(subPathS, subPathD, flags); + } + }); + }); + } + copyFileSync(sourceP, destP, flags = 0) { + const fallback = (sourceFs, sourceP2, destFs, destP2) => { + if ((flags & fs.constants.COPYFILE_FICLONE_FORCE) !== 0) + throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${sourceP2}' -> ${destP2}'`), { code: `EXDEV` }); + if (flags & fs.constants.COPYFILE_EXCL && this.existsSync(sourceP2)) + throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EEXIST` }); + let content; + try { + content = sourceFs.readFileSync(sourceP2); + } catch { + throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EINVAL` }); + } + destFs.writeFileSync(destP2, content); + }; + return this.makeCallSync(sourceP, () => { + return this.makeCallSync(destP, () => { + return this.baseFs.copyFileSync(sourceP, destP, flags); + }, (mountFsD, { subPath: subPathD }) => { + return fallback(this.baseFs, sourceP, mountFsD, subPathD); + }); + }, (mountFsS, { subPath: subPathS }) => { + return this.makeCallSync(destP, () => { + return fallback(mountFsS, subPathS, this.baseFs, destP); + }, (mountFsD, { subPath: subPathD }) => { + if (mountFsS !== mountFsD) { + return fallback(mountFsS, subPathS, mountFsD, subPathD); + } else { + return mountFsS.copyFileSync(subPathS, subPathD, flags); + } + }); + }); + } + async appendFilePromise(p, content, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.appendFilePromise(p, content, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.appendFilePromise(subPath, content, opts); + }); + } + appendFileSync(p, content, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.appendFileSync(p, content, opts); + }, (mountFs, { subPath }) => { + return mountFs.appendFileSync(subPath, content, opts); + }); + } + async writeFilePromise(p, content, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.writeFilePromise(p, content, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.writeFilePromise(subPath, content, opts); + }); + } + writeFileSync(p, content, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.writeFileSync(p, content, opts); + }, (mountFs, { subPath }) => { + return mountFs.writeFileSync(subPath, content, opts); + }); + } + async unlinkPromise(p) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.unlinkPromise(p); + }, async (mountFs, { subPath }) => { + return await mountFs.unlinkPromise(subPath); + }); + } + unlinkSync(p) { + return this.makeCallSync(p, () => { + return this.baseFs.unlinkSync(p); + }, (mountFs, { subPath }) => { + return mountFs.unlinkSync(subPath); + }); + } + async utimesPromise(p, atime, mtime) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.utimesPromise(p, atime, mtime); + }, async (mountFs, { subPath }) => { + return await mountFs.utimesPromise(subPath, atime, mtime); + }); + } + utimesSync(p, atime, mtime) { + return this.makeCallSync(p, () => { + return this.baseFs.utimesSync(p, atime, mtime); + }, (mountFs, { subPath }) => { + return mountFs.utimesSync(subPath, atime, mtime); + }); + } + async lutimesPromise(p, atime, mtime) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.lutimesPromise(p, atime, mtime); + }, async (mountFs, { subPath }) => { + return await mountFs.lutimesPromise(subPath, atime, mtime); + }); + } + lutimesSync(p, atime, mtime) { + return this.makeCallSync(p, () => { + return this.baseFs.lutimesSync(p, atime, mtime); + }, (mountFs, { subPath }) => { + return mountFs.lutimesSync(subPath, atime, mtime); + }); + } + async mkdirPromise(p, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.mkdirPromise(p, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.mkdirPromise(subPath, opts); + }); + } + mkdirSync(p, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.mkdirSync(p, opts); + }, (mountFs, { subPath }) => { + return mountFs.mkdirSync(subPath, opts); + }); + } + async rmdirPromise(p, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.rmdirPromise(p, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.rmdirPromise(subPath, opts); + }); + } + rmdirSync(p, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.rmdirSync(p, opts); + }, (mountFs, { subPath }) => { + return mountFs.rmdirSync(subPath, opts); + }); + } + async rmPromise(p, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.rmPromise(p, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.rmPromise(subPath, opts); + }); + } + rmSync(p, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.rmSync(p, opts); + }, (mountFs, { subPath }) => { + return mountFs.rmSync(subPath, opts); + }); + } + async linkPromise(existingP, newP) { + return await this.makeCallPromise(newP, async () => { + return await this.baseFs.linkPromise(existingP, newP); + }, async (mountFs, { subPath }) => { + return await mountFs.linkPromise(existingP, subPath); + }); + } + linkSync(existingP, newP) { + return this.makeCallSync(newP, () => { + return this.baseFs.linkSync(existingP, newP); + }, (mountFs, { subPath }) => { + return mountFs.linkSync(existingP, subPath); + }); + } + async symlinkPromise(target, p, type) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.symlinkPromise(target, p, type); + }, async (mountFs, { subPath }) => { + return await mountFs.symlinkPromise(target, subPath); + }); + } + symlinkSync(target, p, type) { + return this.makeCallSync(p, () => { + return this.baseFs.symlinkSync(target, p, type); + }, (mountFs, { subPath }) => { + return mountFs.symlinkSync(target, subPath); + }); + } + async readFilePromise(p, encoding) { + return this.makeCallPromise(p, async () => { + return await this.baseFs.readFilePromise(p, encoding); + }, async (mountFs, { subPath }) => { + return await mountFs.readFilePromise(subPath, encoding); + }); + } + readFileSync(p, encoding) { + return this.makeCallSync(p, () => { + return this.baseFs.readFileSync(p, encoding); + }, (mountFs, { subPath }) => { + return mountFs.readFileSync(subPath, encoding); + }); + } + async readdirPromise(p, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.readdirPromise(p, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.readdirPromise(subPath, opts); + }, { + requireSubpath: false + }); + } + readdirSync(p, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.readdirSync(p, opts); + }, (mountFs, { subPath }) => { + return mountFs.readdirSync(subPath, opts); + }, { + requireSubpath: false + }); + } + async readlinkPromise(p) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.readlinkPromise(p); + }, async (mountFs, { subPath }) => { + return await mountFs.readlinkPromise(subPath); + }); + } + readlinkSync(p) { + return this.makeCallSync(p, () => { + return this.baseFs.readlinkSync(p); + }, (mountFs, { subPath }) => { + return mountFs.readlinkSync(subPath); + }); + } + async truncatePromise(p, len) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.truncatePromise(p, len); + }, async (mountFs, { subPath }) => { + return await mountFs.truncatePromise(subPath, len); + }); + } + truncateSync(p, len) { + return this.makeCallSync(p, () => { + return this.baseFs.truncateSync(p, len); + }, (mountFs, { subPath }) => { + return mountFs.truncateSync(subPath, len); + }); + } + async ftruncatePromise(fd, len) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.ftruncatePromise(fd, len); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`ftruncate`); + const [mountFs, realFd] = entry; + return mountFs.ftruncatePromise(realFd, len); + } + ftruncateSync(fd, len) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.ftruncateSync(fd, len); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`ftruncateSync`); + const [mountFs, realFd] = entry; + return mountFs.ftruncateSync(realFd, len); + } + watch(p, a, b) { + return this.makeCallSync(p, () => { + return this.baseFs.watch( + p, + // @ts-expect-error - reason TBS + a, + b + ); + }, (mountFs, { subPath }) => { + return mountFs.watch( + subPath, + // @ts-expect-error - reason TBS + a, + b + ); + }); + } + watchFile(p, a, b) { + return this.makeCallSync(p, () => { + return this.baseFs.watchFile( + p, + // @ts-expect-error - reason TBS + a, + b + ); + }, () => { + return watchFile(this, p, a, b); + }); + } + unwatchFile(p, cb) { + return this.makeCallSync(p, () => { + return this.baseFs.unwatchFile(p, cb); + }, () => { + return unwatchFile(this, p, cb); + }); + } + async makeCallPromise(p, discard, accept, { requireSubpath = true } = {}) { + if (typeof p !== `string`) + return await discard(); + const normalizedP = this.resolve(p); + const mountInfo = this.findMount(normalizedP); + if (!mountInfo) + return await discard(); + if (requireSubpath && mountInfo.subPath === `/`) + return await discard(); + return await this.getMountPromise(mountInfo.archivePath, async (mountFs) => await accept(mountFs, mountInfo)); + } + makeCallSync(p, discard, accept, { requireSubpath = true } = {}) { + if (typeof p !== `string`) + return discard(); + const normalizedP = this.resolve(p); + const mountInfo = this.findMount(normalizedP); + if (!mountInfo) + return discard(); + if (requireSubpath && mountInfo.subPath === `/`) + return discard(); + return this.getMountSync(mountInfo.archivePath, (mountFs) => accept(mountFs, mountInfo)); + } + findMount(p) { + if (this.filter && !this.filter.test(p)) + return null; + let filePath = ``; + while (true) { + const pathPartWithArchive = p.substring(filePath.length); + const mountPoint = this.getMountPoint(pathPartWithArchive, filePath); + if (!mountPoint) + return null; + filePath = this.pathUtils.join(filePath, mountPoint); + if (!this.isMount.has(filePath)) { + if (this.notMount.has(filePath)) + continue; + try { + if (this.typeCheck !== null && (this.baseFs.statSync(filePath).mode & fs.constants.S_IFMT) !== this.typeCheck) { + this.notMount.add(filePath); + continue; + } + } catch { + return null; + } + this.isMount.add(filePath); + } + return { + archivePath: filePath, + subPath: this.pathUtils.join(PortablePath.root, p.substring(filePath.length)) + }; + } + } + limitOpenFilesTimeout = null; + limitOpenFiles(max) { + if (this.mountInstances === null) + return; + const now = Date.now(); + let nextExpiresAt = now + this.maxAge; + let closeCount = max === null ? 0 : this.mountInstances.size - max; + for (const [path, { childFs, expiresAt, refCount }] of this.mountInstances.entries()) { + if (refCount !== 0 || childFs.hasOpenFileHandles?.()) { + continue; + } else if (now >= expiresAt) { + childFs.saveAndClose?.(); + this.mountInstances.delete(path); + closeCount -= 1; + continue; + } else if (max === null || closeCount <= 0) { + nextExpiresAt = expiresAt; + break; + } + childFs.saveAndClose?.(); + this.mountInstances.delete(path); + closeCount -= 1; + } + if (this.limitOpenFilesTimeout === null && (max === null && this.mountInstances.size > 0 || max !== null) && isFinite(nextExpiresAt)) { + this.limitOpenFilesTimeout = setTimeout(() => { + this.limitOpenFilesTimeout = null; + this.limitOpenFiles(null); + }, nextExpiresAt - now).unref(); + } + } + async getMountPromise(p, accept) { + if (this.mountInstances) { + let cachedMountFs = this.mountInstances.get(p); + if (!cachedMountFs) { + const createFsInstance = await this.factoryPromise(this.baseFs, p); + cachedMountFs = this.mountInstances.get(p); + if (!cachedMountFs) { + cachedMountFs = { + childFs: createFsInstance(), + expiresAt: 0, + refCount: 0 + }; + } + } + this.mountInstances.delete(p); + this.limitOpenFiles(this.maxOpenFiles - 1); + this.mountInstances.set(p, cachedMountFs); + cachedMountFs.expiresAt = Date.now() + this.maxAge; + cachedMountFs.refCount += 1; + try { + return await accept(cachedMountFs.childFs); + } finally { + cachedMountFs.refCount -= 1; + } + } else { + const mountFs = (await this.factoryPromise(this.baseFs, p))(); + try { + return await accept(mountFs); + } finally { + mountFs.saveAndClose?.(); + } + } + } + getMountSync(p, accept) { + if (this.mountInstances) { + let cachedMountFs = this.mountInstances.get(p); + if (!cachedMountFs) { + cachedMountFs = { + childFs: this.factorySync(this.baseFs, p), + expiresAt: 0, + refCount: 0 + }; + } + this.mountInstances.delete(p); + this.limitOpenFiles(this.maxOpenFiles - 1); + this.mountInstances.set(p, cachedMountFs); + cachedMountFs.expiresAt = Date.now() + this.maxAge; + return accept(cachedMountFs.childFs); + } else { + const childFs = this.factorySync(this.baseFs, p); + try { + return accept(childFs); + } finally { + childFs.saveAndClose?.(); + } + } + } +} + +class PosixFS extends ProxiedFS { + baseFs; + constructor(baseFs) { + super(npath); + this.baseFs = baseFs; + } + mapFromBase(path) { + return npath.fromPortablePath(path); + } + mapToBase(path) { + return npath.toPortablePath(path); + } +} + +const NUMBER_REGEXP = /^[0-9]+$/; +const VIRTUAL_REGEXP = /^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/; +const VALID_COMPONENT = /^([^/]+-)?[a-f0-9]+$/; +class VirtualFS extends ProxiedFS { + baseFs; + static makeVirtualPath(base, component, to) { + if (ppath.basename(base) !== `__virtual__`) + throw new Error(`Assertion failed: Virtual folders must be named "__virtual__"`); + if (!ppath.basename(component).match(VALID_COMPONENT)) + throw new Error(`Assertion failed: Virtual components must be ended by an hexadecimal hash`); + const target = ppath.relative(ppath.dirname(base), to); + const segments = target.split(`/`); + let depth = 0; + while (depth < segments.length && segments[depth] === `..`) + depth += 1; + const finalSegments = segments.slice(depth); + const fullVirtualPath = ppath.join(base, component, String(depth), ...finalSegments); + return fullVirtualPath; + } + static resolveVirtual(p) { + const match = p.match(VIRTUAL_REGEXP); + if (!match || !match[3] && match[5]) + return p; + const target = ppath.dirname(match[1]); + if (!match[3] || !match[4]) + return target; + const isnum = NUMBER_REGEXP.test(match[4]); + if (!isnum) + return p; + const depth = Number(match[4]); + const backstep = `../`.repeat(depth); + const subpath = match[5] || `.`; + return VirtualFS.resolveVirtual(ppath.join(target, backstep, subpath)); + } + constructor({ baseFs = new NodeFS() } = {}) { + super(ppath); + this.baseFs = baseFs; + } + getExtractHint(hints) { + return this.baseFs.getExtractHint(hints); + } + getRealPath() { + return this.baseFs.getRealPath(); + } + realpathSync(p) { + const match = p.match(VIRTUAL_REGEXP); + if (!match) + return this.baseFs.realpathSync(p); + if (!match[5]) + return p; + const realpath = this.baseFs.realpathSync(this.mapToBase(p)); + return VirtualFS.makeVirtualPath(match[1], match[3], realpath); + } + async realpathPromise(p) { + const match = p.match(VIRTUAL_REGEXP); + if (!match) + return await this.baseFs.realpathPromise(p); + if (!match[5]) + return p; + const realpath = await this.baseFs.realpathPromise(this.mapToBase(p)); + return VirtualFS.makeVirtualPath(match[1], match[3], realpath); + } + mapToBase(p) { + if (p === ``) + return p; + if (this.pathUtils.isAbsolute(p)) + return VirtualFS.resolveVirtual(p); + const resolvedRoot = VirtualFS.resolveVirtual(this.baseFs.resolve(PortablePath.dot)); + const resolvedP = VirtualFS.resolveVirtual(this.baseFs.resolve(p)); + return ppath.relative(resolvedRoot, resolvedP) || PortablePath.dot; + } + mapFromBase(p) { + return p; + } +} + +const URL = Number(process.versions.node.split('.', 1)[0]) < 20 ? url.URL : globalThis.URL; + +class NodePathFS extends ProxiedFS { + baseFs; + constructor(baseFs) { + super(npath); + this.baseFs = baseFs; + } + mapFromBase(path) { + return path; + } + mapToBase(path) { + if (typeof path === `string`) + return path; + if (path instanceof URL) + return url.fileURLToPath(path); + if (Buffer.isBuffer(path)) { + const str = path.toString(); + if (!isUtf8(path, str)) + throw new Error(`Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942`); + return str; + } + throw new Error(`Unsupported path type: ${nodeUtils.inspect(path)}`); + } +} +function isUtf8(buf, str) { + if (typeof buffer__default.default.isUtf8 !== `undefined`) + return buffer__default.default.isUtf8(buf); + return Buffer.byteLength(str) === buf.byteLength; +} + +const kBaseFs = Symbol(`kBaseFs`); +const kFd = Symbol(`kFd`); +const kClosePromise = Symbol(`kClosePromise`); +const kCloseResolve = Symbol(`kCloseResolve`); +const kCloseReject = Symbol(`kCloseReject`); +const kRefs = Symbol(`kRefs`); +const kRef = Symbol(`kRef`); +const kUnref = Symbol(`kUnref`); +class FileHandle { + [kBaseFs]; + [kFd]; + [kRefs] = 1; + [kClosePromise] = void 0; + [kCloseResolve] = void 0; + [kCloseReject] = void 0; + constructor(fd, baseFs) { + this[kBaseFs] = baseFs; + this[kFd] = fd; + } + get fd() { + return this[kFd]; + } + async appendFile(data, options) { + try { + this[kRef](this.appendFile); + const encoding = (typeof options === `string` ? options : options?.encoding) ?? void 0; + return await this[kBaseFs].appendFilePromise(this.fd, data, encoding ? { encoding } : void 0); + } finally { + this[kUnref](); + } + } + async chown(uid, gid) { + try { + this[kRef](this.chown); + return await this[kBaseFs].fchownPromise(this.fd, uid, gid); + } finally { + this[kUnref](); + } + } + async chmod(mode) { + try { + this[kRef](this.chmod); + return await this[kBaseFs].fchmodPromise(this.fd, mode); + } finally { + this[kUnref](); + } + } + createReadStream(options) { + return this[kBaseFs].createReadStream(null, { ...options, fd: this.fd }); + } + createWriteStream(options) { + return this[kBaseFs].createWriteStream(null, { ...options, fd: this.fd }); + } + // FIXME: Missing FakeFS version + datasync() { + throw new Error(`Method not implemented.`); + } + // FIXME: Missing FakeFS version + sync() { + throw new Error(`Method not implemented.`); + } + async read(bufferOrOptions, offsetOrOptions, length, position) { + try { + this[kRef](this.read); + let buffer; + let offset; + if (!ArrayBuffer.isView(bufferOrOptions)) { + buffer = bufferOrOptions?.buffer ?? Buffer.alloc(16384); + offset = bufferOrOptions?.offset ?? 0; + length = bufferOrOptions?.length ?? buffer.byteLength - offset; + position = bufferOrOptions?.position ?? null; + } else if (typeof offsetOrOptions === `object` && offsetOrOptions !== null) { + buffer = bufferOrOptions; + offset = offsetOrOptions?.offset ?? 0; + length = offsetOrOptions?.length ?? buffer.byteLength - offset; + position = offsetOrOptions?.position ?? null; + } else { + buffer = bufferOrOptions; + offset = offsetOrOptions ?? 0; + length ??= 0; + } + if (length === 0) { + return { + bytesRead: length, + buffer + }; + } + const bytesRead = await this[kBaseFs].readPromise( + this.fd, + // FIXME: FakeFS should support ArrayBufferViews directly + Buffer.isBuffer(buffer) ? buffer : Buffer.from(buffer.buffer, buffer.byteOffset, buffer.byteLength), + offset, + length, + position + ); + return { + bytesRead, + buffer + }; + } finally { + this[kUnref](); + } + } + async readFile(options) { + try { + this[kRef](this.readFile); + const encoding = (typeof options === `string` ? options : options?.encoding) ?? void 0; + return await this[kBaseFs].readFilePromise(this.fd, encoding); + } finally { + this[kUnref](); + } + } + readLines(options) { + return readline.createInterface({ + input: this.createReadStream(options), + crlfDelay: Infinity + }); + } + async stat(opts) { + try { + this[kRef](this.stat); + return await this[kBaseFs].fstatPromise(this.fd, opts); + } finally { + this[kUnref](); + } + } + async truncate(len) { + try { + this[kRef](this.truncate); + return await this[kBaseFs].ftruncatePromise(this.fd, len); + } finally { + this[kUnref](); + } + } + // FIXME: Missing FakeFS version + utimes(atime, mtime) { + throw new Error(`Method not implemented.`); + } + async writeFile(data, options) { + try { + this[kRef](this.writeFile); + const encoding = (typeof options === `string` ? options : options?.encoding) ?? void 0; + await this[kBaseFs].writeFilePromise(this.fd, data, encoding); + } finally { + this[kUnref](); + } + } + async write(...args) { + try { + this[kRef](this.write); + if (ArrayBuffer.isView(args[0])) { + const [buffer, offset, length, position] = args; + const bytesWritten = await this[kBaseFs].writePromise(this.fd, buffer, offset ?? void 0, length ?? void 0, position ?? void 0); + return { bytesWritten, buffer }; + } else { + const [data, position, encoding] = args; + const bytesWritten = await this[kBaseFs].writePromise(this.fd, data, position, encoding); + return { bytesWritten, buffer: data }; + } + } finally { + this[kUnref](); + } + } + // TODO: Use writev from FakeFS when that is implemented + async writev(buffers, position) { + try { + this[kRef](this.writev); + let bytesWritten = 0; + if (typeof position !== `undefined`) { + for (const buffer of buffers) { + const writeResult = await this.write(buffer, void 0, void 0, position); + bytesWritten += writeResult.bytesWritten; + position += writeResult.bytesWritten; + } + } else { + for (const buffer of buffers) { + const writeResult = await this.write(buffer); + bytesWritten += writeResult.bytesWritten; + } + } + return { + buffers, + bytesWritten + }; + } finally { + this[kUnref](); + } + } + // FIXME: Missing FakeFS version + readv(buffers, position) { + throw new Error(`Method not implemented.`); + } + close() { + if (this[kFd] === -1) return Promise.resolve(); + if (this[kClosePromise]) return this[kClosePromise]; + this[kRefs]--; + if (this[kRefs] === 0) { + const fd = this[kFd]; + this[kFd] = -1; + this[kClosePromise] = this[kBaseFs].closePromise(fd).finally(() => { + this[kClosePromise] = void 0; + }); + } else { + this[kClosePromise] = new Promise((resolve, reject) => { + this[kCloseResolve] = resolve; + this[kCloseReject] = reject; + }).finally(() => { + this[kClosePromise] = void 0; + this[kCloseReject] = void 0; + this[kCloseResolve] = void 0; + }); + } + return this[kClosePromise]; + } + [kRef](caller) { + if (this[kFd] === -1) { + const err = new Error(`file closed`); + err.code = `EBADF`; + err.syscall = caller.name; + throw err; + } + this[kRefs]++; + } + [kUnref]() { + this[kRefs]--; + if (this[kRefs] === 0) { + const fd = this[kFd]; + this[kFd] = -1; + this[kBaseFs].closePromise(fd).then(this[kCloseResolve], this[kCloseReject]); + } + } +} + +const SYNC_IMPLEMENTATIONS = /* @__PURE__ */ new Set([ + `accessSync`, + `appendFileSync`, + `createReadStream`, + `createWriteStream`, + `chmodSync`, + `fchmodSync`, + `chownSync`, + `fchownSync`, + `closeSync`, + `copyFileSync`, + `linkSync`, + `lstatSync`, + `fstatSync`, + `lutimesSync`, + `mkdirSync`, + `openSync`, + `opendirSync`, + `readlinkSync`, + `readFileSync`, + `readdirSync`, + `readlinkSync`, + `realpathSync`, + `renameSync`, + `rmdirSync`, + `rmSync`, + `statSync`, + `symlinkSync`, + `truncateSync`, + `ftruncateSync`, + `unlinkSync`, + `unwatchFile`, + `utimesSync`, + `watch`, + `watchFile`, + `writeFileSync`, + `writeSync` +]); +const ASYNC_IMPLEMENTATIONS = /* @__PURE__ */ new Set([ + `accessPromise`, + `appendFilePromise`, + `fchmodPromise`, + `chmodPromise`, + `fchownPromise`, + `chownPromise`, + `closePromise`, + `copyFilePromise`, + `linkPromise`, + `fstatPromise`, + `lstatPromise`, + `lutimesPromise`, + `mkdirPromise`, + `openPromise`, + `opendirPromise`, + `readdirPromise`, + `realpathPromise`, + `readFilePromise`, + `readdirPromise`, + `readlinkPromise`, + `renamePromise`, + `rmdirPromise`, + `rmPromise`, + `statPromise`, + `symlinkPromise`, + `truncatePromise`, + `ftruncatePromise`, + `unlinkPromise`, + `utimesPromise`, + `writeFilePromise`, + `writeSync` +]); +function patchFs(patchedFs, fakeFs) { + fakeFs = new NodePathFS(fakeFs); + const setupFn = (target, name, replacement) => { + const orig = target[name]; + target[name] = replacement; + if (typeof orig?.[nodeUtils.promisify.custom] !== `undefined`) { + replacement[nodeUtils.promisify.custom] = orig[nodeUtils.promisify.custom]; + } + }; + { + setupFn(patchedFs, `exists`, (p, ...args) => { + const hasCallback = typeof args[args.length - 1] === `function`; + const callback = hasCallback ? args.pop() : () => { + }; + process.nextTick(() => { + fakeFs.existsPromise(p).then((exists) => { + callback(exists); + }, () => { + callback(false); + }); + }); + }); + setupFn(patchedFs, `read`, (...args) => { + let [fd, buffer, offset, length, position, callback] = args; + if (args.length <= 3) { + let options = {}; + if (args.length < 3) { + callback = args[1]; + } else { + options = args[1]; + callback = args[2]; + } + ({ + buffer = Buffer.alloc(16384), + offset = 0, + length = buffer.byteLength, + position + } = options); + } + if (offset == null) + offset = 0; + length |= 0; + if (length === 0) { + process.nextTick(() => { + callback(null, 0, buffer); + }); + return; + } + if (position == null) + position = -1; + process.nextTick(() => { + fakeFs.readPromise(fd, buffer, offset, length, position).then((bytesRead) => { + callback(null, bytesRead, buffer); + }, (error) => { + callback(error, 0, buffer); + }); + }); + }); + for (const fnName of ASYNC_IMPLEMENTATIONS) { + const origName = fnName.replace(/Promise$/, ``); + if (typeof patchedFs[origName] === `undefined`) + continue; + const fakeImpl = fakeFs[fnName]; + if (typeof fakeImpl === `undefined`) + continue; + const wrapper = (...args) => { + const hasCallback = typeof args[args.length - 1] === `function`; + const callback = hasCallback ? args.pop() : () => { + }; + process.nextTick(() => { + fakeImpl.apply(fakeFs, args).then((result) => { + callback(null, result); + }, (error) => { + callback(error); + }); + }); + }; + setupFn(patchedFs, origName, wrapper); + } + patchedFs.realpath.native = patchedFs.realpath; + } + { + setupFn(patchedFs, `existsSync`, (p) => { + try { + return fakeFs.existsSync(p); + } catch { + return false; + } + }); + setupFn(patchedFs, `readSync`, (...args) => { + let [fd, buffer, offset, length, position] = args; + if (args.length <= 3) { + const options = args[2] || {}; + ({ offset = 0, length = buffer.byteLength, position } = options); + } + if (offset == null) + offset = 0; + length |= 0; + if (length === 0) + return 0; + if (position == null) + position = -1; + return fakeFs.readSync(fd, buffer, offset, length, position); + }); + for (const fnName of SYNC_IMPLEMENTATIONS) { + const origName = fnName; + if (typeof patchedFs[origName] === `undefined`) + continue; + const fakeImpl = fakeFs[fnName]; + if (typeof fakeImpl === `undefined`) + continue; + setupFn(patchedFs, origName, fakeImpl.bind(fakeFs)); + } + patchedFs.realpathSync.native = patchedFs.realpathSync; + } + { + const patchedFsPromises = patchedFs.promises; + for (const fnName of ASYNC_IMPLEMENTATIONS) { + const origName = fnName.replace(/Promise$/, ``); + if (typeof patchedFsPromises[origName] === `undefined`) + continue; + const fakeImpl = fakeFs[fnName]; + if (typeof fakeImpl === `undefined`) + continue; + if (fnName === `open`) + continue; + setupFn(patchedFsPromises, origName, (pathLike, ...args) => { + if (pathLike instanceof FileHandle) { + return pathLike[origName].apply(pathLike, args); + } else { + return fakeImpl.call(fakeFs, pathLike, ...args); + } + }); + } + setupFn(patchedFsPromises, `open`, async (...args) => { + const fd = await fakeFs.openPromise(...args); + return new FileHandle(fd, fakeFs); + }); + } + { + patchedFs.read[nodeUtils.promisify.custom] = async (fd, buffer, ...args) => { + const res = fakeFs.readPromise(fd, buffer, ...args); + return { bytesRead: await res, buffer }; + }; + patchedFs.write[nodeUtils.promisify.custom] = async (fd, buffer, ...args) => { + const res = fakeFs.writePromise(fd, buffer, ...args); + return { bytesWritten: await res, buffer }; + }; + } +} + +let cachedInstance; +let registeredFactory = () => { + throw new Error(`Assertion failed: No libzip instance is available, and no factory was configured`); +}; +function setFactory(factory) { + registeredFactory = factory; +} +function getInstance() { + if (typeof cachedInstance === `undefined`) + cachedInstance = registeredFactory(); + return cachedInstance; +} + +var libzipSync = {exports: {}}; + +(function (module, exports) { +var frozenFs = Object.assign({}, fs__default.default); +var createModule = function() { + var _scriptDir = void 0; + if (typeof __filename !== "undefined") _scriptDir = _scriptDir || __filename; + return function(createModule2) { + createModule2 = createModule2 || {}; + var Module = typeof createModule2 !== "undefined" ? createModule2 : {}; + var readyPromiseResolve, readyPromiseReject; + Module["ready"] = new Promise(function(resolve, reject) { + readyPromiseResolve = resolve; + readyPromiseReject = reject; + }); + var moduleOverrides = {}; + var key; + for (key in Module) { + if (Module.hasOwnProperty(key)) { + moduleOverrides[key] = Module[key]; + } + } + var scriptDirectory = ""; + function locateFile(path) { + if (Module["locateFile"]) { + return Module["locateFile"](path, scriptDirectory); + } + return scriptDirectory + path; + } + var read_, readBinary; + var nodeFS; + var nodePath; + { + { + scriptDirectory = __dirname + "/"; + } + read_ = function shell_read(filename, binary) { + var ret = tryParseAsDataURI(filename); + if (ret) { + return binary ? ret : ret.toString(); + } + if (!nodeFS) nodeFS = frozenFs; + if (!nodePath) nodePath = path__default.default; + filename = nodePath["normalize"](filename); + return nodeFS["readFileSync"](filename, binary ? null : "utf8"); + }; + readBinary = function readBinary2(filename) { + var ret = read_(filename, true); + if (!ret.buffer) { + ret = new Uint8Array(ret); + } + assert(ret.buffer); + return ret; + }; + if (process["argv"].length > 1) { + process["argv"][1].replace(/\\/g, "/"); + } + process["argv"].slice(2); + Module["inspect"] = function() { + return "[Emscripten Module object]"; + }; + } + Module["print"] || console.log.bind(console); + var err = Module["printErr"] || console.warn.bind(console); + for (key in moduleOverrides) { + if (moduleOverrides.hasOwnProperty(key)) { + Module[key] = moduleOverrides[key]; + } + } + moduleOverrides = null; + if (Module["arguments"]) ; + if (Module["thisProgram"]) ; + if (Module["quit"]) ; + var wasmBinary; + if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"]; + Module["noExitRuntime"] || true; + if (typeof WebAssembly !== "object") { + abort("no native wasm support detected"); + } + function getValue(ptr, type, noSafe) { + type = type || "i8"; + if (type.charAt(type.length - 1) === "*") type = "i32"; + switch (type) { + case "i1": + return HEAP8[ptr >> 0]; + case "i8": + return HEAP8[ptr >> 0]; + case "i16": + return LE_HEAP_LOAD_I16((ptr >> 1) * 2); + case "i32": + return LE_HEAP_LOAD_I32((ptr >> 2) * 4); + case "i64": + return LE_HEAP_LOAD_I32((ptr >> 2) * 4); + case "float": + return LE_HEAP_LOAD_F32((ptr >> 2) * 4); + case "double": + return LE_HEAP_LOAD_F64((ptr >> 3) * 8); + default: + abort("invalid type for getValue: " + type); + } + return null; + } + var wasmMemory; + var ABORT = false; + function assert(condition, text) { + if (!condition) { + abort("Assertion failed: " + text); + } + } + function getCFunc(ident) { + var func = Module["_" + ident]; + assert( + func, + "Cannot call unknown function " + ident + ", make sure it is exported" + ); + return func; + } + function ccall(ident, returnType, argTypes, args, opts) { + var toC = { + string: function(str) { + var ret2 = 0; + if (str !== null && str !== void 0 && str !== 0) { + var len = (str.length << 2) + 1; + ret2 = stackAlloc(len); + stringToUTF8(str, ret2, len); + } + return ret2; + }, + array: function(arr) { + var ret2 = stackAlloc(arr.length); + writeArrayToMemory(arr, ret2); + return ret2; + } + }; + function convertReturnValue(ret2) { + if (returnType === "string") return UTF8ToString(ret2); + if (returnType === "boolean") return Boolean(ret2); + return ret2; + } + var func = getCFunc(ident); + var cArgs = []; + var stack = 0; + if (args) { + for (var i = 0; i < args.length; i++) { + var converter = toC[argTypes[i]]; + if (converter) { + if (stack === 0) stack = stackSave(); + cArgs[i] = converter(args[i]); + } else { + cArgs[i] = args[i]; + } + } + } + var ret = func.apply(null, cArgs); + ret = convertReturnValue(ret); + if (stack !== 0) stackRestore(stack); + return ret; + } + function cwrap(ident, returnType, argTypes, opts) { + argTypes = argTypes || []; + var numericArgs = argTypes.every(function(type) { + return type === "number"; + }); + var numericRet = returnType !== "string"; + if (numericRet && numericArgs && !opts) { + return getCFunc(ident); + } + return function() { + return ccall(ident, returnType, argTypes, arguments); + }; + } + var UTF8Decoder = new TextDecoder("utf8"); + function UTF8ToString(ptr, maxBytesToRead) { + if (!ptr) return ""; + var maxPtr = ptr + maxBytesToRead; + for (var end = ptr; !(end >= maxPtr) && HEAPU8[end]; ) ++end; + return UTF8Decoder.decode(HEAPU8.subarray(ptr, end)); + } + function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) return 0; + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) { + var u1 = str.charCodeAt(++i); + u = 65536 + ((u & 1023) << 10) | u1 & 1023; + } + if (u <= 127) { + if (outIdx >= endIdx) break; + heap[outIdx++] = u; + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) break; + heap[outIdx++] = 192 | u >> 6; + heap[outIdx++] = 128 | u & 63; + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) break; + heap[outIdx++] = 224 | u >> 12; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } else { + if (outIdx + 3 >= endIdx) break; + heap[outIdx++] = 240 | u >> 18; + heap[outIdx++] = 128 | u >> 12 & 63; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } + } + heap[outIdx] = 0; + return outIdx - startIdx; + } + function stringToUTF8(str, outPtr, maxBytesToWrite) { + return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); + } + function lengthBytesUTF8(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) + u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023; + if (u <= 127) ++len; + else if (u <= 2047) len += 2; + else if (u <= 65535) len += 3; + else len += 4; + } + return len; + } + function allocateUTF8(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = _malloc(size); + if (ret) stringToUTF8Array(str, HEAP8, ret, size); + return ret; + } + function writeArrayToMemory(array, buffer2) { + HEAP8.set(array, buffer2); + } + function alignUp(x, multiple) { + if (x % multiple > 0) { + x += multiple - x % multiple; + } + return x; + } + var buffer, HEAP8, HEAPU8; + var HEAP_DATA_VIEW; + function updateGlobalBufferAndViews(buf) { + buffer = buf; + Module["HEAP_DATA_VIEW"] = HEAP_DATA_VIEW = new DataView(buf); + Module["HEAP8"] = HEAP8 = new Int8Array(buf); + Module["HEAP16"] = new Int16Array(buf); + Module["HEAP32"] = new Int32Array(buf); + Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf); + Module["HEAPU16"] = new Uint16Array(buf); + Module["HEAPU32"] = new Uint32Array(buf); + Module["HEAPF32"] = new Float32Array(buf); + Module["HEAPF64"] = new Float64Array(buf); + } + Module["INITIAL_MEMORY"] || 16777216; + var wasmTable; + var __ATPRERUN__ = []; + var __ATINIT__ = []; + var __ATPOSTRUN__ = []; + function preRun() { + if (Module["preRun"]) { + if (typeof Module["preRun"] == "function") + Module["preRun"] = [Module["preRun"]]; + while (Module["preRun"].length) { + addOnPreRun(Module["preRun"].shift()); + } + } + callRuntimeCallbacks(__ATPRERUN__); + } + function initRuntime() { + callRuntimeCallbacks(__ATINIT__); + } + function postRun() { + if (Module["postRun"]) { + if (typeof Module["postRun"] == "function") + Module["postRun"] = [Module["postRun"]]; + while (Module["postRun"].length) { + addOnPostRun(Module["postRun"].shift()); + } + } + callRuntimeCallbacks(__ATPOSTRUN__); + } + function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); + } + function addOnInit(cb) { + __ATINIT__.unshift(cb); + } + function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); + } + var runDependencies = 0; + var dependenciesFulfilled = null; + function addRunDependency(id) { + runDependencies++; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + } + function removeRunDependency(id) { + runDependencies--; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + if (runDependencies == 0) { + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); + } + } + } + Module["preloadedImages"] = {}; + Module["preloadedAudios"] = {}; + function abort(what) { + if (Module["onAbort"]) { + Module["onAbort"](what); + } + what += ""; + err(what); + ABORT = true; + what = "abort(" + what + "). Build with -s ASSERTIONS=1 for more info."; + var e = new WebAssembly.RuntimeError(what); + readyPromiseReject(e); + throw e; + } + var dataURIPrefix = "data:application/octet-stream;base64,"; + function isDataURI(filename) { + return filename.startsWith(dataURIPrefix); + } + var wasmBinaryFile = "data:application/octet-stream;base64,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QCAAKAJIIgEgASADaiADEAcaAkAgAyAAKAJsIgFNBEAgACABIANrNgJsDAELIABCADcCbAsgACAAKAJoIANrIgE2AmggACAAKAJYIANrNgJYIAEgACgChC5JBEAgACABNgKELgsgAEH8gAEoAgARAwAgAiADaiECCwJAIAAoAgAiASgCBCIERQ0AIAAoAjwhBSAAIAIgBCACIARJGyICBH8gACgCSCAAKAJoaiAFaiEFIAEgBCACazYCBAJAAkACQAJAIAEoAhwiBCgCFEEBaw4CAQACCyAEQaABaiAFIAEoAgAgAkHcgAEoAgARCAAMAgsgASABKAIwIAUgASgCACACQcSAASgCABEEADYCMAwBCyAFIAEoAgAgAhAHGgsgASABKAIAIAJqNgIAIAEgASgCCCACajYCCCAAKAI8BSAFCyACaiICNgI8AkAgACgChC4iASACakEDSQ0AIAAoAmggAWshAQJAIAAoAnRBgQhPBEAgACAAIAAoAkggAWoiAi0AACACLQABIAAoAnwRAAA2AlQMAQsgAUUNACAAIAFBAWsgACgChAERAgAaCyAAKAKELiAAKAI8IgJBAUZrIgRFDQAgACABIAQgACgCgAERBQAgACAAKAKELiAEazYChC4gACgCPCECCyACQYUCSw0AIAAoAgAoAgRFDQAgACgCMCEBDAELCwJAIAAoAkQiAiAAKAJAIgNNDQAgAAJ/IAAoAjwgACgCaGoiASADSwRAIAAoAkggAWpBACACIAFrIgNBggIgA0GCAkkbIgMQGSABIANqDAELIAFBggJqIgEgA00NASAAKAJIIANqQQAgAiADayICIAEgA2siAyACIANJGyIDEBkgACgCQCADags2AkALC50CAQF/AkAgAAJ/IAAoAqAuIgFBwABGBEAgACgCBCAAKAIQaiAAKQOYLjcAACAAQgA3A5guIAAgACgCEEEIajYCEEEADAELIAFBIE4EQCAAKAIEIAAoAhBqIAApA5guPgAAIAAgAEGcLmo1AgA3A5guIAAgACgCEEEEajYCECAAIAAoAqAuQSBrIgE2AqAuCyABQRBOBEAgACgCBCAAKAIQaiAAKQOYLj0AACAAIAAoAhBBAmo2AhAgACAAKQOYLkIQiDcDmC4gACAAKAKgLkEQayIBNgKgLgsgAUEISA0BIAAgACgCECIBQQFqNgIQ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KAJUIgEEfyABQQAgARAiEBkgACgCVAVBAAsQBiAAQQA2AlQLC9wMAgl/AX4jAEFAaiIGJAACQAJAAkACQAJAIAEoAjBBABAjIgVBAkZBACABKAI4QQAQIyIEQQFGGw0AIAVBAUZBACAEQQJGGw0AIAVBAkciAw0BIARBAkcNAQsgASABLwEMQYAQcjsBDEEAIQMMAQsgASABLwEMQf/vA3E7AQxBACEFIANFBEBB9eABIAEoAjAgAEEIahBpIgVFDQILIAJBgAJxBEAgBSEDDAELIARBAkcEQCAFIQMMAQtB9cYBIAEoAjggAEEIahBpIgNFBEAgBRAcDAILIAMgBTYCAAsgASABLwEMQf7/A3EgAS8BUiIFQQBHcjsBDAJAAkACQAJAAn8CQAJAIAEpAyhC/v///w9WDQAgASkDIEL+////D1YNACACQYAEcUUNASABKQNIQv////8PVA0BCyAFQYECa0H//wNxQQNJIQdBAQwBCyAFQYECa0H//wNxIQQgAkGACnFBgApHDQEgBEEDSSEHQQALIQkgBkIcEBciBEUEQCAAQQhqIgAEQCAAQQA2AgQgAEEONgIACyADEBwMBQsgAkGACHEhBQJAAkAgAkGAAnEEQAJAIAUNACABKQMgQv////8PVg0AIAEpAyhCgICAgBBUDQMLIAQgASkDKBAYIAEpAyAhDAwBCwJAAkACQCAFDQAgASkDIEL/////D1YNACABKQMoIgxC/////w9WDQEgASkDSEKAgICAEFQNBAsgASkDKCIMQv////8PVA0BCyAEIAwQGAsgASkDICIMQv////8PWgRAIAQgDBAYCyABKQNIIgxC/////w9UDQELIAQgDBAYCyAELQAARQRAIABBCGoiAARAIABBADYCBCAAQRQ2AgALIAQQCCADEBwMBQtBASEKQQEgBC0AAAR+IAQpAxAFQgALp0H//wNxIAYQRyEFIAQQCCAFIAM2AgAgBw0BDAILIAMhBSAEQQJLDQELIAZCBxAXIgRFBEAgAEEIaiIABEAgAEEANgIEIABBDjYCAAsgBRAcDAMLIARBAhANIARBhxJBAhAsIAQgAS0AUhBwIAQgAS8BEBANIAQtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAsgBBAIDAILQYGyAkEHIAYQRyEDIAQQCCADIAU2AgBBASEL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NgIEIABB7A42AhggGiEdDAMLIARB/wFxIgJBwABxRQRAIAggDSADLwECQQJ0aiAdp0F/IAJ0QX9zcUECdGoiAy0AASICayEIIB0gAq2IIR0gAy0AACIERQ0HDAELCyAEQSBxBEAgB0G//gA2AgQgASECDAgLIAdB0f4ANgIEIABB0A42AhggASECDAcLIB1BfyAGdEF/c62DIBt8IhunIQUgCCAEQQ9xIgNrIQggGiAErUIPg4ghHSABIBdrIgYgAjMBAiAaQX8gA3RBf3Otg3ynIgRPDQIgBCAGayIGIBlNDQEgBygCjEdFDQEgB0HR/gA2AgQgAEG5DDYCGAsgASECIAshBQwFCwJAIA5FBEAgDCARIAZraiEDDAELIAYgDk0EQCAMIA4gBmtqIQMMAQsgDCARIAYgDmsiBmtqIQMgBSAGTQ0AIAUgBmshBQJAAkAgASADTSABIA8gAWusIhogBq0iGyAaIBtUGyIapyIGaiICIANLcQ0AIAMgBmogAUsgASADT3ENACABIAMgBhAHGiACIQEMAQsgASADIAMgAWsiASABQR91IgFqIAFzIgIQByACaiEBIBogAq0iHn0iHFANACACIANqIQIDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgASACKQAANwAAIAEgAikAGDcAGCABIAIpABA3ABAgASACKQAINwAIIBpCIH0hGiACQSBqIQIgAUEgaiEBIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAEgAikAADcAACABIAIpABg3ABggASACKQAQNwAQIAEgAikACDcACCABIAIpADg3ADggASACKQAwNwAwIAEgAikAKDcAKCABIAIpACA3ACAgASACKQBYNwBYIAEgAikAUDcAUCABIAIpAEg3AEggASACKQBANwBAIAEgAikAYDcAYCABIAIpAGg3AGggASACKQBwNwBwIAEgAikAeDcAeCACQYABaiECIAFBgAFqIQEgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAEgAikAADcAACABIAIpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCABIAIpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCABIAIoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCABIAIvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCABIAItAAA6AAAgAkEBaiECIAFBAWohAQsgHEIAUg0ACwsgDiEGIAwhAwsgBSAGSwRAAkACQCABIANNIAEgDyABa6wiGiAGrSIbIBogG1QbIhqnIglqIgIgA0txDQAgAyAJaiABSyABIANPcQ0AIAEgAyAJEAcaDAELIAEgAyADIAFrIgEgAUEfdSIBaiABcyIBEAcgAWohAiAaIAGtIh59IhxQDQAgASADaiEBA0ACQCAcIB4gHCAeVBsiG0IgVARAIBshGgwBCyAbIhpCIH0iIEIFiEIBfEIDgyIfUEUEQANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCAaQiB9IRogAUEgaiEBIAJBIGohAiAfQgF9Ih9CAFINAAsLICBC4ABUDQADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggAiABKQA4NwA4IAIgASkAMDcAMCACIAEpACg3ACggAiABKQAgNwAgIAIgASkAWDcAWCACIAEpAFA3AFAgAiABKQBINwBIIAIgASkAQDcAQCACIAEpAGA3AGAgAiABKQBoNwBoIAIgASkAcDcAcCACIAEpAHg3AHggAUGAAWohASACQYABaiECIBpCgAF9IhpCH1YNAAsLIBpCEFoEQCACIAEpAAA3AAAgAiABKQAINwAIIBpCEH0hGiACQRBqIQIgAUEQaiEBCyAaQghaBEAgAiABKQAANwAAIBpCCH0hGiACQQhqIQIgAUEIaiEBCyAaQgRaBEAgAiABKAAANgAAIBpCBH0hGiACQQRqIQIgAUEEaiEBCyAaQgJaBEAgAiABLwAAOwAAIBpCAn0hGiACQQJqIQIgAUECaiEBCyAcIBt9IRwgGlBFBEAgAiABLQAAOgAAIAJBAWohAiABQQFqIQELIBxCAFINAAsLIAUgBmshAUEAIARrIQUCQCAEQQdLBEAgBCEDDAELIAEgBE0EQCAEIQMMAQsgAiAEayEFA0ACQCACIAUpAAA3AAAgBEEBdCEDIAEgBGshASACIARqIQIgBEEDSw0AIAMhBCABIANLDQELC0EAIANrIQULIAIgBWohBAJAIAUgDyACa6wiGiABrSIbIBogG1QbIhqnIgFIIAVBf0pxDQAgBUEBSCABIARqIAJLcQ0AIAIgBCABEAcgAWohAgwDCyACIAQgAyADQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANAiABIARqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAILAkAgASADTSABIA8gAWusIhogBa0iGyAaIBtUGyIapyIEaiICIANLcQ0AIAMgBGogAUsgASADT3ENACABIAMgBBAHGgwCCyABIAMgAyABayIBIAFBH3UiAWogAXMiARAHIAFqIQIgGiABrSIefSIcUA0BIAEgA2ohAQNAAkAgHCAeIBwgHlQbIhtCIFQEQCAbIRoMAQsgGyIaQiB9IiBCBYhCAXxCA4MiH1BFBEADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggGkIgfSEaIAFBIGohASACQSBqIQIgH0IBfSIfQgBSDQALCyAgQuAAVA0AA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIAIgASkAODcAOCACIAEpADA3ADAgAiABKQAoNwAoIAIgASkAIDcAICACIAEpAFg3AFggAiABKQBQNwBQIAIgASkASDcASCACIAEpAEA3AEAgAiABKQBgNwBgIAIgASkAaDcAaCACIAEpAHA3AHAgAiABKQB4NwB4IAFBgAFqIQEgAkGAAWohAiAaQoABfSIaQh9WDQALCyAaQhBaBEAgAiABKQAANwAAIAIgASkACDcACCAaQhB9IRogAkEQaiECIAFBEGohAQsgGkIIWgRAIAIgASkAADcAACAaQgh9IRogAkEIaiECIAFBCGohAQsgGkIEWgRAIAIgASgAADYAACAaQgR9IRogAkEEaiECIAFBBGohAQsgGkICWgRAIAIgAS8AADsAACAaQgJ9IRogAkECaiECIAFBAmohAQsgHCAbfSEcIBpQRQRAIAIgAS0AADoAACACQQFqIQIgAUEBaiEBCyAcUEUNAAsMAQsCQAJAIBYEQAJAIAQgBUkEQCAHKAKYRyAESw0BCyABIARrIQMCQEEAIARrIgVBf0ogDyABa6wiGiAbIBogG1QbIhqnIgIgBUpxDQAgBUEBSCACIANqIAFLcQ0AIAEgAyACEAcgAmohAgwFCyABIAMgBCAEQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANBCABIANqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAQLIBAgAWsiCUEBaiIGIAUgBSAGSxshAyABIARrIQIgAUEHcUUNAiADRQ0CIAEgAi0AADoAACACQQFqIQIgAUEBaiIGQQdxQQAgA0EBayIFGw0BIAYhASAFIQMgCSEGDAILAkAgBCAFSQRAIAcoAphHIARLDQELIAEgASAEayIGKQAANwAAIAEgBUEBa0EHcUEBaiIDaiECIAUgA2siBEUNAyADIAZqIQEDQCACIAEpAAA3AAAgAUEIaiEBIAJBCGohAiAEQQhrIgQNAAsMAwsgASAEIAUQPyECDAILIAEgAi0AADoAASAJQQFrIQYgA0ECayEFIAJBAWohAgJAIAFBAmoiCkEHcUUNACAFRQ0AIAEgAi0AADoAAiAJQQJrIQYgA0EDayEFIAJBAWohAgJAIAFBA2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAAyAJQQNrIQYgA0EEayEFIAJBAWohAgJAIAFBBGoiCkEHcUUNACAFRQ0AIAEgAi0AADoABCAJQQRrIQYgA0EFayEFIAJBAWohAgJAIAFBBWoiCkEHcUUNACAFRQ0AIAEgAi0AADoABSAJQQVrIQYgA0EGayEFIAJBAWohAgJAIAFBBmoiCkEHcUUNACAFRQ0AIAEgAi0AADoABiAJQQZrIQYgA0EHayEFIAJBAWohAgJAIAFBB2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAByAJQQdrIQYgA0EIayEDIAFBCGohASACQQFqIQIMBgsgCiEBIAUhAwwFCyAKIQEgBSEDDAQLIAohASAFIQMMAwsgCiEBIAUhAwwCCyAKIQEgBSEDDAELIAohASAFIQMLAkACQCAGQRdNBEAgA0UNASADQQFrIQUgA0EHcSIEBEADQCABIAItAAA6AAAgA0EBayEDIAFBAWohASACQQFqIQIgBEEBayIEDQALCyAFQQdJDQEDQCABIAItAAA6AAAgASACLQABOgABIAEgAi0AAjoAAiABIAItAAM6AAMgASACLQAEOgAEIAEgAi0ABToABSABIAItAAY6AAYgASACLQAHOgAHIAFBCGohASACQQhqIQIgA0EIayIDDQALDAELIAMNAQsgASECDAELIAEgBCADED8hAgsgCyEFDAELIAEgAy0AAjoAACABQQFqIQILIAUgFE8NACACIBNJDQELCyAAIAI2AgwgACAFIAhBA3ZrIgE2AgAgACATIAJrQYMCajYCECAAIBQgAWtBDmo2AgQgByAIQQdxIgA2AogBIAcgHUJ/IACthkJ/hYM+AoQBC+cFAQR/IAMgAiACIANLGyEEIAAgAWshAgJAIABBB3FFDQAgBEUNACAAIAItAAA6AAAgA0EBayEGIAJBAWohAiAAQQFqIgdBB3FBACAEQQFrIgUbRQRAIAchACAFIQQgBiEDDAELIAAgAi0AADoAASADQQJrIQYgBEECayEFIAJBAWohAgJAIABBAmoiB0EHcUUNACAFRQ0AIAAgAi0AADoAAiADQQNrIQYgBEEDayEFIAJBAWohAgJAIABBA2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAAyADQQRrIQYgBEEEayEFIAJBAWohAgJAIABBBGoiB0EHcUUNACAFRQ0AIAAgAi0AADoABCADQQVrIQYgBEEFayEFIAJBAWohAgJAIABBBWoiB0EHcUUNACAFRQ0AIAAgAi0AADoABSADQQZrIQYgBEEGayEFIAJBAWohAgJAIABBBmoiB0EHcUUNACAFRQ0AIAAgAi0AADoABiADQQdrIQYgBEEHayEFIAJBAWohAgJAIABBB2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAByADQQhrIQMgBEEIayEEIABBCGohACACQQFqIQIMBgsgByEAIAUhBCAGIQMMBQsgByEAIAUhBCAGIQMMBAsgByEAIAUhBCAGIQMMAwsgByEAIAUhBCAGIQMMAgsgByEAIAUhBCAGIQMMAQsgByEAIAUhBCAGIQMLAkAgA0EXTQRAIARFDQEgBEEBayEBIARBB3EiAwRAA0AgACACLQAAOgAAIARBAWshBCAAQQFqIQAgAkEBaiECIANBAWsi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CyAAIAMtAAAEfiADKQMQBUIAC6dB//8DcSADKAIEEEcLIQUgAxAICyAEQRBqJAAgBQvgAQICfwF+QTAQCSICRQRAIAEEQCABQQA2AgQgAUEONgIAC0EADwsgAkIANwMIIAJBADYCACACQgA3AxAgAkIANwMYIAJCADcDICACQgA3ACUgAFAEQCACDwsCQCAAQv////8AVg0AIACnQQR0EAkiA0UNACACIAM2AgBBACEBQgEhBANAIAMgAUEEdGoiAUIANwIAIAFCADcABSAAIARSBEAgBKchASAEQgF8IQQMAQsLIAIgADcDCCACIAA3AxAgAg8LIAEEQCABQQA2AgQgAUEONgIAC0EAEBAgAhAGQQAL7gECA38BfiMAQRBrIgQkAAJAIARBDGpCBBAXIgNFBEBBfyECDAELAkAgAQRAIAJBgAZxIQUDQAJAIAUgASgCBHFFDQACQCADKQMIQgBUBEAgA0EAOgAADAELIANCADcDECADQQE6AAALIAMgAS8BCBANIAMgAS8BChANIAMtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAtBfyECDAQLQX8hAiAAIARBDGpCBBAbQQBIDQMgATMBCiIGUA0AIAAgASgCDCAGEBtBAEgNAwsgASgCACIBDQALC0EAIQILIAMQCAsgBEEQaiQAIAILPAEBfyAABEAgAUGABnEhAQNAIAEgACgCBHEEQCACIAAvAQpqQQRqIQILIAAoAgAiAA0ACwsgAkH//wNxC5wBAQN/IABFBEBBAA8LIAAhAwNAAn8CQAJAIAAvAQgiAUH04AFNBEAgAUEBRg0BIAFB9cYBRg0BDAILIAFBgbICRg0AIAFB9eABRw0BCyAAKAIAIQEgAEEANgIAIAAoAgwQBiAAEAYgASADIAAgA0YbIQMCQCACRQRAQQAhAgwBCyACIAE2AgALIAEMAQsgACICKAIACyIADQALIAMLsgQCBX8BfgJAAkACQCAAIAGtEBciAQRAIAEtAAANAUEAIQAMAgsgBARAIARBADYCBCAEQQ42AgALQQAPC0EAIQADQCABLQAABH4gASkDCCABKQMQfQVCAAtCBFQNASABEAwhByABIAEQDCIGrRATIghFBEBBACECIAQEQCAEQQA2AgQgBEEVNgIACyABEAggAEUNAwNAIAAoAgAhASAAKAIMEAYg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DCAAQRg2AggLDAMLIAAgBiAFLwFqQQAgBCABEQYAIQEgBhALIAFFDQILAkAgDUUEQCABIQMMAQsgACABIAUvAWgQgQEhAyABEAsgA0UNAQsCQCAJRSAMckUEQCADIQEMAQsgACADQQEQgAEhASADEAsgAUUNAQsgASEDDAELQQAhAwsgBUHwAGokACADC4UBAQF/IAFFBEAgAEEIaiIABEAgAEEANgIEIABBEjYCAAtBAA8LQTgQCSIDRQRAIABBCGoiAARAIABBADYCBCAAQQ42AgALQQAPCyADQQA2AhAgA0IANwIIIANCADcDKCADQQA2AgQgAyACNgIAIANCADcDGCADQQA2AjAgACABQTsgAxBCCw8AIAAgASACQQBBABCCAQusAgECfyABRQRAIABBCGoiAARAIABBADYCBCAAQRI2AgALQQAPCwJAIAJBfUsNACACQf//A3FBCEYNACAAQQhqIgAEQCAAQQA2AgQgAEEQNgIAC0EADwsCQEGwwAAQCSIFBEAgBUEANgIIIAVCADcCACAFQYiBAUGogQEgAxs2AqhAIAUgAjYCFCAFIAM6ABAgBUEAOgAPIAVBADsBDCAFIAMgAkF9SyIGcToADiAFQQggAiAGG0H//wNxIAQgBUGIgQFBqIEBIAMbKAIAEQAAIgI2AqxAIAINASAFEDEgBRAGCyAAQQhqIgAEQCAAQQA2AgQgAEEONgIAC0EADwsgACABQTogBRBCIgAEfyAABSAFKAKsQCAFKAKoQCgCBBEDACAFEDEgBRAGQQALC6ABAQF/IAIgACgCBCIDIAIgA0kbIgIEQCAAIAMgAms2AgQCQAJAAkACQCAAKAIcIgMoAhRBAWsOAgEAAgsgA0GgAWogASAAKAIAIAJB3IABKAIAEQgADAILIAAgACgCMCABIAAoAgAgAkHEgAEoAgARBAA2AjAMAQsgASAAKAIAIAIQBxoLIAAgACgCACACajYCACAAIAAoAgggAmo2AggLC7cCAQR/QX4hAgJAIABFDQAgACgCIEUNACAAKAIkIgRFDQAgACgCHCIBRQ0AIAEoAgAgAEcNAAJAAkAgASgCICIDQTlrDjkBAgICAgICAgICAgIBAgICAQICAgICAgICAgICAgICAgICAQICAgICAgICAgICAQICAgICAgICAgEACyADQZoFRg0AIANBKkcN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DCABajYCDCAGIAYoAgggAWo2AgggBSAFKAIUIAFqNgIUIAUgBSgCECABazYCECAGIAYoAhAgAWsiATYCECABDQAgBiAGKAIENgIIC0EAIQRBACEJIAMoAhBFDQAMCgsgAygCHCgCJCEGIAMgAygCGCIBQQFqNgIYIAEgBmotAAAhASADIARBAWo2AhAgAygCBCAEaiABOgAAIAEEQCADKAIQIQQMAQsLIAMoAhwoAixFDQAgAygCECIGIAlNDQAgBQJ/IAUoAjAhBEEAIAMoAgQgCWoiAUUNABogBCABIAYgCWtB1IABKAIAEQAACzYCMAsgA0HnADYCIAsCQCADKAIcKAIsBEAgAygCDCADKAIQIgFBAmpJBH8gBRAKIAMoAhANAkEABSABCyADKAIEaiAFKAIwOwAAIAMgAygCEEECajYCECADQaABakHkgAEoAgARAQAaCyADQfEANgIgIAUQCiADKAIQRQ0BDAcLDAYLIAUoAgQNAQsgAygCPA0AIApFDQEgAygCIEGaBUYNAQsCfyADKAKIASIBRQRAIAMgChCFAQwBCwJAAkACQCADKAKMAUECaw4CAAECCwJ/AkADQAJAAkAgAygCPA0AIAMQLyADKAI8DQAgCg0BQQAMBAsgAygCSCADKAJoai0AACEEIAMgAygC8C0iAUEBajYC8C0gASADKALsLWpBADoAACADIAMoAvAtIgFBAWo2AvAtIAEgAygC7C1qQQA6AAAgAyADKALwLSIBQQFqNgLwLSABIAMoAuwtaiAEOgAAIAMgBEECdGoiASABLwHkAUEBajsB5AEgAyADKAI8QQFrNgI8IAMgAygCaEEBaiIBNgJoIAMoAvAtIAMoAvQtRw0BQQAhBCADIAMoAlgiBkEATgR/IAMoAkggBmoFQQALIAEgBmtBABAPIAMgAygCaDYCWCADKAIAEAogAygCACgCEA0BDAILCyADQQA2AoQuIApBBEYEQCADIAMoAlgiAUEATgR/IAMoAkggAWoFQQALIAMoAmggAWtBARAPIAMgAygCaDYCWCADKAIAEApBA0ECIAMoAgAoAhAbDAILIAMoAvAtBEBBACEEIAMgAygCWCIBQQBOBH8gAygCSCABagVBAAsgAygCaCABa0EAEA8gAyADKAJoNgJYIAMoAgAQCiADKAIAKAIQRQ0BC0EBIQQLIAQL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bGl0ZXJhbC9sZW5ndGhzIHNldABpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQAdW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0AGludmFsaWQgZGlzdGFuY2VzIHNldABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AEZpbGUgYWxyZWFkeSBleGlzdHMAdG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMAaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocwAlcyVzJXMAYnVmZmVyIGVycm9yAE5vIGVycm9yAHN0cmVhbSBlcnJvcgBUZWxsIGVycm9yAEludGVybmFsIGVycm9yAFNlZWsgZXJyb3IAV3JpdGUgZXJyb3IAZmlsZSBlcnJvcgBSZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoADEuMi4xMy56bGliLW5nAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRl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UgAIANIACAAyAAgAsgAIAHIACADyAAgACgAIAIoACABKAAgAygAIACoACACqAAgAagAIAOoACAAaAAgAmgAIAFoACADaAAgAOgAIALoACAB6AAgA+gAIAAYACACGAAgARgAIAMYACAAmAAgApgAIAGYACADmAAgAFgAIAJYACABWAAgA1gAIADYACAC2AAgAdgAIAPYACAAOAAgAjgAIAE4ACADOAAgALgAIAK4ACABuAAgA7gAIAB4ACACeAAgAXgAIAN4ACAA+AAgAvgAIAH4ACAD+AAgAAQAIAIEACABBAAgAwQAIACEACAChAAgAYQAIAOEACAARAAgAkQAIAFEACADRAAgAMQAIALEACABxAAgA8QAIAAkACACJAAgASQAIAMkACAApAAgAqQAIAGkACADpAAgAGQAIAJkACABZAAgA2QAIADkACAC5AAgAeQAIAPkACAAFAAgAhQAIAEUACADFAAgAJQAIAKUACABlAAgA5QAIABUACACVAAgAVQAIANUACAA1AAgAtQAIAHUACAD1AAgADQAIAI0ACABNAAgAzQAIAC0ACACtAAgAbQAIAO0ACAAdAAgAnQAIAF0ACADdAAgAPQAIAL0ACAB9AAgA/QAIABMACQATAQkAkwAJAJMBCQBTAAkAUwEJANMACQDTAQkAMwAJADMBCQCzAAkAswEJAHMACQBzAQkA8wAJAPMBCQALAAkACwEJAIsACQCLAQkASwAJAEsBCQDLAAkAywEJACsACQArAQkAqwAJAKsBCQBrAAkAawEJAOsACQDrAQkAGwAJABsBCQCbAAkAmwEJAFsACQBbAQkA2wAJANsBCQA7AAkAOwEJALsACQC7AQkAewAJAHsBCQD7AAkA+wEJAAcACQAHAQkAhwAJAIcBCQBHAAkARwEJAMcACQDHAQkAJwAJACcBCQCnAAkApwEJAGcACQBnAQkA5wAJAOcBCQAXAAkAFwEJAJcACQCXAQkAVwAJAFcBCQDXAAkA1wEJADcACQA3AQkAtwAJALcBCQB3AAkAdwEJAPcACQD3AQkADwAJAA8BCQCPAAkAjwEJAE8ACQBPAQkAzwAJAM8BCQAvAAkALwEJAK8ACQCvAQkAbwAJAG8BCQDvAAkA7wEJAB8ACQAfAQkAnwAJAJ8BCQBfAAkAXwEJAN8ACQDfAQkAPwAJAD8BCQC/AAkA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SXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATm8gZXJyb3IgaW5mb3JtYXRpb24AQcCAAQuFARMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAgERQADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAQfSCAQsCXEQAQbCDAQsQ/////////////////////w=="; + if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile); + } + function getBinary(file) { + try { + if (file == wasmBinaryFile && wasmBinary) { + return new Uint8Array(wasmBinary); + } + var binary = tryParseAsDataURI(file); + if (binary) { + return binary; + } + if (readBinary) { + return readBinary(file); + } else { + throw "sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"; + } + } catch (err2) { + abort(err2); + } + } + function instantiateSync(file, info) { + var instance; + var module2; + var binary; + try { + binary = getBinary(file); + module2 = new WebAssembly.Module(binary); + instance = new WebAssembly.Instance(module2, info); + } catch (e) { + var str = e.toString(); + err("failed to compile wasm module: " + str); + if (str.includes("imported Memory") || str.includes("memory import")) { + err( + "Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)." + ); + } + throw e; + } + return [instance, module2]; + } + function createWasm() { + var info = { a: asmLibraryArg }; + function receiveInstance(instance, module2) { + var exports3 = instance.exports; + Module["asm"] = exports3; + wasmMemory = Module["asm"]["g"]; + updateGlobalBufferAndViews(wasmMemory.buffer); + wasmTable = Module["asm"]["W"]; + addOnInit(Module["asm"]["h"]); + removeRunDependency(); + } + addRunDependency(); + if (Module["instantiateWasm"]) { + try { + var exports2 = Module["instantiateWasm"](info, receiveInstance); + return exports2; + } catch (e) { + err("Module.instantiateWasm callback failed with error: " + e); + return false; + } + } + var result = instantiateSync(wasmBinaryFile, info); + receiveInstance(result[0]); + return Module["asm"]; + } + function LE_HEAP_LOAD_F32(byteOffset) { + return HEAP_DATA_VIEW.getFloat32(byteOffset, true); + } + function LE_HEAP_LOAD_F64(byteOffset) { + return HEAP_DATA_VIEW.getFloat64(byteOffset, true); + } + function LE_HEAP_LOAD_I16(byteOffset) { + return HEAP_DATA_VIEW.getInt16(byteOffset, true); + } + function LE_HEAP_LOAD_I32(byteOffset) { + return HEAP_DATA_VIEW.getInt32(byteOffset, true); + } + function LE_HEAP_STORE_I32(byteOffset, value) { + HEAP_DATA_VIEW.setInt32(byteOffset, value, true); + } + function callRuntimeCallbacks(callbacks) { + while (callbacks.length > 0) { + var callback = callbacks.shift(); + if (typeof callback == "function") { + callback(Module); + continue; + } + var func = callback.func; + if (typeof func === "number") { + if (callback.arg === void 0) { + wasmTable.get(func)(); + } else { + wasmTable.get(func)(callback.arg); + } + } else { + func(callback.arg === void 0 ? null : callback.arg); + } + } + } + function _gmtime_r(time, tmPtr) { + var date = new Date(LE_HEAP_LOAD_I32((time >> 2) * 4) * 1e3); + LE_HEAP_STORE_I32((tmPtr >> 2) * 4, date.getUTCSeconds()); + LE_HEAP_STORE_I32((tmPtr + 4 >> 2) * 4, date.getUTCMinutes()); + LE_HEAP_STORE_I32((tmPtr + 8 >> 2) * 4, date.getUTCHours()); + LE_HEAP_STORE_I32((tmPtr + 12 >> 2) * 4, date.getUTCDate()); + LE_HEAP_STORE_I32((tmPtr + 16 >> 2) * 4, date.getUTCMonth()); + LE_HEAP_STORE_I32((tmPtr + 20 >> 2) * 4, date.getUTCFullYear() - 1900); + LE_HEAP_STORE_I32((tmPtr + 24 >> 2) * 4, date.getUTCDay()); + LE_HEAP_STORE_I32((tmPtr + 36 >> 2) * 4, 0); + LE_HEAP_STORE_I32((tmPtr + 32 >> 2) * 4, 0); + var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); + var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0; + LE_HEAP_STORE_I32((tmPtr + 28 >> 2) * 4, yday); + if (!_gmtime_r.GMTString) _gmtime_r.GMTString = allocateUTF8("GMT"); + LE_HEAP_STORE_I32((tmPtr + 40 >> 2) * 4, _gmtime_r.GMTString); + return tmPtr; + } + function ___gmtime_r(a0, a1) { + return _gmtime_r(a0, a1); + } + function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.copyWithin(dest, src, src + num); + } + function emscripten_realloc_buffer(size) { + try { + wasmMemory.grow(size - buffer.byteLength + 65535 >>> 16); + updateGlobalBufferAndViews(wasmMemory.buffer); + return 1; + } catch (e) { + } + } + function _emscripten_resize_heap(requestedSize) { + var oldSize = HEAPU8.length; + requestedSize = requestedSize >>> 0; + var maxHeapSize = 2147483648; + if (requestedSize > maxHeapSize) { + return false; + } + for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { + var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown); + overGrownHeapSize = Math.min( + overGrownHeapSize, + requestedSize + 100663296 + ); + var newSize = Math.min( + maxHeapSize, + alignUp(Math.max(requestedSize, overGrownHeapSize), 65536) + ); + var replacement = emscripten_realloc_buffer(newSize); + if (replacement) { + return true; + } + } + return false; + } + function _setTempRet0(val) { + } + function _time(ptr) { + var ret = Date.now() / 1e3 | 0; + if (ptr) { + LE_HEAP_STORE_I32((ptr >> 2) * 4, ret); + } + return ret; + } + function _tzset() { + if (_tzset.called) return; + _tzset.called = true; + var currentYear = (/* @__PURE__ */ new Date()).getFullYear(); + var winter = new Date(currentYear, 0, 1); + var summer = new Date(currentYear, 6, 1); + var winterOffset = winter.getTimezoneOffset(); + var summerOffset = summer.getTimezoneOffset(); + var stdTimezoneOffset = Math.max(winterOffset, summerOffset); + LE_HEAP_STORE_I32((__get_timezone() >> 2) * 4, stdTimezoneOffset * 60); + LE_HEAP_STORE_I32( + (__get_daylight() >> 2) * 4, + Number(winterOffset != summerOffset) + ); + function extractZone(date) { + var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/); + return match ? match[1] : "GMT"; + } + var winterName = extractZone(winter); + var summerName = extractZone(summer); + var winterNamePtr = allocateUTF8(winterName); + var summerNamePtr = allocateUTF8(summerName); + if (summerOffset < winterOffset) { + LE_HEAP_STORE_I32((__get_tzname() >> 2) * 4, winterNamePtr); + LE_HEAP_STORE_I32((__get_tzname() + 4 >> 2) * 4, summerNamePtr); + } else { + LE_HEAP_STORE_I32((__get_tzname() >> 2) * 4, summerNamePtr); + LE_HEAP_STORE_I32((__get_tzname() + 4 >> 2) * 4, winterNamePtr); + } + } + function _timegm(tmPtr) { + _tzset(); + var time = Date.UTC( + LE_HEAP_LOAD_I32((tmPtr + 20 >> 2) * 4) + 1900, + LE_HEAP_LOAD_I32((tmPtr + 16 >> 2) * 4), + LE_HEAP_LOAD_I32((tmPtr + 12 >> 2) * 4), + LE_HEAP_LOAD_I32((tmPtr + 8 >> 2) * 4), + LE_HEAP_LOAD_I32((tmPtr + 4 >> 2) * 4), + LE_HEAP_LOAD_I32((tmPtr >> 2) * 4), + 0 + ); + var date = new Date(time); + LE_HEAP_STORE_I32((tmPtr + 24 >> 2) * 4, date.getUTCDay()); + var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); + var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0; + LE_HEAP_STORE_I32((tmPtr + 28 >> 2) * 4, yday); + return date.getTime() / 1e3 | 0; + } + function intArrayFromBase64(s) { + { + var buf; + try { + buf = Buffer.from(s, "base64"); + } catch (_) { + buf = new Buffer(s, "base64"); + } + return new Uint8Array( + buf["buffer"], + buf["byteOffset"], + buf["byteLength"] + ); + } + } + function tryParseAsDataURI(filename) { + if (!isDataURI(filename)) { + return; + } + return intArrayFromBase64(filename.slice(dataURIPrefix.length)); + } + var asmLibraryArg = { + e: ___gmtime_r, + c: _emscripten_memcpy_big, + d: _emscripten_resize_heap, + a: _setTempRet0, + b: _time, + f: _timegm + }; + var asm = createWasm(); + Module["___wasm_call_ctors"] = asm["h"]; + Module["_zip_ext_count_symlinks"] = asm["i"]; + Module["_zip_file_get_external_attributes"] = asm["j"]; + Module["_zipstruct_statS"] = asm["k"]; + Module["_zipstruct_stat_size"] = asm["l"]; + Module["_zipstruct_stat_mtime"] = asm["m"]; + Module["_zipstruct_stat_crc"] = asm["n"]; + Module["_zipstruct_errorS"] = asm["o"]; + Module["_zipstruct_error_code_zip"] = asm["p"]; + Module["_zipstruct_stat_comp_size"] = asm["q"]; + Module["_zipstruct_stat_comp_method"] = asm["r"]; + Module["_zip_close"] = asm["s"]; + Module["_zip_delete"] = asm["t"]; + Module["_zip_dir_add"] = asm["u"]; + Module["_zip_discard"] = asm["v"]; + Module["_zip_error_init_with_code"] = asm["w"]; + Module["_zip_get_error"] = asm["x"]; + Module["_zip_file_get_error"] = asm["y"]; + Module["_zip_error_strerror"] = asm["z"]; + Module["_zip_fclose"] = asm["A"]; + Module["_zip_file_add"] = asm["B"]; + Module["_free"] = asm["C"]; + var _malloc = Module["_malloc"] = asm["D"]; + Module["_zip_source_error"] = asm["E"]; + Module["_zip_source_seek"] = asm["F"]; + Module["_zip_file_set_external_attributes"] = asm["G"]; + Module["_zip_file_set_mtime"] = asm["H"]; + Module["_zip_fopen_index"] = asm["I"]; + Module["_zip_fread"] = asm["J"]; + Module["_zip_get_name"] = asm["K"]; + Module["_zip_get_num_entries"] = asm["L"]; + Module["_zip_source_read"] = asm["M"]; + Module["_zip_name_locate"] = asm["N"]; + Module["_zip_open_from_source"] = asm["O"]; + Module["_zip_set_file_compression"] = asm["P"]; + Module["_zip_source_buffer"] = asm["Q"]; + Module["_zip_source_buffer_create"] = asm["R"]; + Module["_zip_source_close"] = asm["S"]; + Module["_zip_source_free"] = asm["T"]; + Module["_zip_source_keep"] = asm["U"]; + Module["_zip_source_open"] = asm["V"]; + Module["_zip_source_tell"] = asm["X"]; + Module["_zip_stat_index"] = asm["Y"]; + var __get_tzname = Module["__get_tzname"] = asm["Z"]; + var __get_daylight = Module["__get_daylight"] = asm["_"]; + var __get_timezone = Module["__get_timezone"] = asm["$"]; + var stackSave = Module["stackSave"] = asm["aa"]; + var stackRestore = Module["stackRestore"] = asm["ba"]; + var stackAlloc = Module["stackAlloc"] = asm["ca"]; + Module["cwrap"] = cwrap; + Module["getValue"] = getValue; + var calledRun; + dependenciesFulfilled = function runCaller() { + if (!calledRun) run(); + if (!calledRun) dependenciesFulfilled = runCaller; + }; + function run(args) { + if (runDependencies > 0) { + return; + } + preRun(); + if (runDependencies > 0) { + return; + } + function doRun() { + if (calledRun) return; + calledRun = true; + Module["calledRun"] = true; + if (ABORT) return; + initRuntime(); + readyPromiseResolve(Module); + if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"](); + postRun(); + } + if (Module["setStatus"]) { + Module["setStatus"]("Running..."); + setTimeout(function() { + setTimeout(function() { + Module["setStatus"](""); + }, 1); + doRun(); + }, 1); + } else { + doRun(); + } + } + Module["run"] = run; + if (Module["preInit"]) { + if (typeof Module["preInit"] == "function") + Module["preInit"] = [Module["preInit"]]; + while (Module["preInit"].length > 0) { + Module["preInit"].pop()(); + } + } + run(); + return createModule2; + }; +}(); +module.exports = createModule; +}(libzipSync)); + +const createModule = libzipSync.exports; + +const number64 = [ + `number`, + // low + `number` + // high +]; +var Errors = /* @__PURE__ */ ((Errors2) => { + Errors2[Errors2["ZIP_ER_OK"] = 0] = "ZIP_ER_OK"; + Errors2[Errors2["ZIP_ER_MULTIDISK"] = 1] = "ZIP_ER_MULTIDISK"; + Errors2[Errors2["ZIP_ER_RENAME"] = 2] = "ZIP_ER_RENAME"; + Errors2[Errors2["ZIP_ER_CLOSE"] = 3] = "ZIP_ER_CLOSE"; + Errors2[Errors2["ZIP_ER_SEEK"] = 4] = "ZIP_ER_SEEK"; + Errors2[Errors2["ZIP_ER_READ"] = 5] = "ZIP_ER_READ"; + Errors2[Errors2["ZIP_ER_WRITE"] = 6] = "ZIP_ER_WRITE"; + Errors2[Errors2["ZIP_ER_CRC"] = 7] = "ZIP_ER_CRC"; + Errors2[Errors2["ZIP_ER_ZIPCLOSED"] = 8] = "ZIP_ER_ZIPCLOSED"; + Errors2[Errors2["ZIP_ER_NOENT"] = 9] = "ZIP_ER_NOENT"; + Errors2[Errors2["ZIP_ER_EXISTS"] = 10] = "ZIP_ER_EXISTS"; + Errors2[Errors2["ZIP_ER_OPEN"] = 11] = "ZIP_ER_OPEN"; + Errors2[Errors2["ZIP_ER_TMPOPEN"] = 12] = "ZIP_ER_TMPOPEN"; + Errors2[Errors2["ZIP_ER_ZLIB"] = 13] = "ZIP_ER_ZLIB"; + Errors2[Errors2["ZIP_ER_MEMORY"] = 14] = "ZIP_ER_MEMORY"; + Errors2[Errors2["ZIP_ER_CHANGED"] = 15] = "ZIP_ER_CHANGED"; + Errors2[Errors2["ZIP_ER_COMPNOTSUPP"] = 16] = "ZIP_ER_COMPNOTSUPP"; + Errors2[Errors2["ZIP_ER_EOF"] = 17] = "ZIP_ER_EOF"; + Errors2[Errors2["ZIP_ER_INVAL"] = 18] = "ZIP_ER_INVAL"; + Errors2[Errors2["ZIP_ER_NOZIP"] = 19] = "ZIP_ER_NOZIP"; + Errors2[Errors2["ZIP_ER_INTERNAL"] = 20] = "ZIP_ER_INTERNAL"; + Errors2[Errors2["ZIP_ER_INCONS"] = 21] = "ZIP_ER_INCONS"; + Errors2[Errors2["ZIP_ER_REMOVE"] = 22] = "ZIP_ER_REMOVE"; + Errors2[Errors2["ZIP_ER_DELETED"] = 23] = "ZIP_ER_DELETED"; + Errors2[Errors2["ZIP_ER_ENCRNOTSUPP"] = 24] = "ZIP_ER_ENCRNOTSUPP"; + Errors2[Errors2["ZIP_ER_RDONLY"] = 25] = "ZIP_ER_RDONLY"; + Errors2[Errors2["ZIP_ER_NOPASSWD"] = 26] = "ZIP_ER_NOPASSWD"; + Errors2[Errors2["ZIP_ER_WRONGPASSWD"] = 27] = "ZIP_ER_WRONGPASSWD"; + Errors2[Errors2["ZIP_ER_OPNOTSUPP"] = 28] = "ZIP_ER_OPNOTSUPP"; + Errors2[Errors2["ZIP_ER_INUSE"] = 29] = "ZIP_ER_INUSE"; + Errors2[Errors2["ZIP_ER_TELL"] = 30] = "ZIP_ER_TELL"; + Errors2[Errors2["ZIP_ER_COMPRESSED_DATA"] = 31] = "ZIP_ER_COMPRESSED_DATA"; + return Errors2; +})(Errors || {}); +const makeInterface = (emZip) => ({ + // Those are getters because they can change after memory growth + get HEAPU8() { + return emZip.HEAPU8; + }, + errors: Errors, + SEEK_SET: 0, + SEEK_CUR: 1, + SEEK_END: 2, + ZIP_CHECKCONS: 4, + ZIP_EXCL: 2, + ZIP_RDONLY: 16, + ZIP_FL_OVERWRITE: 8192, + ZIP_FL_COMPRESSED: 4, + ZIP_OPSYS_DOS: 0, + ZIP_OPSYS_AMIGA: 1, + ZIP_OPSYS_OPENVMS: 2, + ZIP_OPSYS_UNIX: 3, + ZIP_OPSYS_VM_CMS: 4, + ZIP_OPSYS_ATARI_ST: 5, + ZIP_OPSYS_OS_2: 6, + ZIP_OPSYS_MACINTOSH: 7, + ZIP_OPSYS_Z_SYSTEM: 8, + ZIP_OPSYS_CPM: 9, + ZIP_OPSYS_WINDOWS_NTFS: 10, + ZIP_OPSYS_MVS: 11, + ZIP_OPSYS_VSE: 12, + ZIP_OPSYS_ACORN_RISC: 13, + ZIP_OPSYS_VFAT: 14, + ZIP_OPSYS_ALTERNATE_MVS: 15, + ZIP_OPSYS_BEOS: 16, + ZIP_OPSYS_TANDEM: 17, + ZIP_OPSYS_OS_400: 18, + ZIP_OPSYS_OS_X: 19, + ZIP_CM_DEFAULT: -1, + ZIP_CM_STORE: 0, + ZIP_CM_DEFLATE: 8, + uint08S: emZip._malloc(1), + uint32S: emZip._malloc(4), + malloc: emZip._malloc, + free: emZip._free, + getValue: emZip.getValue, + openFromSource: emZip.cwrap(`zip_open_from_source`, `number`, [`number`, `number`, `number`]), + close: emZip.cwrap(`zip_close`, `number`, [`number`]), + discard: emZip.cwrap(`zip_discard`, null, [`number`]), + getError: emZip.cwrap(`zip_get_error`, `number`, [`number`]), + getName: emZip.cwrap(`zip_get_name`, `string`, [`number`, `number`, `number`]), + getNumEntries: emZip.cwrap(`zip_get_num_entries`, `number`, [`number`, `number`]), + delete: emZip.cwrap(`zip_delete`, `number`, [`number`, `number`]), + statIndex: emZip.cwrap(`zip_stat_index`, `number`, [`number`, ...number64, `number`, `number`]), + fopenIndex: emZip.cwrap(`zip_fopen_index`, `number`, [`number`, ...number64, `number`]), + fread: emZip.cwrap(`zip_fread`, `number`, [`number`, `number`, `number`, `number`]), + fclose: emZip.cwrap(`zip_fclose`, `number`, [`number`]), + dir: { + add: emZip.cwrap(`zip_dir_add`, `number`, [`number`, `string`]) + }, + file: { + add: emZip.cwrap(`zip_file_add`, `number`, [`number`, `string`, `number`, `number`]), + getError: emZip.cwrap(`zip_file_get_error`, `number`, [`number`]), + getExternalAttributes: emZip.cwrap(`zip_file_get_external_attributes`, `number`, [`number`, ...number64, `number`, `number`, `number`]), + setExternalAttributes: emZip.cwrap(`zip_file_set_external_attributes`, `number`, [`number`, ...number64, `number`, `number`, `number`]), + setMtime: emZip.cwrap(`zip_file_set_mtime`, `number`, [`number`, ...number64, `number`, `number`]), + setCompression: emZip.cwrap(`zip_set_file_compression`, `number`, [`number`, ...number64, `number`, `number`]) + }, + ext: { + countSymlinks: emZip.cwrap(`zip_ext_count_symlinks`, `number`, [`number`]) + }, + error: { + initWithCode: emZip.cwrap(`zip_error_init_with_code`, null, [`number`, `number`]), + strerror: emZip.cwrap(`zip_error_strerror`, `string`, [`number`]) + }, + name: { + locate: emZip.cwrap(`zip_name_locate`, `number`, [`number`, `string`, `number`]) + }, + source: { + fromUnattachedBuffer: emZip.cwrap(`zip_source_buffer_create`, `number`, [`number`, ...number64, `number`, `number`]), + fromBuffer: emZip.cwrap(`zip_source_buffer`, `number`, [`number`, `number`, ...number64, `number`]), + free: emZip.cwrap(`zip_source_free`, null, [`number`]), + keep: emZip.cwrap(`zip_source_keep`, null, [`number`]), + open: emZip.cwrap(`zip_source_open`, `number`, [`number`]), + close: emZip.cwrap(`zip_source_close`, `number`, [`number`]), + seek: emZip.cwrap(`zip_source_seek`, `number`, [`number`, ...number64, `number`]), + tell: emZip.cwrap(`zip_source_tell`, `number`, [`number`]), + read: emZip.cwrap(`zip_source_read`, `number`, [`number`, `number`, `number`]), + error: emZip.cwrap(`zip_source_error`, `number`, [`number`]) + }, + struct: { + statS: emZip.cwrap(`zipstruct_statS`, `number`, []), + statSize: emZip.cwrap(`zipstruct_stat_size`, `number`, [`number`]), + statCompSize: emZip.cwrap(`zipstruct_stat_comp_size`, `number`, [`number`]), + statCompMethod: emZip.cwrap(`zipstruct_stat_comp_method`, `number`, [`number`]), + statMtime: emZip.cwrap(`zipstruct_stat_mtime`, `number`, [`number`]), + statCrc: emZip.cwrap(`zipstruct_stat_crc`, `number`, [`number`]), + errorS: emZip.cwrap(`zipstruct_errorS`, `number`, []), + errorCodeZip: emZip.cwrap(`zipstruct_error_code_zip`, `number`, [`number`]) + } +}); + +function getArchivePart(path, extension) { + let idx = path.indexOf(extension); + if (idx <= 0) + return null; + let nextCharIdx = idx; + while (idx >= 0) { + nextCharIdx = idx + extension.length; + if (path[nextCharIdx] === ppath.sep) + break; + if (path[idx - 1] === ppath.sep) + return null; + idx = path.indexOf(extension, nextCharIdx); + } + if (path.length > nextCharIdx && path[nextCharIdx] !== ppath.sep) + return null; + return path.slice(0, nextCharIdx); +} +class ZipOpenFS extends MountFS { + static async openPromise(fn, opts) { + const zipOpenFs = new ZipOpenFS(opts); + try { + return await fn(zipOpenFs); + } finally { + zipOpenFs.saveAndClose(); + } + } + constructor(opts = {}) { + const fileExtensions = opts.fileExtensions; + const readOnlyArchives = opts.readOnlyArchives; + const getMountPoint = typeof fileExtensions === `undefined` ? (path) => getArchivePart(path, `.zip`) : (path) => { + for (const extension of fileExtensions) { + const result = getArchivePart(path, extension); + if (result) { + return result; + } + } + return null; + }; + const factorySync = (baseFs, p) => { + return new ZipFS(p, { + baseFs, + readOnly: readOnlyArchives, + stats: baseFs.statSync(p), + customZipImplementation: opts.customZipImplementation + }); + }; + const factoryPromise = async (baseFs, p) => { + const zipOptions = { + baseFs, + readOnly: readOnlyArchives, + stats: await baseFs.statPromise(p), + customZipImplementation: opts.customZipImplementation + }; + return () => { + return new ZipFS(p, zipOptions); + }; + }; + super({ + ...opts, + factorySync, + factoryPromise, + getMountPoint + }); + } +} + +class LibzipError extends Error { + code; + constructor(message, code) { + super(message); + this.name = `Libzip Error`; + this.code = code; + } +} +class LibZipImpl { + libzip; + lzSource; + zip; + listings; + symlinkCount; + filesShouldBeCached = true; + constructor(opts) { + const buffer = `buffer` in opts ? opts.buffer : opts.baseFs.readFileSync(opts.path); + this.libzip = getInstance(); + const errPtr = this.libzip.malloc(4); + try { + let flags = 0; + if (opts.readOnly) + flags |= this.libzip.ZIP_RDONLY; + const lzSource = this.allocateUnattachedSource(buffer); + try { + this.zip = this.libzip.openFromSource(lzSource, flags, errPtr); + this.lzSource = lzSource; + } catch (error) { + this.libzip.source.free(lzSource); + throw error; + } + if (this.zip === 0) { + const error = this.libzip.struct.errorS(); + this.libzip.error.initWithCode(error, this.libzip.getValue(errPtr, `i32`)); + throw this.makeLibzipError(error); + } + } finally { + this.libzip.free(errPtr); + } + const entryCount = this.libzip.getNumEntries(this.zip, 0); + const listings = new Array(entryCount); + for (let t = 0; t < entryCount; ++t) + listings[t] = this.libzip.getName(this.zip, t, 0); + this.listings = listings; + this.symlinkCount = this.libzip.ext.countSymlinks(this.zip); + if (this.symlinkCount === -1) { + throw this.makeLibzipError(this.libzip.getError(this.zip)); + } + } + getSymlinkCount() { + return this.symlinkCount; + } + getListings() { + return this.listings; + } + stat(entry) { + const stat = this.libzip.struct.statS(); + const rc = this.libzip.statIndex(this.zip, entry, 0, 0, stat); + if (rc === -1) + throw this.makeLibzipError(this.libzip.getError(this.zip)); + const size = this.libzip.struct.statSize(stat) >>> 0; + const mtime = this.libzip.struct.statMtime(stat) >>> 0; + const crc = this.libzip.struct.statCrc(stat) >>> 0; + return { size, mtime, crc }; + } + makeLibzipError(error) { + const errorCode = this.libzip.struct.errorCodeZip(error); + const strerror = this.libzip.error.strerror(error); + const libzipError = new LibzipError(strerror, this.libzip.errors[errorCode]); + if (errorCode === this.libzip.errors.ZIP_ER_CHANGED) + throw new Error(`Assertion failed: Unexpected libzip error: ${libzipError.message}`); + return libzipError; + } + setFileSource(target, compression, buffer) { + const lzSource = this.allocateSource(buffer); + try { + const newIndex = this.libzip.file.add(this.zip, target, lzSource, this.libzip.ZIP_FL_OVERWRITE); + if (newIndex === -1) + throw this.makeLibzipError(this.libzip.getError(this.zip)); + if (compression !== null) { + const rc = this.libzip.file.setCompression(this.zip, newIndex, 0, compression[0], compression[1]); + if (rc === -1) { + throw this.makeLibzipError(this.libzip.getError(this.zip)); + } + } + return newIndex; + } catch (error) { + this.libzip.source.free(lzSource); + throw error; + } + } + setMtime(entry, mtime) { + const rc = this.libzip.file.setMtime(this.zip, entry, 0, mtime, 0); + if (rc === -1) { + throw this.makeLibzipError(this.libzip.getError(this.zip)); + } + } + getExternalAttributes(index) { + const attrs = this.libzip.file.getExternalAttributes(this.zip, index, 0, 0, this.libzip.uint08S, this.libzip.uint32S); + if (attrs === -1) + throw this.makeLibzipError(this.libzip.getError(this.zip)); + const opsys = this.libzip.getValue(this.libzip.uint08S, `i8`) >>> 0; + const attributes = this.libzip.getValue(this.libzip.uint32S, `i32`) >>> 0; + return [opsys, attributes]; + } + setExternalAttributes(index, opsys, attributes) { + const rc = this.libzip.file.setExternalAttributes(this.zip, index, 0, 0, opsys, attributes); + if (rc === -1) { + throw this.makeLibzipError(this.libzip.getError(this.zip)); + } + } + locate(name) { + return this.libzip.name.locate(this.zip, name, 0); + } + getFileSource(index) { + const stat = this.libzip.struct.statS(); + const rc = this.libzip.statIndex(this.zip, index, 0, 0, stat); + if (rc === -1) + throw this.makeLibzipError(this.libzip.getError(this.zip)); + const size = this.libzip.struct.statCompSize(stat); + const compressionMethod = this.libzip.struct.statCompMethod(stat); + const buffer = this.libzip.malloc(size); + try { + const file = this.libzip.fopenIndex(this.zip, index, 0, this.libzip.ZIP_FL_COMPRESSED); + if (file === 0) + throw this.makeLibzipError(this.libzip.getError(this.zip)); + try { + const rc2 = this.libzip.fread(file, buffer, size, 0); + if (rc2 === -1) + throw this.makeLibzipError(this.libzip.file.getError(file)); + else if (rc2 < size) + throw new Error(`Incomplete read`); + else if (rc2 > size) + throw new Error(`Overread`); + const memory = this.libzip.HEAPU8.subarray(buffer, buffer + size); + const data = Buffer.from(memory); + return { data, compressionMethod }; + } finally { + this.libzip.fclose(file); + } + } finally { + this.libzip.free(buffer); + } + } + deleteEntry(index) { + const rc = this.libzip.delete(this.zip, index); + if (rc === -1) { + throw this.makeLibzipError(this.libzip.getError(this.zip)); + } + } + addDirectory(path) { + const index = this.libzip.dir.add(this.zip, path); + if (index === -1) + throw this.makeLibzipError(this.libzip.getError(this.zip)); + return index; + } + getBufferAndClose() { + try { + this.libzip.source.keep(this.lzSource); + if (this.libzip.close(this.zip) === -1) + throw this.makeLibzipError(this.libzip.getError(this.zip)); + if (this.libzip.source.open(this.lzSource) === -1) + throw this.makeLibzipError(this.libzip.source.error(this.lzSource)); + if (this.libzip.source.seek(this.lzSource, 0, 0, this.libzip.SEEK_END) === -1) + throw this.makeLibzipError(this.libzip.source.error(this.lzSource)); + const size = this.libzip.source.tell(this.lzSource); + if (size === -1) + throw this.makeLibzipError(this.libzip.source.error(this.lzSource)); + if (this.libzip.source.seek(this.lzSource, 0, 0, this.libzip.SEEK_SET) === -1) + throw this.makeLibzipError(this.libzip.source.error(this.lzSource)); + const buffer = this.libzip.malloc(size); + if (!buffer) + throw new Error(`Couldn't allocate enough memory`); + try { + const rc = this.libzip.source.read(this.lzSource, buffer, size); + if (rc === -1) + throw this.makeLibzipError(this.libzip.source.error(this.lzSource)); + else if (rc < size) + throw new Error(`Incomplete read`); + else if (rc > size) + throw new Error(`Overread`); + let result = Buffer.from(this.libzip.HEAPU8.subarray(buffer, buffer + size)); + if (process.env.YARN_IS_TEST_ENV && process.env.YARN_ZIP_DATA_EPILOGUE) + result = Buffer.concat([result, Buffer.from(process.env.YARN_ZIP_DATA_EPILOGUE)]); + return result; + } finally { + this.libzip.free(buffer); + } + } finally { + this.libzip.source.close(this.lzSource); + this.libzip.source.free(this.lzSource); + } + } + allocateBuffer(content) { + if (!Buffer.isBuffer(content)) + content = Buffer.from(content); + const buffer = this.libzip.malloc(content.byteLength); + if (!buffer) + throw new Error(`Couldn't allocate enough memory`); + const heap = new Uint8Array(this.libzip.HEAPU8.buffer, buffer, content.byteLength); + heap.set(content); + return { buffer, byteLength: content.byteLength }; + } + allocateUnattachedSource(content) { + const error = this.libzip.struct.errorS(); + const { buffer, byteLength } = this.allocateBuffer(content); + const source = this.libzip.source.fromUnattachedBuffer(buffer, byteLength, 0, 1, error); + if (source === 0) { + this.libzip.free(error); + throw this.makeLibzipError(error); + } + return source; + } + allocateSource(content) { + const { buffer, byteLength } = this.allocateBuffer(content); + const source = this.libzip.source.fromBuffer(this.zip, buffer, byteLength, 0, 1); + if (source === 0) { + this.libzip.free(buffer); + throw this.makeLibzipError(this.libzip.getError(this.zip)); + } + return source; + } + discard() { + this.libzip.discard(this.zip); + } +} + +const ZIP_UNIX = 3; +const STORE = 0; +const DEFLATE = 8; +const DEFAULT_COMPRESSION_LEVEL = `mixed`; +function toUnixTimestamp(time) { + if (typeof time === `string` && String(+time) === time) + return +time; + if (typeof time === `number` && Number.isFinite(time)) { + if (time < 0) { + return Date.now() / 1e3; + } else { + return time; + } + } + if (nodeUtils.types.isDate(time)) + return time.getTime() / 1e3; + throw new Error(`Invalid time`); +} +function makeEmptyArchive() { + return Buffer.from([ + 80, + 75, + 5, + 6, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ]); +} +class ZipFS extends BasePortableFakeFS { + baseFs; + path; + stats; + level; + zipImpl; + listings = /* @__PURE__ */ new Map(); + entries = /* @__PURE__ */ new Map(); + /** + * A cache of indices mapped to file sources. + * Populated by `setFileSource` calls. + * Required for supporting read after write. + */ + fileSources = /* @__PURE__ */ new Map(); + symlinkCount; + fds = /* @__PURE__ */ new Map(); + nextFd = 0; + ready = false; + readOnly = false; + constructor(source, opts = {}) { + super(); + if (opts.readOnly) + this.readOnly = true; + const pathOptions = opts; + this.level = typeof pathOptions.level !== `undefined` ? pathOptions.level : DEFAULT_COMPRESSION_LEVEL; + const ZipImplCls = opts.customZipImplementation ?? LibZipImpl; + if (typeof source === `string`) { + const { baseFs = new NodeFS() } = pathOptions; + this.baseFs = baseFs; + this.path = source; + } else { + this.path = null; + this.baseFs = null; + } + if (opts.stats) { + this.stats = opts.stats; + } else { + if (typeof source === `string`) { + try { + this.stats = this.baseFs.statSync(source); + } catch (error) { + if (error.code === `ENOENT` && pathOptions.create) { + this.stats = makeDefaultStats(); + } else { + throw error; + } + } + } else { + this.stats = makeDefaultStats(); + } + } + if (typeof source === `string`) { + if (opts.create) { + this.zipImpl = new ZipImplCls({ buffer: makeEmptyArchive(), readOnly: this.readOnly }); + } else { + this.zipImpl = new ZipImplCls({ path: source, baseFs: this.baseFs, readOnly: this.readOnly, size: this.stats.size }); + } + } else { + this.zipImpl = new ZipImplCls({ buffer: source ?? makeEmptyArchive(), readOnly: this.readOnly }); + } + this.listings.set(PortablePath.root, /* @__PURE__ */ new Set()); + const listings = this.zipImpl.getListings(); + for (let t = 0; t < listings.length; t++) { + const raw = listings[t]; + if (ppath.isAbsolute(raw)) + continue; + const p = ppath.resolve(PortablePath.root, raw); + this.registerEntry(p, t); + if (raw.endsWith(`/`)) { + this.registerListing(p); + } + } + this.symlinkCount = this.zipImpl.getSymlinkCount(); + this.ready = true; + } + getExtractHint(hints) { + for (const fileName of this.entries.keys()) { + const ext = this.pathUtils.extname(fileName); + if (hints.relevantExtensions.has(ext)) { + return true; + } + } + return false; + } + getAllFiles() { + return Array.from(this.entries.keys()); + } + getRealPath() { + if (!this.path) + throw new Error(`ZipFS don't have real paths when loaded from a buffer`); + return this.path; + } + prepareClose() { + if (!this.ready) + throw EBUSY(`archive closed, close`); + unwatchAllFiles(this); + } + getBufferAndClose() { + this.prepareClose(); + if (this.entries.size === 0) { + this.discardAndClose(); + return makeEmptyArchive(); + } + try { + return this.zipImpl.getBufferAndClose(); + } finally { + this.ready = false; + } + } + discardAndClose() { + this.prepareClose(); + this.zipImpl.discard(); + this.ready = false; + } + saveAndClose() { + if (!this.path || !this.baseFs) + throw new Error(`ZipFS cannot be saved and must be discarded when loaded from a buffer`); + if (this.readOnly) { + this.discardAndClose(); + return; + } + const newMode = this.baseFs.existsSync(this.path) || this.stats.mode === DEFAULT_MODE ? void 0 : this.stats.mode; + this.baseFs.writeFileSync(this.path, this.getBufferAndClose(), { mode: newMode }); + this.ready = false; + } + resolve(p) { + return ppath.resolve(PortablePath.root, p); + } + async openPromise(p, flags, mode) { + return this.openSync(p, flags, mode); + } + openSync(p, flags, mode) { + const fd = this.nextFd++; + this.fds.set(fd, { cursor: 0, p }); + return fd; + } + hasOpenFileHandles() { + return !!this.fds.size; + } + async opendirPromise(p, opts) { + return this.opendirSync(p, opts); + } + opendirSync(p, opts = {}) { + const resolvedP = this.resolveFilename(`opendir '${p}'`, p); + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) + throw ENOENT(`opendir '${p}'`); + const directoryListing = this.listings.get(resolvedP); + if (!directoryListing) + throw ENOTDIR(`opendir '${p}'`); + const entries = [...directoryListing]; + const fd = this.openSync(resolvedP, `r`); + const onClose = () => { + this.closeSync(fd); + }; + return opendir(this, resolvedP, entries, { onClose }); + } + async readPromise(fd, buffer, offset, length, position) { + return this.readSync(fd, buffer, offset, length, position); + } + readSync(fd, buffer, offset = 0, length = buffer.byteLength, position = -1) { + const entry = this.fds.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`read`); + const realPosition = position === -1 || position === null ? entry.cursor : position; + const source = this.readFileSync(entry.p); + source.copy(buffer, offset, realPosition, realPosition + length); + const bytesRead = Math.max(0, Math.min(source.length - realPosition, length)); + if (position === -1 || position === null) + entry.cursor += bytesRead; + return bytesRead; + } + async writePromise(fd, buffer, offset, length, position) { + if (typeof buffer === `string`) { + return this.writeSync(fd, buffer, position); + } else { + return this.writeSync(fd, buffer, offset, length, position); + } + } + writeSync(fd, buffer, offset, length, position) { + const entry = this.fds.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`read`); + throw new Error(`Unimplemented`); + } + async closePromise(fd) { + return this.closeSync(fd); + } + closeSync(fd) { + const entry = this.fds.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`read`); + this.fds.delete(fd); + } + createReadStream(p, { encoding } = {}) { + if (p === null) + throw new Error(`Unimplemented`); + const fd = this.openSync(p, `r`); + const stream$1 = Object.assign( + new stream.PassThrough({ + emitClose: true, + autoDestroy: true, + destroy: (error, callback) => { + clearImmediate(immediate); + this.closeSync(fd); + callback(error); + } + }), + { + close() { + stream$1.destroy(); + }, + bytesRead: 0, + path: p, + // "This property is `true` if the underlying file has not been opened yet" + pending: false + } + ); + const immediate = setImmediate(async () => { + try { + const data = await this.readFilePromise(p, encoding); + stream$1.bytesRead = data.length; + stream$1.end(data); + } catch (error) { + stream$1.destroy(error); + } + }); + return stream$1; + } + createWriteStream(p, { encoding } = {}) { + if (this.readOnly) + throw EROFS(`open '${p}'`); + if (p === null) + throw new Error(`Unimplemented`); + const chunks = []; + const fd = this.openSync(p, `w`); + const stream$1 = Object.assign( + new stream.PassThrough({ + autoDestroy: true, + emitClose: true, + destroy: (error, callback) => { + try { + if (error) { + callback(error); + } else { + this.writeFileSync(p, Buffer.concat(chunks), encoding); + callback(null); + } + } catch (err) { + callback(err); + } finally { + this.closeSync(fd); + } + } + }), + { + close() { + stream$1.destroy(); + }, + bytesWritten: 0, + path: p, + // "This property is `true` if the underlying file has not been opened yet" + pending: false + } + ); + stream$1.on(`data`, (chunk) => { + const chunkBuffer = Buffer.from(chunk); + stream$1.bytesWritten += chunkBuffer.length; + chunks.push(chunkBuffer); + }); + return stream$1; + } + async realpathPromise(p) { + return this.realpathSync(p); + } + realpathSync(p) { + const resolvedP = this.resolveFilename(`lstat '${p}'`, p); + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) + throw ENOENT(`lstat '${p}'`); + return resolvedP; + } + async existsPromise(p) { + return this.existsSync(p); + } + existsSync(p) { + if (!this.ready) + throw EBUSY(`archive closed, existsSync '${p}'`); + if (this.symlinkCount === 0) { + const resolvedP2 = ppath.resolve(PortablePath.root, p); + return this.entries.has(resolvedP2) || this.listings.has(resolvedP2); + } + let resolvedP; + try { + resolvedP = this.resolveFilename(`stat '${p}'`, p, void 0, false); + } catch { + return false; + } + if (resolvedP === void 0) + return false; + return this.entries.has(resolvedP) || this.listings.has(resolvedP); + } + async accessPromise(p, mode) { + return this.accessSync(p, mode); + } + accessSync(p, mode = fs.constants.F_OK) { + const resolvedP = this.resolveFilename(`access '${p}'`, p); + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) + throw ENOENT(`access '${p}'`); + if (this.readOnly && mode & fs.constants.W_OK) { + throw EROFS(`access '${p}'`); + } + } + async statPromise(p, opts = { bigint: false }) { + if (opts.bigint) + return this.statSync(p, { bigint: true }); + return this.statSync(p); + } + statSync(p, opts = { bigint: false, throwIfNoEntry: true }) { + const resolvedP = this.resolveFilename(`stat '${p}'`, p, void 0, opts.throwIfNoEntry); + if (resolvedP === void 0) + return void 0; + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) { + if (opts.throwIfNoEntry === false) + return void 0; + throw ENOENT(`stat '${p}'`); + } + if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) + throw ENOTDIR(`stat '${p}'`); + return this.statImpl(`stat '${p}'`, resolvedP, opts); + } + async fstatPromise(fd, opts) { + return this.fstatSync(fd, opts); + } + fstatSync(fd, opts) { + const entry = this.fds.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`fstatSync`); + const { p } = entry; + const resolvedP = this.resolveFilename(`stat '${p}'`, p); + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) + throw ENOENT(`stat '${p}'`); + if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) + throw ENOTDIR(`stat '${p}'`); + return this.statImpl(`fstat '${p}'`, resolvedP, opts); + } + async lstatPromise(p, opts = { bigint: false }) { + if (opts.bigint) + return this.lstatSync(p, { bigint: true }); + return this.lstatSync(p); + } + lstatSync(p, opts = { bigint: false, throwIfNoEntry: true }) { + const resolvedP = this.resolveFilename(`lstat '${p}'`, p, false, opts.throwIfNoEntry); + if (resolvedP === void 0) + return void 0; + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) { + if (opts.throwIfNoEntry === false) + return void 0; + throw ENOENT(`lstat '${p}'`); + } + if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) + throw ENOTDIR(`lstat '${p}'`); + return this.statImpl(`lstat '${p}'`, resolvedP, opts); + } + statImpl(reason, p, opts = {}) { + const entry = this.entries.get(p); + if (typeof entry !== `undefined`) { + const stat = this.zipImpl.stat(entry); + const crc = stat.crc; + const size = stat.size; + const mtimeMs = stat.mtime * 1e3; + const uid = this.stats.uid; + const gid = this.stats.gid; + const blksize = 512; + const blocks = Math.ceil(stat.size / blksize); + const atimeMs = mtimeMs; + const birthtimeMs = mtimeMs; + const ctimeMs = mtimeMs; + const atime = new Date(atimeMs); + const birthtime = new Date(birthtimeMs); + const ctime = new Date(ctimeMs); + const mtime = new Date(mtimeMs); + const type = this.listings.has(p) ? fs.constants.S_IFDIR : this.isSymbolicLink(entry) ? fs.constants.S_IFLNK : fs.constants.S_IFREG; + const defaultMode = type === fs.constants.S_IFDIR ? 493 : 420; + const mode = type | this.getUnixMode(entry, defaultMode) & 511; + const statInstance = Object.assign(new StatEntry(), { uid, gid, size, blksize, blocks, atime, birthtime, ctime, mtime, atimeMs, birthtimeMs, ctimeMs, mtimeMs, mode, crc }); + return opts.bigint === true ? convertToBigIntStats(statInstance) : statInstance; + } + if (this.listings.has(p)) { + const uid = this.stats.uid; + const gid = this.stats.gid; + const size = 0; + const blksize = 512; + const blocks = 0; + const atimeMs = this.stats.mtimeMs; + const birthtimeMs = this.stats.mtimeMs; + const ctimeMs = this.stats.mtimeMs; + const mtimeMs = this.stats.mtimeMs; + const atime = new Date(atimeMs); + const birthtime = new Date(birthtimeMs); + const ctime = new Date(ctimeMs); + const mtime = new Date(mtimeMs); + const mode = fs.constants.S_IFDIR | 493; + const crc = 0; + const statInstance = Object.assign(new StatEntry(), { uid, gid, size, blksize, blocks, atime, birthtime, ctime, mtime, atimeMs, birthtimeMs, ctimeMs, mtimeMs, mode, crc }); + return opts.bigint === true ? convertToBigIntStats(statInstance) : statInstance; + } + throw new Error(`Unreachable`); + } + getUnixMode(index, defaultMode) { + const [opsys, attributes] = this.zipImpl.getExternalAttributes(index); + if (opsys !== ZIP_UNIX) + return defaultMode; + return attributes >>> 16; + } + registerListing(p) { + const existingListing = this.listings.get(p); + if (existingListing) + return existingListing; + const parentListing = this.registerListing(ppath.dirname(p)); + parentListing.add(ppath.basename(p)); + const newListing = /* @__PURE__ */ new Set(); + this.listings.set(p, newListing); + return newListing; + } + registerEntry(p, index) { + const parentListing = this.registerListing(ppath.dirname(p)); + parentListing.add(ppath.basename(p)); + this.entries.set(p, index); + } + unregisterListing(p) { + this.listings.delete(p); + const parentListing = this.listings.get(ppath.dirname(p)); + parentListing?.delete(ppath.basename(p)); + } + unregisterEntry(p) { + this.unregisterListing(p); + const entry = this.entries.get(p); + this.entries.delete(p); + if (typeof entry === `undefined`) + return; + this.fileSources.delete(entry); + if (this.isSymbolicLink(entry)) { + this.symlinkCount--; + } + } + deleteEntry(p, index) { + this.unregisterEntry(p); + this.zipImpl.deleteEntry(index); + } + resolveFilename(reason, p, resolveLastComponent = true, throwIfNoEntry = true) { + if (!this.ready) + throw EBUSY(`archive closed, ${reason}`); + let resolvedP = ppath.resolve(PortablePath.root, p); + if (resolvedP === `/`) + return PortablePath.root; + const fileIndex = this.entries.get(resolvedP); + if (resolveLastComponent && fileIndex !== void 0) { + if (this.symlinkCount !== 0 && this.isSymbolicLink(fileIndex)) { + const target = this.getFileSource(fileIndex).toString(); + return this.resolveFilename(reason, ppath.resolve(ppath.dirname(resolvedP), target), true, throwIfNoEntry); + } else { + return resolvedP; + } + } + while (true) { + const parentP = this.resolveFilename(reason, ppath.dirname(resolvedP), true, throwIfNoEntry); + if (parentP === void 0) + return parentP; + const isDir = this.listings.has(parentP); + const doesExist = this.entries.has(parentP); + if (!isDir && !doesExist) { + if (throwIfNoEntry === false) + return void 0; + throw ENOENT(reason); + } + if (!isDir) + throw ENOTDIR(reason); + resolvedP = ppath.resolve(parentP, ppath.basename(resolvedP)); + if (!resolveLastComponent || this.symlinkCount === 0) + break; + const index = this.zipImpl.locate(resolvedP.slice(1)); + if (index === -1) + break; + if (this.isSymbolicLink(index)) { + const target = this.getFileSource(index).toString(); + resolvedP = ppath.resolve(ppath.dirname(resolvedP), target); + } else { + break; + } + } + return resolvedP; + } + setFileSource(p, content) { + const buffer = Buffer.isBuffer(content) ? content : Buffer.from(content); + const target = ppath.relative(PortablePath.root, p); + let compression = null; + if (this.level !== `mixed`) { + const method = this.level === 0 ? STORE : DEFLATE; + compression = [method, this.level]; + } + const newIndex = this.zipImpl.setFileSource(target, compression, buffer); + this.fileSources.set(newIndex, buffer); + return newIndex; + } + isSymbolicLink(index) { + if (this.symlinkCount === 0) + return false; + const [opsys, attrs] = this.zipImpl.getExternalAttributes(index); + if (opsys !== ZIP_UNIX) + return false; + const attributes = attrs >>> 16; + return (attributes & fs.constants.S_IFMT) === fs.constants.S_IFLNK; + } + getFileSource(index, opts = { asyncDecompress: false }) { + const cachedFileSource = this.fileSources.get(index); + if (typeof cachedFileSource !== `undefined`) + return cachedFileSource; + const { data, compressionMethod } = this.zipImpl.getFileSource(index); + if (compressionMethod === STORE) { + if (this.zipImpl.filesShouldBeCached) + this.fileSources.set(index, data); + return data; + } else if (compressionMethod === DEFLATE) { + if (opts.asyncDecompress) { + return new Promise((resolve, reject) => { + zlib__default.default.inflateRaw(data, (error, result) => { + if (error) { + reject(error); + } else { + if (this.zipImpl.filesShouldBeCached) + this.fileSources.set(index, result); + resolve(result); + } + }); + }); + } else { + const decompressedData = zlib__default.default.inflateRawSync(data); + if (this.zipImpl.filesShouldBeCached) + this.fileSources.set(index, decompressedData); + return decompressedData; + } + } else { + throw new Error(`Unsupported compression method: ${compressionMethod}`); + } + } + async fchmodPromise(fd, mask) { + return this.chmodPromise(this.fdToPath(fd, `fchmod`), mask); + } + fchmodSync(fd, mask) { + return this.chmodSync(this.fdToPath(fd, `fchmodSync`), mask); + } + async chmodPromise(p, mask) { + return this.chmodSync(p, mask); + } + chmodSync(p, mask) { + if (this.readOnly) + throw EROFS(`chmod '${p}'`); + mask &= 493; + const resolvedP = this.resolveFilename(`chmod '${p}'`, p, false); + const entry = this.entries.get(resolvedP); + if (typeof entry === `undefined`) + throw new Error(`Assertion failed: The entry should have been registered (${resolvedP})`); + const oldMod = this.getUnixMode(entry, fs.constants.S_IFREG | 0); + const newMod = oldMod & ~511 | mask; + this.zipImpl.setExternalAttributes(entry, ZIP_UNIX, newMod << 16); + } + async fchownPromise(fd, uid, gid) { + return this.chownPromise(this.fdToPath(fd, `fchown`), uid, gid); + } + fchownSync(fd, uid, gid) { + return this.chownSync(this.fdToPath(fd, `fchownSync`), uid, gid); + } + async chownPromise(p, uid, gid) { + return this.chownSync(p, uid, gid); + } + chownSync(p, uid, gid) { + throw new Error(`Unimplemented`); + } + async renamePromise(oldP, newP) { + return this.renameSync(oldP, newP); + } + renameSync(oldP, newP) { + throw new Error(`Unimplemented`); + } + async copyFilePromise(sourceP, destP, flags) { + const { indexSource, indexDest, resolvedDestP } = this.prepareCopyFile(sourceP, destP, flags); + const source = await this.getFileSource(indexSource, { asyncDecompress: true }); + const newIndex = this.setFileSource(resolvedDestP, source); + if (newIndex !== indexDest) { + this.registerEntry(resolvedDestP, newIndex); + } + } + copyFileSync(sourceP, destP, flags = 0) { + const { indexSource, indexDest, resolvedDestP } = this.prepareCopyFile(sourceP, destP, flags); + const source = this.getFileSource(indexSource); + const newIndex = this.setFileSource(resolvedDestP, source); + if (newIndex !== indexDest) { + this.registerEntry(resolvedDestP, newIndex); + } + } + prepareCopyFile(sourceP, destP, flags = 0) { + if (this.readOnly) + throw EROFS(`copyfile '${sourceP} -> '${destP}'`); + if ((flags & fs.constants.COPYFILE_FICLONE_FORCE) !== 0) + throw ENOSYS(`unsupported clone operation`, `copyfile '${sourceP}' -> ${destP}'`); + const resolvedSourceP = this.resolveFilename(`copyfile '${sourceP} -> ${destP}'`, sourceP); + const indexSource = this.entries.get(resolvedSourceP); + if (typeof indexSource === `undefined`) + throw EINVAL(`copyfile '${sourceP}' -> '${destP}'`); + const resolvedDestP = this.resolveFilename(`copyfile '${sourceP}' -> ${destP}'`, destP); + const indexDest = this.entries.get(resolvedDestP); + if ((flags & (fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE_FORCE)) !== 0 && typeof indexDest !== `undefined`) + throw EEXIST(`copyfile '${sourceP}' -> '${destP}'`); + return { + indexSource, + resolvedDestP, + indexDest + }; + } + async appendFilePromise(p, content, opts) { + if (this.readOnly) + throw EROFS(`open '${p}'`); + if (typeof opts === `undefined`) + opts = { flag: `a` }; + else if (typeof opts === `string`) + opts = { flag: `a`, encoding: opts }; + else if (typeof opts.flag === `undefined`) + opts = { flag: `a`, ...opts }; + return this.writeFilePromise(p, content, opts); + } + appendFileSync(p, content, opts = {}) { + if (this.readOnly) + throw EROFS(`open '${p}'`); + if (typeof opts === `undefined`) + opts = { flag: `a` }; + else if (typeof opts === `string`) + opts = { flag: `a`, encoding: opts }; + else if (typeof opts.flag === `undefined`) + opts = { flag: `a`, ...opts }; + return this.writeFileSync(p, content, opts); + } + fdToPath(fd, reason) { + const path = this.fds.get(fd)?.p; + if (typeof path === `undefined`) + throw EBADF(reason); + return path; + } + async writeFilePromise(p, content, opts) { + const { encoding, mode, index, resolvedP } = this.prepareWriteFile(p, opts); + if (index !== void 0 && typeof opts === `object` && opts.flag && opts.flag.includes(`a`)) + content = Buffer.concat([await this.getFileSource(index, { asyncDecompress: true }), Buffer.from(content)]); + if (encoding !== null) + content = content.toString(encoding); + const newIndex = this.setFileSource(resolvedP, content); + if (newIndex !== index) + this.registerEntry(resolvedP, newIndex); + if (mode !== null) { + await this.chmodPromise(resolvedP, mode); + } + } + writeFileSync(p, content, opts) { + const { encoding, mode, index, resolvedP } = this.prepareWriteFile(p, opts); + if (index !== void 0 && typeof opts === `object` && opts.flag && opts.flag.includes(`a`)) + content = Buffer.concat([this.getFileSource(index), Buffer.from(content)]); + if (encoding !== null) + content = content.toString(encoding); + const newIndex = this.setFileSource(resolvedP, content); + if (newIndex !== index) + this.registerEntry(resolvedP, newIndex); + if (mode !== null) { + this.chmodSync(resolvedP, mode); + } + } + prepareWriteFile(p, opts) { + if (typeof p === `number`) + p = this.fdToPath(p, `read`); + if (this.readOnly) + throw EROFS(`open '${p}'`); + const resolvedP = this.resolveFilename(`open '${p}'`, p); + if (this.listings.has(resolvedP)) + throw EISDIR(`open '${p}'`); + let encoding = null, mode = null; + if (typeof opts === `string`) { + encoding = opts; + } else if (typeof opts === `object`) { + ({ + encoding = null, + mode = null + } = opts); + } + const index = this.entries.get(resolvedP); + return { + encoding, + mode, + resolvedP, + index + }; + } + async unlinkPromise(p) { + return this.unlinkSync(p); + } + unlinkSync(p) { + if (this.readOnly) + throw EROFS(`unlink '${p}'`); + const resolvedP = this.resolveFilename(`unlink '${p}'`, p); + if (this.listings.has(resolvedP)) + throw EISDIR(`unlink '${p}'`); + const index = this.entries.get(resolvedP); + if (typeof index === `undefined`) + throw EINVAL(`unlink '${p}'`); + this.deleteEntry(resolvedP, index); + } + async utimesPromise(p, atime, mtime) { + return this.utimesSync(p, atime, mtime); + } + utimesSync(p, atime, mtime) { + if (this.readOnly) + throw EROFS(`utimes '${p}'`); + const resolvedP = this.resolveFilename(`utimes '${p}'`, p); + this.utimesImpl(resolvedP, mtime); + } + async lutimesPromise(p, atime, mtime) { + return this.lutimesSync(p, atime, mtime); + } + lutimesSync(p, atime, mtime) { + if (this.readOnly) + throw EROFS(`lutimes '${p}'`); + const resolvedP = this.resolveFilename(`utimes '${p}'`, p, false); + this.utimesImpl(resolvedP, mtime); + } + utimesImpl(resolvedP, mtime) { + if (this.listings.has(resolvedP)) { + if (!this.entries.has(resolvedP)) + this.hydrateDirectory(resolvedP); + } + const entry = this.entries.get(resolvedP); + if (entry === void 0) + throw new Error(`Unreachable`); + this.zipImpl.setMtime(entry, toUnixTimestamp(mtime)); + } + async mkdirPromise(p, opts) { + return this.mkdirSync(p, opts); + } + mkdirSync(p, { mode = 493, recursive = false } = {}) { + if (recursive) + return this.mkdirpSync(p, { chmod: mode }); + if (this.readOnly) + throw EROFS(`mkdir '${p}'`); + const resolvedP = this.resolveFilename(`mkdir '${p}'`, p); + if (this.entries.has(resolvedP) || this.listings.has(resolvedP)) + throw EEXIST(`mkdir '${p}'`); + this.hydrateDirectory(resolvedP); + this.chmodSync(resolvedP, mode); + return void 0; + } + async rmdirPromise(p, opts) { + return this.rmdirSync(p, opts); + } + rmdirSync(p, { recursive = false } = {}) { + if (this.readOnly) + throw EROFS(`rmdir '${p}'`); + if (recursive) { + this.removeSync(p); + return; + } + const resolvedP = this.resolveFilename(`rmdir '${p}'`, p); + const directoryListing = this.listings.get(resolvedP); + if (!directoryListing) + throw ENOTDIR(`rmdir '${p}'`); + if (directoryListing.size > 0) + throw ENOTEMPTY(`rmdir '${p}'`); + const index = this.entries.get(resolvedP); + if (typeof index === `undefined`) + throw EINVAL(`rmdir '${p}'`); + this.deleteEntry(p, index); + } + async rmPromise(p, opts) { + return this.rmSync(p, opts); + } + rmSync(p, { recursive = false } = {}) { + if (this.readOnly) + throw EROFS(`rm '${p}'`); + if (recursive) { + this.removeSync(p); + return; + } + const resolvedP = this.resolveFilename(`rm '${p}'`, p); + const directoryListing = this.listings.get(resolvedP); + if (!directoryListing) + throw ENOTDIR(`rm '${p}'`); + if (directoryListing.size > 0) + throw ENOTEMPTY(`rm '${p}'`); + const index = this.entries.get(resolvedP); + if (typeof index === `undefined`) + throw EINVAL(`rm '${p}'`); + this.deleteEntry(p, index); + } + hydrateDirectory(resolvedP) { + const index = this.zipImpl.addDirectory(ppath.relative(PortablePath.root, resolvedP)); + this.registerListing(resolvedP); + this.registerEntry(resolvedP, index); + return index; + } + async linkPromise(existingP, newP) { + return this.linkSync(existingP, newP); + } + linkSync(existingP, newP) { + throw EOPNOTSUPP(`link '${existingP}' -> '${newP}'`); + } + async symlinkPromise(target, p) { + return this.symlinkSync(target, p); + } + symlinkSync(target, p) { + if (this.readOnly) + throw EROFS(`symlink '${target}' -> '${p}'`); + const resolvedP = this.resolveFilename(`symlink '${target}' -> '${p}'`, p); + if (this.listings.has(resolvedP)) + throw EISDIR(`symlink '${target}' -> '${p}'`); + if (this.entries.has(resolvedP)) + throw EEXIST(`symlink '${target}' -> '${p}'`); + const index = this.setFileSource(resolvedP, target); + this.registerEntry(resolvedP, index); + this.zipImpl.setExternalAttributes(index, ZIP_UNIX, (fs.constants.S_IFLNK | 511) << 16); + this.symlinkCount += 1; + } + async readFilePromise(p, encoding) { + if (typeof encoding === `object`) + encoding = encoding ? encoding.encoding : void 0; + const data = await this.readFileBuffer(p, { asyncDecompress: true }); + return encoding ? data.toString(encoding) : data; + } + readFileSync(p, encoding) { + if (typeof encoding === `object`) + encoding = encoding ? encoding.encoding : void 0; + const data = this.readFileBuffer(p); + return encoding ? data.toString(encoding) : data; + } + readFileBuffer(p, opts = { asyncDecompress: false }) { + if (typeof p === `number`) + p = this.fdToPath(p, `read`); + const resolvedP = this.resolveFilename(`open '${p}'`, p); + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) + throw ENOENT(`open '${p}'`); + if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) + throw ENOTDIR(`open '${p}'`); + if (this.listings.has(resolvedP)) + throw EISDIR(`read`); + const entry = this.entries.get(resolvedP); + if (entry === void 0) + throw new Error(`Unreachable`); + return this.getFileSource(entry, opts); + } + async readdirPromise(p, opts) { + return this.readdirSync(p, opts); + } + readdirSync(p, opts) { + const resolvedP = this.resolveFilename(`scandir '${p}'`, p); + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) + throw ENOENT(`scandir '${p}'`); + const directoryListing = this.listings.get(resolvedP); + if (!directoryListing) + throw ENOTDIR(`scandir '${p}'`); + if (opts?.recursive) { + if (opts?.withFileTypes) { + const entries = Array.from(directoryListing, (name) => { + return Object.assign(this.statImpl(`lstat`, ppath.join(p, name)), { + name, + path: PortablePath.dot, + parentPath: PortablePath.dot + }); + }); + for (const entry of entries) { + if (!entry.isDirectory()) + continue; + const subPath = ppath.join(entry.path, entry.name); + const subListing = this.listings.get(ppath.join(resolvedP, subPath)); + for (const child of subListing) { + entries.push(Object.assign(this.statImpl(`lstat`, ppath.join(p, subPath, child)), { + name: child, + path: subPath, + parentPath: subPath + })); + } + } + return entries; + } else { + const entries = [...directoryListing]; + for (const subPath of entries) { + const subListing = this.listings.get(ppath.join(resolvedP, subPath)); + if (typeof subListing === `undefined`) + continue; + for (const child of subListing) { + entries.push(ppath.join(subPath, child)); + } + } + return entries; + } + } else if (opts?.withFileTypes) { + return Array.from(directoryListing, (name) => { + return Object.assign(this.statImpl(`lstat`, ppath.join(p, name)), { + name, + path: void 0, + parentPath: void 0 + }); + }); + } else { + return [...directoryListing]; + } + } + async readlinkPromise(p) { + const entry = this.prepareReadlink(p); + return (await this.getFileSource(entry, { asyncDecompress: true })).toString(); + } + readlinkSync(p) { + const entry = this.prepareReadlink(p); + return this.getFileSource(entry).toString(); + } + prepareReadlink(p) { + const resolvedP = this.resolveFilename(`readlink '${p}'`, p, false); + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) + throw ENOENT(`readlink '${p}'`); + if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) + throw ENOTDIR(`open '${p}'`); + if (this.listings.has(resolvedP)) + throw EINVAL(`readlink '${p}'`); + const entry = this.entries.get(resolvedP); + if (entry === void 0) + throw new Error(`Unreachable`); + if (!this.isSymbolicLink(entry)) + throw EINVAL(`readlink '${p}'`); + return entry; + } + async truncatePromise(p, len = 0) { + const resolvedP = this.resolveFilename(`open '${p}'`, p); + const index = this.entries.get(resolvedP); + if (typeof index === `undefined`) + throw EINVAL(`open '${p}'`); + const source = await this.getFileSource(index, { asyncDecompress: true }); + const truncated = Buffer.alloc(len, 0); + source.copy(truncated); + return await this.writeFilePromise(p, truncated); + } + truncateSync(p, len = 0) { + const resolvedP = this.resolveFilename(`open '${p}'`, p); + const index = this.entries.get(resolvedP); + if (typeof index === `undefined`) + throw EINVAL(`open '${p}'`); + const source = this.getFileSource(index); + const truncated = Buffer.alloc(len, 0); + source.copy(truncated); + return this.writeFileSync(p, truncated); + } + async ftruncatePromise(fd, len) { + return this.truncatePromise(this.fdToPath(fd, `ftruncate`), len); + } + ftruncateSync(fd, len) { + return this.truncateSync(this.fdToPath(fd, `ftruncateSync`), len); + } + watch(p, a, b) { + let persistent; + switch (typeof a) { + case `function`: + case `string`: + case `undefined`: + { + persistent = true; + } + break; + default: + { + ({ persistent = true } = a); + } + break; + } + if (!persistent) + return { on: () => { + }, close: () => { + } }; + const interval = setInterval(() => { + }, 24 * 60 * 60 * 1e3); + return { + on: () => { + }, + close: () => { + clearInterval(interval); + } + }; + } + watchFile(p, a, b) { + const resolvedP = ppath.resolve(PortablePath.root, p); + return watchFile(this, resolvedP, a, b); + } + unwatchFile(p, cb) { + const resolvedP = ppath.resolve(PortablePath.root, p); + return unwatchFile(this, resolvedP, cb); + } +} + +const SIGNATURE = { + CENTRAL_DIRECTORY: 33639248, + END_OF_CENTRAL_DIRECTORY: 101010256 +}; +const noCommentCDSize = 22; +class JsZipImpl { + fd; + baseFs; + entries; + filesShouldBeCached = false; + constructor(opts) { + if (`buffer` in opts) + throw new Error(`Buffer based zip archives are not supported`); + if (!opts.readOnly) + throw new Error(`Writable zip archives are not supported`); + this.baseFs = opts.baseFs; + this.fd = this.baseFs.openSync(opts.path, `r`); + try { + this.entries = JsZipImpl.readZipSync(this.fd, this.baseFs, opts.size); + } catch (error) { + this.baseFs.closeSync(this.fd); + this.fd = `closed`; + throw error; + } + } + static readZipSync(fd, baseFs, fileSize) { + if (fileSize < noCommentCDSize) + throw new Error(`Invalid ZIP file: EOCD not found`); + let eocdOffset = -1; + let eocdBuffer = Buffer.alloc(noCommentCDSize); + baseFs.readSync( + fd, + eocdBuffer, + 0, + noCommentCDSize, + fileSize - noCommentCDSize + ); + if (eocdBuffer.readUInt32LE(0) === SIGNATURE.END_OF_CENTRAL_DIRECTORY) { + eocdOffset = 0; + } else { + const bufferSize = Math.min(65557, fileSize); + eocdBuffer = Buffer.alloc(bufferSize); + baseFs.readSync( + fd, + eocdBuffer, + 0, + bufferSize, + Math.max(0, fileSize - bufferSize) + ); + for (let i = eocdBuffer.length - 4; i >= 0; i--) { + if (eocdBuffer.readUInt32LE(i) === SIGNATURE.END_OF_CENTRAL_DIRECTORY) { + eocdOffset = i; + break; + } + } + if (eocdOffset === -1) { + throw new Error(`Not a zip archive`); + } + } + const totalEntries = eocdBuffer.readUInt16LE(eocdOffset + 10); + const centralDirSize = eocdBuffer.readUInt32LE(eocdOffset + 12); + const centralDirOffset = eocdBuffer.readUInt32LE(eocdOffset + 16); + const commentLength = eocdBuffer.readUInt16LE(eocdOffset + 20); + if (eocdOffset + commentLength + noCommentCDSize > eocdBuffer.length) + throw new Error(`Zip archive inconsistent`); + if (totalEntries == 65535 || centralDirSize == 4294967295 || centralDirOffset == 4294967295) + throw new Error(`Zip 64 is not supported`); + if (centralDirSize > fileSize) + throw new Error(`Zip archive inconsistent`); + if (totalEntries > centralDirSize / 46) + throw new Error(`Zip archive inconsistent`); + const cdBuffer = Buffer.alloc(centralDirSize); + if (baseFs.readSync(fd, cdBuffer, 0, cdBuffer.length, centralDirOffset) !== cdBuffer.length) + throw new Error(`Zip archive inconsistent`); + const entries = []; + let offset = 0; + let index = 0; + let sumCompressedSize = 0; + while (index < totalEntries) { + if (offset + 46 > cdBuffer.length) + throw new Error(`Zip archive inconsistent`); + if (cdBuffer.readUInt32LE(offset) !== SIGNATURE.CENTRAL_DIRECTORY) + throw new Error(`Zip archive inconsistent`); + const versionMadeBy = cdBuffer.readUInt16LE(offset + 4); + const os = versionMadeBy >>> 8; + const flags = cdBuffer.readUInt16LE(offset + 8); + if ((flags & 1) !== 0) + throw new Error(`Encrypted zip files are not supported`); + const compressionMethod = cdBuffer.readUInt16LE(offset + 10); + const crc = cdBuffer.readUInt32LE(offset + 16); + const nameLength = cdBuffer.readUInt16LE(offset + 28); + const extraLength = cdBuffer.readUInt16LE(offset + 30); + const commentLength2 = cdBuffer.readUInt16LE(offset + 32); + const localHeaderOffset = cdBuffer.readUInt32LE(offset + 42); + const name = cdBuffer.toString(`utf8`, offset + 46, offset + 46 + nameLength).replaceAll(`\0`, ` `); + if (name.includes(`\0`)) + throw new Error(`Invalid ZIP file`); + const compressedSize = cdBuffer.readUInt32LE(offset + 20); + const externalAttributes = cdBuffer.readUInt32LE(offset + 38); + entries.push({ + name, + os, + mtime: SAFE_TIME, + //we dont care, + crc, + compressionMethod, + isSymbolicLink: os === ZIP_UNIX && (externalAttributes >>> 16 & S_IFMT) === S_IFLNK, + size: cdBuffer.readUInt32LE(offset + 24), + compressedSize, + externalAttributes, + localHeaderOffset + }); + sumCompressedSize += compressedSize; + index += 1; + offset += 46 + nameLength + extraLength + commentLength2; + } + if (sumCompressedSize > fileSize) + throw new Error(`Zip archive inconsistent`); + if (offset !== cdBuffer.length) + throw new Error(`Zip archive inconsistent`); + return entries; + } + getExternalAttributes(index) { + const entry = this.entries[index]; + return [entry.os, entry.externalAttributes]; + } + getListings() { + return this.entries.map((e) => e.name); + } + getSymlinkCount() { + let count = 0; + for (const entry of this.entries) + if (entry.isSymbolicLink) + count += 1; + return count; + } + stat(index) { + const entry = this.entries[index]; + return { + crc: entry.crc, + mtime: entry.mtime, + size: entry.size + }; + } + locate(name) { + for (let ind = 0; ind < this.entries.length; ind++) + if (this.entries[ind].name === name) + return ind; + return -1; + } + getFileSource(index) { + if (this.fd === `closed`) + throw new Error(`ZIP file is closed`); + const entry = this.entries[index]; + const localHeaderBuf = Buffer.alloc(30); + this.baseFs.readSync( + this.fd, + localHeaderBuf, + 0, + localHeaderBuf.length, + entry.localHeaderOffset + ); + const nameLength = localHeaderBuf.readUInt16LE(26); + const extraLength = localHeaderBuf.readUInt16LE(28); + const buffer = Buffer.alloc(entry.compressedSize); + if (this.baseFs.readSync(this.fd, buffer, 0, entry.compressedSize, entry.localHeaderOffset + 30 + nameLength + extraLength) !== entry.compressedSize) + throw new Error(`Invalid ZIP file`); + return { data: buffer, compressionMethod: entry.compressionMethod }; + } + discard() { + if (this.fd !== `closed`) { + this.baseFs.closeSync(this.fd); + this.fd = `closed`; + } + } + addDirectory(path) { + throw new Error(`Not implemented`); + } + deleteEntry(index) { + throw new Error(`Not implemented`); + } + setMtime(index, mtime) { + throw new Error(`Not implemented`); + } + getBufferAndClose() { + throw new Error(`Not implemented`); + } + setFileSource(target, compression, buffer) { + throw new Error(`Not implemented`); + } + setExternalAttributes(index, opsys, attributes) { + throw new Error(`Not implemented`); + } +} + +setFactory(() => { + const emZip = createModule(); + return makeInterface(emZip); +}); + +var ErrorCode = /* @__PURE__ */ ((ErrorCode2) => { + ErrorCode2["API_ERROR"] = `API_ERROR`; + ErrorCode2["BUILTIN_NODE_RESOLUTION_FAILED"] = `BUILTIN_NODE_RESOLUTION_FAILED`; + ErrorCode2["EXPORTS_RESOLUTION_FAILED"] = `EXPORTS_RESOLUTION_FAILED`; + ErrorCode2["MISSING_DEPENDENCY"] = `MISSING_DEPENDENCY`; + ErrorCode2["MISSING_PEER_DEPENDENCY"] = `MISSING_PEER_DEPENDENCY`; + ErrorCode2["QUALIFIED_PATH_RESOLUTION_FAILED"] = `QUALIFIED_PATH_RESOLUTION_FAILED`; + ErrorCode2["INTERNAL"] = `INTERNAL`; + ErrorCode2["UNDECLARED_DEPENDENCY"] = `UNDECLARED_DEPENDENCY`; + ErrorCode2["UNSUPPORTED"] = `UNSUPPORTED`; + return ErrorCode2; +})(ErrorCode || {}); +const MODULE_NOT_FOUND_ERRORS = /* @__PURE__ */ new Set([ + "BUILTIN_NODE_RESOLUTION_FAILED" /* BUILTIN_NODE_RESOLUTION_FAILED */, + "MISSING_DEPENDENCY" /* MISSING_DEPENDENCY */, + "MISSING_PEER_DEPENDENCY" /* MISSING_PEER_DEPENDENCY */, + "QUALIFIED_PATH_RESOLUTION_FAILED" /* QUALIFIED_PATH_RESOLUTION_FAILED */, + "UNDECLARED_DEPENDENCY" /* UNDECLARED_DEPENDENCY */ +]); +function makeError(pnpCode, message, data = {}, code) { + code ??= MODULE_NOT_FOUND_ERRORS.has(pnpCode) ? `MODULE_NOT_FOUND` : pnpCode; + const propertySpec = { + configurable: true, + writable: true, + enumerable: false + }; + return Object.defineProperties(new Error(message), { + code: { + ...propertySpec, + value: code + }, + pnpCode: { + ...propertySpec, + value: pnpCode + }, + data: { + ...propertySpec, + value: data + } + }); +} +function getIssuerModule(parent) { + let issuer = parent; + while (issuer && (issuer.id === `[eval]` || issuer.id === `` || !issuer.filename)) + issuer = issuer.parent; + return issuer || null; +} +function getPathForDisplay(p) { + return npath.normalize(npath.fromPortablePath(p)); +} + +const [major, minor] = process.versions.node.split(`.`).map((value) => parseInt(value, 10)); +const WATCH_MODE_MESSAGE_USES_ARRAYS = major > 19 || major === 19 && minor >= 2 || major === 18 && minor >= 13; + +function readPackageScope(checkPath) { + const rootSeparatorIndex = checkPath.indexOf(npath.sep); + let separatorIndex; + do { + separatorIndex = checkPath.lastIndexOf(npath.sep); + checkPath = checkPath.slice(0, separatorIndex); + if (checkPath.endsWith(`${npath.sep}node_modules`)) + return false; + const pjson = readPackage(checkPath + npath.sep); + if (pjson) { + return { + data: pjson, + path: checkPath + }; + } + } while (separatorIndex > rootSeparatorIndex); + return false; +} +function readPackage(requestPath) { + const jsonPath = npath.resolve(requestPath, `package.json`); + if (!fs__default.default.existsSync(jsonPath)) + return null; + return JSON.parse(fs__default.default.readFileSync(jsonPath, `utf8`)); +} +function ERR_REQUIRE_ESM(filename, parentPath = null) { + const basename = parentPath && path__default.default.basename(filename) === path__default.default.basename(parentPath) ? filename : path__default.default.basename(filename); + const msg = `require() of ES Module ${filename}${parentPath ? ` from ${parentPath}` : ``} not supported. +Instead change the require of ${basename} in ${parentPath} to a dynamic import() which is available in all CommonJS modules.`; + const err = new Error(msg); + err.code = `ERR_REQUIRE_ESM`; + return err; +} +function reportRequiredFilesToWatchMode(files) { + if (process.env.WATCH_REPORT_DEPENDENCIES && process.send) { + files = files.map((filename) => npath.fromPortablePath(VirtualFS.resolveVirtual(npath.toPortablePath(filename)))); + if (WATCH_MODE_MESSAGE_USES_ARRAYS) { + process.send({ "watch:require": files }); + } else { + for (const filename of files) { + process.send({ "watch:require": filename }); + } + } + } +} + +function applyPatch(pnpapi, opts) { + let enableNativeHooks = true; + process.versions.pnp = String(pnpapi.VERSIONS.std); + const moduleExports = require$$0__default.default; + moduleExports.findPnpApi = (lookupSource) => { + const lookupPath = lookupSource instanceof URL ? url.fileURLToPath(lookupSource) : lookupSource; + const apiPath = opts.manager.findApiPathFor(lookupPath); + if (apiPath === null) + return null; + const apiEntry = opts.manager.getApiEntry(apiPath, true); + return apiEntry.instance.findPackageLocator(lookupPath) ? apiEntry.instance : null; + }; + function getRequireStack(parent) { + const requireStack = []; + for (let cursor = parent; cursor; cursor = cursor.parent) + requireStack.push(cursor.filename || cursor.id); + return requireStack; + } + const originalModuleLoad = require$$0.Module._load; + require$$0.Module._load = function(request, parent, isMain) { + if (request === `pnpapi`) { + const parentApiPath = opts.manager.getApiPathFromParent(parent); + if (parentApiPath) { + return opts.manager.getApiEntry(parentApiPath, true).instance; + } + } + return originalModuleLoad.call(require$$0.Module, request, parent, isMain); + }; + function getIssuerSpecsFromPaths(paths) { + return paths.map((path) => ({ + apiPath: opts.manager.findApiPathFor(path), + path, + module: null + })); + } + function getIssuerSpecsFromModule(module) { + if (module && module.id !== `` && module.id !== `internal/preload` && !module.parent && !module.filename && module.paths.length > 0) { + return [{ + apiPath: opts.manager.findApiPathFor(module.paths[0]), + path: module.paths[0], + module + }]; + } + const issuer = getIssuerModule(module); + if (issuer !== null) { + const path = npath.dirname(issuer.filename); + const apiPath = opts.manager.getApiPathFromParent(issuer); + return [{ apiPath, path, module }]; + } else { + const path = process.cwd(); + const apiPath = opts.manager.findApiPathFor(npath.join(path, `[file]`)) ?? opts.manager.getApiPathFromParent(null); + return [{ apiPath, path, module }]; + } + } + function makeFakeParent(path) { + const fakeParent = new require$$0.Module(``); + const fakeFilePath = npath.join(path, `[file]`); + fakeParent.paths = require$$0.Module._nodeModulePaths(fakeFilePath); + return fakeParent; + } + const pathRegExp = /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:@[^/]+\/)?[^/]+)\/*(.*|)$/; + const originalModuleResolveFilename = require$$0.Module._resolveFilename; + require$$0.Module._resolveFilename = function(request, parent, isMain, options) { + if (require$$0.isBuiltin(request)) + return request; + if (!enableNativeHooks) + return originalModuleResolveFilename.call(require$$0.Module, request, parent, isMain, options); + if (options && options.plugnplay === false) { + const { plugnplay, ...forwardedOptions } = options; + try { + enableNativeHooks = false; + return originalModuleResolveFilename.call(require$$0.Module, request, parent, isMain, forwardedOptions); + } finally { + enableNativeHooks = true; + } + } + if (options) { + const optionNames = new Set(Object.keys(options)); + optionNames.delete(`paths`); + optionNames.delete(`plugnplay`); + optionNames.delete(`conditions`); + if (optionNames.size > 0) { + throw makeError( + ErrorCode.UNSUPPORTED, + `Some options passed to require() aren't supported by PnP yet (${Array.from(optionNames).join(`, `)})` + ); + } + } + const issuerSpecs = options && options.paths ? getIssuerSpecsFromPaths(options.paths) : getIssuerSpecsFromModule(parent); + if (request.match(pathRegExp) === null) { + const parentDirectory = parent?.filename != null ? npath.dirname(parent.filename) : null; + const absoluteRequest = npath.isAbsolute(request) ? request : parentDirectory !== null ? npath.resolve(parentDirectory, request) : null; + if (absoluteRequest !== null) { + const apiPath = parent && parentDirectory === npath.dirname(absoluteRequest) ? opts.manager.getApiPathFromParent(parent) : opts.manager.findApiPathFor(absoluteRequest); + if (apiPath !== null) { + issuerSpecs.unshift({ + apiPath, + path: parentDirectory, + module: null + }); + } + } + } + let firstError; + for (const { apiPath, path, module } of issuerSpecs) { + let resolution; + const issuerApi = apiPath !== null ? opts.manager.getApiEntry(apiPath, true).instance : null; + try { + if (issuerApi !== null) { + resolution = issuerApi.resolveRequest(request, path !== null ? `${path}/` : null, { + conditions: options?.conditions + }); + } else { + if (path === null) + throw new Error(`Assertion failed: Expected the path to be set`); + resolution = originalModuleResolveFilename.call(require$$0.Module, request, module || makeFakeParent(path), isMain, { + conditions: options?.conditions + }); + } + } catch (error) { + firstError = firstError || error; + continue; + } + if (resolution !== null) { + return resolution; + } + } + const requireStack = getRequireStack(parent); + Object.defineProperty(firstError, `requireStack`, { + configurable: true, + writable: true, + enumerable: false, + value: requireStack + }); + if (requireStack.length > 0) + firstError.message += ` +Require stack: +- ${requireStack.join(` +- `)}`; + if (typeof firstError.pnpCode === `string`) + Error.captureStackTrace(firstError); + throw firstError; + }; + const originalFindPath = require$$0.Module._findPath; + require$$0.Module._findPath = function(request, paths, isMain) { + if (request === `pnpapi`) + return false; + if (!enableNativeHooks) + return originalFindPath.call(require$$0.Module, request, paths, isMain); + const isAbsolute = npath.isAbsolute(request); + if (isAbsolute) + paths = [``]; + else if (!paths || paths.length === 0) + return false; + for (const path of paths) { + let resolution; + try { + const pnpApiPath = opts.manager.findApiPathFor(isAbsolute ? request : path); + if (pnpApiPath !== null) { + const api = opts.manager.getApiEntry(pnpApiPath, true).instance; + resolution = api.resolveRequest(request, path) || false; + } else { + resolution = originalFindPath.call(require$$0.Module, request, [path], isMain); + } + } catch { + continue; + } + if (resolution) { + return resolution; + } + } + return false; + }; + if (!process.features.require_module) { + const originalExtensionJSFunction = require$$0.Module._extensions[`.js`]; + require$$0.Module._extensions[`.js`] = function(module, filename) { + if (filename.endsWith(`.js`)) { + const pkg = readPackageScope(filename); + if (pkg && pkg.data?.type === `module`) { + const err = ERR_REQUIRE_ESM(filename, module.parent?.filename); + Error.captureStackTrace(err); + throw err; + } + } + originalExtensionJSFunction.call(this, module, filename); + }; + } + const originalDlopen = process.dlopen; + process.dlopen = function(...args) { + const [module, filename, ...rest] = args; + return originalDlopen.call( + this, + module, + npath.fromPortablePath(VirtualFS.resolveVirtual(npath.toPortablePath(filename))), + ...rest + ); + }; + const originalEmit = process.emit; + process.emit = function(name, data, ...args) { + if (name === `warning` && typeof data === `object` && data.name === `ExperimentalWarning` && (data.message.includes(`--experimental-loader`) || data.message.includes(`Custom ESM Loaders is an experimental feature`))) + return false; + return originalEmit.apply(process, arguments); + }; + patchFs(fs__default.default, new PosixFS(opts.fakeFs)); +} + +function hydrateRuntimeState(data, { basePath }) { + const portablePath = npath.toPortablePath(basePath); + const absolutePortablePath = ppath.resolve(portablePath); + const ignorePattern = data.ignorePatternData !== null ? new RegExp(data.ignorePatternData) : null; + const packageLocatorsByLocations = /* @__PURE__ */ new Map(); + const packageRegistry = new Map(data.packageRegistryData.map(([packageName, packageStoreData]) => { + return [packageName, new Map(packageStoreData.map(([packageReference, packageInformationData]) => { + if (packageName === null !== (packageReference === null)) + throw new Error(`Assertion failed: The name and reference should be null, or neither should`); + const discardFromLookup = packageInformationData.discardFromLookup ?? false; + const packageLocator = { name: packageName, reference: packageReference }; + const entry = packageLocatorsByLocations.get(packageInformationData.packageLocation); + if (!entry) { + packageLocatorsByLocations.set(packageInformationData.packageLocation, { locator: packageLocator, discardFromLookup }); + } else { + entry.discardFromLookup = entry.discardFromLookup && discardFromLookup; + if (!discardFromLookup) { + entry.locator = packageLocator; + } + } + let resolvedPackageLocation = null; + return [packageReference, { + packageDependencies: new Map(packageInformationData.packageDependencies), + packagePeers: new Set(packageInformationData.packagePeers), + linkType: packageInformationData.linkType, + discardFromLookup, + // we only need this for packages that are used by the currently running script + // this is a lazy getter because `ppath.join` has some overhead + get packageLocation() { + return resolvedPackageLocation || (resolvedPackageLocation = ppath.join(absolutePortablePath, packageInformationData.packageLocation)); + } + }]; + }))]; + })); + const fallbackExclusionList = new Map(data.fallbackExclusionList.map(([packageName, packageReferences]) => { + return [packageName, new Set(packageReferences)]; + })); + const fallbackPool = new Map(data.fallbackPool); + const dependencyTreeRoots = data.dependencyTreeRoots; + const enableTopLevelFallback = data.enableTopLevelFallback; + return { + basePath: portablePath, + dependencyTreeRoots, + enableTopLevelFallback, + fallbackExclusionList, + pnpZipBackend: data.pnpZipBackend, + fallbackPool, + ignorePattern, + packageLocatorsByLocations, + packageRegistry + }; +} + +const ArrayIsArray = Array.isArray; +const JSONStringify = JSON.stringify; +const ObjectGetOwnPropertyNames = Object.getOwnPropertyNames; +const ObjectPrototypeHasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop); +const RegExpPrototypeExec = (obj, string) => RegExp.prototype.exec.call(obj, string); +const RegExpPrototypeSymbolReplace = (obj, ...rest) => RegExp.prototype[Symbol.replace].apply(obj, rest); +const StringPrototypeEndsWith = (str, ...rest) => String.prototype.endsWith.apply(str, rest); +const StringPrototypeIncludes = (str, ...rest) => String.prototype.includes.apply(str, rest); +const StringPrototypeLastIndexOf = (str, ...rest) => String.prototype.lastIndexOf.apply(str, rest); +const StringPrototypeIndexOf = (str, ...rest) => String.prototype.indexOf.apply(str, rest); +const StringPrototypeReplace = (str, ...rest) => String.prototype.replace.apply(str, rest); +const StringPrototypeSlice = (str, ...rest) => String.prototype.slice.apply(str, rest); +const StringPrototypeStartsWith = (str, ...rest) => String.prototype.startsWith.apply(str, rest); +const SafeMap = Map; +const JSONParse = JSON.parse; + +function createErrorType(code, messageCreator, errorType) { + return class extends errorType { + constructor(...args) { + super(messageCreator(...args)); + this.code = code; + this.name = `${errorType.name} [${code}]`; + } + }; +} +const ERR_PACKAGE_IMPORT_NOT_DEFINED = createErrorType( + `ERR_PACKAGE_IMPORT_NOT_DEFINED`, + (specifier, packagePath, base) => { + return `Package import specifier "${specifier}" is not defined${packagePath ? ` in package ${packagePath}package.json` : ``} imported from ${base}`; + }, + TypeError +); +const ERR_INVALID_MODULE_SPECIFIER = createErrorType( + `ERR_INVALID_MODULE_SPECIFIER`, + (request, reason, base = void 0) => { + return `Invalid module "${request}" ${reason}${base ? ` imported from ${base}` : ``}`; + }, + TypeError +); +const ERR_INVALID_PACKAGE_TARGET = createErrorType( + `ERR_INVALID_PACKAGE_TARGET`, + (pkgPath, key, target, isImport = false, base = void 0) => { + const relError = typeof target === `string` && !isImport && target.length && !StringPrototypeStartsWith(target, `./`); + if (key === `.`) { + assert__default.default(isImport === false); + return `Invalid "exports" main target ${JSONStringify(target)} defined in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`; + } + return `Invalid "${isImport ? `imports` : `exports`}" target ${JSONStringify( + target + )} defined for '${key}' in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`; + }, + Error +); +const ERR_INVALID_PACKAGE_CONFIG = createErrorType( + `ERR_INVALID_PACKAGE_CONFIG`, + (path, base, message) => { + return `Invalid package config ${path}${base ? ` while importing ${base}` : ``}${message ? `. ${message}` : ``}`; + }, + Error +); +const ERR_PACKAGE_PATH_NOT_EXPORTED = createErrorType( + "ERR_PACKAGE_PATH_NOT_EXPORTED", + (pkgPath, subpath, base = void 0) => { + if (subpath === ".") + return `No "exports" main defined in ${pkgPath}package.json${base ? ` imported from ${base}` : ""}`; + return `Package subpath '${subpath}' is not defined by "exports" in ${pkgPath}package.json${base ? ` imported from ${base}` : ""}`; + }, + Error +); + +function filterOwnProperties(source, keys) { + const filtered = /* @__PURE__ */ Object.create(null); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (ObjectPrototypeHasOwnProperty(source, key)) { + filtered[key] = source[key]; + } + } + return filtered; +} + +const packageJSONCache = new SafeMap(); +function getPackageConfig(path, specifier, base, readFileSyncFn) { + const existing = packageJSONCache.get(path); + if (existing !== void 0) { + return existing; + } + const source = readFileSyncFn(path); + if (source === void 0) { + const packageConfig2 = { + pjsonPath: path, + exists: false, + main: void 0, + name: void 0, + type: "none", + exports: void 0, + imports: void 0 + }; + packageJSONCache.set(path, packageConfig2); + return packageConfig2; + } + let packageJSON; + try { + packageJSON = JSONParse(source); + } catch (error) { + throw new ERR_INVALID_PACKAGE_CONFIG( + path, + (base ? `"${specifier}" from ` : "") + url.fileURLToPath(base || specifier), + error.message + ); + } + let { imports, main, name, type } = filterOwnProperties(packageJSON, [ + "imports", + "main", + "name", + "type" + ]); + const exports = ObjectPrototypeHasOwnProperty(packageJSON, "exports") ? packageJSON.exports : void 0; + if (typeof imports !== "object" || imports === null) { + imports = void 0; + } + if (typeof main !== "string") { + main = void 0; + } + if (typeof name !== "string") { + name = void 0; + } + if (type !== "module" && type !== "commonjs") { + type = "none"; + } + const packageConfig = { + pjsonPath: path, + exists: true, + main, + name, + type, + exports, + imports + }; + packageJSONCache.set(path, packageConfig); + return packageConfig; +} +function getPackageScopeConfig(resolved, readFileSyncFn) { + let packageJSONUrl = new URL("./package.json", resolved); + while (true) { + const packageJSONPath2 = packageJSONUrl.pathname; + if (StringPrototypeEndsWith(packageJSONPath2, "node_modules/package.json")) { + break; + } + const packageConfig2 = getPackageConfig( + url.fileURLToPath(packageJSONUrl), + resolved, + void 0, + readFileSyncFn + ); + if (packageConfig2.exists) { + return packageConfig2; + } + const lastPackageJSONUrl = packageJSONUrl; + packageJSONUrl = new URL("../package.json", packageJSONUrl); + if (packageJSONUrl.pathname === lastPackageJSONUrl.pathname) { + break; + } + } + const packageJSONPath = url.fileURLToPath(packageJSONUrl); + const packageConfig = { + pjsonPath: packageJSONPath, + exists: false, + main: void 0, + name: void 0, + type: "none", + exports: void 0, + imports: void 0 + }; + packageJSONCache.set(packageJSONPath, packageConfig); + return packageConfig; +} + +function throwImportNotDefined(specifier, packageJSONUrl, base) { + throw new ERR_PACKAGE_IMPORT_NOT_DEFINED( + specifier, + packageJSONUrl && url.fileURLToPath(new URL(".", packageJSONUrl)), + url.fileURLToPath(base) + ); +} +function throwInvalidSubpath(subpath, packageJSONUrl, internal, base) { + const reason = `request is not a valid subpath for the "${internal ? "imports" : "exports"}" resolution of ${url.fileURLToPath(packageJSONUrl)}`; + throw new ERR_INVALID_MODULE_SPECIFIER( + subpath, + reason, + base && url.fileURLToPath(base) + ); +} +function throwInvalidPackageTarget(subpath, target, packageJSONUrl, internal, base) { + if (typeof target === "object" && target !== null) { + target = JSONStringify(target, null, ""); + } else { + target = `${target}`; + } + throw new ERR_INVALID_PACKAGE_TARGET( + url.fileURLToPath(new URL(".", packageJSONUrl)), + subpath, + target, + internal, + base && url.fileURLToPath(base) + ); +} +const invalidSegmentRegEx = /(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\|\/|$)/i; +const patternRegEx = /\*/g; +function resolvePackageTargetString(target, subpath, match, packageJSONUrl, base, pattern, internal, conditions) { + if (subpath !== "" && !pattern && target[target.length - 1] !== "/") + throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); + if (!StringPrototypeStartsWith(target, "./")) { + if (internal && !StringPrototypeStartsWith(target, "../") && !StringPrototypeStartsWith(target, "/")) { + let isURL = false; + try { + new URL(target); + isURL = true; + } catch { + } + if (!isURL) { + const exportTarget = pattern ? RegExpPrototypeSymbolReplace(patternRegEx, target, () => subpath) : target + subpath; + return exportTarget; + } + } + throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); + } + if (RegExpPrototypeExec( + invalidSegmentRegEx, + StringPrototypeSlice(target, 2) + ) !== null) + throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); + const resolved = new URL(target, packageJSONUrl); + const resolvedPath = resolved.pathname; + const packagePath = new URL(".", packageJSONUrl).pathname; + if (!StringPrototypeStartsWith(resolvedPath, packagePath)) + throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); + if (subpath === "") return resolved; + if (RegExpPrototypeExec(invalidSegmentRegEx, subpath) !== null) { + const request = pattern ? StringPrototypeReplace(match, "*", () => subpath) : match + subpath; + throwInvalidSubpath(request, packageJSONUrl, internal, base); + } + if (pattern) { + return new URL( + RegExpPrototypeSymbolReplace(patternRegEx, resolved.href, () => subpath) + ); + } + return new URL(subpath, resolved); +} +function isArrayIndex(key) { + const keyNum = +key; + if (`${keyNum}` !== key) return false; + return keyNum >= 0 && keyNum < 4294967295; +} +function resolvePackageTarget(packageJSONUrl, target, subpath, packageSubpath, base, pattern, internal, conditions) { + if (typeof target === "string") { + return resolvePackageTargetString( + target, + subpath, + packageSubpath, + packageJSONUrl, + base, + pattern, + internal); + } else if (ArrayIsArray(target)) { + if (target.length === 0) { + return null; + } + let lastException; + for (let i = 0; i < target.length; i++) { + const targetItem = target[i]; + let resolveResult; + try { + resolveResult = resolvePackageTarget( + packageJSONUrl, + targetItem, + subpath, + packageSubpath, + base, + pattern, + internal, + conditions + ); + } catch (e) { + lastException = e; + if (e.code === "ERR_INVALID_PACKAGE_TARGET") { + continue; + } + throw e; + } + if (resolveResult === void 0) { + continue; + } + if (resolveResult === null) { + lastException = null; + continue; + } + return resolveResult; + } + if (lastException === void 0 || lastException === null) + return lastException; + throw lastException; + } else if (typeof target === "object" && target !== null) { + const keys = ObjectGetOwnPropertyNames(target); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (isArrayIndex(key)) { + throw new ERR_INVALID_PACKAGE_CONFIG( + url.fileURLToPath(packageJSONUrl), + base, + '"exports" cannot contain numeric property keys.' + ); + } + } + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (key === "default" || conditions.has(key)) { + const conditionalTarget = target[key]; + const resolveResult = resolvePackageTarget( + packageJSONUrl, + conditionalTarget, + subpath, + packageSubpath, + base, + pattern, + internal, + conditions + ); + if (resolveResult === void 0) continue; + return resolveResult; + } + } + return void 0; + } else if (target === null) { + return null; + } + throwInvalidPackageTarget( + packageSubpath, + target, + packageJSONUrl, + internal, + base + ); +} +function patternKeyCompare(a, b) { + const aPatternIndex = StringPrototypeIndexOf(a, "*"); + const bPatternIndex = StringPrototypeIndexOf(b, "*"); + const baseLenA = aPatternIndex === -1 ? a.length : aPatternIndex + 1; + const baseLenB = bPatternIndex === -1 ? b.length : bPatternIndex + 1; + if (baseLenA > baseLenB) return -1; + if (baseLenB > baseLenA) return 1; + if (aPatternIndex === -1) return 1; + if (bPatternIndex === -1) return -1; + if (a.length > b.length) return -1; + if (b.length > a.length) return 1; + return 0; +} +function isConditionalExportsMainSugar(exports, packageJSONUrl, base) { + if (typeof exports === "string" || ArrayIsArray(exports)) return true; + if (typeof exports !== "object" || exports === null) return false; + const keys = ObjectGetOwnPropertyNames(exports); + let isConditionalSugar = false; + let i = 0; + for (let j = 0; j < keys.length; j++) { + const key = keys[j]; + const curIsConditionalSugar = key === "" || key[0] !== "."; + if (i++ === 0) { + isConditionalSugar = curIsConditionalSugar; + } else if (isConditionalSugar !== curIsConditionalSugar) { + throw new ERR_INVALID_PACKAGE_CONFIG( + url.fileURLToPath(packageJSONUrl), + base, + `"exports" cannot contain some keys starting with '.' and some not. The exports object must either be an object of package subpath keys or an object of main entry condition name keys only.` + ); + } + } + return isConditionalSugar; +} +function throwExportsNotFound(subpath, packageJSONUrl, base) { + throw new ERR_PACKAGE_PATH_NOT_EXPORTED( + url.fileURLToPath(new URL(".", packageJSONUrl)), + subpath, + base && url.fileURLToPath(base) + ); +} +const emittedPackageWarnings = /* @__PURE__ */ new Set(); +function emitTrailingSlashPatternDeprecation(match, pjsonUrl, base) { + const pjsonPath = url.fileURLToPath(pjsonUrl); + if (emittedPackageWarnings.has(pjsonPath + "|" + match)) return; + emittedPackageWarnings.add(pjsonPath + "|" + match); + process.emitWarning( + `Use of deprecated trailing slash pattern mapping "${match}" in the "exports" field module resolution of the package at ${pjsonPath}${base ? ` imported from ${url.fileURLToPath(base)}` : ""}. Mapping specifiers ending in "/" is no longer supported.`, + "DeprecationWarning", + "DEP0155" + ); +} +function packageExportsResolve({ + packageJSONUrl, + packageSubpath, + exports, + base, + conditions +}) { + if (isConditionalExportsMainSugar(exports, packageJSONUrl, base)) + exports = { ".": exports }; + if (ObjectPrototypeHasOwnProperty(exports, packageSubpath) && !StringPrototypeIncludes(packageSubpath, "*") && !StringPrototypeEndsWith(packageSubpath, "/")) { + const target = exports[packageSubpath]; + const resolveResult = resolvePackageTarget( + packageJSONUrl, + target, + "", + packageSubpath, + base, + false, + false, + conditions + ); + if (resolveResult == null) { + throwExportsNotFound(packageSubpath, packageJSONUrl, base); + } + return resolveResult; + } + let bestMatch = ""; + let bestMatchSubpath; + const keys = ObjectGetOwnPropertyNames(exports); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const patternIndex = StringPrototypeIndexOf(key, "*"); + if (patternIndex !== -1 && StringPrototypeStartsWith( + packageSubpath, + StringPrototypeSlice(key, 0, patternIndex) + )) { + if (StringPrototypeEndsWith(packageSubpath, "/")) + emitTrailingSlashPatternDeprecation( + packageSubpath, + packageJSONUrl, + base + ); + const patternTrailer = StringPrototypeSlice(key, patternIndex + 1); + if (packageSubpath.length >= key.length && StringPrototypeEndsWith(packageSubpath, patternTrailer) && patternKeyCompare(bestMatch, key) === 1 && StringPrototypeLastIndexOf(key, "*") === patternIndex) { + bestMatch = key; + bestMatchSubpath = StringPrototypeSlice( + packageSubpath, + patternIndex, + packageSubpath.length - patternTrailer.length + ); + } + } + } + if (bestMatch) { + const target = exports[bestMatch]; + const resolveResult = resolvePackageTarget( + packageJSONUrl, + target, + bestMatchSubpath, + bestMatch, + base, + true, + false, + conditions + ); + if (resolveResult == null) { + throwExportsNotFound(packageSubpath, packageJSONUrl, base); + } + return resolveResult; + } + throwExportsNotFound(packageSubpath, packageJSONUrl, base); +} +function packageImportsResolve({ name, base, conditions, readFileSyncFn }) { + if (name === "#" || StringPrototypeStartsWith(name, "#/") || StringPrototypeEndsWith(name, "/")) { + const reason = "is not a valid internal imports specifier name"; + throw new ERR_INVALID_MODULE_SPECIFIER(name, reason, url.fileURLToPath(base)); + } + let packageJSONUrl; + const packageConfig = getPackageScopeConfig(base, readFileSyncFn); + if (packageConfig.exists) { + packageJSONUrl = url.pathToFileURL(packageConfig.pjsonPath); + const imports = packageConfig.imports; + if (imports) { + if (ObjectPrototypeHasOwnProperty(imports, name) && !StringPrototypeIncludes(name, "*")) { + const resolveResult = resolvePackageTarget( + packageJSONUrl, + imports[name], + "", + name, + base, + false, + true, + conditions + ); + if (resolveResult != null) { + return resolveResult; + } + } else { + let bestMatch = ""; + let bestMatchSubpath; + const keys = ObjectGetOwnPropertyNames(imports); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const patternIndex = StringPrototypeIndexOf(key, "*"); + if (patternIndex !== -1 && StringPrototypeStartsWith( + name, + StringPrototypeSlice(key, 0, patternIndex) + )) { + const patternTrailer = StringPrototypeSlice(key, patternIndex + 1); + if (name.length >= key.length && StringPrototypeEndsWith(name, patternTrailer) && patternKeyCompare(bestMatch, key) === 1 && StringPrototypeLastIndexOf(key, "*") === patternIndex) { + bestMatch = key; + bestMatchSubpath = StringPrototypeSlice( + name, + patternIndex, + name.length - patternTrailer.length + ); + } + } + } + if (bestMatch) { + const target = imports[bestMatch]; + const resolveResult = resolvePackageTarget( + packageJSONUrl, + target, + bestMatchSubpath, + bestMatch, + base, + true, + true, + conditions + ); + if (resolveResult != null) { + return resolveResult; + } + } + } + } + } + throwImportNotDefined(name, packageJSONUrl, base); +} + +const flagSymbol = Symbol('arg flag'); + +class ArgError extends Error { + constructor(msg, code) { + super(msg); + this.name = 'ArgError'; + this.code = code; + + Object.setPrototypeOf(this, ArgError.prototype); + } +} + +function arg( + opts, + { + argv = process.argv.slice(2), + permissive = false, + stopAtPositional = false + } = {} +) { + if (!opts) { + throw new ArgError( + 'argument specification object is required', + 'ARG_CONFIG_NO_SPEC' + ); + } + + const result = { _: [] }; + + const aliases = {}; + const handlers = {}; + + for (const key of Object.keys(opts)) { + if (!key) { + throw new ArgError( + 'argument key cannot be an empty string', + 'ARG_CONFIG_EMPTY_KEY' + ); + } + + if (key[0] !== '-') { + throw new ArgError( + `argument key must start with '-' but found: '${key}'`, + 'ARG_CONFIG_NONOPT_KEY' + ); + } + + if (key.length === 1) { + throw new ArgError( + `argument key must have a name; singular '-' keys are not allowed: ${key}`, + 'ARG_CONFIG_NONAME_KEY' + ); + } + + if (typeof opts[key] === 'string') { + aliases[key] = opts[key]; + continue; + } + + let type = opts[key]; + let isFlag = false; + + if ( + Array.isArray(type) && + type.length === 1 && + typeof type[0] === 'function' + ) { + const [fn] = type; + type = (value, name, prev = []) => { + prev.push(fn(value, name, prev[prev.length - 1])); + return prev; + }; + isFlag = fn === Boolean || fn[flagSymbol] === true; + } else if (typeof type === 'function') { + isFlag = type === Boolean || type[flagSymbol] === true; + } else { + throw new ArgError( + `type missing or not a function or valid array type: ${key}`, + 'ARG_CONFIG_VAD_TYPE' + ); + } + + if (key[1] !== '-' && key.length > 2) { + throw new ArgError( + `short argument keys (with a single hyphen) must have only one character: ${key}`, + 'ARG_CONFIG_SHORTOPT_TOOLONG' + ); + } + + handlers[key] = [type, isFlag]; + } + + for (let i = 0, len = argv.length; i < len; i++) { + const wholeArg = argv[i]; + + if (stopAtPositional && result._.length > 0) { + result._ = result._.concat(argv.slice(i)); + break; + } + + if (wholeArg === '--') { + result._ = result._.concat(argv.slice(i + 1)); + break; + } + + if (wholeArg.length > 1 && wholeArg[0] === '-') { + /* eslint-disable operator-linebreak */ + const separatedArguments = + wholeArg[1] === '-' || wholeArg.length === 2 + ? [wholeArg] + : wholeArg + .slice(1) + .split('') + .map((a) => `-${a}`); + /* eslint-enable operator-linebreak */ + + for (let j = 0; j < separatedArguments.length; j++) { + const arg = separatedArguments[j]; + const [originalArgName, argStr] = + arg[1] === '-' ? arg.split(/=(.*)/, 2) : [arg, undefined]; + + let argName = originalArgName; + while (argName in aliases) { + argName = aliases[argName]; + } + + if (!(argName in handlers)) { + if (permissive) { + result._.push(arg); + continue; + } else { + throw new ArgError( + `unknown or unexpected option: ${originalArgName}`, + 'ARG_UNKNOWN_OPTION' + ); + } + } + + const [type, isFlag] = handlers[argName]; + + if (!isFlag && j + 1 < separatedArguments.length) { + throw new ArgError( + `option requires argument (but was followed by another short argument): ${originalArgName}`, + 'ARG_MISSING_REQUIRED_SHORTARG' + ); + } + + if (isFlag) { + result[argName] = type(true, argName, result[argName]); + } else if (argStr === undefined) { + if ( + argv.length < i + 2 || + (argv[i + 1].length > 1 && + argv[i + 1][0] === '-' && + !( + argv[i + 1].match(/^-?\d*(\.(?=\d))?\d*$/) && + (type === Number || + // eslint-disable-next-line no-undef + (typeof BigInt !== 'undefined' && type === BigInt)) + )) + ) { + const extended = + originalArgName === argName ? '' : ` (alias for ${argName})`; + throw new ArgError( + `option requires argument: ${originalArgName}${extended}`, + 'ARG_MISSING_REQUIRED_LONGARG' + ); + } + + result[argName] = type(argv[i + 1], argName, result[argName]); + ++i; + } else { + result[argName] = type(argStr, argName, result[argName]); + } + } + } else { + result._.push(wholeArg); + } + } + + return result; +} + +arg.flag = (fn) => { + fn[flagSymbol] = true; + return fn; +}; + +// Utility types +arg.COUNT = arg.flag((v, name, existingCount) => (existingCount || 0) + 1); + +// Expose error class +arg.ArgError = ArgError; + +var arg_1 = arg; + +/** + @license + The MIT License (MIT) + + Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ +function getOptionValue(opt) { + parseOptions(); + return options[opt]; +} +let options; +function parseOptions() { + if (!options) { + options = { + "--conditions": [], + ...parseArgv(getNodeOptionsEnvArgv()), + ...parseArgv(process.execArgv) + }; + } +} +function parseArgv(argv) { + return arg_1( + { + "--conditions": [String], + "-C": "--conditions" + }, + { + argv, + permissive: true + } + ); +} +function getNodeOptionsEnvArgv() { + const errors = []; + const envArgv = ParseNodeOptionsEnvVar(process.env.NODE_OPTIONS || "", errors); + if (errors.length !== 0) ; + return envArgv; +} +function ParseNodeOptionsEnvVar(node_options, errors) { + const env_argv = []; + let is_in_string = false; + let will_start_new_arg = true; + for (let index = 0; index < node_options.length; ++index) { + let c = node_options[index]; + if (c === "\\" && is_in_string) { + if (index + 1 === node_options.length) { + errors.push("invalid value for NODE_OPTIONS (invalid escape)\n"); + return env_argv; + } else { + c = node_options[++index]; + } + } else if (c === " " && !is_in_string) { + will_start_new_arg = true; + continue; + } else if (c === '"') { + is_in_string = !is_in_string; + continue; + } + if (will_start_new_arg) { + env_argv.push(c); + will_start_new_arg = false; + } else { + env_argv[env_argv.length - 1] += c; + } + } + if (is_in_string) { + errors.push("invalid value for NODE_OPTIONS (unterminated string)\n"); + } + return env_argv; +} + +function makeApi(runtimeState, opts) { + const alwaysWarnOnFallback = Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK) > 0; + const debugLevel = Number(process.env.PNP_DEBUG_LEVEL); + const pathRegExp = /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/; + const isStrictRegExp = /^(\/|\.{1,2}(\/|$))/; + const isDirRegExp = /\/$/; + const isRelativeRegexp = /^\.{0,2}\//; + const topLevelLocator = { name: null, reference: null }; + const fallbackLocators = []; + const emittedWarnings = /* @__PURE__ */ new Set(); + if (runtimeState.enableTopLevelFallback === true) + fallbackLocators.push(topLevelLocator); + if (opts.compatibilityMode !== false) { + for (const name of [`react-scripts`, `gatsby`]) { + const packageStore = runtimeState.packageRegistry.get(name); + if (packageStore) { + for (const reference of packageStore.keys()) { + if (reference === null) { + throw new Error(`Assertion failed: This reference shouldn't be null`); + } else { + fallbackLocators.push({ name, reference }); + } + } + } + } + } + const { + ignorePattern, + packageRegistry, + packageLocatorsByLocations + } = runtimeState; + function makeLogEntry(name, args) { + return { + fn: name, + args, + error: null, + result: null + }; + } + function trace(entry) { + const colors = process.stderr?.hasColors?.() ?? process.stdout.isTTY; + const c = (n, str) => `\x1B[${n}m${str}\x1B[0m`; + const error = entry.error; + if (error) + console.error(c(`31;1`, `\u2716 ${entry.error?.message.replace(/\n.*/s, ``)}`)); + else + console.error(c(`33;1`, `\u203C Resolution`)); + if (entry.args.length > 0) + console.error(); + for (const arg of entry.args) + console.error(` ${c(`37;1`, `In \u2190`)} ${nodeUtils.inspect(arg, { colors, compact: true })}`); + if (entry.result) { + console.error(); + console.error(` ${c(`37;1`, `Out \u2192`)} ${nodeUtils.inspect(entry.result, { colors, compact: true })}`); + } + const stack = new Error().stack.match(/(?<=^ +)at.*/gm)?.slice(2) ?? []; + if (stack.length > 0) { + console.error(); + for (const line of stack) { + console.error(` ${c(`38;5;244`, line)}`); + } + } + console.error(); + } + function maybeLog(name, fn) { + if (opts.allowDebug === false) + return fn; + if (Number.isFinite(debugLevel)) { + if (debugLevel >= 2) { + return (...args) => { + const logEntry = makeLogEntry(name, args); + try { + return logEntry.result = fn(...args); + } catch (error) { + throw logEntry.error = error; + } finally { + trace(logEntry); + } + }; + } else if (debugLevel >= 1) { + return (...args) => { + try { + return fn(...args); + } catch (error) { + const logEntry = makeLogEntry(name, args); + logEntry.error = error; + trace(logEntry); + throw error; + } + }; + } + } + return fn; + } + function getPackageInformationSafe(packageLocator) { + const packageInformation = getPackageInformation(packageLocator); + if (!packageInformation) { + throw makeError( + ErrorCode.INTERNAL, + `Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)` + ); + } + return packageInformation; + } + function isDependencyTreeRoot(packageLocator) { + if (packageLocator.name === null) + return true; + for (const dependencyTreeRoot of runtimeState.dependencyTreeRoots) + if (dependencyTreeRoot.name === packageLocator.name && dependencyTreeRoot.reference === packageLocator.reference) + return true; + return false; + } + const defaultExportsConditions = /* @__PURE__ */ new Set([ + `node`, + `require`, + ...getOptionValue(`--conditions`) + ]); + function applyNodeExportsResolution(unqualifiedPath, conditions = defaultExportsConditions, issuer) { + const locator = findPackageLocator(ppath.join(unqualifiedPath, `internal.js`), { + resolveIgnored: true, + includeDiscardFromLookup: true + }); + if (locator === null) { + throw makeError( + ErrorCode.INTERNAL, + `The locator that owns the "${unqualifiedPath}" path can't be found inside the dependency tree (this is probably an internal error)` + ); + } + const { packageLocation } = getPackageInformationSafe(locator); + const manifestPath = ppath.join(packageLocation, Filename.manifest); + if (!opts.fakeFs.existsSync(manifestPath)) + return null; + const pkgJson = JSON.parse(opts.fakeFs.readFileSync(manifestPath, `utf8`)); + if (pkgJson.exports == null) + return null; + let subpath = ppath.contains(packageLocation, unqualifiedPath); + if (subpath === null) { + throw makeError( + ErrorCode.INTERNAL, + `unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)` + ); + } + if (subpath !== `.` && !isRelativeRegexp.test(subpath)) + subpath = `./${subpath}`; + try { + const resolvedExport = packageExportsResolve({ + packageJSONUrl: url.pathToFileURL(npath.fromPortablePath(manifestPath)), + packageSubpath: subpath, + exports: pkgJson.exports, + base: issuer ? url.pathToFileURL(npath.fromPortablePath(issuer)) : null, + conditions + }); + return npath.toPortablePath(url.fileURLToPath(resolvedExport)); + } catch (error) { + throw makeError( + ErrorCode.EXPORTS_RESOLUTION_FAILED, + error.message, + { unqualifiedPath: getPathForDisplay(unqualifiedPath), locator, pkgJson, subpath: getPathForDisplay(subpath), conditions }, + error.code + ); + } + } + function applyNodeExtensionResolution(unqualifiedPath, candidates, { extensions }) { + let stat; + try { + candidates.push(unqualifiedPath); + stat = opts.fakeFs.statSync(unqualifiedPath); + } catch { + } + if (stat && !stat.isDirectory()) + return opts.fakeFs.realpathSync(unqualifiedPath); + if (stat && stat.isDirectory()) { + let pkgJson; + try { + pkgJson = JSON.parse(opts.fakeFs.readFileSync(ppath.join(unqualifiedPath, Filename.manifest), `utf8`)); + } catch { + } + let nextUnqualifiedPath; + if (pkgJson && pkgJson.main) + nextUnqualifiedPath = ppath.resolve(unqualifiedPath, pkgJson.main); + if (nextUnqualifiedPath && nextUnqualifiedPath !== unqualifiedPath) { + const resolution = applyNodeExtensionResolution(nextUnqualifiedPath, candidates, { extensions }); + if (resolution !== null) { + return resolution; + } + } + } + for (let i = 0, length = extensions.length; i < length; i++) { + const candidateFile = `${unqualifiedPath}${extensions[i]}`; + candidates.push(candidateFile); + if (opts.fakeFs.existsSync(candidateFile)) { + return candidateFile; + } + } + if (stat && stat.isDirectory()) { + for (let i = 0, length = extensions.length; i < length; i++) { + const candidateFile = ppath.format({ dir: unqualifiedPath, name: `index`, ext: extensions[i] }); + candidates.push(candidateFile); + if (opts.fakeFs.existsSync(candidateFile)) { + return candidateFile; + } + } + } + return null; + } + function makeFakeModule(path) { + const fakeModule = new require$$0.Module(path, null); + fakeModule.filename = path; + fakeModule.paths = require$$0.Module._nodeModulePaths(path); + return fakeModule; + } + function callNativeResolution(request, issuer) { + if (issuer.endsWith(`/`)) + issuer = ppath.join(issuer, `internal.js`); + return require$$0.Module._resolveFilename(npath.fromPortablePath(request), makeFakeModule(npath.fromPortablePath(issuer)), false, { plugnplay: false }); + } + function isPathIgnored(path) { + if (ignorePattern === null) + return false; + const subPath = ppath.contains(runtimeState.basePath, path); + if (subPath === null) + return false; + if (ignorePattern.test(subPath.replace(/\/$/, ``))) { + return true; + } else { + return false; + } + } + const VERSIONS = { std: 3, resolveVirtual: 1, getAllLocators: 1 }; + const topLevel = topLevelLocator; + function getPackageInformation({ name, reference }) { + const packageInformationStore = packageRegistry.get(name); + if (!packageInformationStore) + return null; + const packageInformation = packageInformationStore.get(reference); + if (!packageInformation) + return null; + return packageInformation; + } + function findPackageDependents({ name, reference }) { + const dependents = []; + for (const [dependentName, packageInformationStore] of packageRegistry) { + if (dependentName === null) + continue; + for (const [dependentReference, packageInformation] of packageInformationStore) { + if (dependentReference === null) + continue; + const dependencyReference = packageInformation.packageDependencies.get(name); + if (dependencyReference !== reference) + continue; + if (dependentName === name && dependentReference === reference) + continue; + dependents.push({ + name: dependentName, + reference: dependentReference + }); + } + } + return dependents; + } + function findBrokenPeerDependencies(dependency, initialPackage) { + const brokenPackages = /* @__PURE__ */ new Map(); + const alreadyVisited = /* @__PURE__ */ new Set(); + const traversal = (currentPackage) => { + const identifier = JSON.stringify(currentPackage.name); + if (alreadyVisited.has(identifier)) + return; + alreadyVisited.add(identifier); + const dependents = findPackageDependents(currentPackage); + for (const dependent of dependents) { + const dependentInformation = getPackageInformationSafe(dependent); + if (dependentInformation.packagePeers.has(dependency)) { + traversal(dependent); + } else { + let brokenSet = brokenPackages.get(dependent.name); + if (typeof brokenSet === `undefined`) + brokenPackages.set(dependent.name, brokenSet = /* @__PURE__ */ new Set()); + brokenSet.add(dependent.reference); + } + } + }; + traversal(initialPackage); + const brokenList = []; + for (const name of [...brokenPackages.keys()].sort()) + for (const reference of [...brokenPackages.get(name)].sort()) + brokenList.push({ name, reference }); + return brokenList; + } + function findPackageLocator(location, { resolveIgnored = false, includeDiscardFromLookup = false } = {}) { + if (isPathIgnored(location) && !resolveIgnored) + return null; + let relativeLocation = ppath.relative(runtimeState.basePath, location); + if (!relativeLocation.match(isStrictRegExp)) + relativeLocation = `./${relativeLocation}`; + if (!relativeLocation.endsWith(`/`)) + relativeLocation = `${relativeLocation}/`; + do { + const entry = packageLocatorsByLocations.get(relativeLocation); + if (typeof entry === `undefined` || entry.discardFromLookup && !includeDiscardFromLookup) { + relativeLocation = relativeLocation.substring(0, relativeLocation.lastIndexOf(`/`, relativeLocation.length - 2) + 1); + continue; + } + return entry.locator; + } while (relativeLocation !== ``); + return null; + } + function tryReadFile(filePath) { + try { + return opts.fakeFs.readFileSync(npath.toPortablePath(filePath), `utf8`); + } catch (err) { + if (err.code === `ENOENT`) + return void 0; + throw err; + } + } + function resolveToUnqualified(request, issuer, { considerBuiltins = true } = {}) { + if (request.startsWith(`#`)) + throw new Error(`resolveToUnqualified can not handle private import mappings`); + if (request === `pnpapi`) + return npath.toPortablePath(opts.pnpapiResolution); + if (considerBuiltins && require$$0.isBuiltin(request)) + return null; + const requestForDisplay = getPathForDisplay(request); + const issuerForDisplay = issuer && getPathForDisplay(issuer); + if (issuer && isPathIgnored(issuer)) { + if (!ppath.isAbsolute(request) || findPackageLocator(request) === null) { + const result = callNativeResolution(request, issuer); + if (result === false) { + throw makeError( + ErrorCode.BUILTIN_NODE_RESOLUTION_FAILED, + `The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp) + +Require request: "${requestForDisplay}" +Required by: ${issuerForDisplay} +`, + { request: requestForDisplay, issuer: issuerForDisplay } + ); + } + return npath.toPortablePath(result); + } + } + let unqualifiedPath; + const dependencyNameMatch = request.match(pathRegExp); + if (!dependencyNameMatch) { + if (ppath.isAbsolute(request)) { + unqualifiedPath = ppath.normalize(request); + } else { + if (!issuer) { + throw makeError( + ErrorCode.API_ERROR, + `The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute`, + { request: requestForDisplay, issuer: issuerForDisplay } + ); + } + const absoluteIssuer = ppath.resolve(issuer); + if (issuer.match(isDirRegExp)) { + unqualifiedPath = ppath.normalize(ppath.join(absoluteIssuer, request)); + } else { + unqualifiedPath = ppath.normalize(ppath.join(ppath.dirname(absoluteIssuer), request)); + } + } + } else { + if (!issuer) { + throw makeError( + ErrorCode.API_ERROR, + `The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute`, + { request: requestForDisplay, issuer: issuerForDisplay } + ); + } + const [, dependencyName, subPath] = dependencyNameMatch; + const issuerLocator = findPackageLocator(issuer); + if (!issuerLocator) { + const result = callNativeResolution(request, issuer); + if (result === false) { + throw makeError( + ErrorCode.BUILTIN_NODE_RESOLUTION_FAILED, + `The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree). + +Require path: "${requestForDisplay}" +Required by: ${issuerForDisplay} +`, + { request: requestForDisplay, issuer: issuerForDisplay } + ); + } + return npath.toPortablePath(result); + } + const issuerInformation = getPackageInformationSafe(issuerLocator); + let dependencyReference = issuerInformation.packageDependencies.get(dependencyName); + let fallbackReference = null; + if (dependencyReference == null) { + if (issuerLocator.name !== null) { + const exclusionEntry = runtimeState.fallbackExclusionList.get(issuerLocator.name); + const canUseFallbacks = !exclusionEntry || !exclusionEntry.has(issuerLocator.reference); + if (canUseFallbacks) { + for (let t = 0, T = fallbackLocators.length; t < T; ++t) { + const fallbackInformation = getPackageInformationSafe(fallbackLocators[t]); + const reference = fallbackInformation.packageDependencies.get(dependencyName); + if (reference == null) + continue; + if (alwaysWarnOnFallback) + fallbackReference = reference; + else + dependencyReference = reference; + break; + } + if (runtimeState.enableTopLevelFallback) { + if (dependencyReference == null && fallbackReference === null) { + const reference = runtimeState.fallbackPool.get(dependencyName); + if (reference != null) { + fallbackReference = reference; + } + } + } + } + } + } + let error = null; + if (dependencyReference === null) { + if (isDependencyTreeRoot(issuerLocator)) { + error = makeError( + ErrorCode.MISSING_PEER_DEPENDENCY, + `Your application tried to access ${dependencyName} (a peer dependency); this isn't allowed as there is no ancestor to satisfy the requirement. Use a devDependency if needed. + +Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} +Required by: ${issuerForDisplay} +`, + { request: requestForDisplay, issuer: issuerForDisplay, dependencyName } + ); + } else { + const brokenAncestors = findBrokenPeerDependencies(dependencyName, issuerLocator); + if (brokenAncestors.every((ancestor) => isDependencyTreeRoot(ancestor))) { + error = makeError( + ErrorCode.MISSING_PEER_DEPENDENCY, + `${issuerLocator.name} tried to access ${dependencyName} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. + +Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} +Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay}) +${brokenAncestors.map((ancestorLocator) => `Ancestor breaking the chain: ${ancestorLocator.name}@${ancestorLocator.reference} +`).join(``)} +`, + { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName, brokenAncestors } + ); + } else { + error = makeError( + ErrorCode.MISSING_PEER_DEPENDENCY, + `${issuerLocator.name} tried to access ${dependencyName} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. + +Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} +Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay}) + +${brokenAncestors.map((ancestorLocator) => `Ancestor breaking the chain: ${ancestorLocator.name}@${ancestorLocator.reference} +`).join(``)} +`, + { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName, brokenAncestors } + ); + } + } + } else if (dependencyReference === void 0) { + if (!considerBuiltins && require$$0.isBuiltin(request)) { + if (isDependencyTreeRoot(issuerLocator)) { + error = makeError( + ErrorCode.UNDECLARED_DEPENDENCY, + `Your application tried to access ${dependencyName}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${dependencyName} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. + +Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} +Required by: ${issuerForDisplay} +`, + { request: requestForDisplay, issuer: issuerForDisplay, dependencyName } + ); + } else { + error = makeError( + ErrorCode.UNDECLARED_DEPENDENCY, + `${issuerLocator.name} tried to access ${dependencyName}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${dependencyName} isn't otherwise declared in ${issuerLocator.name}'s dependencies, this makes the require call ambiguous and unsound. + +Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} +Required by: ${issuerForDisplay} +`, + { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName } + ); + } + } else { + if (isDependencyTreeRoot(issuerLocator)) { + error = makeError( + ErrorCode.UNDECLARED_DEPENDENCY, + `Your application tried to access ${dependencyName}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. + +Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} +Required by: ${issuerForDisplay} +`, + { request: requestForDisplay, issuer: issuerForDisplay, dependencyName } + ); + } else { + error = makeError( + ErrorCode.UNDECLARED_DEPENDENCY, + `${issuerLocator.name} tried to access ${dependencyName}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. + +Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} +Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay}) +`, + { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName } + ); + } + } + } + if (dependencyReference == null) { + if (fallbackReference === null || error === null) + throw error || new Error(`Assertion failed: Expected an error to have been set`); + dependencyReference = fallbackReference; + const message = error.message.replace(/\n.*/g, ``); + error.message = message; + if (!emittedWarnings.has(message) && debugLevel !== 0) { + emittedWarnings.add(message); + process.emitWarning(error); + } + } + const dependencyLocator = Array.isArray(dependencyReference) ? { name: dependencyReference[0], reference: dependencyReference[1] } : { name: dependencyName, reference: dependencyReference }; + const dependencyInformation = getPackageInformationSafe(dependencyLocator); + if (!dependencyInformation.packageLocation) { + throw makeError( + ErrorCode.MISSING_DEPENDENCY, + `A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod. + +Required package: ${dependencyLocator.name}@${dependencyLocator.reference}${dependencyLocator.name !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} +Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay}) +`, + { request: requestForDisplay, issuer: issuerForDisplay, dependencyLocator: Object.assign({}, dependencyLocator) } + ); + } + const dependencyLocation = dependencyInformation.packageLocation; + if (subPath) { + unqualifiedPath = ppath.join(dependencyLocation, subPath); + } else { + unqualifiedPath = dependencyLocation; + } + } + return ppath.normalize(unqualifiedPath); + } + function resolveUnqualifiedExport(request, unqualifiedPath, conditions = defaultExportsConditions, issuer) { + if (isStrictRegExp.test(request)) + return unqualifiedPath; + const unqualifiedExportPath = applyNodeExportsResolution(unqualifiedPath, conditions, issuer); + if (unqualifiedExportPath) { + return ppath.normalize(unqualifiedExportPath); + } else { + return unqualifiedPath; + } + } + function resolveUnqualified(unqualifiedPath, { extensions = Object.keys(require$$0.Module._extensions) } = {}) { + const candidates = []; + const qualifiedPath = applyNodeExtensionResolution(unqualifiedPath, candidates, { extensions }); + if (qualifiedPath) { + return ppath.normalize(qualifiedPath); + } else { + reportRequiredFilesToWatchMode(candidates.map((candidate) => npath.fromPortablePath(candidate))); + const unqualifiedPathForDisplay = getPathForDisplay(unqualifiedPath); + const containingPackage = findPackageLocator(unqualifiedPath); + if (containingPackage) { + const { packageLocation } = getPackageInformationSafe(containingPackage); + let exists = true; + try { + opts.fakeFs.accessSync(packageLocation); + } catch (err) { + if (err?.code === `ENOENT`) { + exists = false; + } else { + const readableError = (err?.message ?? err ?? `empty exception thrown`).replace(/^[A-Z]/, ($0) => $0.toLowerCase()); + throw makeError(ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED, `Required package exists but could not be accessed (${readableError}). + +Missing package: ${containingPackage.name}@${containingPackage.reference} +Expected package location: ${getPathForDisplay(packageLocation)} +`, { unqualifiedPath: unqualifiedPathForDisplay, extensions }); + } + } + if (!exists) { + const errorMessage = packageLocation.includes(`/unplugged/`) ? `Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).` : `Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.`; + throw makeError( + ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED, + `${errorMessage} + +Missing package: ${containingPackage.name}@${containingPackage.reference} +Expected package location: ${getPathForDisplay(packageLocation)} +`, + { unqualifiedPath: unqualifiedPathForDisplay, extensions } + ); + } + } + throw makeError( + ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED, + `Qualified path resolution failed: we looked for the following paths, but none could be accessed. + +Source path: ${unqualifiedPathForDisplay} +${candidates.map((candidate) => `Not found: ${getPathForDisplay(candidate)} +`).join(``)}`, + { unqualifiedPath: unqualifiedPathForDisplay, extensions } + ); + } + } + function resolvePrivateRequest(request, issuer, opts2) { + if (!issuer) + throw new Error(`Assertion failed: An issuer is required to resolve private import mappings`); + const resolved = packageImportsResolve({ + name: request, + base: url.pathToFileURL(npath.fromPortablePath(issuer)), + conditions: opts2.conditions ?? defaultExportsConditions, + readFileSyncFn: tryReadFile + }); + if (resolved instanceof URL) { + return resolveUnqualified(npath.toPortablePath(url.fileURLToPath(resolved)), { extensions: opts2.extensions }); + } else { + if (resolved.startsWith(`#`)) + throw new Error(`Mapping from one private import to another isn't allowed`); + return resolveRequest(resolved, issuer, opts2); + } + } + function resolveRequest(request, issuer, opts2 = {}) { + try { + if (request.startsWith(`#`)) + return resolvePrivateRequest(request, issuer, opts2); + const { considerBuiltins, extensions, conditions } = opts2; + const unqualifiedPath = resolveToUnqualified(request, issuer, { considerBuiltins }); + if (request === `pnpapi`) + return unqualifiedPath; + if (unqualifiedPath === null) + return null; + const isIssuerIgnored = () => issuer !== null ? isPathIgnored(issuer) : false; + const remappedPath = (!considerBuiltins || !require$$0.isBuiltin(request)) && !isIssuerIgnored() ? resolveUnqualifiedExport(request, unqualifiedPath, conditions, issuer) : unqualifiedPath; + return resolveUnqualified(remappedPath, { extensions }); + } catch (error) { + if (Object.hasOwn(error, `pnpCode`)) + Object.assign(error.data, { request: getPathForDisplay(request), issuer: issuer && getPathForDisplay(issuer) }); + throw error; + } + } + function resolveVirtual(request) { + const normalized = ppath.normalize(request); + const resolved = VirtualFS.resolveVirtual(normalized); + return resolved !== normalized ? resolved : null; + } + return { + VERSIONS, + topLevel, + getLocator: (name, referencish) => { + if (Array.isArray(referencish)) { + return { name: referencish[0], reference: referencish[1] }; + } else { + return { name, reference: referencish }; + } + }, + getDependencyTreeRoots: () => { + return [...runtimeState.dependencyTreeRoots]; + }, + getAllLocators() { + const locators = []; + for (const [name, entry] of packageRegistry) + for (const reference of entry.keys()) + if (name !== null && reference !== null) + locators.push({ name, reference }); + return locators; + }, + getPackageInformation: (locator) => { + const info = getPackageInformation(locator); + if (info === null) + return null; + const packageLocation = npath.fromPortablePath(info.packageLocation); + const nativeInfo = { ...info, packageLocation }; + return nativeInfo; + }, + findPackageLocator: (path) => { + return findPackageLocator(npath.toPortablePath(path)); + }, + resolveToUnqualified: maybeLog(`resolveToUnqualified`, (request, issuer, opts2) => { + const portableIssuer = issuer !== null ? npath.toPortablePath(issuer) : null; + const resolution = resolveToUnqualified(npath.toPortablePath(request), portableIssuer, opts2); + if (resolution === null) + return null; + return npath.fromPortablePath(resolution); + }), + resolveUnqualified: maybeLog(`resolveUnqualified`, (unqualifiedPath, opts2) => { + return npath.fromPortablePath(resolveUnqualified(npath.toPortablePath(unqualifiedPath), opts2)); + }), + resolveRequest: maybeLog(`resolveRequest`, (request, issuer, opts2) => { + const portableIssuer = issuer !== null ? npath.toPortablePath(issuer) : null; + const resolution = resolveRequest(npath.toPortablePath(request), portableIssuer, opts2); + if (resolution === null) + return null; + return npath.fromPortablePath(resolution); + }), + resolveVirtual: maybeLog(`resolveVirtual`, (path) => { + const result = resolveVirtual(npath.toPortablePath(path)); + if (result !== null) { + return npath.fromPortablePath(result); + } else { + return null; + } + }) + }; +} + +function makeManager(pnpapi, opts) { + const initialApiPath = npath.toPortablePath(pnpapi.resolveToUnqualified(`pnpapi`, null)); + const initialApiStats = opts.fakeFs.statSync(npath.toPortablePath(initialApiPath)); + const apiMetadata = /* @__PURE__ */ new Map([ + [initialApiPath, { + instance: pnpapi, + stats: initialApiStats, + lastRefreshCheck: Date.now() + }] + ]); + function loadApiInstance(pnpApiPath) { + const nativePath = npath.fromPortablePath(pnpApiPath); + const module = new require$$0.Module(nativePath, null); + module.load(nativePath); + return module.exports; + } + function refreshApiEntry(pnpApiPath, apiEntry) { + const timeNow = Date.now(); + if (timeNow - apiEntry.lastRefreshCheck < 500) + return; + apiEntry.lastRefreshCheck = timeNow; + const stats = opts.fakeFs.statSync(pnpApiPath); + if (stats.mtime > apiEntry.stats.mtime) { + process.emitWarning(`[Warning] The runtime detected new information in a PnP file; reloading the API instance (${npath.fromPortablePath(pnpApiPath)})`); + apiEntry.stats = stats; + apiEntry.instance = loadApiInstance(pnpApiPath); + } + } + function getApiEntry(pnpApiPath, refresh = false) { + let apiEntry = apiMetadata.get(pnpApiPath); + if (typeof apiEntry !== `undefined`) { + if (refresh) { + refreshApiEntry(pnpApiPath, apiEntry); + } + } else { + apiMetadata.set(pnpApiPath, apiEntry = { + instance: loadApiInstance(pnpApiPath), + stats: opts.fakeFs.statSync(pnpApiPath), + lastRefreshCheck: Date.now() + }); + } + return apiEntry; + } + const findApiPathCache = /* @__PURE__ */ new Map(); + function addToCacheAndReturn(start, end, target) { + if (target !== null) { + target = VirtualFS.resolveVirtual(target); + target = opts.fakeFs.realpathSync(target); + } + let curr; + let next = start; + do { + curr = next; + findApiPathCache.set(curr, target); + next = ppath.dirname(curr); + } while (curr !== end); + return target; + } + function findApiPathFor(modulePath) { + let bestCandidate = null; + for (const [apiPath, apiEntry] of apiMetadata) { + const locator = apiEntry.instance.findPackageLocator(modulePath); + if (!locator) + continue; + if (apiMetadata.size === 1) + return apiPath; + const packageInformation = apiEntry.instance.getPackageInformation(locator); + if (!packageInformation) + throw new Error(`Assertion failed: Couldn't get package information for '${modulePath}'`); + if (!bestCandidate) + bestCandidate = { packageLocation: packageInformation.packageLocation, apiPaths: [] }; + if (packageInformation.packageLocation === bestCandidate.packageLocation) { + bestCandidate.apiPaths.push(apiPath); + } else if (packageInformation.packageLocation.length > bestCandidate.packageLocation.length) { + bestCandidate = { packageLocation: packageInformation.packageLocation, apiPaths: [apiPath] }; + } + } + if (bestCandidate) { + if (bestCandidate.apiPaths.length === 1) + return bestCandidate.apiPaths[0]; + const controlSegment = bestCandidate.apiPaths.map((apiPath) => ` ${npath.fromPortablePath(apiPath)}`).join(` +`); + throw new Error(`Unable to locate pnpapi, the module '${modulePath}' is controlled by multiple pnpapi instances. +This is usually caused by using the global cache (enableGlobalCache: true) + +Controlled by: +${controlSegment} +`); + } + const start = ppath.resolve(npath.toPortablePath(modulePath)); + let curr; + let next = start; + do { + curr = next; + const cached = findApiPathCache.get(curr); + if (cached !== void 0) + return addToCacheAndReturn(start, curr, cached); + const cjsCandidate = ppath.join(curr, Filename.pnpCjs); + if (opts.fakeFs.existsSync(cjsCandidate) && opts.fakeFs.statSync(cjsCandidate).isFile()) + return addToCacheAndReturn(start, curr, cjsCandidate); + const legacyCjsCandidate = ppath.join(curr, Filename.pnpJs); + if (opts.fakeFs.existsSync(legacyCjsCandidate) && opts.fakeFs.statSync(legacyCjsCandidate).isFile()) + return addToCacheAndReturn(start, curr, legacyCjsCandidate); + next = ppath.dirname(curr); + } while (curr !== PortablePath.root); + return addToCacheAndReturn(start, curr, null); + } + const moduleToApiPathCache = /* @__PURE__ */ new WeakMap(); + function getApiPathFromParent(parent) { + if (parent == null) + return initialApiPath; + let apiPath = moduleToApiPathCache.get(parent); + if (typeof apiPath !== `undefined`) + return apiPath; + apiPath = parent.filename ? findApiPathFor(parent.filename) : null; + moduleToApiPathCache.set(parent, apiPath); + return apiPath; + } + return { + getApiPathFromParent, + findApiPathFor, + getApiEntry + }; +} + +const localFs = { ...fs__default.default }; +const nodeFs = new NodeFS(localFs); +const defaultRuntimeState = $$SETUP_STATE(hydrateRuntimeState); +const defaultPnpapiResolution = __filename; +const customZipImplementation = defaultRuntimeState.pnpZipBackend === `js` ? JsZipImpl : void 0; +const defaultFsLayer = new VirtualFS({ + baseFs: new ZipOpenFS({ + customZipImplementation, + baseFs: nodeFs, + maxOpenFiles: 80, + readOnlyArchives: true + }) +}); +class DynamicFS extends ProxiedFS { + baseFs = defaultFsLayer; + constructor() { + super(ppath); + } + mapToBase(p) { + return p; + } + mapFromBase(p) { + return p; + } +} +const dynamicFsLayer = new DynamicFS(); +let manager; +const defaultApi = Object.assign(makeApi(defaultRuntimeState, { + fakeFs: dynamicFsLayer, + pnpapiResolution: defaultPnpapiResolution +}), { + /** + * Can be used to generate a different API than the default one (for example + * to map it on `/` rather than the local directory path, or to use a + * different FS layer than the default one). + */ + makeApi: ({ + basePath = void 0, + fakeFs = dynamicFsLayer, + pnpapiResolution = defaultPnpapiResolution, + ...rest + }) => { + const apiRuntimeState = typeof basePath !== `undefined` ? $$SETUP_STATE(hydrateRuntimeState, basePath) : defaultRuntimeState; + return makeApi(apiRuntimeState, { + fakeFs, + pnpapiResolution, + ...rest + }); + }, + /** + * Will inject the specified API into the environment, monkey-patching FS. Is + * automatically called when the hook is loaded through `--require`. + */ + setup: (api) => { + applyPatch(api || defaultApi, { + fakeFs: defaultFsLayer, + manager + }); + dynamicFsLayer.baseFs = new NodeFS(fs__default.default); + } +}); +manager = makeManager(defaultApi, { + fakeFs: dynamicFsLayer +}); +if (module.parent && module.parent.id === `internal/preload`) { + defaultApi.setup(); + if (module.filename) { + delete require$$0__default.default._cache[module.filename]; + } +} +if (process.mainModule === module) { + const reportError = (code, message, data) => { + process.stdout.write(`${JSON.stringify([{ code, message, data }, null])} +`); + }; + const reportSuccess = (resolution) => { + process.stdout.write(`${JSON.stringify([null, resolution])} +`); + }; + const processResolution = (request, issuer) => { + try { + reportSuccess(defaultApi.resolveRequest(request, issuer)); + } catch (error) { + reportError(error.code, error.message, error.data); + } + }; + const processRequest = (data) => { + try { + const [request, issuer] = JSON.parse(data); + processResolution(request, issuer); + } catch (error) { + reportError(`INVALID_JSON`, error.message, error.data); + } + }; + if (process.argv.length > 2) { + if (process.argv.length !== 4) { + process.stderr.write(`Usage: ${process.argv[0]} ${process.argv[1]} +`); + process.exitCode = 64; + } else { + processResolution(process.argv[2], process.argv[3]); + } + } else { + let buffer = ``; + const decoder = new StringDecoder__default.default.StringDecoder(); + process.stdin.on(`data`, (chunk) => { + buffer += decoder.write(chunk); + do { + const index = buffer.indexOf(` +`); + if (index === -1) + break; + const line = buffer.slice(0, index); + buffer = buffer.slice(index + 1); + processRequest(line); + } while (true); + }); + } +} + +module.exports = defaultApi; diff --git a/.pnp.loader.mjs b/.pnp.loader.mjs new file mode 100644 index 0000000..2d5a584 --- /dev/null +++ b/.pnp.loader.mjs @@ -0,0 +1,2126 @@ +/* eslint-disable */ +// @ts-nocheck + +import fs from 'fs'; +import { URL as URL$1, fileURLToPath, pathToFileURL } from 'url'; +import path from 'path'; +import { createHash } from 'crypto'; +import { EOL } from 'os'; +import esmModule, { createRequire, isBuiltin } from 'module'; +import assert from 'assert'; + +const SAFE_TIME = 456789e3; + +const PortablePath = { + root: `/`, + dot: `.`, + parent: `..` +}; +const npath = Object.create(path); +const ppath = Object.create(path.posix); +npath.cwd = () => process.cwd(); +ppath.cwd = process.platform === `win32` ? () => toPortablePath(process.cwd()) : process.cwd; +if (process.platform === `win32`) { + ppath.resolve = (...segments) => { + if (segments.length > 0 && ppath.isAbsolute(segments[0])) { + return path.posix.resolve(...segments); + } else { + return path.posix.resolve(ppath.cwd(), ...segments); + } + }; +} +const contains = function(pathUtils, from, to) { + from = pathUtils.normalize(from); + to = pathUtils.normalize(to); + if (from === to) + return `.`; + if (!from.endsWith(pathUtils.sep)) + from = from + pathUtils.sep; + if (to.startsWith(from)) { + return to.slice(from.length); + } else { + return null; + } +}; +npath.contains = (from, to) => contains(npath, from, to); +ppath.contains = (from, to) => contains(ppath, from, to); +const WINDOWS_PATH_REGEXP = /^([a-zA-Z]:.*)$/; +const UNC_WINDOWS_PATH_REGEXP = /^\/\/(\.\/)?(.*)$/; +const PORTABLE_PATH_REGEXP = /^\/([a-zA-Z]:.*)$/; +const UNC_PORTABLE_PATH_REGEXP = /^\/unc\/(\.dot\/)?(.*)$/; +function fromPortablePathWin32(p) { + let portablePathMatch, uncPortablePathMatch; + if (portablePathMatch = p.match(PORTABLE_PATH_REGEXP)) + p = portablePathMatch[1]; + else if (uncPortablePathMatch = p.match(UNC_PORTABLE_PATH_REGEXP)) + p = `\\\\${uncPortablePathMatch[1] ? `.\\` : ``}${uncPortablePathMatch[2]}`; + else + return p; + return p.replace(/\//g, `\\`); +} +function toPortablePathWin32(p) { + p = p.replace(/\\/g, `/`); + let windowsPathMatch, uncWindowsPathMatch; + if (windowsPathMatch = p.match(WINDOWS_PATH_REGEXP)) + p = `/${windowsPathMatch[1]}`; + else if (uncWindowsPathMatch = p.match(UNC_WINDOWS_PATH_REGEXP)) + p = `/unc/${uncWindowsPathMatch[1] ? `.dot/` : ``}${uncWindowsPathMatch[2]}`; + return p; +} +const toPortablePath = process.platform === `win32` ? toPortablePathWin32 : (p) => p; +const fromPortablePath = process.platform === `win32` ? fromPortablePathWin32 : (p) => p; +npath.fromPortablePath = fromPortablePath; +npath.toPortablePath = toPortablePath; +function convertPath(targetPathUtils, sourcePath) { + return targetPathUtils === npath ? fromPortablePath(sourcePath) : toPortablePath(sourcePath); +} + +const defaultTime = new Date(SAFE_TIME * 1e3); +const defaultTimeMs = defaultTime.getTime(); +async function copyPromise(destinationFs, destination, sourceFs, source, opts) { + const normalizedDestination = destinationFs.pathUtils.normalize(destination); + const normalizedSource = sourceFs.pathUtils.normalize(source); + const prelayout = []; + const postlayout = []; + const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : await sourceFs.lstatPromise(normalizedSource); + await destinationFs.mkdirpPromise(destinationFs.pathUtils.dirname(destination), { utimes: [atime, mtime] }); + await copyImpl(prelayout, postlayout, destinationFs, normalizedDestination, sourceFs, normalizedSource, { ...opts, didParentExist: true }); + for (const operation of prelayout) + await operation(); + await Promise.all(postlayout.map((operation) => { + return operation(); + })); +} +async function copyImpl(prelayout, postlayout, destinationFs, destination, sourceFs, source, opts) { + const destinationStat = opts.didParentExist ? await maybeLStat(destinationFs, destination) : null; + const sourceStat = await sourceFs.lstatPromise(source); + const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : sourceStat; + let updated; + switch (true) { + case sourceStat.isDirectory(): + { + updated = await copyFolder(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + } + break; + case sourceStat.isFile(): + { + updated = await copyFile(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + } + break; + case sourceStat.isSymbolicLink(): + { + updated = await copySymlink(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + } + break; + default: { + throw new Error(`Unsupported file type (${sourceStat.mode})`); + } + } + if (opts.linkStrategy?.type !== `HardlinkFromIndex` || !sourceStat.isFile()) { + if (updated || destinationStat?.mtime?.getTime() !== mtime.getTime() || destinationStat?.atime?.getTime() !== atime.getTime()) { + postlayout.push(() => destinationFs.lutimesPromise(destination, atime, mtime)); + updated = true; + } + if (destinationStat === null || (destinationStat.mode & 511) !== (sourceStat.mode & 511)) { + postlayout.push(() => destinationFs.chmodPromise(destination, sourceStat.mode & 511)); + updated = true; + } + } + return updated; +} +async function maybeLStat(baseFs, p) { + try { + return await baseFs.lstatPromise(p); + } catch { + return null; + } +} +async function copyFolder(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { + if (destinationStat !== null && !destinationStat.isDirectory()) { + if (opts.overwrite) { + prelayout.push(async () => destinationFs.removePromise(destination)); + destinationStat = null; + } else { + return false; + } + } + let updated = false; + if (destinationStat === null) { + prelayout.push(async () => { + try { + await destinationFs.mkdirPromise(destination, { mode: sourceStat.mode }); + } catch (err) { + if (err.code !== `EEXIST`) { + throw err; + } + } + }); + updated = true; + } + const entries = await sourceFs.readdirPromise(source); + const nextOpts = opts.didParentExist && !destinationStat ? { ...opts, didParentExist: false } : opts; + if (opts.stableSort) { + for (const entry of entries.sort()) { + if (await copyImpl(prelayout, postlayout, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts)) { + updated = true; + } + } + } else { + const entriesUpdateStatus = await Promise.all(entries.map(async (entry) => { + await copyImpl(prelayout, postlayout, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts); + })); + if (entriesUpdateStatus.some((status) => status)) { + updated = true; + } + } + return updated; +} +async function copyFileViaIndex(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts, linkStrategy) { + const sourceHash = await sourceFs.checksumFilePromise(source, { algorithm: `sha1` }); + const defaultMode = 420; + const sourceMode = sourceStat.mode & 511; + const indexFileName = `${sourceHash}${sourceMode !== defaultMode ? sourceMode.toString(8) : ``}`; + const indexPath = destinationFs.pathUtils.join(linkStrategy.indexPath, sourceHash.slice(0, 2), `${indexFileName}.dat`); + let AtomicBehavior; + ((AtomicBehavior2) => { + AtomicBehavior2[AtomicBehavior2["Lock"] = 0] = "Lock"; + AtomicBehavior2[AtomicBehavior2["Rename"] = 1] = "Rename"; + })(AtomicBehavior || (AtomicBehavior = {})); + let atomicBehavior = 1 /* Rename */; + let indexStat = await maybeLStat(destinationFs, indexPath); + if (destinationStat) { + const isDestinationHardlinkedFromIndex = indexStat && destinationStat.dev === indexStat.dev && destinationStat.ino === indexStat.ino; + const isIndexModified = indexStat?.mtimeMs !== defaultTimeMs; + if (isDestinationHardlinkedFromIndex) { + if (isIndexModified && linkStrategy.autoRepair) { + atomicBehavior = 0 /* Lock */; + indexStat = null; + } + } + if (!isDestinationHardlinkedFromIndex) { + if (opts.overwrite) { + prelayout.push(async () => destinationFs.removePromise(destination)); + destinationStat = null; + } else { + return false; + } + } + } + const tempPath = !indexStat && atomicBehavior === 1 /* Rename */ ? `${indexPath}.${Math.floor(Math.random() * 4294967296).toString(16).padStart(8, `0`)}` : null; + let tempPathCleaned = false; + prelayout.push(async () => { + if (!indexStat) { + if (atomicBehavior === 0 /* Lock */) { + await destinationFs.lockPromise(indexPath, async () => { + const content = await sourceFs.readFilePromise(source); + await destinationFs.writeFilePromise(indexPath, content); + }); + } + if (atomicBehavior === 1 /* Rename */ && tempPath) { + const content = await sourceFs.readFilePromise(source); + await destinationFs.writeFilePromise(tempPath, content); + try { + await destinationFs.linkPromise(tempPath, indexPath); + } catch (err) { + if (err.code === `EEXIST`) { + tempPathCleaned = true; + await destinationFs.unlinkPromise(tempPath); + } else { + throw err; + } + } + } + } + if (!destinationStat) { + await destinationFs.linkPromise(indexPath, destination); + } + }); + postlayout.push(async () => { + if (!indexStat) { + await destinationFs.lutimesPromise(indexPath, defaultTime, defaultTime); + if (sourceMode !== defaultMode) { + await destinationFs.chmodPromise(indexPath, sourceMode); + } + } + if (tempPath && !tempPathCleaned) { + await destinationFs.unlinkPromise(tempPath); + } + }); + return false; +} +async function copyFileDirect(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { + if (destinationStat !== null) { + if (opts.overwrite) { + prelayout.push(async () => destinationFs.removePromise(destination)); + destinationStat = null; + } else { + return false; + } + } + prelayout.push(async () => { + const content = await sourceFs.readFilePromise(source); + await destinationFs.writeFilePromise(destination, content); + }); + return true; +} +async function copyFile(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { + if (opts.linkStrategy?.type === `HardlinkFromIndex`) { + return copyFileViaIndex(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts, opts.linkStrategy); + } else { + return copyFileDirect(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + } +} +async function copySymlink(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { + if (destinationStat !== null) { + if (opts.overwrite) { + prelayout.push(async () => destinationFs.removePromise(destination)); + destinationStat = null; + } else { + return false; + } + } + prelayout.push(async () => { + await destinationFs.symlinkPromise(convertPath(destinationFs.pathUtils, await sourceFs.readlinkPromise(source)), destination); + }); + return true; +} + +class FakeFS { + pathUtils; + constructor(pathUtils) { + this.pathUtils = pathUtils; + } + async *genTraversePromise(init, { stableSort = false } = {}) { + const stack = [init]; + while (stack.length > 0) { + const p = stack.shift(); + const entry = await this.lstatPromise(p); + if (entry.isDirectory()) { + const entries = await this.readdirPromise(p); + if (stableSort) { + for (const entry2 of entries.sort()) { + stack.push(this.pathUtils.join(p, entry2)); + } + } else { + throw new Error(`Not supported`); + } + } else { + yield p; + } + } + } + async checksumFilePromise(path, { algorithm = `sha512` } = {}) { + const fd = await this.openPromise(path, `r`); + try { + const CHUNK_SIZE = 65536; + const chunk = Buffer.allocUnsafeSlow(CHUNK_SIZE); + const hash = createHash(algorithm); + let bytesRead = 0; + while ((bytesRead = await this.readPromise(fd, chunk, 0, CHUNK_SIZE)) !== 0) + hash.update(bytesRead === CHUNK_SIZE ? chunk : chunk.slice(0, bytesRead)); + return hash.digest(`hex`); + } finally { + await this.closePromise(fd); + } + } + async removePromise(p, { recursive = true, maxRetries = 5 } = {}) { + let stat; + try { + stat = await this.lstatPromise(p); + } catch (error) { + if (error.code === `ENOENT`) { + return; + } else { + throw error; + } + } + if (stat.isDirectory()) { + if (recursive) { + const entries = await this.readdirPromise(p); + await Promise.all(entries.map((entry) => { + return this.removePromise(this.pathUtils.resolve(p, entry)); + })); + } + for (let t = 0; t <= maxRetries; t++) { + try { + await this.rmdirPromise(p); + break; + } catch (error) { + if (error.code !== `EBUSY` && error.code !== `ENOTEMPTY`) { + throw error; + } else if (t < maxRetries) { + await new Promise((resolve) => setTimeout(resolve, t * 100)); + } + } + } + } else { + await this.unlinkPromise(p); + } + } + removeSync(p, { recursive = true } = {}) { + let stat; + try { + stat = this.lstatSync(p); + } catch (error) { + if (error.code === `ENOENT`) { + return; + } else { + throw error; + } + } + if (stat.isDirectory()) { + if (recursive) + for (const entry of this.readdirSync(p)) + this.removeSync(this.pathUtils.resolve(p, entry)); + this.rmdirSync(p); + } else { + this.unlinkSync(p); + } + } + async mkdirpPromise(p, { chmod, utimes } = {}) { + p = this.resolve(p); + if (p === this.pathUtils.dirname(p)) + return void 0; + const parts = p.split(this.pathUtils.sep); + let createdDirectory; + for (let u = 2; u <= parts.length; ++u) { + const subPath = parts.slice(0, u).join(this.pathUtils.sep); + if (!this.existsSync(subPath)) { + try { + await this.mkdirPromise(subPath); + } catch (error) { + if (error.code === `EEXIST`) { + continue; + } else { + throw error; + } + } + createdDirectory ??= subPath; + if (chmod != null) + await this.chmodPromise(subPath, chmod); + if (utimes != null) { + await this.utimesPromise(subPath, utimes[0], utimes[1]); + } else { + const parentStat = await this.statPromise(this.pathUtils.dirname(subPath)); + await this.utimesPromise(subPath, parentStat.atime, parentStat.mtime); + } + } + } + return createdDirectory; + } + mkdirpSync(p, { chmod, utimes } = {}) { + p = this.resolve(p); + if (p === this.pathUtils.dirname(p)) + return void 0; + const parts = p.split(this.pathUtils.sep); + let createdDirectory; + for (let u = 2; u <= parts.length; ++u) { + const subPath = parts.slice(0, u).join(this.pathUtils.sep); + if (!this.existsSync(subPath)) { + try { + this.mkdirSync(subPath); + } catch (error) { + if (error.code === `EEXIST`) { + continue; + } else { + throw error; + } + } + createdDirectory ??= subPath; + if (chmod != null) + this.chmodSync(subPath, chmod); + if (utimes != null) { + this.utimesSync(subPath, utimes[0], utimes[1]); + } else { + const parentStat = this.statSync(this.pathUtils.dirname(subPath)); + this.utimesSync(subPath, parentStat.atime, parentStat.mtime); + } + } + } + return createdDirectory; + } + async copyPromise(destination, source, { baseFs = this, overwrite = true, stableSort = false, stableTime = false, linkStrategy = null } = {}) { + return await copyPromise(this, destination, baseFs, source, { overwrite, stableSort, stableTime, linkStrategy }); + } + copySync(destination, source, { baseFs = this, overwrite = true } = {}) { + const stat = baseFs.lstatSync(source); + const exists = this.existsSync(destination); + if (stat.isDirectory()) { + this.mkdirpSync(destination); + const directoryListing = baseFs.readdirSync(source); + for (const entry of directoryListing) { + this.copySync(this.pathUtils.join(destination, entry), baseFs.pathUtils.join(source, entry), { baseFs, overwrite }); + } + } else if (stat.isFile()) { + if (!exists || overwrite) { + if (exists) + this.removeSync(destination); + const content = baseFs.readFileSync(source); + this.writeFileSync(destination, content); + } + } else if (stat.isSymbolicLink()) { + if (!exists || overwrite) { + if (exists) + this.removeSync(destination); + const target = baseFs.readlinkSync(source); + this.symlinkSync(convertPath(this.pathUtils, target), destination); + } + } else { + throw new Error(`Unsupported file type (file: ${source}, mode: 0o${stat.mode.toString(8).padStart(6, `0`)})`); + } + const mode = stat.mode & 511; + this.chmodSync(destination, mode); + } + async changeFilePromise(p, content, opts = {}) { + if (Buffer.isBuffer(content)) { + return this.changeFileBufferPromise(p, content, opts); + } else { + return this.changeFileTextPromise(p, content, opts); + } + } + async changeFileBufferPromise(p, content, { mode } = {}) { + let current = Buffer.alloc(0); + try { + current = await this.readFilePromise(p); + } catch { + } + if (Buffer.compare(current, content) === 0) + return; + await this.writeFilePromise(p, content, { mode }); + } + async changeFileTextPromise(p, content, { automaticNewlines, mode } = {}) { + let current = ``; + try { + current = await this.readFilePromise(p, `utf8`); + } catch { + } + const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content; + if (current === normalizedContent) + return; + await this.writeFilePromise(p, normalizedContent, { mode }); + } + changeFileSync(p, content, opts = {}) { + if (Buffer.isBuffer(content)) { + return this.changeFileBufferSync(p, content, opts); + } else { + return this.changeFileTextSync(p, content, opts); + } + } + changeFileBufferSync(p, content, { mode } = {}) { + let current = Buffer.alloc(0); + try { + current = this.readFileSync(p); + } catch { + } + if (Buffer.compare(current, content) === 0) + return; + this.writeFileSync(p, content, { mode }); + } + changeFileTextSync(p, content, { automaticNewlines = false, mode } = {}) { + let current = ``; + try { + current = this.readFileSync(p, `utf8`); + } catch { + } + const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content; + if (current === normalizedContent) + return; + this.writeFileSync(p, normalizedContent, { mode }); + } + async movePromise(fromP, toP) { + try { + await this.renamePromise(fromP, toP); + } catch (error) { + if (error.code === `EXDEV`) { + await this.copyPromise(toP, fromP); + await this.removePromise(fromP); + } else { + throw error; + } + } + } + moveSync(fromP, toP) { + try { + this.renameSync(fromP, toP); + } catch (error) { + if (error.code === `EXDEV`) { + this.copySync(toP, fromP); + this.removeSync(fromP); + } else { + throw error; + } + } + } + async lockPromise(affectedPath, callback) { + const lockPath = `${affectedPath}.flock`; + const interval = 1e3 / 60; + const startTime = Date.now(); + let fd = null; + const isAlive = async () => { + let pid; + try { + [pid] = await this.readJsonPromise(lockPath); + } catch { + return Date.now() - startTime < 500; + } + try { + process.kill(pid, 0); + return true; + } catch { + return false; + } + }; + while (fd === null) { + try { + fd = await this.openPromise(lockPath, `wx`); + } catch (error) { + if (error.code === `EEXIST`) { + if (!await isAlive()) { + try { + await this.unlinkPromise(lockPath); + continue; + } catch { + } + } + if (Date.now() - startTime < 60 * 1e3) { + await new Promise((resolve) => setTimeout(resolve, interval)); + } else { + throw new Error(`Couldn't acquire a lock in a reasonable time (via ${lockPath})`); + } + } else { + throw error; + } + } + } + await this.writePromise(fd, JSON.stringify([process.pid])); + try { + return await callback(); + } finally { + try { + await this.closePromise(fd); + await this.unlinkPromise(lockPath); + } catch { + } + } + } + async readJsonPromise(p) { + const content = await this.readFilePromise(p, `utf8`); + try { + return JSON.parse(content); + } catch (error) { + error.message += ` (in ${p})`; + throw error; + } + } + readJsonSync(p) { + const content = this.readFileSync(p, `utf8`); + try { + return JSON.parse(content); + } catch (error) { + error.message += ` (in ${p})`; + throw error; + } + } + async writeJsonPromise(p, data, { compact = false } = {}) { + const space = compact ? 0 : 2; + return await this.writeFilePromise(p, `${JSON.stringify(data, null, space)} +`); + } + writeJsonSync(p, data, { compact = false } = {}) { + const space = compact ? 0 : 2; + return this.writeFileSync(p, `${JSON.stringify(data, null, space)} +`); + } + async preserveTimePromise(p, cb) { + const stat = await this.lstatPromise(p); + const result = await cb(); + if (typeof result !== `undefined`) + p = result; + await this.lutimesPromise(p, stat.atime, stat.mtime); + } + async preserveTimeSync(p, cb) { + const stat = this.lstatSync(p); + const result = cb(); + if (typeof result !== `undefined`) + p = result; + this.lutimesSync(p, stat.atime, stat.mtime); + } +} +class BasePortableFakeFS extends FakeFS { + constructor() { + super(ppath); + } +} +function getEndOfLine(content) { + const matches = content.match(/\r?\n/g); + if (matches === null) + return EOL; + const crlf = matches.filter((nl) => nl === `\r +`).length; + const lf = matches.length - crlf; + return crlf > lf ? `\r +` : ` +`; +} +function normalizeLineEndings(originalContent, newContent) { + return newContent.replace(/\r?\n/g, getEndOfLine(originalContent)); +} + +class ProxiedFS extends FakeFS { + getExtractHint(hints) { + return this.baseFs.getExtractHint(hints); + } + resolve(path) { + return this.mapFromBase(this.baseFs.resolve(this.mapToBase(path))); + } + getRealPath() { + return this.mapFromBase(this.baseFs.getRealPath()); + } + async openPromise(p, flags, mode) { + return this.baseFs.openPromise(this.mapToBase(p), flags, mode); + } + openSync(p, flags, mode) { + return this.baseFs.openSync(this.mapToBase(p), flags, mode); + } + async opendirPromise(p, opts) { + return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(p), opts), { path: p }); + } + opendirSync(p, opts) { + return Object.assign(this.baseFs.opendirSync(this.mapToBase(p), opts), { path: p }); + } + async readPromise(fd, buffer, offset, length, position) { + return await this.baseFs.readPromise(fd, buffer, offset, length, position); + } + readSync(fd, buffer, offset, length, position) { + return this.baseFs.readSync(fd, buffer, offset, length, position); + } + async writePromise(fd, buffer, offset, length, position) { + if (typeof buffer === `string`) { + return await this.baseFs.writePromise(fd, buffer, offset); + } else { + return await this.baseFs.writePromise(fd, buffer, offset, length, position); + } + } + writeSync(fd, buffer, offset, length, position) { + if (typeof buffer === `string`) { + return this.baseFs.writeSync(fd, buffer, offset); + } else { + return this.baseFs.writeSync(fd, buffer, offset, length, position); + } + } + async closePromise(fd) { + return this.baseFs.closePromise(fd); + } + closeSync(fd) { + this.baseFs.closeSync(fd); + } + createReadStream(p, opts) { + return this.baseFs.createReadStream(p !== null ? this.mapToBase(p) : p, opts); + } + createWriteStream(p, opts) { + return this.baseFs.createWriteStream(p !== null ? this.mapToBase(p) : p, opts); + } + async realpathPromise(p) { + return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(p))); + } + realpathSync(p) { + return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(p))); + } + async existsPromise(p) { + return this.baseFs.existsPromise(this.mapToBase(p)); + } + existsSync(p) { + return this.baseFs.existsSync(this.mapToBase(p)); + } + accessSync(p, mode) { + return this.baseFs.accessSync(this.mapToBase(p), mode); + } + async accessPromise(p, mode) { + return this.baseFs.accessPromise(this.mapToBase(p), mode); + } + async statPromise(p, opts) { + return this.baseFs.statPromise(this.mapToBase(p), opts); + } + statSync(p, opts) { + return this.baseFs.statSync(this.mapToBase(p), opts); + } + async fstatPromise(fd, opts) { + return this.baseFs.fstatPromise(fd, opts); + } + fstatSync(fd, opts) { + return this.baseFs.fstatSync(fd, opts); + } + lstatPromise(p, opts) { + return this.baseFs.lstatPromise(this.mapToBase(p), opts); + } + lstatSync(p, opts) { + return this.baseFs.lstatSync(this.mapToBase(p), opts); + } + async fchmodPromise(fd, mask) { + return this.baseFs.fchmodPromise(fd, mask); + } + fchmodSync(fd, mask) { + return this.baseFs.fchmodSync(fd, mask); + } + async chmodPromise(p, mask) { + return this.baseFs.chmodPromise(this.mapToBase(p), mask); + } + chmodSync(p, mask) { + return this.baseFs.chmodSync(this.mapToBase(p), mask); + } + async fchownPromise(fd, uid, gid) { + return this.baseFs.fchownPromise(fd, uid, gid); + } + fchownSync(fd, uid, gid) { + return this.baseFs.fchownSync(fd, uid, gid); + } + async chownPromise(p, uid, gid) { + return this.baseFs.chownPromise(this.mapToBase(p), uid, gid); + } + chownSync(p, uid, gid) { + return this.baseFs.chownSync(this.mapToBase(p), uid, gid); + } + async renamePromise(oldP, newP) { + return this.baseFs.renamePromise(this.mapToBase(oldP), this.mapToBase(newP)); + } + renameSync(oldP, newP) { + return this.baseFs.renameSync(this.mapToBase(oldP), this.mapToBase(newP)); + } + async copyFilePromise(sourceP, destP, flags = 0) { + return this.baseFs.copyFilePromise(this.mapToBase(sourceP), this.mapToBase(destP), flags); + } + copyFileSync(sourceP, destP, flags = 0) { + return this.baseFs.copyFileSync(this.mapToBase(sourceP), this.mapToBase(destP), flags); + } + async appendFilePromise(p, content, opts) { + return this.baseFs.appendFilePromise(this.fsMapToBase(p), content, opts); + } + appendFileSync(p, content, opts) { + return this.baseFs.appendFileSync(this.fsMapToBase(p), content, opts); + } + async writeFilePromise(p, content, opts) { + return this.baseFs.writeFilePromise(this.fsMapToBase(p), content, opts); + } + writeFileSync(p, content, opts) { + return this.baseFs.writeFileSync(this.fsMapToBase(p), content, opts); + } + async unlinkPromise(p) { + return this.baseFs.unlinkPromise(this.mapToBase(p)); + } + unlinkSync(p) { + return this.baseFs.unlinkSync(this.mapToBase(p)); + } + async utimesPromise(p, atime, mtime) { + return this.baseFs.utimesPromise(this.mapToBase(p), atime, mtime); + } + utimesSync(p, atime, mtime) { + return this.baseFs.utimesSync(this.mapToBase(p), atime, mtime); + } + async lutimesPromise(p, atime, mtime) { + return this.baseFs.lutimesPromise(this.mapToBase(p), atime, mtime); + } + lutimesSync(p, atime, mtime) { + return this.baseFs.lutimesSync(this.mapToBase(p), atime, mtime); + } + async mkdirPromise(p, opts) { + return this.baseFs.mkdirPromise(this.mapToBase(p), opts); + } + mkdirSync(p, opts) { + return this.baseFs.mkdirSync(this.mapToBase(p), opts); + } + async rmdirPromise(p, opts) { + return this.baseFs.rmdirPromise(this.mapToBase(p), opts); + } + rmdirSync(p, opts) { + return this.baseFs.rmdirSync(this.mapToBase(p), opts); + } + async rmPromise(p, opts) { + return this.baseFs.rmPromise(this.mapToBase(p), opts); + } + rmSync(p, opts) { + return this.baseFs.rmSync(this.mapToBase(p), opts); + } + async linkPromise(existingP, newP) { + return this.baseFs.linkPromise(this.mapToBase(existingP), this.mapToBase(newP)); + } + linkSync(existingP, newP) { + return this.baseFs.linkSync(this.mapToBase(existingP), this.mapToBase(newP)); + } + async symlinkPromise(target, p, type) { + const mappedP = this.mapToBase(p); + if (this.pathUtils.isAbsolute(target)) + return this.baseFs.symlinkPromise(this.mapToBase(target), mappedP, type); + const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target)); + const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget); + return this.baseFs.symlinkPromise(mappedTarget, mappedP, type); + } + symlinkSync(target, p, type) { + const mappedP = this.mapToBase(p); + if (this.pathUtils.isAbsolute(target)) + return this.baseFs.symlinkSync(this.mapToBase(target), mappedP, type); + const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target)); + const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget); + return this.baseFs.symlinkSync(mappedTarget, mappedP, type); + } + async readFilePromise(p, encoding) { + return this.baseFs.readFilePromise(this.fsMapToBase(p), encoding); + } + readFileSync(p, encoding) { + return this.baseFs.readFileSync(this.fsMapToBase(p), encoding); + } + readdirPromise(p, opts) { + return this.baseFs.readdirPromise(this.mapToBase(p), opts); + } + readdirSync(p, opts) { + return this.baseFs.readdirSync(this.mapToBase(p), opts); + } + async readlinkPromise(p) { + return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(p))); + } + readlinkSync(p) { + return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(p))); + } + async truncatePromise(p, len) { + return this.baseFs.truncatePromise(this.mapToBase(p), len); + } + truncateSync(p, len) { + return this.baseFs.truncateSync(this.mapToBase(p), len); + } + async ftruncatePromise(fd, len) { + return this.baseFs.ftruncatePromise(fd, len); + } + ftruncateSync(fd, len) { + return this.baseFs.ftruncateSync(fd, len); + } + watch(p, a, b) { + return this.baseFs.watch( + this.mapToBase(p), + // @ts-expect-error - reason TBS + a, + b + ); + } + watchFile(p, a, b) { + return this.baseFs.watchFile( + this.mapToBase(p), + // @ts-expect-error - reason TBS + a, + b + ); + } + unwatchFile(p, cb) { + return this.baseFs.unwatchFile(this.mapToBase(p), cb); + } + fsMapToBase(p) { + if (typeof p === `number`) { + return p; + } else { + return this.mapToBase(p); + } + } +} + +function direntToPortable(dirent) { + const portableDirent = dirent; + if (typeof dirent.path === `string`) + portableDirent.path = npath.toPortablePath(dirent.path); + return portableDirent; +} +class NodeFS extends BasePortableFakeFS { + realFs; + constructor(realFs = fs) { + super(); + this.realFs = realFs; + } + getExtractHint() { + return false; + } + getRealPath() { + return PortablePath.root; + } + resolve(p) { + return ppath.resolve(p); + } + async openPromise(p, flags, mode) { + return await new Promise((resolve, reject) => { + this.realFs.open(npath.fromPortablePath(p), flags, mode, this.makeCallback(resolve, reject)); + }); + } + openSync(p, flags, mode) { + return this.realFs.openSync(npath.fromPortablePath(p), flags, mode); + } + async opendirPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (typeof opts !== `undefined`) { + this.realFs.opendir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.opendir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }).then((dir) => { + const dirWithFixedPath = dir; + Object.defineProperty(dirWithFixedPath, `path`, { + value: p, + configurable: true, + writable: true + }); + return dirWithFixedPath; + }); + } + opendirSync(p, opts) { + const dir = typeof opts !== `undefined` ? this.realFs.opendirSync(npath.fromPortablePath(p), opts) : this.realFs.opendirSync(npath.fromPortablePath(p)); + const dirWithFixedPath = dir; + Object.defineProperty(dirWithFixedPath, `path`, { + value: p, + configurable: true, + writable: true + }); + return dirWithFixedPath; + } + async readPromise(fd, buffer, offset = 0, length = 0, position = -1) { + return await new Promise((resolve, reject) => { + this.realFs.read(fd, buffer, offset, length, position, (error, bytesRead) => { + if (error) { + reject(error); + } else { + resolve(bytesRead); + } + }); + }); + } + readSync(fd, buffer, offset, length, position) { + return this.realFs.readSync(fd, buffer, offset, length, position); + } + async writePromise(fd, buffer, offset, length, position) { + return await new Promise((resolve, reject) => { + if (typeof buffer === `string`) { + return this.realFs.write(fd, buffer, offset, this.makeCallback(resolve, reject)); + } else { + return this.realFs.write(fd, buffer, offset, length, position, this.makeCallback(resolve, reject)); + } + }); + } + writeSync(fd, buffer, offset, length, position) { + if (typeof buffer === `string`) { + return this.realFs.writeSync(fd, buffer, offset); + } else { + return this.realFs.writeSync(fd, buffer, offset, length, position); + } + } + async closePromise(fd) { + await new Promise((resolve, reject) => { + this.realFs.close(fd, this.makeCallback(resolve, reject)); + }); + } + closeSync(fd) { + this.realFs.closeSync(fd); + } + createReadStream(p, opts) { + const realPath = p !== null ? npath.fromPortablePath(p) : p; + return this.realFs.createReadStream(realPath, opts); + } + createWriteStream(p, opts) { + const realPath = p !== null ? npath.fromPortablePath(p) : p; + return this.realFs.createWriteStream(realPath, opts); + } + async realpathPromise(p) { + return await new Promise((resolve, reject) => { + this.realFs.realpath(npath.fromPortablePath(p), {}, this.makeCallback(resolve, reject)); + }).then((path) => { + return npath.toPortablePath(path); + }); + } + realpathSync(p) { + return npath.toPortablePath(this.realFs.realpathSync(npath.fromPortablePath(p), {})); + } + async existsPromise(p) { + return await new Promise((resolve) => { + this.realFs.exists(npath.fromPortablePath(p), resolve); + }); + } + accessSync(p, mode) { + return this.realFs.accessSync(npath.fromPortablePath(p), mode); + } + async accessPromise(p, mode) { + return await new Promise((resolve, reject) => { + this.realFs.access(npath.fromPortablePath(p), mode, this.makeCallback(resolve, reject)); + }); + } + existsSync(p) { + return this.realFs.existsSync(npath.fromPortablePath(p)); + } + async statPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.stat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.stat(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + statSync(p, opts) { + if (opts) { + return this.realFs.statSync(npath.fromPortablePath(p), opts); + } else { + return this.realFs.statSync(npath.fromPortablePath(p)); + } + } + async fstatPromise(fd, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.fstat(fd, opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.fstat(fd, this.makeCallback(resolve, reject)); + } + }); + } + fstatSync(fd, opts) { + if (opts) { + return this.realFs.fstatSync(fd, opts); + } else { + return this.realFs.fstatSync(fd); + } + } + async lstatPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.lstat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.lstat(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + lstatSync(p, opts) { + if (opts) { + return this.realFs.lstatSync(npath.fromPortablePath(p), opts); + } else { + return this.realFs.lstatSync(npath.fromPortablePath(p)); + } + } + async fchmodPromise(fd, mask) { + return await new Promise((resolve, reject) => { + this.realFs.fchmod(fd, mask, this.makeCallback(resolve, reject)); + }); + } + fchmodSync(fd, mask) { + return this.realFs.fchmodSync(fd, mask); + } + async chmodPromise(p, mask) { + return await new Promise((resolve, reject) => { + this.realFs.chmod(npath.fromPortablePath(p), mask, this.makeCallback(resolve, reject)); + }); + } + chmodSync(p, mask) { + return this.realFs.chmodSync(npath.fromPortablePath(p), mask); + } + async fchownPromise(fd, uid, gid) { + return await new Promise((resolve, reject) => { + this.realFs.fchown(fd, uid, gid, this.makeCallback(resolve, reject)); + }); + } + fchownSync(fd, uid, gid) { + return this.realFs.fchownSync(fd, uid, gid); + } + async chownPromise(p, uid, gid) { + return await new Promise((resolve, reject) => { + this.realFs.chown(npath.fromPortablePath(p), uid, gid, this.makeCallback(resolve, reject)); + }); + } + chownSync(p, uid, gid) { + return this.realFs.chownSync(npath.fromPortablePath(p), uid, gid); + } + async renamePromise(oldP, newP) { + return await new Promise((resolve, reject) => { + this.realFs.rename(npath.fromPortablePath(oldP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject)); + }); + } + renameSync(oldP, newP) { + return this.realFs.renameSync(npath.fromPortablePath(oldP), npath.fromPortablePath(newP)); + } + async copyFilePromise(sourceP, destP, flags = 0) { + return await new Promise((resolve, reject) => { + this.realFs.copyFile(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags, this.makeCallback(resolve, reject)); + }); + } + copyFileSync(sourceP, destP, flags = 0) { + return this.realFs.copyFileSync(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags); + } + async appendFilePromise(p, content, opts) { + return await new Promise((resolve, reject) => { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + if (opts) { + this.realFs.appendFile(fsNativePath, content, opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.appendFile(fsNativePath, content, this.makeCallback(resolve, reject)); + } + }); + } + appendFileSync(p, content, opts) { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + if (opts) { + this.realFs.appendFileSync(fsNativePath, content, opts); + } else { + this.realFs.appendFileSync(fsNativePath, content); + } + } + async writeFilePromise(p, content, opts) { + return await new Promise((resolve, reject) => { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + if (opts) { + this.realFs.writeFile(fsNativePath, content, opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.writeFile(fsNativePath, content, this.makeCallback(resolve, reject)); + } + }); + } + writeFileSync(p, content, opts) { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + if (opts) { + this.realFs.writeFileSync(fsNativePath, content, opts); + } else { + this.realFs.writeFileSync(fsNativePath, content); + } + } + async unlinkPromise(p) { + return await new Promise((resolve, reject) => { + this.realFs.unlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + }); + } + unlinkSync(p) { + return this.realFs.unlinkSync(npath.fromPortablePath(p)); + } + async utimesPromise(p, atime, mtime) { + return await new Promise((resolve, reject) => { + this.realFs.utimes(npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject)); + }); + } + utimesSync(p, atime, mtime) { + this.realFs.utimesSync(npath.fromPortablePath(p), atime, mtime); + } + async lutimesPromise(p, atime, mtime) { + return await new Promise((resolve, reject) => { + this.realFs.lutimes(npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject)); + }); + } + lutimesSync(p, atime, mtime) { + this.realFs.lutimesSync(npath.fromPortablePath(p), atime, mtime); + } + async mkdirPromise(p, opts) { + return await new Promise((resolve, reject) => { + this.realFs.mkdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + }); + } + mkdirSync(p, opts) { + return this.realFs.mkdirSync(npath.fromPortablePath(p), opts); + } + async rmdirPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.rmdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.rmdir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + rmdirSync(p, opts) { + return this.realFs.rmdirSync(npath.fromPortablePath(p), opts); + } + async rmPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.rm(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.rm(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + rmSync(p, opts) { + return this.realFs.rmSync(npath.fromPortablePath(p), opts); + } + async linkPromise(existingP, newP) { + return await new Promise((resolve, reject) => { + this.realFs.link(npath.fromPortablePath(existingP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject)); + }); + } + linkSync(existingP, newP) { + return this.realFs.linkSync(npath.fromPortablePath(existingP), npath.fromPortablePath(newP)); + } + async symlinkPromise(target, p, type) { + return await new Promise((resolve, reject) => { + this.realFs.symlink(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type, this.makeCallback(resolve, reject)); + }); + } + symlinkSync(target, p, type) { + return this.realFs.symlinkSync(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type); + } + async readFilePromise(p, encoding) { + return await new Promise((resolve, reject) => { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + this.realFs.readFile(fsNativePath, encoding, this.makeCallback(resolve, reject)); + }); + } + readFileSync(p, encoding) { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + return this.realFs.readFileSync(fsNativePath, encoding); + } + async readdirPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + if (opts.recursive && process.platform === `win32`) { + if (opts.withFileTypes) { + this.realFs.readdir(npath.fromPortablePath(p), opts, this.makeCallback((results) => resolve(results.map(direntToPortable)), reject)); + } else { + this.realFs.readdir(npath.fromPortablePath(p), opts, this.makeCallback((results) => resolve(results.map(npath.toPortablePath)), reject)); + } + } else { + this.realFs.readdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } + } else { + this.realFs.readdir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + readdirSync(p, opts) { + if (opts) { + if (opts.recursive && process.platform === `win32`) { + if (opts.withFileTypes) { + return this.realFs.readdirSync(npath.fromPortablePath(p), opts).map(direntToPortable); + } else { + return this.realFs.readdirSync(npath.fromPortablePath(p), opts).map(npath.toPortablePath); + } + } else { + return this.realFs.readdirSync(npath.fromPortablePath(p), opts); + } + } else { + return this.realFs.readdirSync(npath.fromPortablePath(p)); + } + } + async readlinkPromise(p) { + return await new Promise((resolve, reject) => { + this.realFs.readlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + }).then((path) => { + return npath.toPortablePath(path); + }); + } + readlinkSync(p) { + return npath.toPortablePath(this.realFs.readlinkSync(npath.fromPortablePath(p))); + } + async truncatePromise(p, len) { + return await new Promise((resolve, reject) => { + this.realFs.truncate(npath.fromPortablePath(p), len, this.makeCallback(resolve, reject)); + }); + } + truncateSync(p, len) { + return this.realFs.truncateSync(npath.fromPortablePath(p), len); + } + async ftruncatePromise(fd, len) { + return await new Promise((resolve, reject) => { + this.realFs.ftruncate(fd, len, this.makeCallback(resolve, reject)); + }); + } + ftruncateSync(fd, len) { + return this.realFs.ftruncateSync(fd, len); + } + watch(p, a, b) { + return this.realFs.watch( + npath.fromPortablePath(p), + // @ts-expect-error - reason TBS + a, + b + ); + } + watchFile(p, a, b) { + return this.realFs.watchFile( + npath.fromPortablePath(p), + // @ts-expect-error - reason TBS + a, + b + ); + } + unwatchFile(p, cb) { + return this.realFs.unwatchFile(npath.fromPortablePath(p), cb); + } + makeCallback(resolve, reject) { + return (err, result) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }; + } +} + +const NUMBER_REGEXP = /^[0-9]+$/; +const VIRTUAL_REGEXP = /^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/; +const VALID_COMPONENT = /^([^/]+-)?[a-f0-9]+$/; +class VirtualFS extends ProxiedFS { + baseFs; + static makeVirtualPath(base, component, to) { + if (ppath.basename(base) !== `__virtual__`) + throw new Error(`Assertion failed: Virtual folders must be named "__virtual__"`); + if (!ppath.basename(component).match(VALID_COMPONENT)) + throw new Error(`Assertion failed: Virtual components must be ended by an hexadecimal hash`); + const target = ppath.relative(ppath.dirname(base), to); + const segments = target.split(`/`); + let depth = 0; + while (depth < segments.length && segments[depth] === `..`) + depth += 1; + const finalSegments = segments.slice(depth); + const fullVirtualPath = ppath.join(base, component, String(depth), ...finalSegments); + return fullVirtualPath; + } + static resolveVirtual(p) { + const match = p.match(VIRTUAL_REGEXP); + if (!match || !match[3] && match[5]) + return p; + const target = ppath.dirname(match[1]); + if (!match[3] || !match[4]) + return target; + const isnum = NUMBER_REGEXP.test(match[4]); + if (!isnum) + return p; + const depth = Number(match[4]); + const backstep = `../`.repeat(depth); + const subpath = match[5] || `.`; + return VirtualFS.resolveVirtual(ppath.join(target, backstep, subpath)); + } + constructor({ baseFs = new NodeFS() } = {}) { + super(ppath); + this.baseFs = baseFs; + } + getExtractHint(hints) { + return this.baseFs.getExtractHint(hints); + } + getRealPath() { + return this.baseFs.getRealPath(); + } + realpathSync(p) { + const match = p.match(VIRTUAL_REGEXP); + if (!match) + return this.baseFs.realpathSync(p); + if (!match[5]) + return p; + const realpath = this.baseFs.realpathSync(this.mapToBase(p)); + return VirtualFS.makeVirtualPath(match[1], match[3], realpath); + } + async realpathPromise(p) { + const match = p.match(VIRTUAL_REGEXP); + if (!match) + return await this.baseFs.realpathPromise(p); + if (!match[5]) + return p; + const realpath = await this.baseFs.realpathPromise(this.mapToBase(p)); + return VirtualFS.makeVirtualPath(match[1], match[3], realpath); + } + mapToBase(p) { + if (p === ``) + return p; + if (this.pathUtils.isAbsolute(p)) + return VirtualFS.resolveVirtual(p); + const resolvedRoot = VirtualFS.resolveVirtual(this.baseFs.resolve(PortablePath.dot)); + const resolvedP = VirtualFS.resolveVirtual(this.baseFs.resolve(p)); + return ppath.relative(resolvedRoot, resolvedP) || PortablePath.dot; + } + mapFromBase(p) { + return p; + } +} + +const URL = Number(process.versions.node.split('.', 1)[0]) < 20 ? URL$1 : globalThis.URL; + +const [major, minor] = process.versions.node.split(`.`).map((value) => parseInt(value, 10)); +const WATCH_MODE_MESSAGE_USES_ARRAYS = major > 19 || major === 19 && minor >= 2 || major === 18 && minor >= 13; +const HAS_LAZY_LOADED_TRANSLATORS = major === 20 && minor < 6 || major === 19 && minor >= 3; +const SUPPORTS_IMPORT_ATTRIBUTES = major >= 21 || major === 20 && minor >= 10 || major === 18 && minor >= 20; +const SUPPORTS_IMPORT_ATTRIBUTES_ONLY = major >= 22; + +function readPackageScope(checkPath) { + const rootSeparatorIndex = checkPath.indexOf(npath.sep); + let separatorIndex; + do { + separatorIndex = checkPath.lastIndexOf(npath.sep); + checkPath = checkPath.slice(0, separatorIndex); + if (checkPath.endsWith(`${npath.sep}node_modules`)) + return false; + const pjson = readPackage(checkPath + npath.sep); + if (pjson) { + return { + data: pjson, + path: checkPath + }; + } + } while (separatorIndex > rootSeparatorIndex); + return false; +} +function readPackage(requestPath) { + const jsonPath = npath.resolve(requestPath, `package.json`); + if (!fs.existsSync(jsonPath)) + return null; + return JSON.parse(fs.readFileSync(jsonPath, `utf8`)); +} + +async function tryReadFile$1(path2) { + try { + return await fs.promises.readFile(path2, `utf8`); + } catch (error) { + if (error.code === `ENOENT`) + return null; + throw error; + } +} +function tryParseURL(str, base) { + try { + return new URL(str, base); + } catch { + return null; + } +} +let entrypointPath = null; +function setEntrypointPath(file) { + entrypointPath = file; +} +function getFileFormat(filepath) { + const ext = path.extname(filepath); + switch (ext) { + case `.mjs`: { + return `module`; + } + case `.cjs`: { + return `commonjs`; + } + case `.wasm`: { + throw new Error( + `Unknown file extension ".wasm" for ${filepath}` + ); + } + case `.json`: { + return `json`; + } + case `.js`: { + const pkg = readPackageScope(filepath); + if (!pkg) + return `commonjs`; + return pkg.data.type ?? `commonjs`; + } + default: { + if (entrypointPath !== filepath) + return null; + const pkg = readPackageScope(filepath); + if (!pkg) + return `commonjs`; + if (pkg.data.type === `module`) + return null; + return pkg.data.type ?? `commonjs`; + } + } +} + +async function load$1(urlString, context, nextLoad) { + const url = tryParseURL(urlString); + if (url?.protocol !== `file:`) + return nextLoad(urlString, context, nextLoad); + const filePath = fileURLToPath(url); + const format = getFileFormat(filePath); + if (!format) + return nextLoad(urlString, context, nextLoad); + if (format === `json`) { + if (SUPPORTS_IMPORT_ATTRIBUTES_ONLY) { + if (context.importAttributes?.type !== `json`) { + const err = new TypeError(`[ERR_IMPORT_ATTRIBUTE_MISSING]: Module "${urlString}" needs an import attribute of "type: json"`); + err.code = `ERR_IMPORT_ATTRIBUTE_MISSING`; + throw err; + } + } else { + const type = `importAttributes` in context ? context.importAttributes?.type : context.importAssertions?.type; + if (type !== `json`) { + const err = new TypeError(`[ERR_IMPORT_ASSERTION_TYPE_MISSING]: Module "${urlString}" needs an import ${SUPPORTS_IMPORT_ATTRIBUTES ? `attribute` : `assertion`} of type "json"`); + err.code = `ERR_IMPORT_ASSERTION_TYPE_MISSING`; + throw err; + } + } + } + if (process.env.WATCH_REPORT_DEPENDENCIES && process.send) { + const pathToSend = pathToFileURL( + npath.fromPortablePath( + VirtualFS.resolveVirtual(npath.toPortablePath(filePath)) + ) + ).href; + process.send({ + "watch:import": WATCH_MODE_MESSAGE_USES_ARRAYS ? [pathToSend] : pathToSend + }); + } + return { + format, + source: format === `commonjs` ? void 0 : await fs.promises.readFile(filePath, `utf8`), + shortCircuit: true + }; +} + +const ArrayIsArray = Array.isArray; +const JSONStringify = JSON.stringify; +const ObjectGetOwnPropertyNames = Object.getOwnPropertyNames; +const ObjectPrototypeHasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop); +const RegExpPrototypeExec = (obj, string) => RegExp.prototype.exec.call(obj, string); +const RegExpPrototypeSymbolReplace = (obj, ...rest) => RegExp.prototype[Symbol.replace].apply(obj, rest); +const StringPrototypeEndsWith = (str, ...rest) => String.prototype.endsWith.apply(str, rest); +const StringPrototypeIncludes = (str, ...rest) => String.prototype.includes.apply(str, rest); +const StringPrototypeLastIndexOf = (str, ...rest) => String.prototype.lastIndexOf.apply(str, rest); +const StringPrototypeIndexOf = (str, ...rest) => String.prototype.indexOf.apply(str, rest); +const StringPrototypeReplace = (str, ...rest) => String.prototype.replace.apply(str, rest); +const StringPrototypeSlice = (str, ...rest) => String.prototype.slice.apply(str, rest); +const StringPrototypeStartsWith = (str, ...rest) => String.prototype.startsWith.apply(str, rest); +const SafeMap = Map; +const JSONParse = JSON.parse; + +function createErrorType(code, messageCreator, errorType) { + return class extends errorType { + constructor(...args) { + super(messageCreator(...args)); + this.code = code; + this.name = `${errorType.name} [${code}]`; + } + }; +} +const ERR_PACKAGE_IMPORT_NOT_DEFINED = createErrorType( + `ERR_PACKAGE_IMPORT_NOT_DEFINED`, + (specifier, packagePath, base) => { + return `Package import specifier "${specifier}" is not defined${packagePath ? ` in package ${packagePath}package.json` : ``} imported from ${base}`; + }, + TypeError +); +const ERR_INVALID_MODULE_SPECIFIER = createErrorType( + `ERR_INVALID_MODULE_SPECIFIER`, + (request, reason, base = void 0) => { + return `Invalid module "${request}" ${reason}${base ? ` imported from ${base}` : ``}`; + }, + TypeError +); +const ERR_INVALID_PACKAGE_TARGET = createErrorType( + `ERR_INVALID_PACKAGE_TARGET`, + (pkgPath, key, target, isImport = false, base = void 0) => { + const relError = typeof target === `string` && !isImport && target.length && !StringPrototypeStartsWith(target, `./`); + if (key === `.`) { + assert(isImport === false); + return `Invalid "exports" main target ${JSONStringify(target)} defined in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`; + } + return `Invalid "${isImport ? `imports` : `exports`}" target ${JSONStringify( + target + )} defined for '${key}' in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`; + }, + Error +); +const ERR_INVALID_PACKAGE_CONFIG = createErrorType( + `ERR_INVALID_PACKAGE_CONFIG`, + (path, base, message) => { + return `Invalid package config ${path}${base ? ` while importing ${base}` : ``}${message ? `. ${message}` : ``}`; + }, + Error +); + +function filterOwnProperties(source, keys) { + const filtered = /* @__PURE__ */ Object.create(null); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (ObjectPrototypeHasOwnProperty(source, key)) { + filtered[key] = source[key]; + } + } + return filtered; +} + +const packageJSONCache = new SafeMap(); +function getPackageConfig(path, specifier, base, readFileSyncFn) { + const existing = packageJSONCache.get(path); + if (existing !== void 0) { + return existing; + } + const source = readFileSyncFn(path); + if (source === void 0) { + const packageConfig2 = { + pjsonPath: path, + exists: false, + main: void 0, + name: void 0, + type: "none", + exports: void 0, + imports: void 0 + }; + packageJSONCache.set(path, packageConfig2); + return packageConfig2; + } + let packageJSON; + try { + packageJSON = JSONParse(source); + } catch (error) { + throw new ERR_INVALID_PACKAGE_CONFIG( + path, + (base ? `"${specifier}" from ` : "") + fileURLToPath(base || specifier), + error.message + ); + } + let { imports, main, name, type } = filterOwnProperties(packageJSON, [ + "imports", + "main", + "name", + "type" + ]); + const exports = ObjectPrototypeHasOwnProperty(packageJSON, "exports") ? packageJSON.exports : void 0; + if (typeof imports !== "object" || imports === null) { + imports = void 0; + } + if (typeof main !== "string") { + main = void 0; + } + if (typeof name !== "string") { + name = void 0; + } + if (type !== "module" && type !== "commonjs") { + type = "none"; + } + const packageConfig = { + pjsonPath: path, + exists: true, + main, + name, + type, + exports, + imports + }; + packageJSONCache.set(path, packageConfig); + return packageConfig; +} +function getPackageScopeConfig(resolved, readFileSyncFn) { + let packageJSONUrl = new URL("./package.json", resolved); + while (true) { + const packageJSONPath2 = packageJSONUrl.pathname; + if (StringPrototypeEndsWith(packageJSONPath2, "node_modules/package.json")) { + break; + } + const packageConfig2 = getPackageConfig( + fileURLToPath(packageJSONUrl), + resolved, + void 0, + readFileSyncFn + ); + if (packageConfig2.exists) { + return packageConfig2; + } + const lastPackageJSONUrl = packageJSONUrl; + packageJSONUrl = new URL("../package.json", packageJSONUrl); + if (packageJSONUrl.pathname === lastPackageJSONUrl.pathname) { + break; + } + } + const packageJSONPath = fileURLToPath(packageJSONUrl); + const packageConfig = { + pjsonPath: packageJSONPath, + exists: false, + main: void 0, + name: void 0, + type: "none", + exports: void 0, + imports: void 0 + }; + packageJSONCache.set(packageJSONPath, packageConfig); + return packageConfig; +} + +function throwImportNotDefined(specifier, packageJSONUrl, base) { + throw new ERR_PACKAGE_IMPORT_NOT_DEFINED( + specifier, + packageJSONUrl && fileURLToPath(new URL(".", packageJSONUrl)), + fileURLToPath(base) + ); +} +function throwInvalidSubpath(subpath, packageJSONUrl, internal, base) { + const reason = `request is not a valid subpath for the "${internal ? "imports" : "exports"}" resolution of ${fileURLToPath(packageJSONUrl)}`; + throw new ERR_INVALID_MODULE_SPECIFIER( + subpath, + reason, + base && fileURLToPath(base) + ); +} +function throwInvalidPackageTarget(subpath, target, packageJSONUrl, internal, base) { + if (typeof target === "object" && target !== null) { + target = JSONStringify(target, null, ""); + } else { + target = `${target}`; + } + throw new ERR_INVALID_PACKAGE_TARGET( + fileURLToPath(new URL(".", packageJSONUrl)), + subpath, + target, + internal, + base && fileURLToPath(base) + ); +} +const invalidSegmentRegEx = /(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\|\/|$)/i; +const patternRegEx = /\*/g; +function resolvePackageTargetString(target, subpath, match, packageJSONUrl, base, pattern, internal, conditions) { + if (subpath !== "" && !pattern && target[target.length - 1] !== "/") + throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); + if (!StringPrototypeStartsWith(target, "./")) { + if (internal && !StringPrototypeStartsWith(target, "../") && !StringPrototypeStartsWith(target, "/")) { + let isURL = false; + try { + new URL(target); + isURL = true; + } catch { + } + if (!isURL) { + const exportTarget = pattern ? RegExpPrototypeSymbolReplace(patternRegEx, target, () => subpath) : target + subpath; + return exportTarget; + } + } + throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); + } + if (RegExpPrototypeExec( + invalidSegmentRegEx, + StringPrototypeSlice(target, 2) + ) !== null) + throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); + const resolved = new URL(target, packageJSONUrl); + const resolvedPath = resolved.pathname; + const packagePath = new URL(".", packageJSONUrl).pathname; + if (!StringPrototypeStartsWith(resolvedPath, packagePath)) + throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); + if (subpath === "") return resolved; + if (RegExpPrototypeExec(invalidSegmentRegEx, subpath) !== null) { + const request = pattern ? StringPrototypeReplace(match, "*", () => subpath) : match + subpath; + throwInvalidSubpath(request, packageJSONUrl, internal, base); + } + if (pattern) { + return new URL( + RegExpPrototypeSymbolReplace(patternRegEx, resolved.href, () => subpath) + ); + } + return new URL(subpath, resolved); +} +function isArrayIndex(key) { + const keyNum = +key; + if (`${keyNum}` !== key) return false; + return keyNum >= 0 && keyNum < 4294967295; +} +function resolvePackageTarget(packageJSONUrl, target, subpath, packageSubpath, base, pattern, internal, conditions) { + if (typeof target === "string") { + return resolvePackageTargetString( + target, + subpath, + packageSubpath, + packageJSONUrl, + base, + pattern, + internal); + } else if (ArrayIsArray(target)) { + if (target.length === 0) { + return null; + } + let lastException; + for (let i = 0; i < target.length; i++) { + const targetItem = target[i]; + let resolveResult; + try { + resolveResult = resolvePackageTarget( + packageJSONUrl, + targetItem, + subpath, + packageSubpath, + base, + pattern, + internal, + conditions + ); + } catch (e) { + lastException = e; + if (e.code === "ERR_INVALID_PACKAGE_TARGET") { + continue; + } + throw e; + } + if (resolveResult === void 0) { + continue; + } + if (resolveResult === null) { + lastException = null; + continue; + } + return resolveResult; + } + if (lastException === void 0 || lastException === null) + return lastException; + throw lastException; + } else if (typeof target === "object" && target !== null) { + const keys = ObjectGetOwnPropertyNames(target); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (isArrayIndex(key)) { + throw new ERR_INVALID_PACKAGE_CONFIG( + fileURLToPath(packageJSONUrl), + base, + '"exports" cannot contain numeric property keys.' + ); + } + } + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (key === "default" || conditions.has(key)) { + const conditionalTarget = target[key]; + const resolveResult = resolvePackageTarget( + packageJSONUrl, + conditionalTarget, + subpath, + packageSubpath, + base, + pattern, + internal, + conditions + ); + if (resolveResult === void 0) continue; + return resolveResult; + } + } + return void 0; + } else if (target === null) { + return null; + } + throwInvalidPackageTarget( + packageSubpath, + target, + packageJSONUrl, + internal, + base + ); +} +function patternKeyCompare(a, b) { + const aPatternIndex = StringPrototypeIndexOf(a, "*"); + const bPatternIndex = StringPrototypeIndexOf(b, "*"); + const baseLenA = aPatternIndex === -1 ? a.length : aPatternIndex + 1; + const baseLenB = bPatternIndex === -1 ? b.length : bPatternIndex + 1; + if (baseLenA > baseLenB) return -1; + if (baseLenB > baseLenA) return 1; + if (aPatternIndex === -1) return 1; + if (bPatternIndex === -1) return -1; + if (a.length > b.length) return -1; + if (b.length > a.length) return 1; + return 0; +} +function packageImportsResolve({ name, base, conditions, readFileSyncFn }) { + if (name === "#" || StringPrototypeStartsWith(name, "#/") || StringPrototypeEndsWith(name, "/")) { + const reason = "is not a valid internal imports specifier name"; + throw new ERR_INVALID_MODULE_SPECIFIER(name, reason, fileURLToPath(base)); + } + let packageJSONUrl; + const packageConfig = getPackageScopeConfig(base, readFileSyncFn); + if (packageConfig.exists) { + packageJSONUrl = pathToFileURL(packageConfig.pjsonPath); + const imports = packageConfig.imports; + if (imports) { + if (ObjectPrototypeHasOwnProperty(imports, name) && !StringPrototypeIncludes(name, "*")) { + const resolveResult = resolvePackageTarget( + packageJSONUrl, + imports[name], + "", + name, + base, + false, + true, + conditions + ); + if (resolveResult != null) { + return resolveResult; + } + } else { + let bestMatch = ""; + let bestMatchSubpath; + const keys = ObjectGetOwnPropertyNames(imports); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const patternIndex = StringPrototypeIndexOf(key, "*"); + if (patternIndex !== -1 && StringPrototypeStartsWith( + name, + StringPrototypeSlice(key, 0, patternIndex) + )) { + const patternTrailer = StringPrototypeSlice(key, patternIndex + 1); + if (name.length >= key.length && StringPrototypeEndsWith(name, patternTrailer) && patternKeyCompare(bestMatch, key) === 1 && StringPrototypeLastIndexOf(key, "*") === patternIndex) { + bestMatch = key; + bestMatchSubpath = StringPrototypeSlice( + name, + patternIndex, + name.length - patternTrailer.length + ); + } + } + } + if (bestMatch) { + const target = imports[bestMatch]; + const resolveResult = resolvePackageTarget( + packageJSONUrl, + target, + bestMatchSubpath, + bestMatch, + base, + true, + true, + conditions + ); + if (resolveResult != null) { + return resolveResult; + } + } + } + } + } + throwImportNotDefined(name, packageJSONUrl, base); +} + +let findPnpApi = esmModule.findPnpApi; +if (!findPnpApi) { + const require = createRequire(import.meta.url); + const pnpApi = require(structuredClone(`./.pnp.cjs`)); + pnpApi.setup(); + findPnpApi = esmModule.findPnpApi; +} +const pathRegExp = /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/; +const isRelativeRegexp = /^\.{0,2}\//; +function tryReadFile(filePath) { + try { + return fs.readFileSync(filePath, `utf8`); + } catch (err) { + if (err.code === `ENOENT`) + return void 0; + throw err; + } +} +async function resolvePrivateRequest(specifier, issuer, context, nextResolve) { + const resolved = packageImportsResolve({ + name: specifier, + base: pathToFileURL(issuer), + conditions: new Set(context.conditions), + readFileSyncFn: tryReadFile + }); + if (resolved instanceof URL) { + return { url: resolved.href, shortCircuit: true }; + } else { + if (resolved.startsWith(`#`)) + throw new Error(`Mapping from one private import to another isn't allowed`); + return resolve$1(resolved, context, nextResolve); + } +} +async function resolve$1(originalSpecifier, context, nextResolve) { + if (!findPnpApi || isBuiltin(originalSpecifier)) + return nextResolve(originalSpecifier, context, nextResolve); + let specifier = originalSpecifier; + const url = tryParseURL(specifier, isRelativeRegexp.test(specifier) ? context.parentURL : void 0); + if (url) { + if (url.protocol !== `file:`) + return nextResolve(originalSpecifier, context, nextResolve); + specifier = fileURLToPath(url); + } + const { parentURL, conditions = [] } = context; + const issuer = parentURL && tryParseURL(parentURL)?.protocol === `file:` ? fileURLToPath(parentURL) : process.cwd(); + const pnpapi = findPnpApi(issuer) ?? (url ? findPnpApi(specifier) : null); + if (!pnpapi) + return nextResolve(originalSpecifier, context, nextResolve); + if (specifier.startsWith(`#`)) + return resolvePrivateRequest(specifier, issuer, context, nextResolve); + const dependencyNameMatch = specifier.match(pathRegExp); + let allowLegacyResolve = false; + if (dependencyNameMatch) { + const [, dependencyName, subPath] = dependencyNameMatch; + if (subPath === `` && dependencyName !== `pnpapi`) { + const resolved = pnpapi.resolveToUnqualified(`${dependencyName}/package.json`, issuer); + if (resolved) { + const content = await tryReadFile$1(resolved); + if (content) { + const pkg = JSON.parse(content); + allowLegacyResolve = pkg.exports == null; + } + } + } + } + let result; + try { + result = pnpapi.resolveRequest(specifier, issuer, { + conditions: new Set(conditions), + // TODO: Handle --experimental-specifier-resolution=node + extensions: allowLegacyResolve ? void 0 : [] + }); + } catch (err) { + if (err instanceof Error && `code` in err && err.code === `MODULE_NOT_FOUND`) + err.code = `ERR_MODULE_NOT_FOUND`; + throw err; + } + if (!result) + throw new Error(`Resolving '${specifier}' from '${issuer}' failed`); + const resultURL = pathToFileURL(result); + if (url) { + resultURL.search = url.search; + resultURL.hash = url.hash; + } + if (!parentURL) + setEntrypointPath(fileURLToPath(resultURL)); + return { + url: resultURL.href, + shortCircuit: true + }; +} + +if (!HAS_LAZY_LOADED_TRANSLATORS) { + const binding = process.binding(`fs`); + const originalReadFile = binding.readFileUtf8 || binding.readFileSync; + if (originalReadFile) { + binding[originalReadFile.name] = function(...args) { + try { + return fs.readFileSync(args[0], { + encoding: `utf8`, + // @ts-expect-error - The docs says it needs to be a string but + // links to https://nodejs.org/dist/latest-v20.x/docs/api/fs.html#file-system-flags + // which says it can be a number which matches the implementation. + flag: args[1] + }); + } catch { + } + return originalReadFile.apply(this, args); + }; + } else { + const binding2 = process.binding(`fs`); + const originalfstat = binding2.fstat; + const ZIP_MASK = 4278190080; + const ZIP_MAGIC = 704643072; + binding2.fstat = function(...args) { + const [fd, useBigint, req] = args; + if ((fd & ZIP_MASK) === ZIP_MAGIC && useBigint === false && req === void 0) { + try { + const stats = fs.fstatSync(fd); + return new Float64Array([ + stats.dev, + stats.mode, + stats.nlink, + stats.uid, + stats.gid, + stats.rdev, + stats.blksize, + stats.ino, + stats.size, + stats.blocks + // atime sec + // atime ns + // mtime sec + // mtime ns + // ctime sec + // ctime ns + // birthtime sec + // birthtime ns + ]); + } catch { + } + } + return originalfstat.apply(this, args); + }; + } +} + +const resolve = resolve$1; +const load = load$1; + +export { load, resolve }; diff --git a/.yarnrc.yml b/.yarnrc.yml new file mode 100644 index 0000000..09b1012 --- /dev/null +++ b/.yarnrc.yml @@ -0,0 +1 @@ +nodeLinker: pnp diff --git a/Agents.md b/Agents.md index 286615c..324861d 100644 --- a/Agents.md +++ b/Agents.md @@ -1,683 +1,42 @@ -# Calcit 编程 Agent 指南 +Developer runs `cr js` to watch build JavaScript, and `yarn vite` to start a local server. LLMs edits program by running `cr` commands, and then triggers re-compiling. -本文档为 AI Agent 提供 Calcit 项目的操作指南。 - -## ⚠️ 重要警告:禁止直接修改的文件 - -以下文件**严格禁止使用文本替换或直接编辑**: - -- **`calcit.cirru`** - 这是 calcit-editor 结构化编辑器的专用格式,包含完整的编辑器元数据 -- **`compact.cirru`** - 这是 Calcit 程序的紧凑快照格式,必须使用 `cr edit` 相关命令进行修改 - -这两个文件的格式对空格和结构极其敏感,直接文本修改会破坏文件结构。请使用下面文档中的 CLI 命令进行代码查询和修改。 - -## Calcit 与 Cirru 的关系 - -- **Calcit** 是编程语言本身(一门类似 Clojure 的函数式编程语言) -- **Cirru** 是语法格式(缩进风格的 S-expression,类似去掉括号改用缩进的 Lisp) -- **关系**:Calcit 代码使用 Cirru 语法书写和存储 - -**具体体现:** - -- `compact.cirru` 和 `calcit.cirru` 是用 Cirru 格式存储的 Calcit 程序 -- `cr cirru` 工具用于 Cirru 语法与 JSON 的转换(帮助理解和生成代码) -- Cirru 语法特点: - - 用缩进代替括号(类似 Python/YAML) - - 字符串用前缀 `|` 或 `"` 标记(如 `|hello` 表示字符串 "hello") - - 单行用空格分隔元素(如 `defn add (a b) (+ a b)`) - -**类比理解:** - -- Python 语言 ← 使用 → Python 语法 -- Calcit 语言 ← 使用 → Cirru 语法 - -生成 Calcit 代码前,建议先运行 `cr cirru show-guide` 了解 Cirru 语法规则。 - ---- - -## Calcit CLI 命令 - -Calcit 程序使用 `cr` 命令: - -### 主要运行命令 - -- `cr` 或 `cr compact.cirru` - 代码解释执行,默认读取 config 执行 init-fn 定义的入口 -- `cr compact.cirru js` - 编译生成 JavaScript 代码 -- `cr -1 ` - 执行一次然后退出(不进入监听模式) -- `cr --check-only` - 仅检查代码正确性,不执行程序 - - 对 init_fn 和 reload_fn 进行预处理验证 - - 输出:预处理进度、warnings、检查耗时 - - 用于 CI/CD 或快速验证代码修改 -- `cr js -1` - 检查代码正确性,生成 JavaScript(不进入监听模式) -- `cr js --check-only` - 检查代码正确性,不生成 JavaScript -- `cr eval ''` - 执行一段 Calcit 代码片段,用于快速验证写法 - -### 查询子命令 (`cr query`) - -这些命令用于查询项目信息: - -**项目全局分析:** - -- `cr analyze call-graph` - 分析从入口点开始的调用图结构 -- `cr analyze count-calls` - 统计每个定义的调用次数 - - _使用示例:_ - - ```bash - # 分析整个项目的调用图 - cr analyze call-graph - # 统计调用次数 - cr analyze count-calls - ``` - -**基础查询:** - -- `cr query ns [--deps]` - 列出项目中所有命名空间(--deps 包含依赖) -- `cr query ns ` - 读取命名空间详情(imports, 定义预览) -- `cr query defs ` - 列出命名空间中的定义 -- `cr query pkg` - 获取项目包名 -- `cr query config` - 读取项目配置(init_fn, reload_fn, version) -- `cr query error` - 读取 .calcit-error.cirru 错误堆栈文件 -- `cr query modules` - 列出项目模块 - -**渐进式代码探索(Progressive Disclosure):** - -- `cr query peek ` - 查看定义签名(参数、文档、表达式数量),不返回完整实现体 - - 输出:Doc、Form 类型、参数列表、Body 表达式数量、首个表达式预览、Examples 数量 - - 用于快速了解函数接口,减少 token 消耗 -- `cr query def [-j]` - 读取定义的完整 Cirru 代码 - - 默认输出:Doc、Examples 数量、Cirru 格式代码 - - `-j` / `--json`:同时输出 JSON 格式(用于程序化处理) - - 推荐:LLM 直接读取 Cirru 格式即可,通常不需要 JSON -- `cr query examples ` - 读取定义的示例代码 - - 输出:每个 example 的 Cirru 格式和 JSON 格式 - -**符号搜索与引用分析:** - -- `cr query find [--deps] [-f] [-n ]` - 跨命名空间搜索符号 - - 默认精确匹配:返回定义位置 + 所有引用位置(带上下文预览) - - `-f` / `--fuzzy`:模糊搜索,匹配 "namespace/definition" 格式的路径 - - `-n `:限制模糊搜索结果数量(默认 20) - - `--deps`:包含核心命名空间(calcit.\* 开头) -- `cr query usages [--deps]` - 查找定义的所有使用位置 - - 返回:引用该定义的所有位置(带上下文预览) - - 用于理解代码影响范围,重构前的影响分析 - -**代码模式搜索:** - -- `cr query search [-f ] [-l] [-d ] [-p ]` - 搜索叶子节点(字符串) - - - `` - 位置参数,要搜索的字符串模式 - - `-f` / `--filter` - 过滤到特定命名空间或定义(可选) - - `-l` / `--loose`:宽松匹配,包含模式(匹配所有包含该模式的叶子节点) - - `-d `:限制搜索深度(0 = 无限制) - - `-p` / `--start-path`:从指定路径开始搜索(逗号分隔的索引,如 `"3,2,1"`) - - 不指定时从根节点开始搜索整个定义 - - 指定后只搜索该路径下的子树,适合在大型定义中缩小搜索范围 - - 返回:匹配节点的完整路径 + 父级上下文预览 - - 示例: - - `cr query search "println" -f app.main/main -l` - 在 main 函数中搜索包含 "println" 的节点 - - `cr query search "div"` - 全局精确搜索 "div" - - `cr query search "btn" -f app.main/render -p "3,2" -l` - 从路径 [3,2] 开始搜索包含 "btn" 的节点 - -- `cr query search-pattern [-f ] [-l] [-j] [-d ]` - 搜索结构模式 - - `` - 位置参数,Cirru one-liner 或 JSON 数组模式 - - `-f` / `--filter` - 过滤到特定命名空间或定义(可选) - - `-l` / `--loose`:宽松匹配,查找包含连续子序列的结构 - - `-j` / `--json`:将模式解析为 JSON 数组而非 Cirru - - 返回:匹配节点的路径 + 父级上下文 - - 示例: - - `cr query search-pattern "(+ a b)" -f app.util/add` - 查找精确表达式 - - `cr query search-pattern '["defn"]' -f app.main/main -j -l` - 查找所有函数定义 - -**搜索结果格式:** - -- 输出格式:`[路径] in 父级上下文` -- 路径格式:`[索引1,索引2,...]` 表示从根节点到匹配节点的路径 -- 可配合 `cr tree show -p ""` 查看具体节点内容 - -### 文档子命令 (`cr docs`) - -查询 Calcit 语言文档(guidebook): - -- `cr docs search [-c ] [-f ]` - 按关键词搜索文档内容 - - - `-c ` - 显示匹配行的上下文行数(默认 5) - - `-f ` - 按文件名过滤搜索结果 - - 输出:匹配行及其上下文,带行号和高亮 - - 示例:`cr docs search "macro" -c 10` 或 `cr docs search "defn" -f macros.md` - -- `cr docs read [-s ] [-n ]` - 阅读指定文档 - - - `-s ` - 起始行号(默认 0) - - `-n ` - 读取行数(默认 80) - - 输出:文档内容、当前范围、是否有更多内容 - - 示例:`cr docs read macros.md` 或 `cr docs read intro.md -s 20 -n 30` - -- `cr docs list` - 列出所有可用文档 - -### Cirru 语法工具 (`cr cirru`) - -用于 Cirru 语法和 JSON 之间的转换: - -- `cr cirru parse ''` - 解析 Cirru 代码为 JSON -- `cr cirru format ''` - 格式化 JSON 为 Cirru 代码 -- `cr cirru parse-edn ''` - 解析 Cirru EDN 为 JSON -- `cr cirru show-guide` - 显示 Cirru 语法指南(帮助 LLM 生成正确的 Cirru 代码) - -**⚠️ 重要:生成 Cirru 代码前请先阅读语法指南** - -运行 `cr cirru show-guide` 获取完整的 Cirru 语法说明,包括: - -- `$` 操作符(单节点展开) -- `|` 前缀(字符串字面量), 这个是 Cirru 特殊的地方, 而不是直接用引号包裹 -- `,` 操作符(注释标记) -- `~` 和 `~@`(宏展开) -- 常见错误和避免方法 - -### 库管理 (`cr libs`) - -查询和了解 Calcit 官方库: - -- `cr libs` - 列出所有官方库 -- `cr libs search ` - 按关键词搜索库(搜索名称、描述、分类) -- `cr libs readme [-f ]` - 查看库的文档 - - 优先从本地 `~/.config/calcit/modules/` 读取 - - 本地不存在时从 GitHub 仓库获取 - - `-f` 参数可指定其他文档文件(如 `-f Skills.md`) - - 默认读取 `README.md` -- `cr libs scan-md ` - 扫描本地模块目录下的所有 `.md` 文件 - - 递归扫描子目录 - - 显示相对路径列表 -- `caps` - 安装/更新依赖 - -### 精细代码树操作 (`cr tree`) - -⚠️ **关键警告:路径索引动态变化** - -删除或插入节点后,同级后续节点的索引会自动改变。**必须从后往前操作**或**每次修改后重新搜索路径**。 - -**核心概念:** - -- 路径格式:逗号分隔的索引(如 `"3,2,1"`),空字符串 `""` 表示根节点 -- 每个命令都有 `--help` 查看详细参数 -- 命令执行后会显示 "Next steps" 提示下一步操作 - -**主要操作:** - -- `cr tree show` - 查看节点(输出包含子节点索引和操作提示) -- `cr tree replace` - 替换节点 -- `cr tree delete` - 删除节点 -- `cr tree insert-before/after` - 插入相邻节点 -- `cr tree insert-child/append-child` - 插入子节点 -- `cr tree swap-next/prev` - 交换相邻节点 -- `cr tree wrap` - 用新结构包装节点 - -**输入方式(通用):** - -- `-e ''` - 内联代码(自动识别 Cirru/JSON) -- `--leaf` - 强制作为 leaf 节点(符号或字符串) -- `-j ''` / `-f ` / `-s` (stdin) - -**推荐工作流:** +要求查看 Calcit 命令行工具的用法: ```bash -# 1. 搜索定位 -cr query search "target" -f namespace/def -l - -# 2. 确认节点(命令会显示子节点和路径) -cr tree show namespace/def -p "" - -# 3. 执行修改(命令会显示 Before/After 和验证提示) -cr tree replace namespace/def -p "" --leaf -e '' - -# 4. 批量修改:从后往前或重新搜索 -cr tree delete namespace/def -p "3,2,3" # 先删大索引 -cr tree delete namespace/def -p "3,2,2" -``` - -**关键技巧:** - -- 使用 `cr query search` 快速定位路径 -- `cr tree show` 输出会标注每个子节点的索引 -- 遇到路径错误时,命令会自动显示最长有效路径和可用子节点 -- 所有修改操作都会显示 Preview 和 Verify 命令 - -详细参数和示例使用 `cr tree --help` 查看。 - -### 代码编辑 (`cr edit`) - -直接编辑 compact.cirru 项目代码,支持三种输入方式: - -- `--file ` 或 `-f ` - 从文件读取(默认 Cirru 格式,使用 `-J` 指定 JSON) -- `--json ` 或 `-j ` - 内联 JSON 字符串 -- `--stdin` 或 `-s` - 从标准输入读取(默认 Cirru 格式,使用 `-J` 指定 JSON) - -额外支持“内联代码”参数: - -- `--code ` 或 `-e `:直接在命令行里传入一段代码。 - - 默认按 **Cirru 单行表达式(one-liner)** 解析。 - - 如果输入“看起来像 JSON”(例如 `-e '"abc"'`,或 `-e '["a"]'` 这类 `[...]` 且包含 `"`),则会按 JSON 解析。 - - ⚠️ 当输入看起来像 JSON 但 JSON 不合法时,会直接报错(不会回退当成 Cirru one-liner)。 - -对 `--file/--stdin` 输入,还支持以下“格式开关”(与 `-J/--json-input` 类似): - -- `--leaf`:把输入当成 **leaf 节点**,直接使用 Cirru 符号或 `|text` 字符串,无需 JSON 引号。 - - 传入符号:`-e 'my-symbol'` - - 传入字符串:加 Cirru 字符串前缀 `|` 或 `"`,例如 `-e '|my string'` 或 `-e '"my string'` - -⚠️ 注意:这些开关彼此互斥(一次只用一个)。 - -**推荐简化规则(命令行更好写):** - -- **JSON(单行)**:优先用 `-j ''` 或 `-e ''`(不需要 `-J`)。 -- **Cirru 单行表达式**:用 `-e ''`(`-e` 默认按 one-liner 解析)。 -- **Cirru 多行缩进**:用 `-f file.cirru` 或 `-s`(stdin)。 -- `-J/--json-input` 主要用于 **file/stdin** 读入 JSON(如 `-f code.json -J` 或 `-s -J`)。 - -补充:`-e/--code` 只有在 `[...]` 内部包含 `"` 时才会自动按 JSON 解析(例如 `-e '["a"]'`)。 -像 `-e '[]'` / `-e '[ ]'` 会默认按 Cirru one-liner 处理;如果你需要“空 JSON 数组”,用显式 JSON:`-j '[]'`。 - -如果你想在命令行里明确“这段就是 JSON”,请用 `-j ''`(`-J` 是给 file/stdin 用的)。 - -**定义操作:** - -- `cr edit def ` - 添加新定义(若已存在会报错,需用 `cr tree replace` 修改) -- `cr edit rm-def ` - 删除定义 -- `cr edit doc ''` - 更新定义的文档 -- `cr edit examples ` - 设置定义的示例代码(批量替换) -- `cr edit add-example ` - 添加单个示例 -- `cr edit rm-example ` - 删除指定索引的示例(0-based) - -**命名空间操作:** - -- `cr edit add-ns ` - 添加命名空间 -- `cr edit rm-ns ` - 删除命名空间 -- `cr edit imports ` - 更新导入规则(全量替换) -- `cr edit add-import ` - 添加单个 import 规则 -- `cr edit rm-import ` - 移除指定来源的 import 规则 -- `cr edit ns-doc ''` - 更新命名空间文档 - -**模块和配置:** - -- `cr edit add-module ` - 添加模块依赖 -- `cr edit rm-module ` - 删除模块依赖 -- `cr edit config ` - 设置配置(key: init-fn, reload-fn, version) - -**增量变更导出:** - -- `cr edit inc` - 描述增量代码变更并导出到 `.compact-inc.cirru` - - `--added "namespace/definition"` - 标记新增的定义 - - `--changed "namespace/definition"` - 标记修改的定义 - - `--removed "namespace/definition"` - 标记删除的定义 - - `--added-ns "namespace"` - 标记新增的命名空间 - - `--removed-ns "namespace"` - 标记删除的命名空间 - - `--ns-updated "namespace"` - 标记命名空间导入变更 - - 配合 watcher 使用实现热更新(详见"开发调试"章节) - -使用 `--help` 参数了解详细的输入方式和参数选项。 - ---- - -## Calcit 语言基础 - -### Cirru 语法核心概念 - -**与其他 Lisp 的区别:** - -- **缩进语法**:用缩进代替括号(类似 Python/YAML),单行用空格分隔 -- **字符串前缀**:`|hello` 或 `"hello"` 表示字符串,`|` 前缀更简洁 -- **无方括号花括号**:只用圆括号概念(体现在 JSON 转换中),Cirru 文本层面无括号 - -**常见混淆点:** - -❌ **错误理解:** Calcit 字符串是 `"x"` → JSON 是 `"\"x\""` -✅ **正确理解:** Cirru `|x` → JSON `"x"`,Cirru `"x"` → JSON `"x"` - -**示例对照:** - -| Cirru 代码 | JSON 等价 | JavaScript 等价 | -| ---------------- | -------------------------------- | ------------------------ | -| `\|hello` | `"hello"` | `"hello"` | -| `"world"` | `"world"` | `"world"` | -| `\|a b c` | `"a b c"` | `"a b c"` | -| `fn (x) (+ x 1)` | `["fn", ["x"], ["+", "x", "1"]]` | `fn(x) { return x + 1 }` | - -### 数据结构:Tuple vs Vector - -Calcit 特有的两种序列类型: - -**Tuple (`::`)** - 不可变、用于模式匹配 - -```cirru -; 创建 tuple -:: :event/type data - -; 模式匹配 -tag-match event - (:event/click data) (handle-click data) - (:event/input text) (handle-input text) -``` - -**Vector (`[]`)** - 可变、用于列表操作 - -```cirru -; 创建 vector -[] item1 item2 item3 - -; DOM 列表 -div {} $ [] - button {} |Click - span {} |Text +cr docs agents --full ``` -**常见错误:** - -```cirru -; ❌ 错误:用 vector 传事件 -send-event! $ [] :clipboard/read text -; 报错:tag-match expected tuple - -; ✅ 正确:用 tuple -send-event! $ :: :clipboard/read text -``` - -### 其他易错点 - -比较容易犯的错误: - -- Calcit 中字符串通过前缀区分,`|` 和 `"` 开头表示字符串。`|x` 对应 JavaScript 字符串 `"x"`。产生 JSON 时注意不要重复包裹引号。 -- Calcit 采用 Cirru 缩进语法,可以理解成去掉跨行括号改用缩进的 Lisp 变种。用 `cr cirru parse` 和 `cr cirru format` 互相转化试验。 -- Calcit 跟 Clojure 在语义上比较像,但语法层面只用圆括号,不用方括号花括号。 - ---- - -## 开发调试 - -简单脚本用 `cr -1 ` 直接执行。编译 JavaScript 用 `cr -1 js` 执行一次编译。 - -Calcit snapshot 文件中 config 有 `init-fn` 和 `reload-fn` 配置: - -- 初次启动调用 `init-fn` -- 每次修改代码后调用 `reload-fn` - -**典型开发流程:** +按需查看 Respo 模块的用法: ```bash -# 1. 检查代码正确性 -cr --check-only - -# 2. 执行程序(一次性) -cr -1 - -# 3. 编译 JavaScript(一次性) -cr -1 js - -# 4. 进入监听模式开发 -cr # 解释执行模式 -cr js # JS 编译模式 +cr libs readme respo.calcit -f docs/Respo-Agent.md ``` -### 增量触发更新(推荐)⭐⭐⭐ - -当使用监听模式(`cr` 或 `cr js`)开发时,推荐使用 `cr edit inc` 命令触发增量更新,而非全量重新编译/执行: +## LLM 执行效率优化(不重复 llms/Calcit.md) -**工作流程:** - -```bash -# 【终端 1】启动 watcher(监听模式) -cr # 或 cr js +- **先定位再修改**:先读结构/需求,再做最小变更,避免“改一处→报错→补救”式迭代。 +- **缓存上下文**:记录你已经确认的定义位置与修改点,避免重复搜索相同目标。 +- **优先局部替换**:只替换目标节点或小段结构,避免整段重写导致结构漂移。 +- **拆分复杂改动**:把 UI 改动与逻辑改动拆开,减少单次变更影响面。 +- **尽量复用已有组件/样式**:优先扩展已有样式/组件,而不是新增并重复实现。 +- **检查生成代码风险点**:处理 `let`、map 结构、属性 map 的键值对等高风险结构时,先确认结构是否符合预期,再替换。 +- **利用 diff 控制范围**:在多次修改后随时对比 diff,避免无关变更积累。 +- **编译前自检**:对于复杂变更,先手动检查节点结构(比如嵌套列表、属性 map、函数参数形态)再编译。 +- **输出稳定性优先**:避免频繁调整格式或样式细节,优先保证逻辑稳定与可读性。 -# 【终端 2】修改代码后触发增量更新 -# 修改定义 -cr edit def app.core/my-fn -e 'defn my-fn (x) (+ x 1)' +## 常见错误与正确做法(结合本项目实践) -# 触发增量更新 -cr edit inc --changed "app.core/my-fn" +- **`let` 只保留最后一个表达式**:多个表达式需要包一层 `div`/`do`,否则前面的节点会被丢掉。 +- **属性 map 必须是成对键值**:避免把 `:style` 与 `:inner-text` 写在同一个 pair 内;每个属性单独成对。 +- **避免生成“可调用字符串”**:形如 `(<> ((str ...)))` 会变成调用结果,正确写法为 `<> $ str ...`。 +- **列表 vs set**:`keys` 返回 set,拼接前先 `.to-list`,再 `concat`。 +- **pairs 列表转 map**:不要用 `.to-map` 处理 list,改用 `pairs-map`。 +- **函数调用与变量区分**:`week-start` 这类变量必须 is-leaf,避免成为单元素 list 导致被当做“函数调用”。 +- **数值与单位风险**:CSS 属性如 `flex`, `font-weight`, `line-height`, `z-index` 若使用单纯数字,Respo 会自动拼接 `px` 单位。必须改为字符串形式,例如 `:flex "\"1"` 或 `:font-weight "\"300"`。 +- **结构化编辑优先**:严禁直接编辑 `compact.cirru`,必须使用 `cr tree replace` 或 `cr edit def` 等命令。建议先通过 `cr query search 'keyword' -f 'ns/def'` 精确获得 node 路径。 +- **性能优化准则**:对于动态生成的列表(如任务项),应将静态样式从内联 `:style` 提取到 `defstyle` 中,通过 `:class-name` 引用以提升虚拟 DOM 性能。 +- **排序逻辑翻转**:翻转列表排序应直接修改 `sort` 函数所用比较器的返回分支(如将 `if ret 1 -1` 翻转为 `if ret -1 1`)。 -# 等待 ~300ms 后查看编译结果 -cr query error ``` -**增量更新命令参数:** - -```bash -# 新增定义 -cr edit inc --added "namespace/definition" - -# 修改定义 -cr edit inc --changed "namespace/definition" - -# 删除定义 -cr edit inc --removed "namespace/definition" - -# 新增命名空间 -cr edit inc --added-ns "namespace" - -# 删除命名空间 -cr edit inc --removed-ns "namespace" - -# 更新命名空间导入 -cr edit inc --ns-updated "namespace" - -# 组合使用(批量更新) -cr edit inc \ - --changed "app.core/add" \ - --changed "app.core/multiply" \ - --removed "app.core/old-fn" ``` - -**查看编译结果:** - -```bash -cr query error # 命令会显示详细的错误信息或成功状态 -``` - -**何时使用全量操作:** - -```bash -# 大量修改或需要完全刷新时 -cr --check-only # 快速语法检查 -cr -1 # 重新执行程序 -cr -1 js # 重新编译 JavaScript - -# 或重启监听模式 -# Ctrl+C 停止 watcher,然后重新运行: -cr # 或 cr js -``` - -**增量更新优势:** 快速反馈、精确控制变更范围、watcher 保持运行状态 - ---- - -## 文档支持 - -遇到疑问时使用: - -- `cr docs search ` - 搜索 Calcit 教程内容 -- `cr docs read ` - 阅读完整文档 -- `cr docs list` - 查看所有可用文档 -- `cr query ns ` - 查看命名空间说明和函数文档 -- `cr query peek ` - 快速查看定义签名 -- `cr query def ` - 读取完整语法树 -- `cr query examples ` - 查看示例代码 -- `cr query find ` - 跨命名空间搜索符号 -- `cr query usages ` - 查找定义的使用位置 -- `cr query search -p ` - 搜索叶子节点 -- `cr query search-pattern -p ` - 搜索结构模式 -- `cr query error` - 查看最近的错误堆栈 - ---- - -## 代码修改示例 - -**添加新函数:** - -````bash -# Cirru one liner -cr edit def app.core/multiply -e 'defn multiply (x y) (* x y)' -# 基本操作:** - -```bash -# 添加新函数(命令会提示 Next steps) -cr edit def 'app.core/multiply' -e 'defn multiply (x y) (* x y)' - -# 替换整个定义(-p "" 表示根路径) -cr tree replace 'app.core/multiply' -p "" -e 'defn multiply (x y z) (* x y z)' - -# 更新文档和示例 -cr edit doc 'app.core/multiply' '乘法函数,返回两个数的积' -cr edit add-example 'app.core/multiply' -e 'multiply 5 6' -```` - -**修改定义工作流(命令会显示子节点索引和 Next steps):** - -```bash -# 1. 搜索定位 -cr query search '' -f 'ns/def' -l - -# 2. 查看节点(输出会显示索引和操作提示) -cr tree show 'ns/def' -p "" - -# 3. 执行替换(会显示 diff 和验证命令) -cr tree replace 'ns/def' -p "" --leaf -e '' - -# 4. 检查结果 -cr query error -# 添加命名空间 -cr edit add-ns app.util - -# 添加导入规则 -cr edit add-import app.main -e 'app.util :refer $ helper' - -# 移除导入规则 -cr edit rm-import app.main app.util - -# 更新项目配置 -cr edit config init-fn app.main/main! -``` - -**更新命名空间导入(全量替换):** - -```bash -cr edit imports app.main -j '[["app.lib", ":as", "lib"], ["app.util", ":refer", ["helper"]]]' -``` - ---- - -## ⚠️ 常见陷阱和最佳实践 - -### 1. 路径索引动态变化问题 ⭐⭐⭐ - -**核心原则:** 删除/插入会改变同级后续节点索引。 - -**批量修改策略:** - -- **从后往前操作**(推荐):先删大索引,再删小索引 -- **单次操作后重新搜索**:每次修改立即用 `cr query search` 更新路径 -- **整体重写**:用 `cr tree replace -p ""` 替换整个定义 - -命令会在路径错误时提示最长有效路径和可用子节点。 - -### 2. 输入格式参数使用速查 ⭐⭐⭐ - -**参数混淆矩阵(已全面支持 `-e` 自动识别):** - -| 场景 | 示例用法 | 解析结果 | 说明 | -| ------------------- | -------------------------------------- | ----------------------------- | --------------------------------- | -| **表达式 (Cirru)** | `-e 'defn add (a b) (+ a b)'` | `["defn", "add", ...]` (List) | 默认按 Cirru one-liner 解析 | -| **原子符号 (Leaf)** | `--leaf -e 'my-symbol'` | `"my-symbol"` (Leaf) | **推荐**,避免被包装成 list | -| **字符串 (Leaf)** | `--leaf -e '\|hello world'` | `"hello world"` (Leaf) | 符号前缀 `\|` 表示字符串 | -| **JSON 数组** | `-e '["+", "x", "1"]'` | `["+", "x", "1"]` (List) | **自动识别** (含 `[` 且有 `"`) | -| **JSON 字符串** | `-e '"my leaf"'` | `"my leaf"` (Leaf) | **自动识别** (含引用的字符串) | -| **内联 JSON** | `-j '["defn", ...]'` | `["defn", ...]` (List) | 显式按 JSON 解析,忽略 Cirru 规则 | -| **外部文件** | `-f code.cirru` (或 `-f code.json -J`) | 根据文件内容解析 | `-J` 用于标记文件内是 JSON | - -**核心规则:** - -1. **智能识别模式**:`-e / --code` 现在会自动识别 JSON。如果你传入 `["a"]` 或 `"a"`,它会直接按 JSON 处理,无需再额外加 `-J` 或 `-j`。 -2. **强制 Leaf 模式**:如果你需要确保输入是一个叶子节点(符号或字符串),请在任何地方使用 `--leaf` 开关。它会将原始输入直接作为内容,不经过任何解析。 -3. **显式 JSON 模式**:如果你想明确告诉工具“这段就是 JSON”,优先用 `-j ''`。 -4. **统一性**:`cr tree` 和 `cr edit` 的所有子命令(replace, def, insert 等)现在共享完全相同的输入解析逻辑。 - -**实战示例:** - -```bash -# ✅ 替换表达式 -cr tree replace app.main/fn -p "2" -e 'println |hello' - -# ✅ 替换 leaf(推荐 --leaf) -cr tree replace app.main/fn -p "2,0" --leaf -e 'new-symbol' - -# ✅ 替换字符串 leaf -cr tree replace app.main/fn -p "2,1" --leaf -e '|new text' - -# ❌ 避免:用 -e 传单个 token(会变成 list) -cr tree replace app.main/fn -p "2,0" -e 'symbol' # 结果:["symbol"] -``` - -### 3. Cirru 字符串和数据类型 ⭐⭐ - -**Cirru 字符串前缀:** - -| Cirru 写法 | JSON 等价 | 使用场景 | -| -------------- | -------------- | ------------ | -| `\|hello` | `"hello"` | 推荐,简洁 | -| `"hello"` | `"hello"` | 也可以 | -| `\|a b c` | `"a b c"` | 包含空格 | -| `\|[tag] text` | `"[tag] text"` | 包含特殊字符 | - -**Tuple vs Vector:** - -```cirru -; ✅ Tuple - 用于事件、模式匹配 -:: :clipboard/read text - -; ✅ Vector - 用于 DOM 列表 -[] (button) (div) - -; ❌ 错误:用 vector 传事件 -send-to-component! $ [] :clipboard/read text -; 报错:tag-match expected tuple - -; ✅ 正确:用 tuple -send-to-component! $ :: :clipboard/read text -``` - -**记忆规则:** - -- **`::` (tuple)**: 事件、模式匹配、不可变数据结构 -- **`[]` (vector)**: DOM 元素列表、动态集合 - -### 4. 推荐工作流程 - -**基本流程(命令会显示子节点索引、Next steps、批量重命名提示):** - -```bash -# 1. 搜索定位 -cr query search '' -f 'ns/def' -l - -# 2. 查看节点(会显示索引和操作提示) -cr tree show 'ns/def' -p "" - -# 3. 执行修改(会显示 diff 和验证命令) -cr tree replace 'ns/def' -p "" --leaf -e '' - -# 4. 验证 -cr query error -``` - -**批量修改提示:** 命令会自动检测多匹配场景,显示从大到小的路径排序和重要警告。 - ---- - -## 常见错误排查 - -| 错误信息 | 原因 | 解决方法 | -| ---------------------------- | ----------------------- | --------------------------------- | -| `Path index X out of bounds` | 路径已过期 | 重新运行 `cr query search` | -| `tag-match expected tuple` | 传入 vector 而非 tuple | 改用 `::` | -| 字符串被拆分 | 没有用 `\|` 或 `"` 包裹 | 使用 `\|complete string` | -| `unexpected format` | 语法错误 | 用 `cr cirru parse ''` 验证 | - -**调试命令:** `cr query error`(会显示详细提示)、`cr --check-only` diff --git a/README.md b/README.md index 0cea415..89dd1a5 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,19 @@ ## Respo alerts library in Calcit-js -> Respo web page based on calcit-js. +> Respo alert/prompt/confirm/modal helpers for calcit-js. Demo http://repo.respo-mvc.org/alerts.calcit/ . ### Hooks usages -```cirru -respo-alerts.core :refer $ use-alert use-prompt use-confirm +```cirru.no-run +ns app.main + :require + respo-alerts.core :refer $ use-alert use-prompt use-confirm use-modal use-modal-menu use-drawer ``` +> Snippets below are API-focused fragments. They are written as self-contained `cirru`/`cirru.no-run` snippets for stricter markdown validation. + #### `use-alert` ```cirru @@ -18,23 +22,37 @@ respo-alerts.core :refer $ use-alert use-prompt use-confirm :style $ {} :card-style $ {} :backdrop-style $ {} - :card-class style-card - :backdrop-class style-backdrop - :confirm-class style-confirm + :card-class "|style-card" + :backdrop-class "|style-backdrop" + :confirm-class "|style-confirm" ``` -```cirru +```cirru.no-run +ns app.main + :require + respo-alerts.core :refer $ use-alert + respo.core :refer $ >> + let + states $ {} (:cursor $ []) alert-plugin $ use-alert (>> states :alert) ({} (:text "|demo")) - button $ {} - :on-click $ fn (e d!) - .show alert-plugin d! + on-click $ fn (e dispatch!) + .show alert-plugin dispatch! ``` extra argument can be added to overwrite `:text` field: -```cirru -.show alert-plugin d! "|Extra text" +```cirru.no-run +ns app.main + :require + respo-alerts.core :refer $ use-alert + respo.core :refer $ >> + +let + states $ {} (:cursor $ []) + alert-plugin $ use-alert (>> states :alert) ({} (:text "|demo")) + on-click $ fn (e dispatch!) + .show alert-plugin dispatch! "|Extra text" ``` #### `use-confirm` @@ -45,22 +63,24 @@ extra argument can be added to overwrite `:text` field: :style $ {} :card-style $ {} :backdrop-style $ {} - :card-class style-card - :backdrop-class style-backdrop - :confirm-class style-confirm + :card-class "|style-card" + :backdrop-class "|style-backdrop" + :confirm-class "|style-confirm" ``` -```cirru +```cirru.no-run +ns app.main + :require + respo-alerts.core :refer $ use-confirm + respo.core :refer $ >> + let - confirm-plugin $ use-confirm (>> states :alert) ({} (:text "|demo")) - button - {} - :on-click $ fn (e d!) - ; "open UI" - .show confirm-plugin d! $ fn () - println "|after confirmed" + states $ {} (:cursor $ []) + confirm-plugin $ use-confirm (>> states :confirm) ({} (:text "|demo")) + on-click $ fn (e dispatch!) + .show confirm-plugin dispatch! $ fn () + println "|after confirmed" - ; "render UI" .render confirm-plugin ``` @@ -73,9 +93,9 @@ let :input-style $ {} :card-style $ {} :backdrop-style $ {} - :card-class style-card - :backdrop-class style-backdrop - :confirm-class style-confirm + :card-class "|style-card" + :backdrop-class "|style-backdrop" + :confirm-class "|style-confirm" :multiline? false :initial "|default text" :placeholder "|input" @@ -84,129 +104,186 @@ let if (blank? x) "|Blank failed" nil ``` -```cirru +```cirru.no-check +ns app.main + :require + respo-alerts.core :refer $ use-prompt + respo.core :refer $ >> + let + states $ {} (:cursor $ []) prompt-plugin $ use-prompt (>> states :prompt) ({} (:text "|demo")) - button $ {} - :on-click $ fn (e d!) - .show prompt-plugin d! $ fn (text) + on-click $ fn (e dispatch!) + .show prompt-plugin dispatch! $ fn (text) println "|read from prompt" (pr-str text) - ; "render UI" .render prompt-plugin ``` #### `use-modal` -```cirru +```cirru.no-run +ns app.main + :require + respo-alerts.core :refer $ use-modal + respo.core :refer $ >> + let + states $ {} (:cursor $ []) demo-modal $ use-modal (>> states :modal) $ {} :title "|demo" :style $ {} (:width 400) :container-style $ {} :backdrop-style $ {} - :card-class style-card - :backdrop-class style-backdrop - :confirm-class style-confirm + :card-class "|style-card" + :backdrop-class "|style-backdrop" + :confirm-class "|style-confirm" :render $ fn (on-close) - div ({}) - <> "|Place for child content" - - ; "event handler to open menu" - .show demo-modal d! - - ; "render UI" + , nil + on-click $ fn (e dispatch!) + .show demo-modal dispatch! .render demo-modal ``` #### `use-modal-menu` -```cirru +```cirru.no-run +ns app.main + :require + respo-alerts.core :refer $ use-modal-menu + respo.core :refer $ >> + let + states $ {} (:cursor $ []) demo-modal-menu $ use-modal-menu (>> states :modal-menu) $ {} :title "|Demo" :style $ {} (:width 300) :backdrop-style $ {} - :card-class style-card - :backdrop-class style-backdrop - :confirm-class style-confirm + :card-class "|style-card" + :backdrop-class "|style-backdrop" + :confirm-class "|style-confirm" :items $ [] :: :item |a |A - :: :item |b $ div ({}) (<> "|B") - :on-result $ fn (result d!) + :: :item |b |B + :on-result $ fn (result dispatch!) println "|got result" result - - ; "event handler to open menu" - .show demo-modal-menu d! - - ; "render UI" + on-click $ fn (e dispatch!) + .show demo-modal-menu dispatch! .render demo-modal-menu ``` #### `use-drawer` -```cirru +```cirru.no-run +ns app.main + :require + respo-alerts.core :refer $ use-drawer + respo.core :refer $ >> + let + states $ {} (:cursor $ []) demo-drawer $ use-drawer (>> states :drawer) $ {} :title "|demo" :style $ {} (:width 400) :container-style $ {} :backdrop-style $ {} - :card-class style-card - :backdrop-class style-backdrop - :confirm-class style-confirm + :card-class "|style-card" + :backdrop-class "|style-backdrop" + :confirm-class "|style-confirm" :render $ fn (on-close) - div ({}) - <> "|Place for child content" - - ; "event handler to open menu" - .show demo-drawer d! - - ; "render UI" + , nil + on-click $ fn (e dispatch!) + .show demo-drawer dispatch! .render demo-drawer ``` > No hooks API for `comp-select` yet. +### Practical component pattern + +From real demo usage in `compact.cirru`, a common pattern is: create plugins with `>> states :key`, trigger them in `on-click`, then render plugin nodes at the end. + +```cirru.no-run +ns app.main + :require + respo-alerts.core :refer $ use-alert use-confirm use-prompt + respo.core :refer $ defcomp >> div button + +defcomp comp-hooks-demo (states) + let + alert-plugin $ use-alert (>> states :alert) ({} (:text "|demo")) + confirm-plugin $ use-confirm (>> states :confirm) ({} (:text "|confirm?")) + prompt-plugin $ use-prompt (>> states :prompt) ({} (:text "|input text")) + div ({}) + button + {} (:inner-text "|show alert") + :on-click $ fn (e dispatch!) + .show alert-plugin dispatch! + button + {} (:inner-text "|show confirm") + :on-click $ fn (e dispatch!) + .show confirm-plugin dispatch! $ fn () + println "|after confirmed" + button + {} (:inner-text "|show prompt") + :on-click $ fn (e dispatch!) + .show prompt-plugin dispatch! $ fn (text) + println text + .render alert-plugin + .render confirm-plugin + .render prompt-plugin +``` + ### Components `comp-modal` for rendering modal without child: -```cirru +```cirru.no-run +ns app.main + :require + respo-alerts.core :refer $ comp-modal + let - on-close $ fn (d!) - d! cursor (assoc state :show? false) + show? true + on-close $ fn (dispatch!) + , dispatch! comp-modal {} :title "|Demo" :style $ {} (:width 400) :container-style $ {} :backdrop-style $ {} - :card-class style-card - :backdrop-class style-backdrop - :confirm-class style-confirm + :card-class "|style-card" + :backdrop-class "|style-backdrop" + :confirm-class "|style-confirm" :render $ fn (on-close) - div ({}) - <> "|Place for child content" + , on-close , show? on-close ``` -```cirru -comp-modal-menu (:show-modal-menu? state) - {} (:title "|Demo") - :style $ {} (:width 300) - :backdrop-style $ {} - :card-class style-card - :backdrop-class style-backdrop - :confirm-class style-confirm - [] - :: :item |a |A - :: :item |b $ div ({}) (<> "|B") - fn (d!) - d! cursor (assoc state :show-modal-menu? false) - fn (result d!) - println "|result" result - d! cursor (assoc state :show-modal-menu? false) +```cirru.no-check +ns app.main + :require + respo-alerts.core :refer $ comp-modal-menu + +let + state $ {} (:show-modal-menu? true) + cursor nil + comp-modal-menu (:show-modal-menu? state) + {} (:title "|Demo") + :style $ {} (:width 300) + :backdrop-style $ {} + :card-class "|style-card" + :backdrop-class "|style-backdrop" + :confirm-class "|style-confirm" + [] + :: :item |a |A + :: :item |b |B + fn (dispatch!) + dispatch! cursor (assoc state :show-modal-menu? false) + fn (result dispatch!) + println "|result" result + dispatch! cursor (assoc state :show-modal-menu? false) ``` ### Workflow diff --git a/calcit.cirru b/calcit.cirru deleted file mode 100644 index 4c4622e..0000000 --- a/calcit.cirru +++ /dev/null @@ -1,6850 +0,0 @@ - -{} (:package |respo-alerts) - :configs $ {} (:init-fn |respo-alerts.main/main!) (:reload-fn |respo-alerts.main/reload!) (:version |0.10.4) - :modules $ [] |lilac/ |memof/ |respo.calcit/ |respo-ui.calcit/ |reel.calcit/ - :entries $ {} - :files $ {} - |respo-alerts.comp.container $ %{} :FileEntry - :defs $ {} - |comp-container $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |defcomp) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |comp-container) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |reel) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |store) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:store) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |reel) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |states) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:states) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |store) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |state) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |either) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:data) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |states) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:selected) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"") - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:show-modal?) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |false) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:show-modal-menu?) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |false) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:class-name) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |str-spaced) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |css/global) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |css/fullscreen) - |Z $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |css/column) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:padding) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |20) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |a) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:href) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"https://respo-mvc.org/") - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:target) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"_blank") - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |img) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:class-name) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |style-logo) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:src) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"https://cos-sh.tiye.me/cos-up/bb4c2755050318e864b56f59145d726e-SubstractRespo.png") - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |=<) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |nil) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |40) - |b $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |comp-hooks-usages) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |>>) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |states) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:hooks) - |d $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |=<) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |nil) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |40) - |f $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |comp-controlled-modals) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |>>) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |states) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:controlled) - |h $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |=<) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |nil) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |40) - |j $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |comp-demo-trigger) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |>>) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |states) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:trigger) - |l $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |when) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |dev?) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |comp-inspect) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"states") - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |states) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:bottom) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |0) - |n $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |when) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |dev?) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |comp-reel) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |>>) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |states) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:reel) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |reel) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - :examples $ [] - |comp-controlled-modals $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |defcomp) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |comp-controlled-modals) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |states) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |demo-modal) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |use-modal) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |>>) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |states) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:modal) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:title) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"demo") - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:width) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |400) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:container-style) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |b $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:backdrop-style) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |d $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:render) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |on-close) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |<>) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"Place for child content") - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |button) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:class-name) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |css/button) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:inner-text) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"Close") - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |on-close) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |d!) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |demo-modal-menu) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |use-modal-menu) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |>>) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |states) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:modal-menu) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:title) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"Demo") - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:width) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |300) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:items) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |[]) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |::) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:item) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"a") - |Z $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"A") - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |::) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:item) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"b") - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |<>) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"B") - |b $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:on-result) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |result) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |println) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"got result") - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |result) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |demo-drawer) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |use-drawer) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |>>) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |states) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:drawer) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:title) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"demo") - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |;) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:width) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |400) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:container-style) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |b $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:backdrop-style) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |d $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:render) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |on-close) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |<>) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"Place for child content") - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |button) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:class-name) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |css/button) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:inner-text) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"Close") - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |on-close) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |<>) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"Modal usage") - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:padding) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"8px 0px") - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |button) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:inner-text) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"show modal") - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:class-name) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |css/button) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |.show) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |demo-modal) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |d!) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |=<) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |8) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |nil) - |b $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |button) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:inner-text) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"show modal menu") - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:class-name) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |css/button) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |.show) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |demo-modal-menu) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |d!) - |d $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |=<) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |8) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |nil) - |f $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |button) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:inner-text) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"show drawer") - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:class-name) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |css/button) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |.show) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |demo-drawer) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |d!) - |h $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |.render) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |demo-modal) - |j $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |.render) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |demo-modal-menu) - |l $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |.render) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |demo-drawer) - :examples $ [] - |comp-demo-trigger $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |defcomp) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |comp-demo-trigger) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |states) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |cursor) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:cursor) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |states) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |state) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |either) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:data) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |states) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:visible?) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |false) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |<>) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"Trigger") - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |comp-trigger) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:visible?) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |state) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |button) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:inner-text) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"Toggle") - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:class-name) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |css/button) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |update) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:visible?) - |Z $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |not) - :examples $ [] - |comp-hooks-usages $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |defcomp) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |comp-hooks-usages) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |states) - |Z $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |alert-plugin) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |use-alert) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |>>) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |states) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:alert) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:title) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text "|\"demo") - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |alert-text-plugin) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |use-alert) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |>>) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |states) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:alert-text) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:title) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text "|\"demo") - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |confirm-plugin) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |use-confirm) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |>>) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |states) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:confirm) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:title) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text "|\"demo") - |Z $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |prompt-plugin) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |use-prompt) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |>>) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |states) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:prompt) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:title) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text "|\"demo") - |b $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |prompt-multilines-plugin) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |use-prompt) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |>>) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |states) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:multilines-prompt) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:title) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text "|\"demo multilines") - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:text) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text "|\"This would be a very long content of alerts, like some prompt... write multiple lines:") - |Z $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:initial) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |str) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |rand-int) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |100) - |b $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |{}) - |d $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:input-class) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |css/font-code!) - |f $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:multiline?) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |true) - |d $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |prompt-validation-plugin) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |use-prompt) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |>>) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |states) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:validation-prompt) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:titl) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text "|\"validated") - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:text) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text "|\"This would be a very long content of alerts, like some prompt... write multiple lines:") - |Z $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:initial) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |str) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |rand-int) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |100) - |b $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |{}) - |d $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:input-class) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |css/font-code!) - |f $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:multiline?) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |true) - |h $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:validator) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |x) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |try) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |do) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |parse-cirru) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |x) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |nil) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |e) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |str) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |e) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |{}) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |{}) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |<>) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text "|\"Hooks") - |Z $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |{}) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |comp-trigger) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |.show?) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |alert-plugin) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |button) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:inner-text) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text "|\"show alert") - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:class-name) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |css/button) - |Z $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |.show) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |alert-plugin) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |d!) - |Z $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |=<) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |8) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |nil) - |b $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |button) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:inner-text) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text "|\"show alert text") - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:class-name) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |css/button) - |Z $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |.show) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |alert-text-plugin) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |d!) - |Z $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text "|\"DEMO text") - |d $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |=<) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |8) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |nil) - |f $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |button) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:inner-text) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text "|\"show confirm") - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:class-name) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |css/button) - |Z $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |.show) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |confirm-plugin) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |d!) - |Z $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |println) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text "|\"after confirmed") - |h $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |=<) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |8) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |nil) - |j $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |button) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:inner-text) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text "||show confirm with text") - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:class-name) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |css/button) - |Z $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |text) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |js/prompt) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text "||Input confirm text") - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |if) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |not) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |blank?) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |text) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |.show-with-text) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |confirm-plugin) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |d!) - |Z $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |str) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text "||Confirmed: ") - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |text) - |b $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |println) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text "||after confirmed") - |l $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |=<) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |8) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |nil) - |n $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |button) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:inner-text) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text "|\"show prompt") - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:class-name) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |css/button) - |Z $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |.show) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |prompt-plugin) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |d!) - |Z $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |text) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |println) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text "|\"read from prompt") - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |to-lispy-string) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |text) - |p $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |=<) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |8) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |nil) - |r $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |button) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:inner-text) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text "|\"show multilines prompt") - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:class-name) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |css/button) - |Z $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |.show) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |prompt-multilines-plugin) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |d!) - |Z $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |text) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |println) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text "|\"read from prompt") - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |to-lispy-string) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |text) - |t $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |=<) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |8) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |nil) - |v $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |comp-trigger) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |.show?) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |prompt-validation-plugin) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |button) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:inner-text) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text "|\"show validated prompt") - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:class-name) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |css/button) - |Z $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |.show) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |prompt-validation-plugin) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |d!) - |Z $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |text) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |println) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text "|\"read from prompt") - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |to-lispy-string) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |text) - |b $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |.render) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |alert-plugin) - |d $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |.render) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |confirm-plugin) - |f $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |.render) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |prompt-plugin) - |h $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |.render) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |prompt-multilines-plugin) - |j $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |.render) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |prompt-validation-plugin) - |l $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |.render) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |alert-text-plugin) - :examples $ [] - |style-logo $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |defstyle) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |style-logo) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"&") - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:width) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |120) - :examples $ [] - :ns $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |ns) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo-alerts.comp.container) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:require) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo-ui.core) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:as) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |ui) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo.css) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:refer) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |defstyle) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo-ui.css) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:as) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |css) - |b $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo.core) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:refer) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |defcomp) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |>>) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |<>) - |Z $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |div) - |b $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |button) - |d $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |textarea) - |f $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |span) - |h $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |img) - |j $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |a) - |d $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo.comp.space) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:refer) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |=<) - |f $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |reel.comp.reel) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:refer) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |comp-reel) - |h $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo-alerts.config) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:refer) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |dev?) - |j $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo-alerts.core) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:refer) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |comp-modal) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |comp-modal-menu) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |use-alert) - |Z $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |use-confirm) - |b $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |use-prompt) - |d $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |use-modal) - |f $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |use-modal-menu) - |h $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |use-drawer) - |l $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo.comp.inspect) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:refer) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |comp-inspect) - |n $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo-alerts.style) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:as) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |style) - |p $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"@calcit/std") - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:refer) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |rand-int) - |r $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo-alerts.trigger) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:refer) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |comp-trigger) - |t $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo-alerts.trigger) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:refer) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |comp-trigger) - :examples $ [] - |respo-alerts.config $ %{} :FileEntry - :defs $ {} - |dev? $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |def) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |dev?) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |=) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"dev") - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |get-env) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"mode") - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"release") - :examples $ [] - |site $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |def) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |site) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:dev-ui) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"http://localhost:8100/main-fonts.css") - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:release-ui) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"http://cdn.tiye.me/favored-fonts/main-fonts.css") - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:cdn-url) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"http://cdn.tiye.me/calcit-workflow/") - |b $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:title) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"Alerts") - |d $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:icon) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"http://cdn.tiye.me/logo/respo.png") - |f $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:storage-key) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"respo-alerts") - :examples $ [] - :ns $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |ns) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |respo-alerts.config) - :examples $ [] - |respo-alerts.core $ %{} :FileEntry - :defs $ {} - |%alert-actions $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |defrecord!) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |%alert-actions) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:render) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:plugin) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |node) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |node) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:show) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |d!) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |?) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |text) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:plugin) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |node) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |if) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |some?) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |text) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:show?) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |true) - |b $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:text) - |d $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |text) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:show?) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |true) - |b $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:close) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:plugin) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |node) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:show?) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |false) - |d $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:show?) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:plugin) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |node) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:show?) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - :examples $ [] - |%confirm-actions $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |defrecord!) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |%confirm-actions) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:render) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:plugin) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |node) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |state) - |b $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |*next) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |node) - |Z $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:show) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |self) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |d!) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |next-task) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:plugin) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |node) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |state) - |b $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |*next-confirm-task) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |do) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |.set!) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |*next-confirm-task) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |next-task) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:show?) - |Z $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |true) - |b $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:text) - |d $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |nil) - |b $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:show-with-text) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |self) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |d!) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |text) - |Z $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |next-task) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:plugin) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |node) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |state) - |b $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |*next-confirm-task) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |do) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |.set!) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |*next-confirm-task) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |next-task) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:show?) - |Z $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |true) - |b $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:text) - |d $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |text) - |d $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:close) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |self) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:plugin) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |node) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |state) - |b $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |*next) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:show?) - |Z $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |false) - |f $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:show?) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:plugin) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |node) - |X $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |state) - |V $ %{} :Expr (:at 1767977189547) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |:show?) - |V $ %{} :Leaf (:at 1767977189547) (:by |sync) (:text |state) - :examples $ [] - |%drawer-actions $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |defrecord!) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |%drawer-actions) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:render) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:plugin) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |node) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |node) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:show) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:plugin) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |node) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:show?) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |true) - |b $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:close) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:plugin) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |node) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:show?) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |false) - |d $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:show?) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:plugin) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |node) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:show?) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - :examples $ [] - |%modal-actions $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |defrecord!) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |%modal-actions) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:render) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:plugin) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |node) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |state) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |node) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:show) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |self) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:plugin) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |node) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |state) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:show?) - |Z $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |true) - |b $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:close) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |self) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:plugin) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |node) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |state) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:show?) - |Z $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |false) - |d $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:show?) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:plugin) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |node) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |state) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:show?) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |state) - :examples $ [] - |%modal-menu-actions $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |defrecord!) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |%modal-menu-actions) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:render) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:plugin) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |node) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |node) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:show) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:plugin) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |node) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:show?) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |true) - |b $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:close) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:plugin) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |node) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:show?) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |false) - |d $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:show?) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:plugin) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |node) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:show?) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - :examples $ [] - |%prompt-actions $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |defrecord!) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |%prompt-actions) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:render) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:plugin) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |node) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - |b $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |*next) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |node) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:show) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |d!) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |next-task) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:plugin) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |node) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - |b $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |*next-prompt-task) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |do) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.set!) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |*next-prompt-task) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |next-task) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:show?) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |true) - |b $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:close) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:plugin) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |node) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - |b $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |*next) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:show?) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |false) - |d $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:show?) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |self) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:plugin) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |node) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - |b $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |*next) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:show?) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |state) - :examples $ [] - |comp-alert-modal $ %{} :CodeEntry (:doc "||Alert modal component. Shows a simple message dialog with a confirm button. Used internally by use-alert hook.") - :code $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |defcomp) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |comp-alert-modal) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-read!) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close!) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |[]) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |effect-focus) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |str) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text "|\".") - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |schema/confirm-button-name) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |effect-fade) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:position) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:absolute) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |if) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |str-spaced) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/fullscreen) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/center) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |style-modal-backdrop) - |b $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:backdrop-class) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:backdrop-style) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |event) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:event) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |.!stopPropagation) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |event) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-read!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |b $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |str-spaced) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |style-modal-card) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/global) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/column) - |b $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:card-class) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:card-style) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |nil) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |<>) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |either) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:text) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text "|\"Alert!") - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |=<) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |nil) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |8) - |b $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/row-parted) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |span) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |button) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |str-spaced) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/button) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |schema/confirm-button-name) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:confirm-class) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:confirm-style) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-read!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |<>) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |either) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:confirm-text) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text "|\"Read") - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |comp-esc-listener) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close!) - :examples $ [] - quote $ comp-alert-modal - {} $ :text "|Hello World" - , show? on-read! on-close! - |comp-confirm-modal $ %{} :CodeEntry (:doc "||Confirm modal component. Shows a dialog with confirm and cancel buttons. Used internally by use-confirm hook.") - :code $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |defcomp) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |comp-confirm-modal) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-confirm!) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close!) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |[]) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |effect-focus) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |str) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text "|\".") - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |schema/confirm-button-name) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |effect-fade) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:position) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:absolute) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |if) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |str-spaced) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/fullscreen) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/center) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |style-modal-backdrop) - |b $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:backdrop-class) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:backdrop-style) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |str-spaced) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/global) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/column) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |style-modal-card) - |b $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:card-class) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:card-style) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |nil) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |<>) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |either) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:text) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text "|\"Confirm?") - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |=<) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |nil) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |8) - |b $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/row-parted) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |span) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |button) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |str-spaced) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/button) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |schema/confirm-button-name) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:confirm-class) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-confirm!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |<>) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |either) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:button-text) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text "|\"Confirm") - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |comp-esc-listener) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close!) - :examples $ [] - quote $ comp-confirm-modal - {} $ :text "|Are you sure?" - , show? on-confirm! on-close! - |comp-drawer $ %{} :CodeEntry (:doc "||Drawer component. Renders a sliding panel from the side with custom content via :render function in options.") - :code $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |defcomp) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |comp-drawer) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |[]) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |effect-slide) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |merge) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:position) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:absolute) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:container-style) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |if) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |str-spaced) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/fullscreen) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |style-drawer-backdrop) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:backdrop-class) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:backdrop-style) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |event) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:event) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |.!stopPropagation) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |event) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |str-spaced) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/global) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/column) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |style-drawer-card) - |b $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:card-class) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |merge) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:padding) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |0) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |nil) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |title) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:title) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |if) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |some?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |title) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |str-spaced) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/center) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/font-fancy!) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |style-modal-title) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |<>) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |title) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cond) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |some?) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:render) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:render) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |some?) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:render-body) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:render-body) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |true) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text "|\"TODO render body") - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |comp-esc-listener) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close) - :examples $ [] - quote $ comp-drawer - {} (:title |Settings) - :render $ fn (on-close) - div ({}) (<> |Content) - , show? on-close - |comp-esc-listener $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |defcomp) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |comp-esc-listener) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |show?) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |on-close!) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |[]) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |effect-keydown) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:position) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:absolute) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:on-keydown) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |on-close!) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |d!) - :examples $ [] - |comp-modal $ %{} :CodeEntry (:doc "||Modal component. Renders a modal dialog with custom content via :render function in options.") - :code $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |defcomp) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |comp-modal) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |[]) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |effect-fade) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |merge) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:position) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:absolute) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:container-style) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |if) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |str-spaced) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/fullscreen) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/center) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |style-modal-backdrop) - |b $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:backdrop-class) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:backdrop-style) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |event) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:event) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |.!stopPropagation) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |event) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |str-spaced) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/global) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/column) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |style-modal-card) - |b $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:card-class) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |merge) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:padding) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |0) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:card-style) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |nil) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |title) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:title) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |if) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |some?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |title) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |str-spaced) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/center) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/font-fancy!) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |style-modal-title) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |<>) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |title) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cond) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |some?) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:render) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:render) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |some?) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:render-body) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:render-body) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |true) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text "|\"TODO render body") - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |comp-esc-listener) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close) - :examples $ [] - quote $ comp-modal - {} (:title |Dialog) - :render $ fn (on-close) - div ({}) (<> |Content) - , show? on-close - |comp-modal-menu $ %{} :CodeEntry (:doc "||Modal menu component. Shows a modal dialog with a list of selectable items. Define items via :items in options.") - :code $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |defcomp) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |comp-modal-menu) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close!) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-select!) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |[]) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |effect-fade) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |if) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |str-spaced) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/fullscreen) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/center) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |style-modal-backdrop) - |b $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:backdrop-class) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:backdrop-style) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |event) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:event) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |.!stopPropagation) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |event) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |str-spaced) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/global) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/column) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |style-modal-card) - |b $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:card-class) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |merge) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:padding) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |0) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |nil) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |title) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:title) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |if) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |some?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |title) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |str-spaced) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/row-parted) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/font-fancy!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:padding) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text "|\"4px 8px") - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:color) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |hsl) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |0) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |0) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |70) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |span) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |<>) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |title) - |b $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |span) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:inner-text) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text "|\"Clear") - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |style-clear) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-select!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |nil) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |list->) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |->) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:items) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |map) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |info) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |item) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cond) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |tuple?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |info) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |info) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |map?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |info) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |::) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:item) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |&map:get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |info) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:value) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |&map:get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |info) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:display) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |true) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |raise) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text "|\"Unknown menu item") - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |item) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:item) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |v) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |l) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |[]) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |v) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |style-menu-item) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-select!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |item) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |if) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |string?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |l) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |<>) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |l) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |l) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |comp-esc-listener) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close!) - :examples $ [] - quote $ comp-modal-menu - {} (:title |Choose) - :items $ [] (:: :item |a |A) (:: :item |b |B) - , show? on-close! on-select! - |comp-prompt-modal $ %{} :CodeEntry (:doc "||Prompt modal component. Shows a dialog with text input field and validation. Used internally by use-prompt hook.") - :code $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |defcomp) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |comp-prompt-modal) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |states) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-finish!) - |b $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close!) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |initial-text) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |either) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:initial) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text "|\"") - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:cursor) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |states) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |either) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:data) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |states) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:text) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |initial-text) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:failure) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |nil) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |text) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |either) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:text) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |initial-text) - |b $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |check-submit!) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |validator) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:validator) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |result) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |if) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |validator) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |validator) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |text) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |nil) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |if) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |some?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |result) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:failure) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |result) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |do) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-finish!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |text) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |->) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:text) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |nil) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:failure) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |nil) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |[]) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |effect-select) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |str) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text "|\".") - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |schema/input-box-name) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |effect-fade) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:position) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:absolute) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |if) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |str-spaced) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/fullscreen) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/center) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |style-modal-backdrop) - |b $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:backdrop-class) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |merge) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:line-height) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text "|\"32px") - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:backdrop-style) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |->) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:text) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |nil) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:failure) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |nil) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |str-spaced) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/global) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/column) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |style-modal-card) - |b $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:card-class) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:card-style) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |nil) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |<>) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |either) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:text) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text "|\"Type in text") - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |=<) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |nil) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |8) - |b $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |props) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:value) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |text) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:on-input) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:text) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:value) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:on-keydown) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cond) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |and) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |not=) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |229) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:keycode) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |=) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:key) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text "|\"Enter") - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |if) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:multiline?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |when) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |.-metaKey) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:event) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |check-submit!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |check-submit!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |=) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:key) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text "|\"Escape") - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |true) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |nil) - |b $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:placeholder) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |either) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:placeholder) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text "|\"") - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |if) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:multiline?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |textarea) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |merge) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |props) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |str-spaced) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |schema/input-box-name) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/textarea) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:input-class) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |merge) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:width) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text "|\"100%") - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:min-height) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |120) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:max-height) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text "|\"50vh") - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:input-style) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |input) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |merge) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |props) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |str-spaced) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |schema/input-box-name) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/input) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:input-class) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |merge) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:width) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text "|\"100%") - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:input-style) - |d $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |=<) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |nil) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |16) - |f $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/row-parted) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |failure) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:failure) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |if) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |some?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |failure) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |span) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |merge) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |ui/flex) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:color) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:red) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:line-height) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text "|\"20px") - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:inner-text) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |failure) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |span) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |button) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |str-spaced) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |css/button) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:confirm-class) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:on-click) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |check-submit!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |<>) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |either) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:button-text) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text "|\"Finish") - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |comp-esc-listener) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-close!) - :examples $ [] - quote $ comp-prompt-modal states - {} (:text "|Enter name") (:placeholder |name) - , show? on-finish! on-close! - |effect-fade $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |defeffect) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |effect-fade) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |show?) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |action) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |el) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |at-place?) - |b $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |case-default) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |action) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |nil) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:before-update) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |if) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |show?) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |nil) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |if) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |some?) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-firstElementChild) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |el) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |target) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-firstElementChild) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |el) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cloned) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.!cloneNode) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |target) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |true) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |style) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-style) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cloned) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |card-style) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |->) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cloned) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-firstElementChild) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-style) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |js/document.body.appendChild) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cloned) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |js/setTimeout) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |set!) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-opacity) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |style) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |0) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |set!) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-transitionDuration) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |card-style) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"240ms") - |b $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |set!) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-transform) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |card-style) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"scale(0.94) translate(0px,-20px)") - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |10) - |b $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |js/setTimeout) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.!remove) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cloned) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |240) - |b $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:update) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |if) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |show?) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |target) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-firstElementChild) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |el) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |card-style) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |->) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |target) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-firstElementChild) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-style) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |style) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-style) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |target) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |set!) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-opacity) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |style) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |0) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |set!) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-transform) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |card-style) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"scale(0.94) translate(0px,-20px)") - |b $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |js/setTimeout) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |set!) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-transitionDuration) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |style) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"240ms") - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |set!) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-transitionDuration) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |card-style) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"240ms") - |b $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |set!) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-opacity) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |style) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |1) - |d $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |set!) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-transform) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |card-style) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"scale(1) translate(0px,0px)") - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |10) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |nil) - :examples $ [] - |effect-focus $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |defeffect) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |effect-focus) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |query) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |show?) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |action) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |el) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |at-place?) - |b $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |case-default) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |action) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |nil) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:update) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |when) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |show?) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |focus-element!) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |query) - :examples $ [] - |effect-keydown $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |defeffect) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |effect-keydown) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |action) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |el) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |at?) - |b $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |case-default) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |action) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |nil) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:mount) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |f) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |event) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |if) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |=) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |.-key) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |event) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"Escape") - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |new-event) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |new) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |js/MouseEvent) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |.-type) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |event) - |Z $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |event) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |.!dispatchEvent) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |el) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |new-event) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |js/window.addEventListener) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"keydown") - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |f) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |aset) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |el) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"_listener") - |Z $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |f) - |b $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:unmount) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |f) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |aget) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |el) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"_listener") - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |js/window.removeEventListener) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"keydown") - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |f) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |aset) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |el) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"_listener") - |Z $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |nil) - :examples $ [] - |effect-select $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |defeffect) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |effect-select) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |query) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |show?) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |action) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |el) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |*local) - |b $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |case-default) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |action) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |nil) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:update) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |when) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |show?) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |select-element!) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |query) - :examples $ [] - |effect-slide $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |defeffect) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |effect-slide) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |show?) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |action) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |el) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |at-place?) - |b $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |case-default) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |action) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |nil) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:before-update) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |if) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |show?) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |nil) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |if) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |some?) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-firstElementChild) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |el) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |target) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-firstElementChild) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |el) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cloned) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.!cloneNode) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |target) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |true) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |style) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-style) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cloned) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |card-style) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |->) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cloned) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-firstElementChild) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-style) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |js/document.body.appendChild) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cloned) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |js/setTimeout) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |set!) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-opacity) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |style) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |0) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |set!) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-transitionDuration) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |card-style) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"240ms") - |b $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |set!) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-transform) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |card-style) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"translate(100%,0px)") - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |10) - |b $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |js/setTimeout) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.!remove) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cloned) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |240) - |b $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:update) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |if) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |show?) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |target) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-firstElementChild) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |el) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |card-style) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |->) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |target) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-firstElementChild) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-style) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |style) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-style) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |target) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |set!) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-opacity) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |style) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |0) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |set!) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-transform) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |card-style) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"translate(100%,0px)") - |b $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |js/setTimeout) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |set!) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-transitionDuration) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |style) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"240ms") - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |set!) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-transitionDuration) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |card-style) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"240ms") - |b $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |set!) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-opacity) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |style) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |1) - |d $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |set!) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |.-transform) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |card-style) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"translate(0px,0px)") - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |10) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |nil) - :examples $ [] - |style-clear $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |defstyle) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |style-clear) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"&") - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:font-size) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |10) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:cursor) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:pointer) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:color) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |hsl) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |270) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |80) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |70) - |b $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:opacity) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |0.6) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"&:hover") - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:opacity) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |1) - :examples $ [] - |style-drawer-backdrop $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |defstyle) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |style-drawer-backdrop) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"&") - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |merge) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |style/backdrop) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:padding) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |0) - :examples $ [] - |style-drawer-card $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |defstyle) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |style-drawer-card) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"&") - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |merge) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |style/card) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:line-height) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"32px") - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:height) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"100%") - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:max-height) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"100vh") - |b $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:margin-right) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |0) - |d $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:border-radius) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"0px") - |f $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:max-width) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"50vw") - |h $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:width) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"24vw") - |j $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:min-width) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |360) - |l $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:box-shadow) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"-2px 0px 24px 2px hsla(0,0%,0%,0.2)") - |n $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:transition-property) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"opacity,transform") - :examples $ [] - |style-menu-item $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |defstyle) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |style-menu-item) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"&") - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:border-top) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |str) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"1px solid ") - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |hsl) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |0) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |0) - |Z $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |90) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:padding) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"0 16px") - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:cursor) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:pointer) - |b $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:white-space) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:nowrap) - |d $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:line-height) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"40px") - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"&:hover") - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:background-color) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |hsl) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |0) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |0) - |Z $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |97) - :examples $ [] - |style-modal-backdrop $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |defstyle) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |style-modal-backdrop) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"&") - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |style/backdrop) - :examples $ [] - |style-modal-card $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |defstyle) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |style-modal-card) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"&") - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |merge) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |style/card) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:line-height) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"32px") - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:box-shadow) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"0px 2px 24px 0px hsl(0,0%,0%,0.2)") - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:transition-property) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"opacity,transform") - :examples $ [] - |style-modal-title $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |defstyle) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |style-modal-title) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"&") - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:padding) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"8px") - :examples $ [] - |use-alert $ %{} :CodeEntry (:doc "||Alert dialog hook. Shows a simple message box. Returns a plugin object with .show method to display the alert.") - :code $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |defplugin) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |use-alert) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |states) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:cursor) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |states) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |either) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:data) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |states) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:show?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |false) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:text) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:text) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-read) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |either) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:on-read) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:show?) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |false) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |node) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |comp-alert-modal) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:text) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:text) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:show?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |on-read) - |b $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:show?) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |false) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |%::) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |%alert-actions) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:plugin) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |node) - |b $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |d $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - :examples $ [] - quote $ let - alert-plugin $ use-alert (>> states :alert) - {} $ :text |demo - button - {} $ :on-click - fn (e d!) (.show alert-plugin d!) - <> |Show - |use-confirm $ %{} :CodeEntry (:doc "||Confirm dialog hook. Shows a dialog with confirm/cancel buttons. Returns a plugin object, call .show with a callback function that executes after confirmation.") - :code $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |defplugin) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |use-confirm) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |states) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:cursor) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |states) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |either) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:data) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |states) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:show?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |false) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:text) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |nil) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |*next-confirm-task) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |anchor-state) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |identity-path) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |'confirm) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |node) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |comp-confirm-modal) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |if) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |blank?) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:text) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:text) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:text) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:show?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |e) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |if) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |some?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |@*next-confirm-task) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |@*next-confirm-task) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |.set!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |*next-confirm-task) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |nil) - |b $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:show?) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |false) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |.set!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |*next-confirm-task) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |nil) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |%::) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |%confirm-actions) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:plugin) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |node) - |b $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |d $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |f $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |*next-confirm-task) - :examples $ [] - quote $ let - confirm-plugin $ use-confirm (>> states :confirm) - {} $ :text "|确认删除?" - button - {} $ :on-click - fn (e d!) - .show confirm-plugin d! $ fn () (println |confirmed) - <> |Delete - quote $ let - confirm-plugin $ use-confirm (>> states :confirm) - {} $ :text "|Default text" - button - {} (:class-name css/button) - :on-click $ fn (e d!) - .show-with-text confirm-plugin d! "|Confirm with dynamic text?" $ fn () (println |Confirmed!) - <> "|Show with text" - |use-drawer $ %{} :CodeEntry (:doc "||Drawer hook. Shows a panel sliding from the side. Use :render function in options to customize content. Supports :style for width and other styles.") - :code $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |defn) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |use-drawer) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |states) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:cursor) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |states) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |either) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:data) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |states) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:show?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |false) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |node) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |comp-drawer) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:show?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:show?) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |false) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |%::) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |%drawer-actions) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:plugin) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |node) - |b $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |d $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - :examples $ [] - quote $ let - drawer-plugin $ use-drawer (>> states :drawer) - {} (:title |Settings) - :style $ {} (:width 400) - :render $ fn (on-close) - div ({}) (<> "|Settings content") - button - {} $ :on-click - fn (e d!) (.show drawer-plugin d!) - <> "|Open Drawer" - |use-modal $ %{} :CodeEntry (:doc "||Modal dialog hook. Shows a modal with custom content. Use :render function in options to customize content. Returns a plugin object.") - :code $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |defn) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |use-modal) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |states) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:cursor) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |states) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |either) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:data) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |states) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:show?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |false) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |node) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |comp-modal) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:show?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:show?) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |false) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |%::) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |%modal-actions) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:plugin) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |node) - |b $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |d $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - :examples $ [] - quote $ let - modal-plugin $ use-modal (>> states :modal) - {} (:title |Demo) - :render $ fn (on-close) - div ({}) (<> |Content) - button - {} $ :on-click - fn (e d!) (.show modal-plugin d!) - <> |Open - |use-modal-menu $ %{} :CodeEntry (:doc "||Modal menu hook. Shows a modal dialog with a list of options. Define options via :items and handle selection via :on-result in options.") - :code $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |defn) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |use-modal-menu) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |states) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:cursor) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |states) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |either) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:data) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |states) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:show?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |false) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |node) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |comp-modal-menu) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:show?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:show?) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |false) - |b $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |result) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:on-result) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |result) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:show?) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |false) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |%::) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |%modal-menu-actions) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:plugin) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |node) - |b $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |d $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - :examples $ [] - quote $ let - menu-plugin $ use-modal-menu (>> states :menu) - {} (:title "|选择") - :items $ [] (:: :item |a |A) (:: :item |b |B) - :on-result $ fn (result d!) (println |selected: result) - button - {} $ :on-click - fn (e d!) (.show menu-plugin d!) - <> |Menu - |use-prompt $ %{} :CodeEntry (:doc "||Prompt dialog hook. Shows a dialog with text input. Returns a plugin object, call .show with a callback function to receive user input text.") - :code $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |defplugin) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |use-prompt) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |states) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:cursor) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |states) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |either) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:data) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |states) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:show?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |false) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:failure) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |nil) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |*next-prompt-task) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |anchor-state) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |identity-path) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |'prompt) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |node) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |comp-prompt-modal) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |>>) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |states) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:modal) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:show?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |b $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |text) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |if) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |some?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |@*next-prompt-task) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |@*next-prompt-task) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |text) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |.set!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |*next-prompt-task) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |nil) - |b $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:show?) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |false) - |d $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |d!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:show?) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |false) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |.set!) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |*next-prompt-task) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |nil) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |%::) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |%prompt-actions) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:plugin) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |node) - |b $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |cursor) - |d $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |state) - |f $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |*next-prompt-task) - :examples $ [] - quote $ let - prompt-plugin $ use-prompt (>> states :prompt) - {} (:text "|请输入名称") (:placeholder |name) - button - {} $ :on-click - fn (e d!) - .show prompt-plugin d! $ fn (text) (println |got: text) - <> |Input - :ns $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |ns) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo-alerts.core) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:require) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo.util.format) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:refer) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |hsl) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo.schema) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:as) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo-schema) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo-ui.core) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:as) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |ui) - |b $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo-ui.css) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:as) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |css) - |d $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo.core) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:refer) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |defcomp) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |defplugin) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |list->) - |Z $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |<>) - |b $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |>>) - |d $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |div) - |f $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |button) - |h $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |textarea) - |j $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |span) - |l $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |input) - |n $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |a) - |p $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |defeffect) - |f $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo.css) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:refer) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |defstyle) - |h $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo.comp.space) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:refer) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |=<) - |j $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo-alerts.config) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:refer) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |dev?) - |l $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo-alerts.style) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:as) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |style) - |n $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo-alerts.schema) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:as) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |schema) - |p $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo-alerts.util) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:refer) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |focus-element!) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |select-element!) - |r $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo-alerts.style) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:as) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |style) - |t $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |memof.anchor) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:refer) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |anchor-state) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |identity-path) - :examples $ [] - |respo-alerts.main $ %{} :FileEntry - :defs $ {} - |*reel $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |defatom) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |*reel) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |->) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |reel-schema/reel) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:base) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |schema/store) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:store) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |schema/store) - :examples $ [] - |dispatch! $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |defn) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |dispatch!) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |op) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |do) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |when) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |and) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |config/dev?) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |not=) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:states) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |op) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |js/console.log) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"Dispatch:") - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |op) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |reset!) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |*reel) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |reel-updater) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |updater) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |@*reel) - |Z $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |op) - :examples $ [] - |main! $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |defn) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |main!) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |println) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"Running mode:") - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |if) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |config/dev?) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"dev") - |Z $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"release") - |b $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |if) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |config/dev?) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |load-console-formatter!) - |d $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |render-app!) - |f $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |add-watch) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |*reel) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:changes) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |reel) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |prev) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |render-app!) - |h $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |listen-devtools!) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text ||a) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |dispatch!) - |j $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |;) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |js/window.addEventListener) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text ||beforeunload) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |event) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |persist-storage!) - |l $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |;) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |js/setInterval) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |persist-storage!) - |Z $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |60000) - |n $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |;) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |let) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |raw) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |js/localStorage.getItem) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:storage-key) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |config/site) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |when) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |some?) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |raw) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |dispatch!) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:hydrate-storage) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |parse-cirru-edn) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |raw) - |p $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |println) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "||App started.") - :examples $ [] - |mount-target $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |def) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |mount-target) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |js/document.querySelector) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text ||.app) - :examples $ [] - |persist-storage! $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |defn) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |persist-storage!) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |?) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |e) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |js/localStorage.setItem) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:storage-key) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |config/site) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |format-cirru-edn) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:store) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |@*reel) - :examples $ [] - |reload! $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |defn) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |reload!) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |if) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |nil?) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |build-errors) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |do) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |remove-watch) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |*reel) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:changes) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |clear-cache!) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |add-watch) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |*reel) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:changes) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |fn) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |reel) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |prev) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |render-app!) - |b $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |reset!) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |*reel) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |refresh-reel) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |@*reel) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |schema/store) - |Z $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |updater) - |d $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |hud!) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"ok~") - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"Ok") - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |hud!) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"error") - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |build-errors) - :examples $ [] - |render-app! $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |defn) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |render-app!) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |render!) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |mount-target) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |comp-container) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |@*reel) - |Z $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |dispatch!) - :examples $ [] - :ns $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |ns) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo-alerts.main) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:require) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo.core) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:refer) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |render!) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |clear-cache!) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |realize-ssr!) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo-alerts.comp.container) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:refer) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |comp-container) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo-alerts.updater) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:refer) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |updater) - |b $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo-alerts.schema) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:as) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |schema) - |d $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |reel.util) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:refer) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |listen-devtools!) - |f $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |reel.core) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:refer) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |reel-updater) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |refresh-reel) - |h $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |reel.schema) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:as) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |reel-schema) - |j $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo-alerts.config) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:as) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |config) - |l $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"./calcit.build-errors") - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:default) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |build-errors) - |n $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"bottom-tip") - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:default) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |hud!) - :examples $ [] - |respo-alerts.schema $ %{} :FileEntry - :defs $ {} - |confirm-button-name $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |def) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |confirm-button-name) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"respo-confirm-button") - :examples $ [] - |input-box-name $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |def) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |input-box-name) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"respo-prompt-input") - :examples $ [] - |store $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |def) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |store) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:states) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:content) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text ||) - :examples $ [] - :ns $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |ns) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo-alerts.schema) - :examples $ [] - |respo-alerts.style $ %{} :FileEntry - :defs $ {} - |backdrop $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |def) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |backdrop) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:background-color) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |hsl) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |0) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |30) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |10) - |b $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |0.6) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:position) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:fixed) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:z-index) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text ||999) - |b $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:padding) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |16) - :examples $ [] - |button $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |def) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |button) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |merge) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |ui/button) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:border-radius) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"4px") - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:background-color) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:white) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:border-color) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |hsl) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |240) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |60) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |90) - :examples $ [] - |card $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |def) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |card) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:background-color) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |hsl) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |0) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |0) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |100) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:max-width) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"600px") - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:width) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"100%") - |b $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:max-height) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"80vh") - |d $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:overflow) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:auto) - |f $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:border-radius) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"3px") - |h $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:color) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |hsl) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |0) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |0) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |0) - |j $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:margin) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:auto) - |l $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:padding) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |16) - :examples $ [] - :ns $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |ns) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |respo-alerts.style) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:require) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |respo.util.format) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:refer) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |hsl) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |respo-ui.core) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:as) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |ui) - :examples $ [] - |respo-alerts.trigger $ %{} :FileEntry - :defs $ {} - |comp-trigger $ %{} :CodeEntry (:doc "||Trigger component. Wraps an element with visual feedback when active. Uses :trigger-style and :trigger-active-style from options.") - :code $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |defcomp) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |comp-trigger) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |el) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |?) - |Z $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |style-trigger-container) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |el) - |Z $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |div) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:class-name) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |str-spaced) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |style-trigger) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |if) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |style-trigger-active) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:style) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |merge) - |V $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:trigger-style) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |if) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |show?) - |X $ %{} :Expr (:at 1767977273133) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |get) - |V $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |options) - |X $ %{} :Leaf (:at 1767977273133) (:by |sync) (:text |:trigger-active-style) - :examples $ [] - quote $ comp-trigger show? - button - {} $ :on-click on-click - <> "|Click me" - {} - :trigger-style $ {} (:color |blue) - :trigger-active-style $ {} (:color |red) - |style-trigger $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |defstyle) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |style-trigger) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"&") - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |{}) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:border-radius) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"50%") - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:position) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:absolute) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:transform) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"translate(-50%,-50%)") - |b $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:top) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"50%") - |d $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:left) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"50%") - |f $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:width) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |0) - |h $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:height) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |0) - |j $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:transition-duration) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"300ms") - |l $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:transition-delay) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"100ms") - |n $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:pointer-events) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:none) - |p $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:z-index) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text ||900) - |r $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:opacity) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |1) - |t $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |:background) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |str) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"radial-gradient(") - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |hsl) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |0) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |0) - |Z $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |70) - |b $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |0.8) - |Z $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\"0% ,") - |b $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |hsl) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |0) - |X $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |0) - |Z $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |60) - |b $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |0.0) - |d $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text "|\" 50%)") - :examples $ [] - |style-trigger-active $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1702667879923) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1702667880918) (:by |rJG4IHzWf) (:text |defstyle) - |b $ %{} :Leaf (:at 1702667879923) (:by |rJG4IHzWf) (:text |style-trigger-active) - |h $ %{} :Expr (:at 1702667881741) (:by |rJG4IHzWf) - :data $ {} - |D $ %{} :Leaf (:at 1702667882617) (:by |rJG4IHzWf) (:text |{}) - |T $ %{} :Expr (:at 1702667883063) (:by |rJG4IHzWf) - :data $ {} - |D $ %{} :Leaf (:at 1702667884267) (:by |rJG4IHzWf) (:text "|\"&") - |T $ %{} :Expr (:at 1702667881517) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1702667881517) (:by |rJG4IHzWf) (:text |{}) - |b $ %{} :Expr (:at 1702667881517) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1702667881517) (:by |rJG4IHzWf) (:text |:width) - |b $ %{} :Leaf (:at 1702668007473) (:by |rJG4IHzWf) (:text |2000) - |h $ %{} :Expr (:at 1702667881517) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1702667881517) (:by |rJG4IHzWf) (:text |:height) - |b $ %{} :Leaf (:at 1702668010034) (:by |rJG4IHzWf) (:text |2000) - |l $ %{} :Expr (:at 1702667881517) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1702667881517) (:by |rJG4IHzWf) (:text |:opacity) - |b $ %{} :Leaf (:at 1702668118095) (:by |rJG4IHzWf) (:text |0.3) - |o $ %{} :Expr (:at 1702667881517) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1702667881517) (:by |rJG4IHzWf) (:text |:transition-delay) - |b $ %{} :Leaf (:at 1702667881517) (:by |rJG4IHzWf) (:text "|\"0ms") - :examples $ [] - |style-trigger-container $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1702667843254) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1702667846714) (:by |rJG4IHzWf) (:text |defstyle) - |b $ %{} :Leaf (:at 1702667843254) (:by |rJG4IHzWf) (:text |style-trigger-container) - |h $ %{} :Expr (:at 1702667847751) (:by |rJG4IHzWf) - :data $ {} - |D $ %{} :Leaf (:at 1702667848216) (:by |rJG4IHzWf) (:text |{}) - |T $ %{} :Expr (:at 1702667848625) (:by |rJG4IHzWf) - :data $ {} - |D $ %{} :Leaf (:at 1702667849882) (:by |rJG4IHzWf) (:text "|\"&") - |T $ %{} :Expr (:at 1702667847435) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1702667847435) (:by |rJG4IHzWf) (:text |{}) - |b $ %{} :Expr (:at 1702667847435) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1702667847435) (:by |rJG4IHzWf) (:text |:display) - |b $ %{} :Leaf (:at 1702667847435) (:by |rJG4IHzWf) (:text |:inline-block) - |h $ %{} :Expr (:at 1702667847435) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1702667847435) (:by |rJG4IHzWf) (:text |:position) - |b $ %{} :Leaf (:at 1702667847435) (:by |rJG4IHzWf) (:text |:relative) - :examples $ [] - :ns $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1702666172847) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1702666172847) (:by |rJG4IHzWf) (:text |ns) - |b $ %{} :Leaf (:at 1702666172847) (:by |rJG4IHzWf) (:text |respo-alerts.trigger) - |h $ %{} :Expr (:at 1702666303114) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1702666303887) (:by |rJG4IHzWf) (:text |:require) - |b $ %{} :Expr (:at 1702666304269) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1702666304269) (:by |rJG4IHzWf) (:text |respo.core) - |b $ %{} :Leaf (:at 1702666304269) (:by |rJG4IHzWf) (:text |:refer) - |h $ %{} :Expr (:at 1702666304269) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1702666304269) (:by |rJG4IHzWf) (:text |defcomp) - |b $ %{} :Leaf (:at 1702666304269) (:by |rJG4IHzWf) (:text |defplugin) - |h $ %{} :Leaf (:at 1702666304269) (:by |rJG4IHzWf) (:text |list->) - |l $ %{} :Leaf (:at 1702666304269) (:by |rJG4IHzWf) (:text |<>) - |o $ %{} :Leaf (:at 1702666304269) (:by |rJG4IHzWf) (:text |>>) - |q $ %{} :Leaf (:at 1702666304269) (:by |rJG4IHzWf) (:text |div) - |s $ %{} :Leaf (:at 1702666304269) (:by |rJG4IHzWf) (:text |button) - |t $ %{} :Leaf (:at 1702666304269) (:by |rJG4IHzWf) (:text |textarea) - |u $ %{} :Leaf (:at 1702666304269) (:by |rJG4IHzWf) (:text |span) - |v $ %{} :Leaf (:at 1702666304269) (:by |rJG4IHzWf) (:text |input) - |w $ %{} :Leaf (:at 1702666304269) (:by |rJG4IHzWf) (:text |a) - |x $ %{} :Leaf (:at 1702666304269) (:by |rJG4IHzWf) (:text |defeffect) - |h $ %{} :Expr (:at 1702666308336) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1702666308336) (:by |rJG4IHzWf) (:text |respo-ui.css) - |b $ %{} :Leaf (:at 1702666308336) (:by |rJG4IHzWf) (:text |:as) - |h $ %{} :Leaf (:at 1702666308336) (:by |rJG4IHzWf) (:text |css) - |l $ %{} :Expr (:at 1702666717570) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1702666722730) (:by |rJG4IHzWf) (:text |respo.util.format) - |b $ %{} :Leaf (:at 1702666723512) (:by |rJG4IHzWf) (:text |:refer) - |h $ %{} :Expr (:at 1702666723765) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1702666725075) (:by |rJG4IHzWf) (:text |hsl) - |o $ %{} :Expr (:at 1702667891232) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1702667894049) (:by |rJG4IHzWf) (:text |respo.css) - |b $ %{} :Leaf (:at 1702667894755) (:by |rJG4IHzWf) (:text |:refer) - |h $ %{} :Expr (:at 1702667894969) (:by |rJG4IHzWf) - :data $ {} - |T $ %{} :Leaf (:at 1702667895946) (:by |rJG4IHzWf) (:text |defstyle) - :examples $ [] - |respo-alerts.updater $ %{} :FileEntry - :defs $ {} - |updater $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |defn) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |updater) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |store) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |op) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |op-id) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |op-time) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |tag-match) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |op) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:states) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |s) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |update-states) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |store) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |cursor) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |s) - |Z $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:content) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |c) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |assoc) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |store) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:content) - |Z $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |c) - |b $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:hydrate-storage) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |d) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |d) - |d $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |_) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |do) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |js/console.warn) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text "|\"Unknown op:") - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |op) - |X $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |store) - :examples $ [] - :ns $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |ns) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |respo-alerts.updater) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:require) - |V $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |respo.cursor) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:refer) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |update-states) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |respo-alerts.config) - |V $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |:refer) - |X $ %{} :Expr (:at 1767546522350) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522350) (:by |sync) (:text |dev?) - :examples $ [] - |respo-alerts.util $ %{} :FileEntry - :defs $ {} - |focus-element! $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |defn) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |focus-element!) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |query) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |if-let) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |target) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |js/document.querySelector) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |query) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |.!focus) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |target) - :examples $ [] - |select-element! $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |defn) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |select-element!) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |query) - |Z $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |let) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |target) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |js/document.querySelector) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |query) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |if) - |V $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |some?) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |target) - |X $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |.!select) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |target) - :examples $ [] - :ns $ %{} :CodeEntry (:doc |) - :code $ %{} :Expr (:at 1767546522349) (:by |sync) - :data $ {} - |T $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |ns) - |V $ %{} :Leaf (:at 1767546522349) (:by |sync) (:text |respo-alerts.util) - :examples $ [] - :users $ {} - |rJG4IHzWf $ {} (:avatar nil) (:id |rJG4IHzWf) (:name |chen) (:nickname |chen) (:password |d41d8cd98f00b204e9800998ecf8427e) (:theme :star-trail) - |root $ {} (:avatar nil) (:id |root) (:name |root) (:nickname |root) (:password |d41d8cd98f00b204e9800998ecf8427e) (:theme :star-trail) diff --git a/compact.cirru b/compact.cirru index 9ce9287..9c90619 100644 --- a/compact.cirru +++ b/compact.cirru @@ -1,6 +1,6 @@ {} (:about "|file is generated - never edit directly; learn cr edit/tree workflows before changing") (:package |respo-alerts) - :configs $ {} (:init-fn |respo-alerts.main/main!) (:reload-fn |respo-alerts.main/reload!) (:version |0.10.4) + :configs $ {} (:init-fn |respo-alerts.main/main!) (:reload-fn |respo-alerts.main/reload!) (:version |0.10.9) :modules $ [] |lilac/ |memof/ |respo.calcit/ |respo-ui.calcit/ |reel.calcit/ :entries $ {} :files $ {} @@ -111,7 +111,7 @@ :input-class css/font-code! :multiline? true prompt-validation-plugin $ use-prompt (>> states :validation-prompt) - {} (:titl "\"validated") (:text "\"This would be a very long content of alerts, like some prompt... write multiple lines:") + {} (:title "\"validated") (:text "\"This would be a very long content of alerts, like some prompt... write multiple lines:") :initial $ str (rand-int 100) :style $ {} :input-class css/font-code! @@ -203,133 +203,169 @@ :defs $ {} |%alert-actions $ %{} :CodeEntry (:doc |) :code $ quote - defrecord! %alert-actions - :render $ fn (self) - tag-match self $ + defimpl %alert-actions AlertActions + .render $ fn (self) + tag-match self $ :plugin node cursor state , node - :show $ fn (self d! ? text) - tag-match self $ + .show $ fn (self d! ? text) + tag-match self $ :plugin node cursor state if (some? text) d! cursor $ assoc state :show? true :text text d! cursor $ assoc state :show? true - :close $ fn (self d!) - tag-match self $ + .close $ fn (self d!) + tag-match self $ :plugin node cursor state d! cursor $ assoc state :show? false - :show? $ fn (self) - tag-match self $ + .show? $ fn (self) + tag-match self $ :plugin node cursor state :show? state :examples $ [] |%confirm-actions $ %{} :CodeEntry (:doc |) :code $ quote - defrecord! %confirm-actions - :render $ fn (self) - tag-match self $ + defimpl %confirm-actions ConfirmActions + .render $ fn (self) + tag-match self $ :plugin node cursor state *next , node - :show $ fn (self d! next-task) - tag-match self $ + .show $ fn (self d! next-task) + tag-match self $ :plugin node cursor state *next-confirm-task do (.set! *next-confirm-task next-task) d! cursor $ assoc state :show? true :text nil - :show-with-text $ fn (self d! text next-task) - tag-match self $ + .show-with-text $ fn (self d! text next-task) + tag-match self $ :plugin node cursor state *next-confirm-task do (.set! *next-confirm-task next-task) d! cursor $ assoc state :show? true :text text - :close $ fn (self d!) - tag-match self $ + .close $ fn (self d!) + tag-match self $ :plugin node cursor state *next d! cursor $ assoc state :show? false - :show? $ fn (self) - tag-match self $ + .show? $ fn (self) + tag-match self $ :plugin node cursor state :show? state :examples $ [] |%drawer-actions $ %{} :CodeEntry (:doc |) :code $ quote - defrecord! %drawer-actions - :render $ fn (self) - tag-match self $ + defimpl %drawer-actions DrawerActions + .render $ fn (self) + tag-match self $ :plugin node cursor state , node - :show $ fn (self d!) - tag-match self $ + .show $ fn (self d!) + tag-match self $ :plugin node cursor state d! cursor $ assoc state :show? true - :close $ fn (self d!) - tag-match self $ + .close $ fn (self d!) + tag-match self $ :plugin node cursor state d! cursor $ assoc state :show? false - :show? $ fn (self) - tag-match self $ + .show? $ fn (self) + tag-match self $ :plugin node cursor state :show? state :examples $ [] |%modal-actions $ %{} :CodeEntry (:doc |) :code $ quote - defrecord! %modal-actions - :render $ fn (self) - tag-match self $ + defimpl %modal-actions ModalActions + .render $ fn (self) + tag-match self $ :plugin node cursor state , node - :show $ fn (self d!) - tag-match self $ + .show $ fn (self d!) + tag-match self $ :plugin node cursor state d! cursor $ assoc state :show? true - :close $ fn (self d!) - tag-match self $ + .close $ fn (self d!) + tag-match self $ :plugin node cursor state d! cursor $ assoc state :show? false - :show? $ fn (self) - tag-match self $ + .show? $ fn (self) + tag-match self $ :plugin node cursor state :show? state :examples $ [] |%modal-menu-actions $ %{} :CodeEntry (:doc |) :code $ quote - defrecord! %modal-menu-actions - :render $ fn (self) - tag-match self $ + defimpl %modal-menu-actions ModalMenuActions + .render $ fn (self) + tag-match self $ :plugin node cursor state , node - :show $ fn (self d!) - tag-match self $ + .show $ fn (self d!) + tag-match self $ :plugin node cursor state d! cursor $ assoc state :show? true - :close $ fn (self d!) - tag-match self $ + .close $ fn (self d!) + tag-match self $ :plugin node cursor state d! cursor $ assoc state :show? false - :show? $ fn (self) - tag-match self $ + .show? $ fn (self) + tag-match self $ :plugin node cursor state :show? state :examples $ [] |%prompt-actions $ %{} :CodeEntry (:doc |) :code $ quote - defrecord! %prompt-actions - :render $ fn (self) - tag-match self $ + defimpl %prompt-actions PromptActions + .render $ fn (self) + tag-match self $ :plugin node cursor state *next , node - :show $ fn (self d! next-task) - tag-match self $ + .show $ fn (self d! next-task) + tag-match self $ :plugin node cursor state *next-prompt-task do (.set! *next-prompt-task next-task) d! cursor $ assoc state :show? true - :close $ fn (self d!) - tag-match self $ + .close $ fn (self d!) + tag-match self $ :plugin node cursor state *next d! cursor $ assoc state :show? false - :show? $ fn (self) - tag-match self $ + .show? $ fn (self) + tag-match self $ :plugin node cursor state *next :show? state :examples $ [] + |AlertActions $ %{} :CodeEntry (:doc |) + :code $ quote + deftrait AlertActions (.render :fn) (.show :fn) (.close :fn) (.show? :fn) + :examples $ [] + |ConfirmActions $ %{} :CodeEntry (:doc |) + :code $ quote + deftrait ConfirmActions (.render :fn) (.show :fn) (.show-with-text :fn) (.close :fn) (.show? :fn) + :examples $ [] + |DrawerActions $ %{} :CodeEntry (:doc |) + :code $ quote + deftrait DrawerActions (.render :fn) (.show :fn) (.close :fn) (.show? :fn) + :examples $ [] + |ModalActions $ %{} :CodeEntry (:doc |) + :code $ quote + deftrait ModalActions (.render :fn) (.show :fn) (.close :fn) (.show? :fn) + :examples $ [] + |ModalMenuActions $ %{} :CodeEntry (:doc |) + :code $ quote + deftrait ModalMenuActions (.render :fn) (.show :fn) (.close :fn) (.show? :fn) + :examples $ [] + |PluginNodeCursorState $ %{} :CodeEntry (:doc |) + :code $ quote + defenum PluginNodeCursorState $ :plugin :tuple :list :map + :examples $ [] + |PluginNodeCursorStateTask $ %{} :CodeEntry (:doc |) + :code $ quote + defenum PluginNodeCursorStateTask $ :plugin :tuple :list :map :ref + :examples $ [] + |PromptActions $ %{} :CodeEntry (:doc |) + :code $ quote + deftrait PromptActions (.render :fn) (.show :fn) (.close :fn) (.show? :fn) + :examples $ [] + |alert-actions-plugin $ %{} :CodeEntry (:doc |) + :code $ quote + def alert-actions-plugin $ impl-traits PluginNodeCursorState %alert-actions + :examples $ [] |comp-alert-modal $ %{} :CodeEntry (:doc "||Alert modal component. Shows a simple message dialog with a confirm button. Used internally by use-alert hook.") :code $ quote defcomp comp-alert-modal (options show? on-read! on-close!) @@ -546,7 +582,7 @@ (map? info) :: :item (&map:get info :value) (&map:get info :display) true $ raise "\"Unknown menu item" - tag-match item $ + tag-match item $ :item v l [] v $ div {} (:class-name style-menu-item) @@ -649,6 +685,14 @@ quote $ comp-prompt-modal states {} (:text "|Enter name") (:placeholder |name) , show? on-finish! on-close! + |confirm-actions-plugin $ %{} :CodeEntry (:doc |) + :code $ quote + def confirm-actions-plugin $ impl-traits PluginNodeCursorStateTask %confirm-actions + :examples $ [] + |drawer-actions-plugin $ %{} :CodeEntry (:doc |) + :code $ quote + def drawer-actions-plugin $ impl-traits PluginNodeCursorState %drawer-actions + :examples $ [] |effect-fade $ %{} :CodeEntry (:doc |) :code $ quote defeffect effect-fade (show?) (action el at-place?) @@ -755,6 +799,18 @@ , 10 , nil :examples $ [] + |modal-actions-plugin $ %{} :CodeEntry (:doc |) + :code $ quote + def modal-actions-plugin $ impl-traits PluginNodeCursorState %modal-actions + :examples $ [] + |modal-menu-actions-plugin $ %{} :CodeEntry (:doc |) + :code $ quote + def modal-menu-actions-plugin $ impl-traits PluginNodeCursorState %modal-menu-actions + :examples $ [] + |prompt-actions-plugin $ %{} :CodeEntry (:doc |) + :code $ quote + def prompt-actions-plugin $ impl-traits PluginNodeCursorStateTask %prompt-actions + :examples $ [] |style-clear $ %{} :CodeEntry (:doc |) :code $ quote defstyle style-clear $ {} @@ -819,7 +875,7 @@ , on-read fn (d!) d! cursor $ assoc state :show? false - %:: %alert-actions :plugin node cursor state + %:: alert-actions-plugin :plugin node cursor state :examples $ [] quote $ let alert-plugin $ use-alert (>> states :alert) @@ -847,7 +903,7 @@ fn (d!) d! cursor $ assoc state :show? false .set! *next-confirm-task nil - %:: %confirm-actions :plugin node cursor state *next-confirm-task + %:: confirm-actions-plugin :plugin node cursor state *next-confirm-task :examples $ [] quote $ let confirm-plugin $ use-confirm (>> states :confirm) @@ -875,7 +931,7 @@ node $ comp-drawer options (:show? state) fn (d!) d! cursor $ assoc state :show? false - %:: %drawer-actions :plugin node cursor state + %:: drawer-actions-plugin :plugin node cursor state :examples $ [] quote $ let drawer-plugin $ use-drawer (>> states :drawer) @@ -897,7 +953,7 @@ node $ comp-modal options (:show? state) fn (d!) d! cursor $ assoc state :show? false - %:: %modal-actions :plugin node cursor state + %:: modal-actions-plugin :plugin node cursor state :examples $ [] quote $ let modal-plugin $ use-modal (>> states :modal) @@ -922,7 +978,7 @@ :on-result options , result d! d! cursor $ assoc state :show? false - %:: %modal-menu-actions :plugin node cursor state + %:: modal-menu-actions-plugin :plugin node cursor state :examples $ [] quote $ let menu-plugin $ use-modal-menu (>> states :menu) @@ -949,7 +1005,7 @@ fn (d!) d! cursor $ assoc state :show? false .set! *next-prompt-task nil - %:: %prompt-actions :plugin node cursor state *next-prompt-task + %:: prompt-actions-plugin :plugin node cursor state *next-prompt-task :examples $ [] quote $ let prompt-plugin $ use-prompt (>> states :prompt) diff --git a/deps.cirru b/deps.cirru index 9256cc1..91e71ff 100644 --- a/deps.cirru +++ b/deps.cirru @@ -1,8 +1,8 @@ -{} (:calcit-version |0.10.4) +{} (:calcit-version |0.12.1) :dependencies $ {} (|Respo/reel.calcit |main) |Respo/respo-markdown.calcit |0.4.11 - |Respo/respo-ui.calcit |0.6.3 - |Respo/respo.calcit |0.16.23 + |Respo/respo-ui.calcit |0.6.4 + |Respo/respo.calcit |0.16.30 |calcit-lang/lilac |main - |calcit-lang/memof |0.0.17 + |calcit-lang/memof |0.0.23 diff --git a/llms/Respo.md b/llms/Respo.md deleted file mode 100644 index 17e1c7c..0000000 --- a/llms/Respo.md +++ /dev/null @@ -1,920 +0,0 @@ -# Respo Development Guide for LLM Agents - -**🤖 This guide is specifically designed for LLM agents to develop, debug, and maintain Respo applications.** - -📚 **Related Documentation**: - -- [← Back to README](../README.md) -- [Beginner Guide](./beginner-guide.md) -- [CLI Tools Reference](../Agents.md) -- [API Reference](./api.md) - ---- - -## Project Structure - -The Respo project is a virtual DOM library written in Calcit-js, containing: - -- **Main codebase**: `compact.cirru` (2314 lines) - serialized source code -- **Compiled source**: `calcit.cirru` (13806 lines) - full AST representation -- **Namespaces**: 33 total namespaces organized by functionality -- **Version**: 0.16.21 -- **Dependencies**: memof (memoization), lilac (UI utilities), calcit-test (testing) - -### Core Namespace Organization - -**User-facing APIs** (what you typically use): - -- `respo.core` - Core APIs: defcomp, div, render!, clear-cache!, etc. -- `respo.comp.space` - Utility component comp-space (=<) -- `respo.comp.inspect` - Debugging component comp-inspect -- `respo.render.html` - HTML generation: make-string, make-html - -**Application layer** (in example app): - -- `respo.app.core` - Main application logic (\*store, dispatch!, render-app!) -- `respo.app.schema` - Data structures and schemas -- `respo.app.updater` - State management and updates -- `respo.app.comp.*` - Application components (container, task, todolist, wrap, zero) -- `respo.app.style.widget` - Application styles - -**Rendering and internal** (low-level): - -- `respo.render.diff` - Find differences between virtual DOM trees -- `respo.render.dom` - DOM element creation and manipulation -- `respo.render.effect` - Component lifecycle effects -- `respo.render.patch` - Apply DOM patches -- `respo.controller.client` - Client-side state management (activate-instance!, patch-instance!) -- `respo.controller.resolve` - Event handling and resolution - -**Utilities**: - -- `respo.util.dom` - DOM utilities -- `respo.util.format` - Element formatting (purify-element, mute-element) -- `respo.util.list` - List utilities (map-val, map-with-idx) -- `respo.util.detect` - Type detection (component?, element?, effect?) -- `respo.css` - CSS utilities -- `respo.cursor` - Cursor management for nested states - ---- - -## Essential Calcit CLI Commands for Development - -### 1. Exploration and Discovery - -```bash -# List all namespaces in the project -cr query ns - -# Get details about a specific namespace (imports, definitions) -cr query ns respo.core -cr query ns respo.app.core - -# List all definitions in a namespace -cr query defs respo.core -cr query defs respo.app.updater - -# Quick peek at a definition (signature, parameters, docs) -cr query peek respo.core/defcomp -cr query peek respo.core/render! - -# Get complete definition as JSON syntax tree -cr query def respo.core/render! -cr query def respo.app.core/dispatch! - -# Search for a symbol across all namespaces -cr query find render! -cr query find *store - -# Find all usages of a specific definition -cr query usages respo.core/render! -cr query usages respo.app.core/dispatch! -``` - -### 2. Precise Code Navigation (tree pattern) - -When you need to understand or modify specific parts of a definition: - -```bash -# Step 1: Read the complete definition first -cr query def respo.app.updater/updater - -# Step 2: Use tree show to examine the structure (limit depth to reduce output) -cr tree show respo.app.updater/updater -p "" -d 1 # View root level - -# Step 3: Dive deeper into specific indices -cr tree show respo.app.updater/updater -p "2" -d 1 # Check 3rd element -cr tree show respo.app.updater/updater -p "2,1" -d 1 # Check 2nd child of 3rd element - -# Step 4: Confirm target location before editing -cr tree show respo.app.updater/updater -p "2,1,0" # Final confirmation - -# Step 5: Use tree commands for surgical modifications -# JSON inline (recommended) -cr tree replace respo.app.updater/updater -p "2,1,0" -j '"new-value"' -# Or from stdin -echo '"new-value"' | cr tree replace respo.app.updater/updater -p "2,1,0" -s -J -``` - -echo '["defn", "hello", [], ["println", "|Hello"]]' | cr edit def respo.app.core/hello -s -J - -### 3. Code Modification (Agent Optimized) - -**Best Practice: Use JSON AST** -For LLM Agents, **JSON inline (`-j`) is the most reliable method** for code generation. It avoids whitespace/indentation ambiguity inherent in Cirru. - -**Input Modes:** - -- `-j ''`: **Recommended.** Inline JSON string. Escape quotes carefully. -- `-e ''`: Inline Cirru one-liner. Good for short, simple expressions. -- `-f ` / `-s`: Read from file/stdin (defaults to Cirru). -- `-J`: Combine with `-f`/`-s` to indicate JSON input. - -**JSON AST Structure Guide:** - -- Function: `(defn f (x) x)` -> `["defn", "f", ["x"], "x"]` -- Map: `{:a 1}` -> `["{}", [":a", "1"]]` -- String: `"|hello"` -> `"|hello"` (in JSON string: `"\"|hello\""`) -- Keyword: `:key` -> `":key"` - -**Common Commands:** - -```bash -# 1. Add/Update Definition (JSON) -# (defn greet (name) (println "|Hello" name)) -cr edit def respo.demo/greet -j '["defn", "greet", ["name"], ["println", "\"|Hello\"", "name"]]' - -# 2. Add Definition (Cirru One-liner - risky for complex code) -cr edit def respo.demo/simple -e 'defn simple (x) (+ x 1)' - -# 3. Update Imports (JSON) -# (ns respo.demo (:require [respo.core :refer [div span]])) -cr edit imports respo.demo -j '[["respo.core", ":refer", ["div", "span"]]]' - -# 4. Remove Definition -cr edit rm-def respo.demo/old-fn - -# 5. Namespace Operations -cr edit add-ns respo.new-feature -cr edit rm-ns respo.deprecated -``` - -**💡 Pro Tip: Validation** -If unsure about the JSON structure, generate it from Cirru first: - -```bash -cr cirru parse -O 'defn f (x) (+ x 1)' -# Output: ["defn", "f", ["x"], ["+", "x", "1"]] -``` - -### 4. Project Configuration - -```bash -# Get project configuration (init-fn, reload-fn, version) -cr query config - -# Set project configuration -cr edit config version "0.16.22" -cr edit config init-fn "respo.main/main!" -cr edit config reload-fn "respo.main/reload!" -``` - -### 5. Workflow: Building From Scratch - -Follow this sequence to create a new feature cleanly: - -**Step 1: Create Namespace** - -```bash -cr edit add-ns respo.app.feature-x -``` - -**Step 2: Add Imports** -Define dependencies (e.g., `respo.core`). - -```bash -# Cirru: (:require [respo.core :refer [defcomp div span]]) -cr edit imports respo.app.feature-x -j '[["respo.core", ":refer", ["defcomp", "div", "span"]]]' -``` - -**Step 3: Create Component** -Define the component logic. - -```bash -# Cirru: (defcomp comp-x (data) (div {} (<> "Feature X"))) -cr edit def respo.app.feature-x/comp-x -j '["defcomp", "comp-x", ["data"], ["div", ["{}"], ["<>", "\"|Feature X\""]]]' -``` - -**Step 4: Verify** - -```bash -cr query def respo.app.feature-x/comp-x -cr --check-only -``` - -**Step 5: Integrate** -Mount or use it in `respo.app.comp.container`. - -```bash -# 1. Add import to container ns -cr edit require respo.app.comp.container respo.app.feature-x - -# 2. Add usage (using surgical edit) -# Find where to insert using `cr tree show ...` -# cr tree insert-child ... -j '["respo.app.feature-x/comp-x", "data"]' -``` - -### 6. Documentation and Language - -```bash -# Check for syntax errors and warnings -cr --check-only -cr js --check-only - -# Get language documentation -cr docs api render! -cr docs ref component -cr docs list-api # List all API docs -cr docs list-guide # List all guide docs - -# Parse Cirru code to JSON (for understanding syntax) -cr cirru parse '(div {} (<> "hello"))' - -# Format JSON to Cirru code -cr cirru format '["div", {}, ["<>", "hello"]]' - -# Parse EDN to JSON -cr cirru parse-edn '{:a 1 :b [2 3]}' - -# Show Cirru syntax guide (read before generating Cirru) -cr cirru show-guide -``` - -### 6. Library Management - -```bash -# List official libraries -cr libs - -# Search libraries by keyword -cr libs search router - -# Read library README from GitHub -cr libs readme respo - -# Install/update dependencies -caps -``` - -### 7. Code Analysis - -```bash -# Call graph analysis from init-fn (or custom root) -cr analyze call-graph -cr analyze call-graph --root app.main/main! --ns-prefix app. --include-core --max-depth 5 --format json - -# Call count statistics -cr analyze count-calls -cr analyze count-calls --root app.main/main! --ns-prefix app. --include-core --format json --sort count -``` - ---- - -## Development Workflow for LLM Agents - -### Step 1: Understand the Problem - -```bash -# Always start by exploring related code -cr query ns respo.app.updater # Understand state management -cr query find my-function-name # Find where it's defined/used -cr query usages respo.core/render! # See how render! is used -``` - -### Step 2: Implement the Solution - -Use the **precise editing pattern** for complex changes: - -```bash -# 1. Read the whole definition -cr query def namespace/function-name - -# 2. Map out the structure with tree show -cr tree show namespace/function-name -p "" -d 1 - -# 3. Navigate to target position -cr tree show namespace/function-name -p "2,1" -d 1 - -# 4. Make the change (JSON inline recommended) -cr tree replace namespace/function-name -p "2,1,0" -j '["new", "code"]' - -# Or from stdin (JSON format) -echo '["new", "code"]' | cr tree replace namespace/function-name -p "2,1,0" -s -J - -# 5. Verify -cr tree show namespace/function-name -p "2,1" -``` - -### Step 3: Test and Validate - -```bash -# Check syntax without running -cr --check-only - -# Compile to JavaScript and check for errors -cr js --check-only - -# Run the app once to test -cr -1 - -# Compile to JavaScript once -cr -1 js - -# Watch mode (will call reload! on code changes) -cr -``` - -### Step 4: Debug Issues - -```bash -# Check for error messages -cr query error - -# Read error stack traces -cat .calcit-error.cirru # (if it exists) - -# Search for the problematic code -cr query find problem-symbol -cr query usages namespace/definition - -# Review the definition in detail -cr query def namespace/definition -``` - ---- - -## Common Patterns and Best Practices - -### 1. Component Definition Pattern - -**Cirru (Read):** - -```cirru -; Standard component structure -defcomp comp-name (param1 param2 & options) - div $ {} - :class-name "|component-name" - :style $ comp-style - <> "|Content" -``` - -**JSON AST (Write - for `cr edit`):** - -```json -[ - "defcomp", - "comp-name", - ["param1", "param2", "&", "options"], - [ - "div", - ["{}", [":class-name", "|component-name"], [":style", "comp-style"]], - ["<>", "|Content"] - ] -] -``` - -### 2. State Management Pattern - -```cirru -; Define store atom at app.core level -defatom *store $ {} - :states $ {} - :data $ {} - -; Create dispatcher -defn dispatch! (op) - reset! *store (updater @*store op) - -; Updater function pattern -defn updater (store op) - tag-match op - (:action-name value) $ - assoc store :data (process-action (:data store) value) - (:nested-action id op2) $ - update-in store [:data :nested id] (process-nested op2) - _ store -``` - -### 3. Rendering Pattern - -```cirru -; Initial render -defn render-app! () - render! mount-point (comp-container @*store) dispatch! - -; Watch for store changes -add-watch *store :changes $ fn () - render-app! - -; Hot reload with cache clearing -defn reload! () - remove-watch *store :changes - add-watch *store :changes $ fn () - render-app! - clear-cache! - render-app! -``` - -### 4. DOM Element Creation - -```cirru -; Using predefined elements (defn wrappers for create-element) -div $ {} (<> "text") -button $ {} (<> "Click me") -input $ {:value "|default"} -span $ {:class-name "|style-name"} (<> "content") - -; Dynamic elements with create-element -create-element :custom-tag $ {:prop-name "|value"} - <> "|child" - -; List rendering with list-> -list-> $ {} - :style $ {} (:display "|flex") - , $ {} - :a $ comp-item item-1 - :b $ comp-item item-2 - :c $ comp-item item-3 -``` - -### 5. Styling Pattern - -```cirru -; Define styles as maps -def style-container $ {} - :display "|flex" - :padding "|10px" - :background-color "|#f0f0f0" - -; Conditional styles -defn style-for-state (state) - if (= state :active) - assoc style-container :background-color "|#3388ff" - style-container - -; Merge styles -let - base $ {} (:color "|black") - extended $ merge base $ {} (:font-size 14) - extended -``` - -### 6. Event Handling - -```cirru -; Simple click handler -div - {} - :on-click $ fn (e dispatch!) - dispatch! [:button-clicked] - -; Input with value tracking -input - {} - :value "|current-value" - :on-input $ fn (e dispatch!) - let - value (e.target.value) - dispatch! [:input-changed value] - -; Keyboard events -div - {} - :on-keydown $ fn (e dispatch!) - when (= (e.key) "|Enter") - dispatch! [:submit-form] -``` - ---- - -## Debugging Common Issues - -### Issue: Component not re-rendering - -**Diagnosis**: - -```bash -# Check if render-app! is being called -cr query find render-app! -cr query usages respo.main/render-app! - -# Verify store watcher is set up -cr query def respo.app.core/dispatch! -cr query def respo.main/main! -``` - -**Solution Pattern**: - -```cirru -; Ensure watch is on *store -add-watch *store :changes $ fn () - render-app! - -; Ensure clear-cache! is called on reload -defn reload! () - remove-watch *store :changes - clear-cache! - add-watch *store :changes $ fn () - render-app! - render-app! -``` - -### Issue: State not updating - -**Diagnosis**: - -```bash -# Check updater function logic -cr query def respo.app.updater/updater - -# Verify dispatch! is calling updater correctly -cr query def respo.app.core/dispatch! - -# Check the state path in component -cr query def respo.app.comp.container/comp-container -``` - -**Solution Pattern**: - -```cirru -; Verify tag-match pattern matches dispatched action -tag-match op - (:action-name params) $ - ; Make sure return value is updated store - assoc store :data new-value - _ store ; Default case needed! - -; Ensure dispatch! is called with correct tuple -dispatch! [:action-name actual-value] -``` - -### Issue: Component effects not triggering - -**Diagnosis**: - -```bash -# Check effect definition -cr query def respo.core/defeffect # macro documentation - -# Find effect in component -cr query find my-effect -cr query usages respo.app.comp.task/my-effect -``` - -**Solution Pattern**: - -```cirru -; Effects must be first in component body -defcomp comp-with-effect (props) - [] - effect-name param1 param2 ; First! - div $ {} ; Then render - <> "|content" - -; Effect must match action lifecycle -defeffect my-effect (initial-value) - (action element at-place?) - when (= action :mount) - do (println "|mounted") - when (= action :update) - do (println "|updated") -``` - -### Issue: Hot reload breaking state - -**Diagnosis**: - -```bash -# Check reload! function -cr query def respo.main/reload! - -# Verify clear-cache! is called -cr query usages respo.core/clear-cache! -``` - -**Solution Pattern**: - -```cirru -; clear-cache! must be called during reload -defn reload! () - remove-watch *store :changes - clear-cache! ; Critical! - add-watch *store :changes $ fn () - render-app! - render-app! -``` - ---- - -## Modification Strategy: Safe Editing Guide - -### Before any edit, follow this checklist: - -1. **Understand the context** - - ```bash - cr query ns namespace-name # See imports and doc - cr query peek namespace-name/def-name # See signature - ``` - -2. **Map the exact location** - - ```bash - cr tree show namespace-name/def-name -p "" -d 2 # Overview - cr tree show namespace-name/def-name -p "2" -d 2 # Check section - cr tree show namespace-name/def-name -p "2,1" -d 2 # Precise location - ``` - -3. **Make surgical change** - -```bash -# JSON inline (recommended) -cr tree replace namespace-name/def-name -p "2,1,0" -j '"new-value"' - -# Or from stdin (JSON format) -echo '"new-value"' | cr tree replace namespace-name/def-name -p "2,1,0" -s -J -``` - -4. **Verify immediately** - ```bash - cr tree show namespace-name/def-name -p "2,1" # Confirm change - cr --check-only # Verify syntax - ``` - -### Common edit operations: - -```bash -# Replace a value (JSON inline) -cr tree replace ns/def -p "2,1,0" -j '"new-value"' - -# Insert before a position (JSON) -cr tree insert-before ns/def -p "2,1" -j '["new", "element"]' - -# Insert after a position (JSON) -cr tree insert-after ns/def -p "2,1" -j '["new", "element"]' - -# Delete a node -cr tree delete ns/def -p "2,1,0" - -# Insert as child (first child) -cr tree insert-child ns/def -p "2,1" -j '"child-value"' - -# Append as child (last child, from stdin) -echo '"child-value"' | cr tree append-child ns/def -p "2,1" -s -J -``` - ---- - -## Testing and Validation - -### Basic validation - -```bash -# Syntax check only (no execution) -cr --check-only - -# Check JavaScript compilation -cr js --check-only - -# Run application once -cr -1 - -# Compile to JS once -cr -1 js -``` - -### Test-driven development - -```bash -# Look at test files -cr query defs respo.test.main -cr query def respo.test.main/test-fn - -# Run tests -cr -1 ; (if init-fn runs tests) -``` - -### Error diagnosis - -```bash -# View error file -cr query error -cat .calcit-error.cirru - -# Search for the problematic definition -cr query find problem-name - -# Check the full definition -cr query def namespace/problem-name - -# Validate dependencies -cr query ns namespace-name # Check imports -``` - ---- - -## Important Notes for LLM Agents - -### ⚠️ Critical Rules - -1. **NEVER directly edit `calcit.cirru` or `compact.cirru`** with text editors - - - Use `cr edit` commands instead - - These are serialized AST structures, not human-readable code - -2. **ALWAYS use relative paths for documentation links** - - - Use `../` and `../../` for navigation - - This allows easy file discovery for LLM tools - -3. **ALWAYS check syntax before assuming it's correct** - - ```bash - cr --check-only - ``` - -4. **ALWAYS verify modifications work** - - ```bash - cr tree show namespace/def -p "modified-path" # Confirm change - cr --check-only # Check syntax - cr -1 # Test run - ``` - -5. **Use peek before def** to reduce token consumption - ```bash - cr query peek ns/def # Light summary - cr query def ns/def # Full AST (use only if needed) - ``` - -### 🎯 Optimization Tips for Token Usage - -```bash -# Fast exploration with limited output -cr query peek respo.core/defcomp # 5-10 lines -cr query defs respo.app.updater # Quick list - -# Slower but comprehensive -cr query def respo.app.updater/updater # Full JSON AST - -# Use -d flag to limit JSON depth -cr tree show ns/def -p "2,1" -d 1 # Shallow -cr tree show ns/def -p "2,1" -d 3 # Medium -cr tree show ns/def -p "2,1" # Full (default) - -# Search before diving deep -cr query find my-function # Find location first -cr query usages ns/def # See usage patterns -``` - -### 📖 Documentation Strategy - -When stuck, use these resources in order: - -1. This file (Respo-Agent.md) - you are here -2. [README.md](../README.md) - Project overview and index -3. [Beginner Guide](./beginner-guide.md) - Conceptual introduction -4. [API Reference](./api.md) - Specific API documentation -5. [Guide docs](./guide/) - Detailed topics -6. `cr docs api ` - Language documentation -7. Project code itself: `cr query ns ` - ---- - -## Quick Reference - -### Most Used Commands - -```bash -# Exploration (read-only, no changes) -cr query ns # List namespaces -cr query ns respo.core # Read namespace details -cr query defs respo.app.core # List definitions -cr query peek respo.core/render! # Quick peek -cr query def respo.core/render! # Full definition -cr query find render! # Search globally -cr query usages respo.core/render! # Find usages - -# Navigation (precise editing) -cr tree show ns/def -p "" -d 1 # View structure -cr tree show ns/def -p "2,1" -d 1 # Drill down -cr tree show ns/def -p "2,1,0" # Confirm target - -# Modification (careful!) -cr edit def ns/def -j '["defn", "func", [], "body"]' -cr tree replace ns/def -p "2,1,0" -j '"value"' -cr edit rm-def ns/def - -# Validation -cr --check-only # Check syntax -cr query error # View errors -cr -1 # Test run -``` - -### File Paths in Documentation - -When referring to files from within `docs/`: - -- `./` - same directory -- `../` - parent (docs/ to root) -- `../../` - grandparent (docs/apis/ to root) - -Example from `docs/apis/defcomp.md`: - -```markdown -- [Back to README](../../README.md) -- [API Overview](../api.md) -- [Another API](./render!.md) -``` - ---- - -This guide evolves as the project grows. Last updated: 2025-12-22 - -# Calcit & Respo 开发避坑指南 - -本文档总结了在 Calcit 和 Respo 开发过程中遇到的常见问题和最佳实践。 - -## 1. 字符串语法 (String Syntax) - -Calcit 使用 `|` 前缀来表示字符串字面量。 - -- **正确**: `|Hello` (编译为 `"Hello"`) -- **正确**: `"Hello"` (标准 Cirru 字符串,编译为 `"Hello"`) -- **错误**: `Hello` (会被解析为 Symbol) - -**CLI 操作注意**: -在使用 `cr tree replace` 修改字符串时,推荐使用 `|` 前缀或 `--json-leaf` 确保类型正确。 - -```bash -# 推荐:使用 | 前缀 -cr tree replace ... -e "|Get Started" - -# 推荐:使用 --json-leaf 明确指定为叶子节点 -cr tree replace ... -e '"Get Started"' --json-leaf -``` - -如果直接使用 `-e '"Get Started"'` 且不加 `--json-leaf`,可能会被解析为包含引号的字符串 `"\"Get Started\""`,导致显示多余引号。 - -## 2. Respo 文本渲染 (Text Rendering) - -Respo 的 HTML 标签(如 `div`, `span`, `button`)**不能直接接受原始字符串作为子节点**。 - -**错误写法** (会导致 `Invalid data in elements tree`): - -```cirru -div ({}) - |SomeText -``` - -**正确写法 1: 使用 `:inner-text` 属性** (推荐用于纯文本标签) - -```cirru -div $ {} (:inner-text |SomeText) -``` - -**正确写法 2: 使用 `<>` 组件** (推荐用于混合内容) - -```cirru -div ({}) - <> |SomeText - span $ {} (:inner-text |Other) -``` - -## 3. 样式定义 (Styles) - -在 `defstyle` 中定义样式时: - -- **数值属性**: 像 `font-weight` 这样的属性,如果使用数字(如 `700`),确保它是数字类型而不是字符串。 - - 错误: `(:font-weight |bold)` (如果库不支持) - - 正确: `(:font-weight 700)` - -## 4. CLI 调试技巧 - -- **检查代码**: `cr js --check-only` - - - 这是一个非常快速的检查命令,能发现未定义的变量 (Warnings) 和语法错误,而不会生成 JS 文件。 - - **务必关注 Warnings**: 很多运行时错误(如 `unknown head`)都是因为使用了未定义的 Symbol(可能是忘记加 `|` 前缀的字符串)。 - -- **查看节点结构**: `cr tree show -p ` - - - 在修改前,先查看目标节点的结构(是 `list` 还是 `leaf`),确认路径是否正确。 - -- **精确修改**: `cr tree replace` - - 配合 `-p` 路径参数进行精确修改,避免破坏周围结构。 - -## 5. 命名空间 (Namespaces) - -- **修改 Imports**: 使用 `cr edit imports -j '...'` - - 这是修改 `:require` 最安全的方式。 - - 如果遇到 `invalid ns form` 错误,通常是因为 `ns` 定义格式被破坏,可以尝试清空 imports 再重新添加。 diff --git a/package.json b/package.json index f5a42ed..6aefac0 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,11 @@ { - "version": "0.10.1", "devDependencies": { "@calcit/std": "^0.0.3", "bottom-tip": "^0.1.5", "vite": "^7.3.0" }, "dependencies": { - "@calcit/procs": "^0.10.4" - } + "@calcit/procs": "0.12.1" + }, + "packageManager": "yarn@4.12.0" } diff --git a/yarn.lock b/yarn.lock index e37a46b..4654646 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,514 +1,1376 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@calcit/procs@^0.10.4": - version "0.10.4" - resolved "https://registry.yarnpkg.com/@calcit/procs/-/procs-0.10.4.tgz#bcb58256a450b6ec891a64d150c959f229408ae7" - integrity sha512-JljJactqBWQYI3Wcg4a//eRZmry/Pb2gwgHN8OZeMld27krImDoWUYdhtW9wc27lxsBmO0mGW6ubyIwK1c5xhg== - dependencies: - "@calcit/ternary-tree" "0.0.25" - "@cirru/parser.ts" "^0.0.6" - "@cirru/writer.ts" "^0.1.5" - -"@calcit/std@^0.0.3": - version "0.0.3" - resolved "https://registry.yarnpkg.com/@calcit/std/-/std-0.0.3.tgz#b3c0636b05bdba68dafb7fea06c86f64a52b1730" - integrity sha512-9p9CuyKvz3PDd+gddnaGFQwOpVrmjBQ8F5Ej7KFwifeTLXIkOh2niECMPHS/5mffo1JgTK7zcugpX9rurxeGJQ== - -"@calcit/ternary-tree@0.0.25": - version "0.0.25" - resolved "https://registry.yarnpkg.com/@calcit/ternary-tree/-/ternary-tree-0.0.25.tgz#d467cbd9a7f89ff1fdb590e5d1551aefa6a03492" - integrity sha512-BxAAq6v7dZJDYSMX5kBVQ/eSYX7czjOS1cHM25js4yD+Q2I61RxxhD7iBaGlfNJvmgPmvYJQA5nxNmN2TEXq7A== - -"@cirru/parser.ts@^0.0.6": - version "0.0.6" - resolved "https://registry.yarnpkg.com/@cirru/parser.ts/-/parser.ts-0.0.6.tgz#b95a84e02273fcbd71ff100925782b6f86410234" - integrity sha512-qpDNPq+IuuwYjQFI+wzpd3ntbF7lwJs90v1XWyLQbL9Ru4ld4aHxVGwW/9F/QOu5mEGCMXtagCoYDf0HtOpDZg== - -"@cirru/writer.ts@^0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@cirru/writer.ts/-/writer.ts-0.1.5.tgz#890d96cd4a69609f1682932dad5d2d467abb327e" - integrity sha512-QQVFJAOIdUtVJZwT23THZOzumSDXCLMQ0yFz5DzIGlWGXPNBuB7BwUvGtRuiQrzM2XV7ALOWmNsVC7vEOjObQQ== - -"@esbuild/aix-ppc64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz#521cbd968dcf362094034947f76fa1b18d2d403c" - integrity sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw== - -"@esbuild/android-arm64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz#61ea550962d8aa12a9b33194394e007657a6df57" - integrity sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA== - -"@esbuild/android-arm@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.27.2.tgz#554887821e009dd6d853f972fde6c5143f1de142" - integrity sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA== - -"@esbuild/android-x64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.27.2.tgz#a7ce9d0721825fc578f9292a76d9e53334480ba2" - integrity sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A== - -"@esbuild/darwin-arm64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz#2cb7659bd5d109803c593cfc414450d5430c8256" - integrity sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg== - -"@esbuild/darwin-x64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz#e741fa6b1abb0cd0364126ba34ca17fd5e7bf509" - integrity sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA== - -"@esbuild/freebsd-arm64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz#2b64e7116865ca172d4ce034114c21f3c93e397c" - integrity sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g== - -"@esbuild/freebsd-x64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz#e5252551e66f499e4934efb611812f3820e990bb" - integrity sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA== - -"@esbuild/linux-arm64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz#dc4acf235531cd6984f5d6c3b13dbfb7ddb303cb" - integrity sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw== - -"@esbuild/linux-arm@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz#56a900e39240d7d5d1d273bc053daa295c92e322" - integrity sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw== - -"@esbuild/linux-ia32@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz#d4a36d473360f6870efcd19d52bbfff59a2ed1cc" - integrity sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w== - -"@esbuild/linux-loong64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz#fcf0ab8c3eaaf45891d0195d4961cb18b579716a" - integrity sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg== - -"@esbuild/linux-mips64el@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz#598b67d34048bb7ee1901cb12e2a0a434c381c10" - integrity sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw== - -"@esbuild/linux-ppc64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz#3846c5df6b2016dab9bc95dde26c40f11e43b4c0" - integrity sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ== - -"@esbuild/linux-riscv64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz#173d4475b37c8d2c3e1707e068c174bb3f53d07d" - integrity sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA== - -"@esbuild/linux-s390x@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz#f7a4790105edcab8a5a31df26fbfac1aa3dacfab" - integrity sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w== - -"@esbuild/linux-x64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz#2ecc1284b1904aeb41e54c9ddc7fcd349b18f650" - integrity sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA== - -"@esbuild/netbsd-arm64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz#e2863c2cd1501845995cb11adf26f7fe4be527b0" - integrity sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw== - -"@esbuild/netbsd-x64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz#93f7609e2885d1c0b5a1417885fba8d1fcc41272" - integrity sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA== - -"@esbuild/openbsd-arm64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz#a1985604a203cdc325fd47542e106fafd698f02e" - integrity sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA== - -"@esbuild/openbsd-x64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz#8209e46c42f1ffbe6e4ef77a32e1f47d404ad42a" - integrity sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg== - -"@esbuild/openharmony-arm64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz#8fade4441893d9cc44cbd7dcf3776f508ab6fb2f" - integrity sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag== - -"@esbuild/sunos-x64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz#980d4b9703a16f0f07016632424fc6d9a789dfc2" - integrity sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg== - -"@esbuild/win32-arm64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz#1c09a3633c949ead3d808ba37276883e71f6111a" - integrity sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg== - -"@esbuild/win32-ia32@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz#1b1e3a63ad4bef82200fef4e369e0fff7009eee5" - integrity sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ== - -"@esbuild/win32-x64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz#9e585ab6086bef994c6e8a5b3a0481219ada862b" - integrity sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ== - -"@rollup/rollup-android-arm-eabi@4.54.0": - version "4.54.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.54.0.tgz#f3ff5dbde305c4fa994d49aeb0a5db5305eff03b" - integrity sha512-OywsdRHrFvCdvsewAInDKCNyR3laPA2mc9bRYJ6LBp5IyvF3fvXbbNR0bSzHlZVFtn6E0xw2oZlyjg4rKCVcng== - -"@rollup/rollup-android-arm64@4.54.0": - version "4.54.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.54.0.tgz#c97d6ee47846a7ab1cd38e968adce25444a90a19" - integrity sha512-Skx39Uv+u7H224Af+bDgNinitlmHyQX1K/atIA32JP3JQw6hVODX5tkbi2zof/E69M1qH2UoN3Xdxgs90mmNYw== - -"@rollup/rollup-darwin-arm64@4.54.0": - version "4.54.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.54.0.tgz#a13fc2d82e01eaf8ac823634a3f5f76fd9d0f938" - integrity sha512-k43D4qta/+6Fq+nCDhhv9yP2HdeKeP56QrUUTW7E6PhZP1US6NDqpJj4MY0jBHlJivVJD5P8NxrjuobZBJTCRw== - -"@rollup/rollup-darwin-x64@4.54.0": - version "4.54.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.54.0.tgz#db4fa8b2b76d86f7e9b68ce4661fafe9767adf9b" - integrity sha512-cOo7biqwkpawslEfox5Vs8/qj83M/aZCSSNIWpVzfU2CYHa2G3P1UN5WF01RdTHSgCkri7XOlTdtk17BezlV3A== - -"@rollup/rollup-freebsd-arm64@4.54.0": - version "4.54.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.54.0.tgz#b2c6039de4b75efd3f29417fcb1a795c75a4e3ee" - integrity sha512-miSvuFkmvFbgJ1BevMa4CPCFt5MPGw094knM64W9I0giUIMMmRYcGW/JWZDriaw/k1kOBtsWh1z6nIFV1vPNtA== - -"@rollup/rollup-freebsd-x64@4.54.0": - version "4.54.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.54.0.tgz#9ae2a216c94f87912a596a3b3a2ec5199a689ba5" - integrity sha512-KGXIs55+b/ZfZsq9aR026tmr/+7tq6VG6MsnrvF4H8VhwflTIuYh+LFUlIsRdQSgrgmtM3fVATzEAj4hBQlaqQ== - -"@rollup/rollup-linux-arm-gnueabihf@4.54.0": - version "4.54.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.54.0.tgz#69d5de7f781132f138514f2b900c523e38e2461f" - integrity sha512-EHMUcDwhtdRGlXZsGSIuXSYwD5kOT9NVnx9sqzYiwAc91wfYOE1g1djOEDseZJKKqtHAHGwnGPQu3kytmfaXLQ== - -"@rollup/rollup-linux-arm-musleabihf@4.54.0": - version "4.54.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.54.0.tgz#b6431e5699747f285306ffe8c1194d7af74f801f" - integrity sha512-+pBrqEjaakN2ySv5RVrj/qLytYhPKEUwk+e3SFU5jTLHIcAtqh2rLrd/OkbNuHJpsBgxsD8ccJt5ga/SeG0JmA== - -"@rollup/rollup-linux-arm64-gnu@4.54.0": - version "4.54.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.54.0.tgz#a32931baec8a0fa7b3288afb72d400ae735112c2" - integrity sha512-NSqc7rE9wuUaRBsBp5ckQ5CVz5aIRKCwsoa6WMF7G01sX3/qHUw/z4pv+D+ahL1EIKy6Enpcnz1RY8pf7bjwng== - -"@rollup/rollup-linux-arm64-musl@4.54.0": - version "4.54.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.54.0.tgz#0ad72572b01eb946c0b1a7a6f17ab3be6689a963" - integrity sha512-gr5vDbg3Bakga5kbdpqx81m2n9IX8M6gIMlQQIXiLTNeQW6CucvuInJ91EuCJ/JYvc+rcLLsDFcfAD1K7fMofg== - -"@rollup/rollup-linux-loong64-gnu@4.54.0": - version "4.54.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.54.0.tgz#05681f000310906512279944b5bef38c0cd4d326" - integrity sha512-gsrtB1NA3ZYj2vq0Rzkylo9ylCtW/PhpLEivlgWe0bpgtX5+9j9EZa0wtZiCjgu6zmSeZWyI/e2YRX1URozpIw== - -"@rollup/rollup-linux-ppc64-gnu@4.54.0": - version "4.54.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.54.0.tgz#9847a8c9dd76d687c3bdbe38d7f5f32c6b2743c8" - integrity sha512-y3qNOfTBStmFNq+t4s7Tmc9hW2ENtPg8FeUD/VShI7rKxNW7O4fFeaYbMsd3tpFlIg1Q8IapFgy7Q9i2BqeBvA== - -"@rollup/rollup-linux-riscv64-gnu@4.54.0": - version "4.54.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.54.0.tgz#173f20c278ac770ae3e969663a27d172a4545e87" - integrity sha512-89sepv7h2lIVPsFma8iwmccN7Yjjtgz0Rj/Ou6fEqg3HDhpCa+Et+YSufy27i6b0Wav69Qv4WBNl3Rs6pwhebQ== - -"@rollup/rollup-linux-riscv64-musl@4.54.0": - version "4.54.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.54.0.tgz#db70c2377ae1ef61ef8673354d107ecb3fa7ffed" - integrity sha512-ZcU77ieh0M2Q8Ur7D5X7KvK+UxbXeDHwiOt/CPSBTI1fBmeDMivW0dPkdqkT4rOgDjrDDBUed9x4EgraIKoR2A== - -"@rollup/rollup-linux-s390x-gnu@4.54.0": - version "4.54.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.54.0.tgz#b2c461778add1c2ee70ec07d1788611548647962" - integrity sha512-2AdWy5RdDF5+4YfG/YesGDDtbyJlC9LHmL6rZw6FurBJ5n4vFGupsOBGfwMRjBYH7qRQowT8D/U4LoSvVwOhSQ== - -"@rollup/rollup-linux-x64-gnu@4.54.0": - version "4.54.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.54.0.tgz#ab140b356569601f57ab8727bd7306463841894f" - integrity sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ== - -"@rollup/rollup-linux-x64-musl@4.54.0": - version "4.54.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.54.0.tgz#810134b4a9d0d88576938f2eed38999a653814a1" - integrity sha512-JzQmb38ATzHjxlPHuTH6tE7ojnMKM2kYNzt44LO/jJi8BpceEC8QuXYA908n8r3CNuG/B3BV8VR3Hi1rYtmPiw== - -"@rollup/rollup-openharmony-arm64@4.54.0": - version "4.54.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.54.0.tgz#0182bae7a54e748be806acef7a7f726f6949213c" - integrity sha512-huT3fd0iC7jigGh7n3q/+lfPcXxBi+om/Rs3yiFxjvSxbSB6aohDFXbWvlspaqjeOh+hx7DDHS+5Es5qRkWkZg== - -"@rollup/rollup-win32-arm64-msvc@4.54.0": - version "4.54.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.54.0.tgz#1f19349bd1c5e454d03e4508a9277b6354985b9d" - integrity sha512-c2V0W1bsKIKfbLMBu/WGBz6Yci8nJ/ZJdheE0EwB73N3MvHYKiKGs3mVilX4Gs70eGeDaMqEob25Tw2Gb9Nqyw== - -"@rollup/rollup-win32-ia32-msvc@4.54.0": - version "4.54.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.54.0.tgz#234ff739993539f64efac6c2e59704a691a309c2" - integrity sha512-woEHgqQqDCkAzrDhvDipnSirm5vxUXtSKDYTVpZG3nUdW/VVB5VdCYA2iReSj/u3yCZzXID4kuKG7OynPnB3WQ== - -"@rollup/rollup-win32-x64-gnu@4.54.0": - version "4.54.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.54.0.tgz#a4df0507c3be09c152a795cfc0c4f0c225765c5c" - integrity sha512-dzAc53LOuFvHwbCEOS0rPbXp6SIhAf2txMP5p6mGyOXXw5mWY8NGGbPMPrs4P1WItkfApDathBj/NzMLUZ9rtQ== - -"@rollup/rollup-win32-x64-msvc@4.54.0": - version "4.54.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.54.0.tgz#beacb356412eef5dc0164e9edfee51c563732054" - integrity sha512-hYT5d3YNdSh3mbCU1gwQyPgQd3T2ne0A3KG8KSBdav5TiBg6eInVmV+TeR5uHufiIgSFg0XsOWGW5/RhNcSvPg== - -"@types/estree@1.0.8": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" - integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== - -bottom-tip@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/bottom-tip/-/bottom-tip-0.1.5.tgz#ca81e738fba6ae956a5b4c55a78a127820c9b99e" - integrity sha512-53RCkWg6hY8M7Y9lPgU2f2bAEejQh0H6SCL9B8ufFdYAOAH/cUEwxSsBIH0AcPbOcNaSgdEJr9OhdnTUENe5bA== - dependencies: - nanoid "^4.0.1" - virtual-dom "^2.1.1" - -browser-split@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/browser-split/-/browser-split-0.0.1.tgz#7b097574f8e3ead606fb4664e64adfdda2981a93" - integrity sha512-JhvgRb2ihQhsljNda3BI8/UcRHVzrVwo3Q+P8vDtSiyobXuFpuZ9mq+MbRGMnC22CjW3RrfXdg6j6ITX8M+7Ow== - -camelize@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" - integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== - -dom-walk@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" - integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== - -error@^4.3.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/error/-/error-4.4.0.tgz#bf69ff251fb4a279c19adccdaa6b61e90d9bf12a" - integrity sha512-SNDKualLUtT4StGFP7xNfuFybL2f6iJujFtrWuvJqGbVQGaN+adE23veqzPz1hjUjTunLi2EnJ+0SJxtbJreKw== - dependencies: - camelize "^1.0.0" - string-template "~0.2.0" - xtend "~4.0.0" - -esbuild@^0.27.0: - version "0.27.2" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.27.2.tgz#d83ed2154d5813a5367376bb2292a9296fc83717" - integrity sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw== - optionalDependencies: - "@esbuild/aix-ppc64" "0.27.2" - "@esbuild/android-arm" "0.27.2" - "@esbuild/android-arm64" "0.27.2" - "@esbuild/android-x64" "0.27.2" - "@esbuild/darwin-arm64" "0.27.2" - "@esbuild/darwin-x64" "0.27.2" - "@esbuild/freebsd-arm64" "0.27.2" - "@esbuild/freebsd-x64" "0.27.2" - "@esbuild/linux-arm" "0.27.2" - "@esbuild/linux-arm64" "0.27.2" - "@esbuild/linux-ia32" "0.27.2" - "@esbuild/linux-loong64" "0.27.2" - "@esbuild/linux-mips64el" "0.27.2" - "@esbuild/linux-ppc64" "0.27.2" - "@esbuild/linux-riscv64" "0.27.2" - "@esbuild/linux-s390x" "0.27.2" - "@esbuild/linux-x64" "0.27.2" - "@esbuild/netbsd-arm64" "0.27.2" - "@esbuild/netbsd-x64" "0.27.2" - "@esbuild/openbsd-arm64" "0.27.2" - "@esbuild/openbsd-x64" "0.27.2" - "@esbuild/openharmony-arm64" "0.27.2" - "@esbuild/sunos-x64" "0.27.2" - "@esbuild/win32-arm64" "0.27.2" - "@esbuild/win32-ia32" "0.27.2" - "@esbuild/win32-x64" "0.27.2" - -ev-store@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/ev-store/-/ev-store-7.0.0.tgz#1ab0c7f82136505dd74b31d17701cb2be6d26558" - integrity sha512-otazchNRnGzp2YarBJ+GXKVGvhxVATB1zmaStxJBYet0Dyq7A9VhH8IUEB/gRcL6Ch52lfpgPTRJ2m49epyMsQ== - dependencies: - individual "^3.0.0" - -fdir@^6.5.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" - integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== - -fsevents@~2.3.2, fsevents@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -global@^4.3.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" - integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== - dependencies: - min-document "^2.19.0" - process "^0.11.10" - -individual@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/individual/-/individual-3.0.0.tgz#e7ca4f85f8957b018734f285750dc22ec2f9862d" - integrity sha512-rUY5vtT748NMRbEMrTNiFfy29BgGZwGXUi2NFUVMWQrogSLzlJvQV9eeMWi+g1aVaQ53tpyLAQtd5x/JH0Nh1g== - -is-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" - integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== - -min-document@^2.19.0: - version "2.19.2" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.2.tgz#f95db44639eaae3ac8ea85ae6809ae85ff7e3b81" - integrity sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A== - dependencies: - dom-walk "^0.1.0" - -nanoid@^3.3.11: - version "3.3.11" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" - integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== - -nanoid@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-4.0.2.tgz#140b3c5003959adbebf521c170f282c5e7f9fb9e" - integrity sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw== - -next-tick@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-0.2.2.tgz#75da4a927ee5887e39065880065b7336413b310d" - integrity sha512-f7h4svPtl+QidoBv4taKXUjJ70G2asaZ8G28nS0OkqaalX8dwwrtWtyxEDPK62AC00ur/+/E0pUwBwY5EPn15Q== - -picocolors@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" - integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== - -picomatch@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" - integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== - -postcss@^8.5.6: - version "8.5.6" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" - integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== - dependencies: - nanoid "^3.3.11" - picocolors "^1.1.1" - source-map-js "^1.2.1" - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== - -rollup@^4.43.0: - version "4.54.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.54.0.tgz#930f4dfc41ff94d720006f9f62503612a6c319b8" - integrity sha512-3nk8Y3a9Ea8szgKhinMlGMhGMw89mqule3KWczxhIzqudyHdCIOHw8WJlj/r329fACjKLEh13ZSk7oE22kyeIw== - dependencies: - "@types/estree" "1.0.8" - optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.54.0" - "@rollup/rollup-android-arm64" "4.54.0" - "@rollup/rollup-darwin-arm64" "4.54.0" - "@rollup/rollup-darwin-x64" "4.54.0" - "@rollup/rollup-freebsd-arm64" "4.54.0" - "@rollup/rollup-freebsd-x64" "4.54.0" - "@rollup/rollup-linux-arm-gnueabihf" "4.54.0" - "@rollup/rollup-linux-arm-musleabihf" "4.54.0" - "@rollup/rollup-linux-arm64-gnu" "4.54.0" - "@rollup/rollup-linux-arm64-musl" "4.54.0" - "@rollup/rollup-linux-loong64-gnu" "4.54.0" - "@rollup/rollup-linux-ppc64-gnu" "4.54.0" - "@rollup/rollup-linux-riscv64-gnu" "4.54.0" - "@rollup/rollup-linux-riscv64-musl" "4.54.0" - "@rollup/rollup-linux-s390x-gnu" "4.54.0" - "@rollup/rollup-linux-x64-gnu" "4.54.0" - "@rollup/rollup-linux-x64-musl" "4.54.0" - "@rollup/rollup-openharmony-arm64" "4.54.0" - "@rollup/rollup-win32-arm64-msvc" "4.54.0" - "@rollup/rollup-win32-ia32-msvc" "4.54.0" - "@rollup/rollup-win32-x64-gnu" "4.54.0" - "@rollup/rollup-win32-x64-msvc" "4.54.0" - fsevents "~2.3.2" - -source-map-js@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" - integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== - -string-template@~0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" - integrity sha512-Yptehjogou2xm4UJbxJ4CxgZx12HBfeystp0y3x7s4Dj32ltVVG1Gg8YhKjHZkHicuKpZX/ffilA8505VbUbpw== - -tinyglobby@^0.2.15: - version "0.2.15" - resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2" - integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== - dependencies: - fdir "^6.5.0" - picomatch "^4.0.3" - -virtual-dom@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/virtual-dom/-/virtual-dom-2.1.1.tgz#80eda2d481b9ede0c049118cefcb4a05f21d1375" - integrity sha512-wb6Qc9Lbqug0kRqo/iuApfBpJJAq14Sk1faAnSmtqXiwahg7PVTvWMs9L02Z8nNIMqbwsxzBAA90bbtRLbw0zg== - dependencies: - browser-split "0.0.1" - error "^4.3.0" - ev-store "^7.0.0" - global "^4.3.0" - is-object "^1.0.1" - next-tick "^0.2.2" - x-is-array "0.1.0" - x-is-string "0.1.0" - -vite@^7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/vite/-/vite-7.3.0.tgz#066c7a835993a66e82004eac3e185d0d157fd658" - integrity sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg== - dependencies: - esbuild "^0.27.0" - fdir "^6.5.0" - picomatch "^4.0.3" - postcss "^8.5.6" - rollup "^4.43.0" - tinyglobby "^0.2.15" - optionalDependencies: - fsevents "~2.3.3" - -x-is-array@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/x-is-array/-/x-is-array-0.1.0.tgz#de520171d47b3f416f5587d629b89d26b12dc29d" - integrity sha512-goHPif61oNrr0jJgsXRfc8oqtYzvfiMJpTqwE7Z4y9uH+T3UozkGqQ4d2nX9mB9khvA8U2o/UbPOFjgC7hLWIA== - -x-is-string@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" - integrity sha512-GojqklwG8gpzOVEVki5KudKNoq7MbbjYZCbyWzEz7tyPA7eleiE0+ePwOWQQRb5fm86rD3S8Tc0tSFf3AOv50w== - -xtend@~4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 8 + cacheKey: 10c0 + +"@calcit/procs@npm:0.12.0": + version: 0.12.0 + resolution: "@calcit/procs@npm:0.12.0" + dependencies: + "@calcit/ternary-tree": "npm:0.0.25" + "@cirru/parser.ts": "npm:^0.0.8" + "@cirru/writer.ts": "npm:^0.1.7" + checksum: 10c0/180a1dd971a894d74e787bd384ac9b2039728ea086d5b0d1772cd0406c7af9ddd6cb11da31d6a47ad5ece891f6582423f98d050b34bbeb9adc68c0941b3aa2a9 + languageName: node + linkType: hard + +"@calcit/std@npm:^0.0.3": + version: 0.0.3 + resolution: "@calcit/std@npm:0.0.3" + checksum: 10c0/e622dc9f8a70006225889ca904d3c702bfa0a804aec6966c927d52182d83e61eb7f7c5bfe1418eac62885b8e80295497709356a0a7423dbe0e8102d6a7bc04b8 + languageName: node + linkType: hard + +"@calcit/ternary-tree@npm:0.0.25": + version: 0.0.25 + resolution: "@calcit/ternary-tree@npm:0.0.25" + checksum: 10c0/49f01d526dec87810cc45f4e92dfa9043c07ecf64e03e2fa99c8ceca09724e8ec11308118599beffd62852f8594f8944f2c8101bc7e551ae64d421d27f91202b + languageName: node + linkType: hard + +"@cirru/parser.ts@npm:^0.0.8": + version: 0.0.8 + resolution: "@cirru/parser.ts@npm:0.0.8" + checksum: 10c0/a722a1ae31503cd602d4bb868f9831f7cf0a3d457cde40fc363120271ebb1320c5cabdf051393b5b10ef3e29452c6e25ab8c2b0d981605299312391f528957b6 + languageName: node + linkType: hard + +"@cirru/writer.ts@npm:^0.1.7": + version: 0.1.7 + resolution: "@cirru/writer.ts@npm:0.1.7" + checksum: 10c0/3548f596abef52f8d4cfe95b25fc1ded0d059869eafb403e3e340c1bcdc50fe59af9fd75f1b6d9f828129c847965f378945ed370ff9aeec9ddcc89172afad92a + languageName: node + linkType: hard + +"@esbuild/aix-ppc64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/aix-ppc64@npm:0.27.2" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/android-arm64@npm:0.27.2" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/android-arm@npm:0.27.2" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/android-x64@npm:0.27.2" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/darwin-arm64@npm:0.27.2" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/darwin-x64@npm:0.27.2" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/freebsd-arm64@npm:0.27.2" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/freebsd-x64@npm:0.27.2" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/linux-arm64@npm:0.27.2" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/linux-arm@npm:0.27.2" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/linux-ia32@npm:0.27.2" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/linux-loong64@npm:0.27.2" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/linux-mips64el@npm:0.27.2" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/linux-ppc64@npm:0.27.2" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/linux-riscv64@npm:0.27.2" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/linux-s390x@npm:0.27.2" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/linux-x64@npm:0.27.2" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-arm64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/netbsd-arm64@npm:0.27.2" + conditions: os=netbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/netbsd-x64@npm:0.27.2" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-arm64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/openbsd-arm64@npm:0.27.2" + conditions: os=openbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/openbsd-x64@npm:0.27.2" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openharmony-arm64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/openharmony-arm64@npm:0.27.2" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/sunos-x64@npm:0.27.2" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/win32-arm64@npm:0.27.2" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/win32-ia32@npm:0.27.2" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/win32-x64@npm:0.27.2" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@isaacs/balanced-match@npm:^4.0.1": + version: 4.0.1 + resolution: "@isaacs/balanced-match@npm:4.0.1" + checksum: 10c0/7da011805b259ec5c955f01cee903da72ad97c5e6f01ca96197267d3f33103d5b2f8a1af192140f3aa64526c593c8d098ae366c2b11f7f17645d12387c2fd420 + languageName: node + linkType: hard + +"@isaacs/brace-expansion@npm:^5.0.0": + version: 5.0.0 + resolution: "@isaacs/brace-expansion@npm:5.0.0" + dependencies: + "@isaacs/balanced-match": "npm:^4.0.1" + checksum: 10c0/b4d4812f4be53afc2c5b6c545001ff7a4659af68d4484804e9d514e183d20269bb81def8682c01a22b17c4d6aed14292c8494f7d2ac664e547101c1a905aa977 + languageName: node + linkType: hard + +"@isaacs/fs-minipass@npm:^4.0.0": + version: 4.0.1 + resolution: "@isaacs/fs-minipass@npm:4.0.1" + dependencies: + minipass: "npm:^7.0.4" + checksum: 10c0/c25b6dc1598790d5b55c0947a9b7d111cfa92594db5296c3b907e2f533c033666f692a3939eadac17b1c7c40d362d0b0635dc874cbfe3e70db7c2b07cc97a5d2 + languageName: node + linkType: hard + +"@npmcli/agent@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/agent@npm:4.0.0" + dependencies: + agent-base: "npm:^7.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.1" + lru-cache: "npm:^11.2.1" + socks-proxy-agent: "npm:^8.0.3" + checksum: 10c0/f7b5ce0f3dd42c3f8c6546e8433573d8049f67ef11ec22aa4704bc41483122f68bf97752e06302c455ead667af5cb753e6a09bff06632bc465c1cfd4c4b75a53 + languageName: node + linkType: hard + +"@npmcli/fs@npm:^5.0.0": + version: 5.0.0 + resolution: "@npmcli/fs@npm:5.0.0" + dependencies: + semver: "npm:^7.3.5" + checksum: 10c0/26e376d780f60ff16e874a0ac9bc3399186846baae0b6e1352286385ac134d900cc5dafaded77f38d77f86898fc923ae1cee9d7399f0275b1aa24878915d722b + languageName: node + linkType: hard + +"@rollup/rollup-android-arm-eabi@npm:4.54.0": + version: 4.54.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.54.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@rollup/rollup-android-arm64@npm:4.54.0": + version: 4.54.0 + resolution: "@rollup/rollup-android-arm64@npm:4.54.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-arm64@npm:4.54.0": + version: 4.54.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.54.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-x64@npm:4.54.0": + version: 4.54.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.54.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-freebsd-arm64@npm:4.54.0": + version: 4.54.0 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.54.0" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-freebsd-x64@npm:4.54.0": + version: 4.54.0 + resolution: "@rollup/rollup-freebsd-x64@npm:4.54.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-gnueabihf@npm:4.54.0": + version: 4.54.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.54.0" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-musleabihf@npm:4.54.0": + version: 4.54.0 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.54.0" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-gnu@npm:4.54.0": + version: 4.54.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.54.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-musl@npm:4.54.0": + version: 4.54.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.54.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-loong64-gnu@npm:4.54.0": + version: 4.54.0 + resolution: "@rollup/rollup-linux-loong64-gnu@npm:4.54.0" + conditions: os=linux & cpu=loong64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-ppc64-gnu@npm:4.54.0": + version: 4.54.0 + resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.54.0" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-riscv64-gnu@npm:4.54.0": + version: 4.54.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.54.0" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-riscv64-musl@npm:4.54.0": + version: 4.54.0 + resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.54.0" + conditions: os=linux & cpu=riscv64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-s390x-gnu@npm:4.54.0": + version: 4.54.0 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.54.0" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-gnu@npm:4.54.0": + version: 4.54.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.54.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-musl@npm:4.54.0": + version: 4.54.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.54.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-openharmony-arm64@npm:4.54.0": + version: 4.54.0 + resolution: "@rollup/rollup-openharmony-arm64@npm:4.54.0" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-arm64-msvc@npm:4.54.0": + version: 4.54.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.54.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-ia32-msvc@npm:4.54.0": + version: 4.54.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.54.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@rollup/rollup-win32-x64-gnu@npm:4.54.0": + version: 4.54.0 + resolution: "@rollup/rollup-win32-x64-gnu@npm:4.54.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-x64-msvc@npm:4.54.0": + version: 4.54.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.54.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@types/estree@npm:1.0.8": + version: 1.0.8 + resolution: "@types/estree@npm:1.0.8" + checksum: 10c0/39d34d1afaa338ab9763f37ad6066e3f349444f9052b9676a7cc0252ef9485a41c6d81c9c4e0d26e9077993354edf25efc853f3224dd4b447175ef62bdcc86a5 + languageName: node + linkType: hard + +"abbrev@npm:^4.0.0": + version: 4.0.0 + resolution: "abbrev@npm:4.0.0" + checksum: 10c0/b4cc16935235e80702fc90192e349e32f8ef0ed151ef506aa78c81a7c455ec18375c4125414b99f84b2e055199d66383e787675f0bcd87da7a4dbd59f9eac1d5 + languageName: node + linkType: hard + +"agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": + version: 7.1.4 + resolution: "agent-base@npm:7.1.4" + checksum: 10c0/c2c9ab7599692d594b6a161559ada307b7a624fa4c7b03e3afdb5a5e31cd0e53269115b620fcab024c5ac6a6f37fa5eb2e004f076ad30f5f7e6b8b671f7b35fe + languageName: node + linkType: hard + +"bottom-tip@npm:^0.1.5": + version: 0.1.5 + resolution: "bottom-tip@npm:0.1.5" + dependencies: + nanoid: "npm:^4.0.1" + virtual-dom: "npm:^2.1.1" + checksum: 10c0/6d67176db5e2e66c3566351fe418451a2665f2935f8621a61135fb493bcb2adbf5b6763a584a9935997efb0a89ee1022b60994fd90ef3ef1d8f2e08abe5b34e3 + languageName: node + linkType: hard + +"browser-split@npm:0.0.1": + version: 0.0.1 + resolution: "browser-split@npm:0.0.1" + checksum: 10c0/c0ed77e8bf3494e6803681c578f5c0c0d050fbd041f608f0fe7ec23bdb98483ba6905dfa785786963b9b555aab04f95d6e15f8b4ecdd53a40215134a66ec3f39 + languageName: node + linkType: hard + +"cacache@npm:^20.0.1": + version: 20.0.3 + resolution: "cacache@npm:20.0.3" + dependencies: + "@npmcli/fs": "npm:^5.0.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^13.0.0" + lru-cache: "npm:^11.1.0" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^2.0.1" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^7.0.2" + ssri: "npm:^13.0.0" + unique-filename: "npm:^5.0.0" + checksum: 10c0/c7da1ca694d20e8f8aedabd21dc11518f809a7d2b59aa76a1fc655db5a9e62379e465c157ddd2afe34b19230808882288effa6911b2de26a088a6d5645123462 + languageName: node + linkType: hard + +"camelize@npm:^1.0.0": + version: 1.0.1 + resolution: "camelize@npm:1.0.1" + checksum: 10c0/4c9ac55efd356d37ac483bad3093758236ab686192751d1c9daa43188cc5a07b09bd431eb7458a4efd9ca22424bba23253e7b353feb35d7c749ba040de2385fb + languageName: node + linkType: hard + +"chownr@npm:^3.0.0": + version: 3.0.0 + resolution: "chownr@npm:3.0.0" + checksum: 10c0/43925b87700f7e3893296c8e9c56cc58f926411cce3a6e5898136daaf08f08b9a8eb76d37d3267e707d0dcc17aed2e2ebdf5848c0c3ce95cf910a919935c1b10 + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:^4.3.4": + version: 4.4.3 + resolution: "debug@npm:4.4.3" + dependencies: + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/d79136ec6c83ecbefd0f6a5593da6a9c91ec4d7ddc4b54c883d6e71ec9accb5f67a1a5e96d00a328196b5b5c86d365e98d8a3a70856aaf16b4e7b1985e67f5a6 + languageName: node + linkType: hard + +"dom-walk@npm:^0.1.0": + version: 0.1.2 + resolution: "dom-walk@npm:0.1.2" + checksum: 10c0/4d2ad9062a9423d890f8577aa202b597a6b85f9489bdde656b9443901b8b322b289655c3affefc58ec2e41931e0828dfee0a1d2db6829a607d76def5901fc5a9 + languageName: node + linkType: hard + +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: "npm:^0.6.2" + checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 + languageName: node + linkType: hard + +"error@npm:^4.3.0": + version: 4.4.0 + resolution: "error@npm:4.4.0" + dependencies: + camelize: "npm:^1.0.0" + string-template: "npm:~0.2.0" + xtend: "npm:~4.0.0" + checksum: 10c0/6aecddafbc14db142a47df295b2d832630dd4af6ec62a52dbf00eefa7adea249a3182a6c920c5e24974204f7234d02ed2b073f6f8eb164ba2e620d93218e2e66 + languageName: node + linkType: hard + +"esbuild@npm:^0.27.0": + version: 0.27.2 + resolution: "esbuild@npm:0.27.2" + dependencies: + "@esbuild/aix-ppc64": "npm:0.27.2" + "@esbuild/android-arm": "npm:0.27.2" + "@esbuild/android-arm64": "npm:0.27.2" + "@esbuild/android-x64": "npm:0.27.2" + "@esbuild/darwin-arm64": "npm:0.27.2" + "@esbuild/darwin-x64": "npm:0.27.2" + "@esbuild/freebsd-arm64": "npm:0.27.2" + "@esbuild/freebsd-x64": "npm:0.27.2" + "@esbuild/linux-arm": "npm:0.27.2" + "@esbuild/linux-arm64": "npm:0.27.2" + "@esbuild/linux-ia32": "npm:0.27.2" + "@esbuild/linux-loong64": "npm:0.27.2" + "@esbuild/linux-mips64el": "npm:0.27.2" + "@esbuild/linux-ppc64": "npm:0.27.2" + "@esbuild/linux-riscv64": "npm:0.27.2" + "@esbuild/linux-s390x": "npm:0.27.2" + "@esbuild/linux-x64": "npm:0.27.2" + "@esbuild/netbsd-arm64": "npm:0.27.2" + "@esbuild/netbsd-x64": "npm:0.27.2" + "@esbuild/openbsd-arm64": "npm:0.27.2" + "@esbuild/openbsd-x64": "npm:0.27.2" + "@esbuild/openharmony-arm64": "npm:0.27.2" + "@esbuild/sunos-x64": "npm:0.27.2" + "@esbuild/win32-arm64": "npm:0.27.2" + "@esbuild/win32-ia32": "npm:0.27.2" + "@esbuild/win32-x64": "npm:0.27.2" + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-arm64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-arm64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/openharmony-arm64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10c0/cf83f626f55500f521d5fe7f4bc5871bec240d3deb2a01fbd379edc43b3664d1167428738a5aad8794b35d1cca985c44c375b1cd38a2ca613c77ced2c83aafcd + languageName: node + linkType: hard + +"ev-store@npm:^7.0.0": + version: 7.0.0 + resolution: "ev-store@npm:7.0.0" + dependencies: + individual: "npm:^3.0.0" + checksum: 10c0/a470c07142a34ebc1aff20291fafe56675f4231ac5077de2dd6df6134e257a603b45efd4865c2f368084e40b1ac8efcec1459a182ce4bcd52256ae70e1b3dd5d + languageName: node + linkType: hard + +"exponential-backoff@npm:^3.1.1": + version: 3.1.3 + resolution: "exponential-backoff@npm:3.1.3" + checksum: 10c0/77e3ae682b7b1f4972f563c6dbcd2b0d54ac679e62d5d32f3e5085feba20483cf28bd505543f520e287a56d4d55a28d7874299941faf637e779a1aa5994d1267 + languageName: node + linkType: hard + +"fdir@npm:^6.5.0": + version: 6.5.0 + resolution: "fdir@npm:6.5.0" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: 10c0/e345083c4306b3aed6cb8ec551e26c36bab5c511e99ea4576a16750ddc8d3240e63826cc624f5ae17ad4dc82e68a253213b60d556c11bfad064b7607847ed07f + languageName: node + linkType: hard + +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 + languageName: node + linkType: hard + +"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" + dependencies: + node-gyp: "npm:latest" + conditions: os=darwin + languageName: node + linkType: hard + +"glob@npm:^13.0.0": + version: 13.0.0 + resolution: "glob@npm:13.0.0" + dependencies: + minimatch: "npm:^10.1.1" + minipass: "npm:^7.1.2" + path-scurry: "npm:^2.0.0" + checksum: 10c0/8e2f5821f3f7c312dd102e23a15b80c79e0837a9872784293ba2e15ec73b3f3749a49a42a31bfcb4e52c84820a474e92331c2eebf18819d20308f5c33876630a + languageName: node + linkType: hard + +"global@npm:^4.3.0": + version: 4.4.0 + resolution: "global@npm:4.4.0" + dependencies: + min-document: "npm:^2.19.0" + process: "npm:^0.11.10" + checksum: 10c0/4a467aec6602c00a7c5685f310574ab04e289ad7f894f0f01c9c5763562b82f4b92d1e381ce6c5bbb12173e2a9f759c1b63dda6370cfb199970267e14d90aa91 + languageName: node + linkType: hard + +"graceful-fs@npm:^4.2.6": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.1.1": + version: 4.2.0 + resolution: "http-cache-semantics@npm:4.2.0" + checksum: 10c0/45b66a945cf13ec2d1f29432277201313babf4a01d9e52f44b31ca923434083afeca03f18417f599c9ab3d0e7b618ceb21257542338b57c54b710463b4a53e37 + languageName: node + linkType: hard + +"http-proxy-agent@npm:^7.0.0": + version: 7.0.2 + resolution: "http-proxy-agent@npm:7.0.2" + dependencies: + agent-base: "npm:^7.1.0" + debug: "npm:^4.3.4" + checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^7.0.1": + version: 7.0.6 + resolution: "https-proxy-agent@npm:7.0.6" + dependencies: + agent-base: "npm:^7.1.2" + debug: "npm:4" + checksum: 10c0/f729219bc735edb621fa30e6e84e60ee5d00802b8247aac0d7b79b0bd6d4b3294737a337b93b86a0bd9e68099d031858a39260c976dc14cdbba238ba1f8779ac + languageName: node + linkType: hard + +"iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 + languageName: node + linkType: hard + +"individual@npm:^3.0.0": + version: 3.0.0 + resolution: "individual@npm:3.0.0" + checksum: 10c0/1d5b7af8833a4af77755a98abc0f69e0f54396ca379a5b2287f0b4dafbbbd9ac896e413e780ce18e61476b9bbfe4144b8a36d218770a7a707d490c09d428ea1b + languageName: node + linkType: hard + +"ip-address@npm:^10.0.1": + version: 10.1.0 + resolution: "ip-address@npm:10.1.0" + checksum: 10c0/0103516cfa93f6433b3bd7333fa876eb21263912329bfa47010af5e16934eeeff86f3d2ae700a3744a137839ddfad62b900c7a445607884a49b5d1e32a3d7566 + languageName: node + linkType: hard + +"is-object@npm:^1.0.1": + version: 1.0.2 + resolution: "is-object@npm:1.0.2" + checksum: 10c0/9cfb80c3a850f453d4a77297e0556bc2040ac6bea5b6e418aee208654938b36bab768169bef3945ccfac7a9bb460edd8034e7c6d8973bcf147d7571e1b53e764 + languageName: node + linkType: hard + +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 + languageName: node + linkType: hard + +"lru-cache@npm:^11.0.0, lru-cache@npm:^11.1.0, lru-cache@npm:^11.2.1": + version: 11.2.5 + resolution: "lru-cache@npm:11.2.5" + checksum: 10c0/cc98958d25dddf1c8a8cbdc49588bd3b24450e8dfa78f32168fd188a20d4a0331c7406d0f3250c86a46619ee288056fd7a1195e8df56dc8a9592397f4fbd8e1d + languageName: node + linkType: hard + +"make-fetch-happen@npm:^15.0.0": + version: 15.0.3 + resolution: "make-fetch-happen@npm:15.0.3" + dependencies: + "@npmcli/agent": "npm:^4.0.0" + cacache: "npm:^20.0.1" + http-cache-semantics: "npm:^4.1.1" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^5.0.0" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^1.0.0" + proc-log: "npm:^6.0.0" + promise-retry: "npm:^2.0.1" + ssri: "npm:^13.0.0" + checksum: 10c0/525f74915660be60b616bcbd267c4a5b59481b073ba125e45c9c3a041bb1a47a2bd0ae79d028eb6f5f95bf9851a4158423f5068539c3093621abb64027e8e461 + languageName: node + linkType: hard + +"min-document@npm:^2.19.0": + version: 2.19.2 + resolution: "min-document@npm:2.19.2" + dependencies: + dom-walk: "npm:^0.1.0" + checksum: 10c0/f6cd59ae07758583bda19cf86ffa8e072cc6e1d72d4e2a62fbf72af3ca630f66ac6a0b3e0ca2b83d5939886da2d006c309fbd0e94f17931ad117860c3fb51bf7 + languageName: node + linkType: hard + +"minimatch@npm:^10.1.1": + version: 10.1.1 + resolution: "minimatch@npm:10.1.1" + dependencies: + "@isaacs/brace-expansion": "npm:^5.0.0" + checksum: 10c0/c85d44821c71973d636091fddbfbffe62370f5ee3caf0241c5b60c18cd289e916200acb2361b7e987558cd06896d153e25d505db9fc1e43e6b4b6752e2702902 + languageName: node + linkType: hard + +"minipass-collect@npm:^2.0.1": + version: 2.0.1 + resolution: "minipass-collect@npm:2.0.1" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e + languageName: node + linkType: hard + +"minipass-fetch@npm:^5.0.0": + version: 5.0.0 + resolution: "minipass-fetch@npm:5.0.0" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^7.0.3" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^3.0.1" + dependenciesMeta: + encoding: + optional: true + checksum: 10c0/9443aab5feab190972f84b64116e54e58dd87a58e62399cae0a4a7461b80568281039b7c3a38ba96453431ebc799d1e26999e548540156216729a4967cd5ef06 + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb + languageName: node + linkType: hard + +"minipass@npm:^3.0.0": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c + languageName: node + linkType: hard + +"minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2": + version: 7.1.2 + resolution: "minipass@npm:7.1.2" + checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557 + languageName: node + linkType: hard + +"minizlib@npm:^3.0.1, minizlib@npm:^3.1.0": + version: 3.1.0 + resolution: "minizlib@npm:3.1.0" + dependencies: + minipass: "npm:^7.1.2" + checksum: 10c0/5aad75ab0090b8266069c9aabe582c021ae53eb33c6c691054a13a45db3b4f91a7fb1bd79151e6b4e9e9a86727b522527c0a06ec7d45206b745d54cd3097bcec + languageName: node + linkType: hard + +"ms@npm:^2.1.3": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 + languageName: node + linkType: hard + +"nanoid@npm:^3.3.11": + version: 3.3.11 + resolution: "nanoid@npm:3.3.11" + bin: + nanoid: bin/nanoid.cjs + checksum: 10c0/40e7f70b3d15f725ca072dfc4f74e81fcf1fbb02e491cf58ac0c79093adc9b0a73b152bcde57df4b79cd097e13023d7504acb38404a4da7bc1cd8e887b82fe0b + languageName: node + linkType: hard + +"nanoid@npm:^4.0.1": + version: 4.0.2 + resolution: "nanoid@npm:4.0.2" + bin: + nanoid: bin/nanoid.js + checksum: 10c0/3fec62f422bc4727918eda0e7aa43e9cbb2e759be72813a0587b9dac99727d3c7ad972efce7f4f1d4cb5c7c554136a1ec3b1043d1d91d28d818d6acbe98200e5 + languageName: node + linkType: hard + +"negotiator@npm:^1.0.0": + version: 1.0.0 + resolution: "negotiator@npm:1.0.0" + checksum: 10c0/4c559dd52669ea48e1914f9d634227c561221dd54734070791f999c52ed0ff36e437b2e07d5c1f6e32909fc625fe46491c16e4a8f0572567d4dd15c3a4fda04b + languageName: node + linkType: hard + +"next-tick@npm:^0.2.2": + version: 0.2.2 + resolution: "next-tick@npm:0.2.2" + checksum: 10c0/ccecbe773004af4ef06870dec192b5c8ad8cfe42425306bff1a90738339c6e6e3a520e65536f8a46a76b45ebf82a7049c8252b3518ec7bac9900859b786aed5b + languageName: node + linkType: hard + +"node-gyp@npm:latest": + version: 12.2.0 + resolution: "node-gyp@npm:12.2.0" + dependencies: + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^15.0.0" + nopt: "npm:^9.0.0" + proc-log: "npm:^6.0.0" + semver: "npm:^7.3.5" + tar: "npm:^7.5.4" + tinyglobby: "npm:^0.2.12" + which: "npm:^6.0.0" + bin: + node-gyp: bin/node-gyp.js + checksum: 10c0/3ed046746a5a7d90950cd8b0547332b06598443f31fe213ef4332a7174c7b7d259e1704835feda79b87d3f02e59d7791842aac60642ede4396ab25fdf0f8f759 + languageName: node + linkType: hard + +"nopt@npm:^9.0.0": + version: 9.0.0 + resolution: "nopt@npm:9.0.0" + dependencies: + abbrev: "npm:^4.0.0" + bin: + nopt: bin/nopt.js + checksum: 10c0/1822eb6f9b020ef6f7a7516d7b64a8036e09666ea55ac40416c36e4b2b343122c3cff0e2f085675f53de1d2db99a2a89a60ccea1d120bcd6a5347bf6ceb4a7fd + languageName: node + linkType: hard + +"p-map@npm:^7.0.2": + version: 7.0.4 + resolution: "p-map@npm:7.0.4" + checksum: 10c0/a5030935d3cb2919d7e89454d1ce82141e6f9955413658b8c9403cfe379283770ed3048146b44cde168aa9e8c716505f196d5689db0ae3ce9a71521a2fef3abd + languageName: node + linkType: hard + +"path-scurry@npm:^2.0.0": + version: 2.0.1 + resolution: "path-scurry@npm:2.0.1" + dependencies: + lru-cache: "npm:^11.0.0" + minipass: "npm:^7.1.2" + checksum: 10c0/2a16ed0e81fbc43513e245aa5763354e25e787dab0d539581a6c3f0f967461a159ed6236b2559de23aa5b88e7dc32b469b6c47568833dd142a4b24b4f5cd2620 + languageName: node + linkType: hard + +"picocolors@npm:^1.1.1": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 + languageName: node + linkType: hard + +"picomatch@npm:^4.0.3": + version: 4.0.3 + resolution: "picomatch@npm:4.0.3" + checksum: 10c0/9582c951e95eebee5434f59e426cddd228a7b97a0161a375aed4be244bd3fe8e3a31b846808ea14ef2c8a2527a6eeab7b3946a67d5979e81694654f939473ae2 + languageName: node + linkType: hard + +"postcss@npm:^8.5.6": + version: 8.5.6 + resolution: "postcss@npm:8.5.6" + dependencies: + nanoid: "npm:^3.3.11" + picocolors: "npm:^1.1.1" + source-map-js: "npm:^1.2.1" + checksum: 10c0/5127cc7c91ed7a133a1b7318012d8bfa112da9ef092dddf369ae699a1f10ebbd89b1b9f25f3228795b84585c72aabd5ced5fc11f2ba467eedf7b081a66fad024 + languageName: node + linkType: hard + +"proc-log@npm:^6.0.0": + version: 6.1.0 + resolution: "proc-log@npm:6.1.0" + checksum: 10c0/4f178d4062733ead9d71a9b1ab24ebcecdfe2250916a5b1555f04fe2eda972a0ec76fbaa8df1ad9c02707add6749219d118a4fc46dc56bdfe4dde4b47d80bb82 + languageName: node + linkType: hard + +"process@npm:^0.11.10": + version: 0.11.10 + resolution: "process@npm:0.11.10" + checksum: 10c0/40c3ce4b7e6d4b8c3355479df77aeed46f81b279818ccdc500124e6a5ab882c0cc81ff7ea16384873a95a74c4570b01b120f287abbdd4c877931460eca6084b3 + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: "npm:^2.0.2" + retry: "npm:^0.12.0" + checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe + languageName: node + linkType: hard + +"rollup@npm:^4.43.0": + version: 4.54.0 + resolution: "rollup@npm:4.54.0" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.54.0" + "@rollup/rollup-android-arm64": "npm:4.54.0" + "@rollup/rollup-darwin-arm64": "npm:4.54.0" + "@rollup/rollup-darwin-x64": "npm:4.54.0" + "@rollup/rollup-freebsd-arm64": "npm:4.54.0" + "@rollup/rollup-freebsd-x64": "npm:4.54.0" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.54.0" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.54.0" + "@rollup/rollup-linux-arm64-gnu": "npm:4.54.0" + "@rollup/rollup-linux-arm64-musl": "npm:4.54.0" + "@rollup/rollup-linux-loong64-gnu": "npm:4.54.0" + "@rollup/rollup-linux-ppc64-gnu": "npm:4.54.0" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.54.0" + "@rollup/rollup-linux-riscv64-musl": "npm:4.54.0" + "@rollup/rollup-linux-s390x-gnu": "npm:4.54.0" + "@rollup/rollup-linux-x64-gnu": "npm:4.54.0" + "@rollup/rollup-linux-x64-musl": "npm:4.54.0" + "@rollup/rollup-openharmony-arm64": "npm:4.54.0" + "@rollup/rollup-win32-arm64-msvc": "npm:4.54.0" + "@rollup/rollup-win32-ia32-msvc": "npm:4.54.0" + "@rollup/rollup-win32-x64-gnu": "npm:4.54.0" + "@rollup/rollup-win32-x64-msvc": "npm:4.54.0" + "@types/estree": "npm:1.0.8" + fsevents: "npm:~2.3.2" + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-freebsd-arm64": + optional: true + "@rollup/rollup-freebsd-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-loong64-gnu": + optional: true + "@rollup/rollup-linux-ppc64-gnu": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-riscv64-musl": + optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-openharmony-arm64": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-gnu": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10c0/62e5fd5d43e72751ac631f13fd7e70bec0fc3809231d5e087c3c0811945e7b8f0956620c5bed4e0cd67085325324266989e5ea4d22985c2677119ac7809b6455 + languageName: node + linkType: hard + +"root-workspace-0b6124@workspace:.": + version: 0.0.0-use.local + resolution: "root-workspace-0b6124@workspace:." + dependencies: + "@calcit/procs": "npm:0.12.0" + "@calcit/std": "npm:^0.0.3" + bottom-tip: "npm:^0.1.5" + vite: "npm:^7.3.0" + languageName: unknown + linkType: soft + +"safer-buffer@npm:>= 2.1.2 < 3.0.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 + languageName: node + linkType: hard + +"semver@npm:^7.3.5": + version: 7.7.3 + resolution: "semver@npm:7.7.3" + bin: + semver: bin/semver.js + checksum: 10c0/4afe5c986567db82f44c8c6faef8fe9df2a9b1d98098fc1721f57c696c4c21cebd572f297fc21002f81889492345b8470473bc6f4aff5fb032a6ea59ea2bc45e + languageName: node + linkType: hard + +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^8.0.3": + version: 8.0.5 + resolution: "socks-proxy-agent@npm:8.0.5" + dependencies: + agent-base: "npm:^7.1.2" + debug: "npm:^4.3.4" + socks: "npm:^2.8.3" + checksum: 10c0/5d2c6cecba6821389aabf18728325730504bf9bb1d9e342e7987a5d13badd7a98838cc9a55b8ed3cb866ad37cc23e1086f09c4d72d93105ce9dfe76330e9d2a6 + languageName: node + linkType: hard + +"socks@npm:^2.8.3": + version: 2.8.7 + resolution: "socks@npm:2.8.7" + dependencies: + ip-address: "npm:^10.0.1" + smart-buffer: "npm:^4.2.0" + checksum: 10c0/2805a43a1c4bcf9ebf6e018268d87b32b32b06fbbc1f9282573583acc155860dc361500f89c73bfbb157caa1b4ac78059eac0ef15d1811eb0ca75e0bdadbc9d2 + languageName: node + linkType: hard + +"source-map-js@npm:^1.2.1": + version: 1.2.1 + resolution: "source-map-js@npm:1.2.1" + checksum: 10c0/7bda1fc4c197e3c6ff17de1b8b2c20e60af81b63a52cb32ec5a5d67a20a7d42651e2cb34ebe93833c5a2a084377e17455854fee3e21e7925c64a51b6a52b0faf + languageName: node + linkType: hard + +"ssri@npm:^13.0.0": + version: 13.0.0 + resolution: "ssri@npm:13.0.0" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/405f3a531cd98b013cecb355d63555dca42fd12c7bc6671738aaa9a82882ff41cdf0ef9a2b734ca4f9a760338f114c29d01d9238a65db3ccac27929bd6e6d4b2 + languageName: node + linkType: hard + +"string-template@npm:~0.2.0": + version: 0.2.1 + resolution: "string-template@npm:0.2.1" + checksum: 10c0/5dc9bd8741e50aaf1ebb616c64fdada32301dc52718692a7a13088285b96fecd1010ab612b348ef29c08dff4df4f96c8e80689ca855a578d01cc182e48199182 + languageName: node + linkType: hard + +"tar@npm:^7.5.4": + version: 7.5.7 + resolution: "tar@npm:7.5.7" + dependencies: + "@isaacs/fs-minipass": "npm:^4.0.0" + chownr: "npm:^3.0.0" + minipass: "npm:^7.1.2" + minizlib: "npm:^3.1.0" + yallist: "npm:^5.0.0" + checksum: 10c0/51f261afc437e1112c3e7919478d6176ea83f7f7727864d8c2cce10f0b03a631d1911644a567348c3063c45abdae39718ba97abb073d22aa3538b9a53ae1e31c + languageName: node + linkType: hard + +"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.15": + version: 0.2.15 + resolution: "tinyglobby@npm:0.2.15" + dependencies: + fdir: "npm:^6.5.0" + picomatch: "npm:^4.0.3" + checksum: 10c0/869c31490d0d88eedb8305d178d4c75e7463e820df5a9b9d388291daf93e8b1eb5de1dad1c1e139767e4269fe75f3b10d5009b2cc14db96ff98986920a186844 + languageName: node + linkType: hard + +"unique-filename@npm:^5.0.0": + version: 5.0.0 + resolution: "unique-filename@npm:5.0.0" + dependencies: + unique-slug: "npm:^6.0.0" + checksum: 10c0/afb897e9cf4c2fb622ea716f7c2bb462001928fc5f437972213afdf1cc32101a230c0f1e9d96fc91ee5185eca0f2feb34127145874975f347be52eb91d6ccc2c + languageName: node + linkType: hard + +"unique-slug@npm:^6.0.0": + version: 6.0.0 + resolution: "unique-slug@npm:6.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10c0/da7ade4cb04eb33ad0499861f82fe95ce9c7c878b7139dc54d140ecfb6a6541c18a5c8dac16188b8b379fe62c0c1f1b710814baac910cde5f4fec06212126c6a + languageName: node + linkType: hard + +"virtual-dom@npm:^2.1.1": + version: 2.1.1 + resolution: "virtual-dom@npm:2.1.1" + dependencies: + browser-split: "npm:0.0.1" + error: "npm:^4.3.0" + ev-store: "npm:^7.0.0" + global: "npm:^4.3.0" + is-object: "npm:^1.0.1" + next-tick: "npm:^0.2.2" + x-is-array: "npm:0.1.0" + x-is-string: "npm:0.1.0" + checksum: 10c0/15b89e0ae3d259a190c0489c74b3119f10e93fe55d108f394749a1a324e413e22fbc98710538b31cfaafbedd2ab0ff5379c61790e20778b923e33375f47d3cfb + languageName: node + linkType: hard + +"vite@npm:^7.3.0": + version: 7.3.0 + resolution: "vite@npm:7.3.0" + dependencies: + esbuild: "npm:^0.27.0" + fdir: "npm:^6.5.0" + fsevents: "npm:~2.3.3" + picomatch: "npm:^4.0.3" + postcss: "npm:^8.5.6" + rollup: "npm:^4.43.0" + tinyglobby: "npm:^0.2.15" + peerDependencies: + "@types/node": ^20.19.0 || >=22.12.0 + jiti: ">=1.21.0" + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: ">=0.54.8" + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + bin: + vite: bin/vite.js + checksum: 10c0/0457c196cdd5761ec351c0f353945430fbad330e615b9eeab729c8ae163334f18acdc1d9cd7d9d673dbf111f07f6e4f0b25d4ac32360e65b4a6df9991046f3ff + languageName: node + linkType: hard + +"which@npm:^6.0.0": + version: 6.0.0 + resolution: "which@npm:6.0.0" + dependencies: + isexe: "npm:^3.1.1" + bin: + node-which: bin/which.js + checksum: 10c0/fe9d6463fe44a76232bb6e3b3181922c87510a5b250a98f1e43a69c99c079b3f42ddeca7e03d3e5f2241bf2d334f5a7657cfa868b97c109f3870625842f4cc15 + languageName: node + linkType: hard + +"x-is-array@npm:0.1.0": + version: 0.1.0 + resolution: "x-is-array@npm:0.1.0" + checksum: 10c0/b559d9acfdffb3ea6c31e07b152439df2e85d98cc674846ccb785a003ff597bd3e31475d50eda62296c1503284c69c00bbb1f1dd5b3958b32aa72ea26099c42c + languageName: node + linkType: hard + +"x-is-string@npm:0.1.0": + version: 0.1.0 + resolution: "x-is-string@npm:0.1.0" + checksum: 10c0/1ec001229eb17ac5c08c5bfb03c6d6e415306a6e923c0dbcadc5cb655b6008f61d50f29fcf610c9527bcbb9df40db82fb3cc9aefcb575898fba2affa17864f1c + languageName: node + linkType: hard + +"xtend@npm:~4.0.0": + version: 4.0.2 + resolution: "xtend@npm:4.0.2" + checksum: 10c0/366ae4783eec6100f8a02dff02ac907bf29f9a00b82ac0264b4d8b832ead18306797e283cf19de776538babfdcb2101375ec5646b59f08c52128ac4ab812ed0e + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a + languageName: node + linkType: hard + +"yallist@npm:^5.0.0": + version: 5.0.0 + resolution: "yallist@npm:5.0.0" + checksum: 10c0/a499c81ce6d4a1d260d4ea0f6d49ab4da09681e32c3f0472dee16667ed69d01dae63a3b81745a24bd78476ec4fcf856114cb4896ace738e01da34b2c42235416 + languageName: node + linkType: hard