diff --git a/.github/workflows/ci-checks.yaml b/.github/workflows/ci-checks.yaml index 8009e97..5c16f2e 100644 --- a/.github/workflows/ci-checks.yaml +++ b/.github/workflows/ci-checks.yaml @@ -21,28 +21,21 @@ jobs: node-version: "20" # Specify the node version you need - name: Setup pnpm - uses: pnpm/action-setup@v2 + uses: pnpm/action-setup@v4 with: - version: 8 - run_install: false - - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - + version: 10 + - name: Cache pnpm store uses: actions/cache@v4 with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.OS }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + path: ~/.pnpm-store + key: ${{ runner.OS }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | - ${{ runner.OS }}-pnpm-store- + ${{ runner.OS }}-pnpm- - name: Install Dependencies run: pnpm install --frozen-lockfile - lint: needs: install-dependencies runs-on: [ubuntu-latest] @@ -51,32 +44,25 @@ jobs: - name: Use Node.js uses: actions/setup-node@v4 with: - node-version: "20" # Specify the node version you need + node-version: "20" - name: Setup pnpm - uses: pnpm/action-setup@v2 + uses: pnpm/action-setup@v4 with: - version: 8 - run_install: false - - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - + version: 10 + - name: Cache pnpm store uses: actions/cache@v4 with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.OS }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + path: ~/.pnpm-store + key: ${{ runner.OS }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | - ${{ runner.OS }}-pnpm-store- + ${{ runner.OS }}-pnpm- - name: Install Dependencies run: pnpm install --frozen-lockfile - - name: Run Linter - run: packagenpm run lint + run: pnpm run lint:check format: needs: install-dependencies @@ -86,33 +72,53 @@ jobs: - name: Use Node.js uses: actions/setup-node@v4 with: - node-version: "20" # Specify the node version you need + node-version: "20" - name: Setup pnpm - uses: pnpm/action-setup@v2 + uses: pnpm/action-setup@v4 with: - version: 8 - run_install: false - - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - + version: 10 + - name: Cache pnpm store uses: actions/cache@v4 with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.OS }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + path: ~/.pnpm-store + key: ${{ runner.OS }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | - ${{ runner.OS }}-pnpm-store- - + ${{ runner.OS }}-pnpm- - name: Install Dependencies run: pnpm install --frozen-lockfile + - name: Run Prettier + run: pnpm run format:check + + types: + needs: install-dependencies + runs-on: [ubuntu-latest] + steps: + - uses: actions/checkout@v4 + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version: "20" + + - name: Setup pnpm + uses: pnpm/action-setup@v4 + with: + version: 10 + - name: Cache pnpm store + uses: actions/cache@v4 + with: + path: ~/.pnpm-store + key: ${{ runner.OS }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.OS }}-pnpm- + + - name: Install Dependencies + run: pnpm install --frozen-lockfile - name: Run Prettier - run: npm run check-format + run: pnpm run type:check test: needs: install-dependencies @@ -122,29 +128,22 @@ jobs: - name: Use Node.js uses: actions/setup-node@v4 with: - node-version: "20" # Specify the node version you need + node-version: "20" - name: Setup pnpm - uses: pnpm/action-setup@v2 + uses: pnpm/action-setup@v4 with: - version: 8 - run_install: false - - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - + version: 10 + - name: Cache pnpm store uses: actions/cache@v4 with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.OS }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + path: ~/.pnpm-store + key: ${{ runner.OS }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | - ${{ runner.OS }}-pnpm-store- + ${{ runner.OS }}-pnpm- - name: Install Dependencies - run: pnpm install --frozen-lockfile - && npm run build + run: pnpm install --frozen-lockfile && pnpm run build - name: Run Tests run: pnpm run test diff --git a/.gitignore b/.gitignore index b512c09..81c6473 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,19 @@ -node_modules \ No newline at end of file +# Logs +logs +*.log +npm-debug.log* +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/.npmignore b/.npmignore index 122ed5d..7395734 100644 --- a/.npmignore +++ b/.npmignore @@ -1,7 +1,4 @@ src -demo -docker -tests -babel.config.js -esbuild.config.mjs -jest.config.js \ No newline at end of file +tsconfig.js +tsconfig.types.mjs +vite.config.js diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index c99d1e1..0000000 --- a/babel.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - presets: [["@babel/preset-env", { targets: { node: "current" } }]], -} diff --git a/coverage/clover.xml b/coverage/clover.xml deleted file mode 100644 index 10ce8c9..0000000 --- a/coverage/clover.xml +++ /dev/null @@ -1,431 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/coverage/coverage-final.json b/coverage/coverage-final.json deleted file mode 100644 index 6ef97eb..0000000 --- a/coverage/coverage-final.json +++ /dev/null @@ -1,2572 +0,0 @@ -{ - "/workspace/json-viewer/src/component.js": { - "path": "/workspace/json-viewer/src/component.js", - "statementMap": { - "0": { "start": { "line": 25, "column": 23 }, "end": { "line": 35, "column": 1 } }, - "1": { "start": { "line": 44, "column": 4 }, "end": { "line": 44, "column": 11 } }, - "2": { "start": { "line": 46, "column": 4 }, "end": { "line": 46, "column": 41 } }, - "3": { "start": { "line": 48, "column": 4 }, "end": { "line": 48, "column": 64 } }, - "4": { "start": { "line": 51, "column": 23 }, "end": { "line": 51, "column": 58 } }, - "5": { "start": { "line": 52, "column": 24 }, "end": { "line": 52, "column": 55 } }, - "6": { "start": { "line": 53, "column": 4 }, "end": { "line": 53, "column": 41 } }, - "7": { "start": { "line": 55, "column": 4 }, "end": { "line": 55, "column": 39 } }, - "8": { "start": { "line": 56, "column": 4 }, "end": { "line": 56, "column": 54 } }, - "9": { "start": { "line": 59, "column": 4 }, "end": { "line": 59, "column": 36 } }, - "10": { "start": { "line": 61, "column": 4 }, "end": { "line": 61, "column": 60 } }, - "11": { "start": { "line": 67, "column": 4 }, "end": { "line": 69, "column": 5 } }, - "12": { "start": { "line": 68, "column": 6 }, "end": { "line": 68, "column": 60 } }, - "13": { "start": { "line": 72, "column": 29 }, "end": { "line": 72, "column": 73 } }, - "14": { "start": { "line": 74, "column": 10 }, "end": { "line": 76, "column": 3 } }, - "15": { "start": { "line": 75, "column": 4 }, "end": { "line": 75, "column": 73 } }, - "16": { "start": { "line": 78, "column": 23 }, "end": { "line": 91, "column": 3 } }, - "17": { "start": { "line": 79, "column": 4 }, "end": { "line": 90, "column": 5 } }, - "18": { "start": { "line": 80, "column": 6 }, "end": { "line": 80, "column": 34 } }, - "19": { "start": { "line": 81, "column": 6 }, "end": { "line": 83, "column": 7 } }, - "20": { "start": { "line": 82, "column": 8 }, "end": { "line": 82, "column": 71 } }, - "21": { "start": { "line": 84, "column": 6 }, "end": { "line": 84, "column": 51 } }, - "22": { "start": { "line": 84, "column": 45 }, "end": { "line": 84, "column": 51 } }, - "23": { "start": { "line": 86, "column": 6 }, "end": { "line": 86, "column": 37 } }, - "24": { "start": { "line": 87, "column": 6 }, "end": { "line": 87, "column": 20 } }, - "25": { "start": { "line": 89, "column": 6 }, "end": { "line": 89, "column": 55 } }, - "26": { "start": { "line": 94, "column": 4 }, "end": { "line": 94, "column": 68 } }, - "27": { "start": { "line": 98, "column": 4 }, "end": { "line": 98, "column": 66 } }, - "28": { "start": { "line": 102, "column": 4 }, "end": { "line": 102, "column": 72 } }, - "29": { "start": { "line": 106, "column": 4 }, "end": { "line": 110, "column": 6 } }, - "30": { "start": { "line": 114, "column": 4 }, "end": { "line": 118, "column": 5 } }, - "31": { "start": { "line": 122, "column": 4 }, "end": { "line": 122, "column": 69 } }, - "32": { "start": { "line": 126, "column": 4 }, "end": { "line": 126, "column": 66 } }, - "33": { "start": { "line": 133, "column": 4 }, "end": { "line": 146, "column": 5 } }, - "34": { "start": { "line": 134, "column": 6 }, "end": { "line": 134, "column": 47 } }, - "35": { "start": { "line": 136, "column": 6 }, "end": { "line": 140, "column": 14 } }, - "36": { "start": { "line": 140, "column": 8 }, "end": { "line": 140, "column": 14 } }, - "37": { "start": { "line": 142, "column": 6 }, "end": { "line": 142, "column": 68 } }, - "38": { "start": { "line": 143, "column": 6 }, "end": { "line": 143, "column": 36 } }, - "39": { "start": { "line": 145, "column": 6 }, "end": { "line": 145, "column": 49 } }, - "40": { "start": { "line": 153, "column": 4 }, "end": { "line": 174, "column": 5 } }, - "41": { "start": { "line": 154, "column": 6 }, "end": { "line": 154, "column": 45 } }, - "42": { "start": { "line": 156, "column": 28 }, "end": { "line": 156, "column": 51 } }, - "43": { "start": { "line": 158, "column": 6 }, "end": { "line": 158, "column": 54 } }, - "44": { "start": { "line": 158, "column": 48 }, "end": { "line": 158, "column": 54 } }, - "45": { "start": { "line": 159, "column": 6 }, "end": { "line": 159, "column": 40 } }, - "46": { "start": { "line": 161, "column": 6 }, "end": { "line": 171, "column": 7 } }, - "47": { "start": { "line": 162, "column": 8 }, "end": { "line": 167, "column": 12 } }, - "48": { "start": { "line": 163, "column": 23 }, "end": { "line": 163, "column": 31 } }, - "49": { "start": { "line": 165, "column": 12 }, "end": { "line": 165, "column": 36 } }, - "50": { "start": { "line": 166, "column": 12 }, "end": { "line": 166, "column": 26 } }, - "51": { "start": { "line": 169, "column": 8 }, "end": { "line": 169, "column": 35 } }, - "52": { "start": { "line": 170, "column": 8 }, "end": { "line": 170, "column": 22 } }, - "53": { "start": { "line": 173, "column": 6 }, "end": { "line": 173, "column": 48 } }, - "54": { "start": { "line": 178, "column": 4 }, "end": { "line": 178, "column": 24 } }, - "55": { "start": { "line": 182, "column": 4 }, "end": { "line": 186, "column": 6 } }, - "56": { "start": { "line": 183, "column": 19 }, "end": { "line": 183, "column": 35 } }, - "57": { "start": { "line": 184, "column": 6 }, "end": { "line": 184, "column": 27 } }, - "58": { "start": { "line": 185, "column": 6 }, "end": { "line": 185, "column": 32 } }, - "59": { "start": { "line": 185, "column": 16 }, "end": { "line": 185, "column": 32 } }, - "60": { "start": { "line": 193, "column": 4 }, "end": { "line": 200, "column": 5 } }, - "61": { "start": { "line": 195, "column": 23 }, "end": { "line": 195, "column": 75 } }, - "62": { "start": { "line": 195, "column": 56 }, "end": { "line": 195, "column": 74 } }, - "63": { "start": { "line": 196, "column": 6 }, "end": { "line": 196, "column": 31 } }, - "64": { "start": { "line": 198, "column": 6 }, "end": { "line": 198, "column": 75 } }, - "65": { "start": { "line": 199, "column": 6 }, "end": { "line": 199, "column": 32 } }, - "66": { "start": { "line": 203, "column": 12 }, "end": { "line": 216, "column": 3 } }, - "67": { "start": { "line": 206, "column": 4 }, "end": { "line": 215, "column": 6 } }, - "68": { "start": { "line": 219, "column": 0 }, "end": { "line": 219, "column": 48 } } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { "start": { "line": 43, "column": 2 }, "end": { "line": 43, "column": 3 } }, - "loc": { "start": { "line": 43, "column": 16 }, "end": { "line": 62, "column": 3 } }, - "line": 43 - }, - "1": { - "name": "(anonymous_1)", - "decl": { "start": { "line": 65, "column": 2 }, "end": { "line": 65, "column": 3 } }, - "loc": { "start": { "line": 65, "column": 34 }, "end": { "line": 70, "column": 3 } }, - "line": 65 - }, - "2": { - "name": "(anonymous_2)", - "decl": { "start": { "line": 67, "column": 43 }, "end": { "line": 67, "column": 44 } }, - "loc": { "start": { "line": 68, "column": 6 }, "end": { "line": 68, "column": 60 } }, - "line": 68 - }, - "3": { - "name": "(anonymous_3)", - "decl": { "start": { "line": 74, "column": 10 }, "end": { "line": 74, "column": 11 } }, - "loc": { "start": { "line": 74, "column": 23 }, "end": { "line": 76, "column": 3 } }, - "line": 74 - }, - "4": { - "name": "(anonymous_4)", - "decl": { "start": { "line": 78, "column": 23 }, "end": { "line": 78, "column": 24 } }, - "loc": { "start": { "line": 78, "column": 74 }, "end": { "line": 91, "column": 3 } }, - "line": 78 - }, - "5": { - "name": "(anonymous_5)", - "decl": { "start": { "line": 93, "column": 2 }, "end": { "line": 93, "column": 3 } }, - "loc": { "start": { "line": 93, "column": 27 }, "end": { "line": 95, "column": 3 } }, - "line": 93 - }, - "6": { - "name": "(anonymous_6)", - "decl": { "start": { "line": 97, "column": 2 }, "end": { "line": 97, "column": 3 } }, - "loc": { "start": { "line": 97, "column": 25 }, "end": { "line": 99, "column": 3 } }, - "line": 97 - }, - "7": { - "name": "(anonymous_7)", - "decl": { "start": { "line": 101, "column": 2 }, "end": { "line": 101, "column": 3 } }, - "loc": { "start": { "line": 101, "column": 24 }, "end": { "line": 103, "column": 3 } }, - "line": 101 - }, - "8": { - "name": "(anonymous_8)", - "decl": { "start": { "line": 105, "column": 2 }, "end": { "line": 105, "column": 3 } }, - "loc": { "start": { "line": 105, "column": 27 }, "end": { "line": 111, "column": 3 } }, - "line": 105 - }, - "9": { - "name": "(anonymous_9)", - "decl": { "start": { "line": 113, "column": 2 }, "end": { "line": 113, "column": 3 } }, - "loc": { "start": { "line": 113, "column": 28 }, "end": { "line": 119, "column": 3 } }, - "line": 113 - }, - "10": { - "name": "(anonymous_10)", - "decl": { "start": { "line": 121, "column": 2 }, "end": { "line": 121, "column": 3 } }, - "loc": { "start": { "line": 121, "column": 28 }, "end": { "line": 123, "column": 3 } }, - "line": 121 - }, - "11": { - "name": "(anonymous_11)", - "decl": { "start": { "line": 125, "column": 2 }, "end": { "line": 125, "column": 3 } }, - "loc": { "start": { "line": 125, "column": 25 }, "end": { "line": 127, "column": 3 } }, - "line": 125 - }, - "12": { - "name": "(anonymous_12)", - "decl": { "start": { "line": 132, "column": 2 }, "end": { "line": 132, "column": 3 } }, - "loc": { "start": { "line": 132, "column": 22 }, "end": { "line": 147, "column": 3 } }, - "line": 132 - }, - "13": { - "name": "(anonymous_13)", - "decl": { "start": { "line": 152, "column": 2 }, "end": { "line": 152, "column": 3 } }, - "loc": { "start": { "line": 152, "column": 20 }, "end": { "line": 175, "column": 3 } }, - "line": 152 - }, - "14": { - "name": "(anonymous_14)", - "decl": { "start": { "line": 163, "column": 16 }, "end": { "line": 163, "column": 17 } }, - "loc": { "start": { "line": 163, "column": 23 }, "end": { "line": 163, "column": 31 } }, - "line": 163 - }, - "15": { - "name": "(anonymous_15)", - "decl": { "start": { "line": 164, "column": 16 }, "end": { "line": 164, "column": 17 } }, - "loc": { "start": { "line": 164, "column": 26 }, "end": { "line": 167, "column": 11 } }, - "line": 164 - }, - "16": { - "name": "(anonymous_16)", - "decl": { "start": { "line": 177, "column": 2 }, "end": { "line": 177, "column": 3 } }, - "loc": { "start": { "line": 177, "column": 16 }, "end": { "line": 179, "column": 3 } }, - "line": 177 - }, - "17": { - "name": "(anonymous_17)", - "decl": { "start": { "line": 181, "column": 2 }, "end": { "line": 181, "column": 3 } }, - "loc": { "start": { "line": 181, "column": 22 }, "end": { "line": 187, "column": 3 } }, - "line": 181 - }, - "18": { - "name": "(anonymous_18)", - "decl": { "start": { "line": 182, "column": 48 }, "end": { "line": 182, "column": 49 } }, - "loc": { "start": { "line": 182, "column": 54 }, "end": { "line": 186, "column": 5 } }, - "line": 182 - }, - "19": { - "name": "(anonymous_19)", - "decl": { "start": { "line": 189, "column": 2 }, "end": { "line": 189, "column": 3 } }, - "loc": { "start": { "line": 189, "column": 53 }, "end": { "line": 201, "column": 3 } }, - "line": 189 - }, - "20": { - "name": "(anonymous_20)", - "decl": { "start": { "line": 195, "column": 49 }, "end": { "line": 195, "column": 50 } }, - "loc": { "start": { "line": 195, "column": 56 }, "end": { "line": 195, "column": 74 } }, - "line": 195 - }, - "21": { - "name": "(anonymous_21)", - "decl": { "start": { "line": 203, "column": 12 }, "end": { "line": 203, "column": 13 } }, - "loc": { "start": { "line": 203, "column": 18 }, "end": { "line": 216, "column": 3 } }, - "line": 203 - } - }, - "branchMap": { - "0": { - "loc": { "start": { "line": 75, "column": 30 }, "end": { "line": 75, "column": 60 } }, - "type": "cond-expr", - "locations": [ - { "start": { "line": 75, "column": 40 }, "end": { "line": 75, "column": 55 } }, - { "start": { "line": 75, "column": 58 }, "end": { "line": 75, "column": 60 } } - ], - "line": 75 - }, - "1": { - "loc": { "start": { "line": 81, "column": 6 }, "end": { "line": 83, "column": 7 } }, - "type": "if", - "locations": [ - { "start": { "line": 81, "column": 6 }, "end": { "line": 83, "column": 7 } }, - { "start": {}, "end": {} } - ], - "line": 81 - }, - "2": { - "loc": { "start": { "line": 81, "column": 10 }, "end": { "line": 81, "column": 57 } }, - "type": "binary-expr", - "locations": [ - { "start": { "line": 81, "column": 10 }, "end": { "line": 81, "column": 23 } }, - { "start": { "line": 81, "column": 27 }, "end": { "line": 81, "column": 57 } } - ], - "line": 81 - }, - "3": { - "loc": { "start": { "line": 84, "column": 6 }, "end": { "line": 84, "column": 51 } }, - "type": "if", - "locations": [ - { "start": { "line": 84, "column": 6 }, "end": { "line": 84, "column": 51 } }, - { "start": {}, "end": {} } - ], - "line": 84 - }, - "4": { - "loc": { "start": { "line": 136, "column": 6 }, "end": { "line": 140, "column": 14 } }, - "type": "if", - "locations": [ - { "start": { "line": 136, "column": 6 }, "end": { "line": 140, "column": 14 } }, - { "start": {}, "end": {} } - ], - "line": 136 - }, - "5": { - "loc": { "start": { "line": 137, "column": 8 }, "end": { "line": 138, "column": 53 } }, - "type": "binary-expr", - "locations": [ - { "start": { "line": 137, "column": 8 }, "end": { "line": 137, "column": 40 } }, - { "start": { "line": 138, "column": 8 }, "end": { "line": 138, "column": 53 } } - ], - "line": 137 - }, - "6": { - "loc": { "start": { "line": 158, "column": 6 }, "end": { "line": 158, "column": 54 } }, - "type": "if", - "locations": [ - { "start": { "line": 158, "column": 6 }, "end": { "line": 158, "column": 54 } }, - { "start": {}, "end": {} } - ], - "line": 158 - }, - "7": { - "loc": { "start": { "line": 161, "column": 6 }, "end": { "line": 171, "column": 7 } }, - "type": "if", - "locations": [ - { "start": { "line": 161, "column": 6 }, "end": { "line": 171, "column": 7 } }, - { "start": { "line": 168, "column": 13 }, "end": { "line": 171, "column": 7 } } - ], - "line": 161 - }, - "8": { - "loc": { "start": { "line": 185, "column": 6 }, "end": { "line": 185, "column": 32 } }, - "type": "if", - "locations": [ - { "start": { "line": 185, "column": 6 }, "end": { "line": 185, "column": 32 } }, - { "start": {}, "end": {} } - ], - "line": 185 - }, - "9": { - "loc": { "start": { "line": 193, "column": 4 }, "end": { "line": 200, "column": 5 } }, - "type": "if", - "locations": [ - { "start": { "line": 193, "column": 4 }, "end": { "line": 200, "column": 5 } }, - { "start": { "line": 197, "column": 11 }, "end": { "line": 200, "column": 5 } } - ], - "line": 193 - } - }, - "s": { - "0": 1, - "1": 21, - "2": 21, - "3": 21, - "4": 21, - "5": 21, - "6": 21, - "7": 21, - "8": 21, - "9": 21, - "10": 21, - "11": 2, - "12": 18, - "13": 1, - "14": 21, - "15": 6, - "16": 21, - "17": 16, - "18": 16, - "19": 12, - "20": 1, - "21": 11, - "22": 1, - "23": 10, - "24": 10, - "25": 5, - "26": 3, - "27": 0, - "28": 3, - "29": 2, - "30": 5, - "31": 0, - "32": 3, - "33": 23, - "34": 23, - "35": 23, - "36": 1, - "37": 22, - "38": 21, - "39": 1, - "40": 0, - "41": 0, - "42": 0, - "43": 0, - "44": 0, - "45": 0, - "46": 0, - "47": 0, - "48": 0, - "49": 0, - "50": 0, - "51": 0, - "52": 0, - "53": 0, - "54": 18, - "55": 0, - "56": 0, - "57": 0, - "58": 0, - "59": 0, - "60": 0, - "61": 0, - "62": 0, - "63": 0, - "64": 0, - "65": 0, - "66": 21, - "67": 10, - "68": 1 - }, - "f": { - "0": 21, - "1": 2, - "2": 18, - "3": 6, - "4": 16, - "5": 3, - "6": 0, - "7": 3, - "8": 2, - "9": 5, - "10": 0, - "11": 3, - "12": 23, - "13": 0, - "14": 0, - "15": 0, - "16": 18, - "17": 0, - "18": 0, - "19": 0, - "20": 0, - "21": 10 - }, - "b": { - "0": [0, 6], - "1": [1, 11], - "2": [12, 2], - "3": [1, 10], - "4": [1, 22], - "5": [23, 22], - "6": [0, 0], - "7": [0, 0], - "8": [0, 0], - "9": [0, 0] - }, - "_coverageSchema": "1a1c01bbd47fc00a2c39e90264f33305004495a9", - "hash": "d039e5fc9d5b6b10fa6e77a933af38d7c13d83fa" - }, - "/workspace/json-viewer/src/data-helpers.js": { - "path": "/workspace/json-viewer/src/data-helpers.js", - "statementMap": { - "0": { "start": { "line": 2, "column": 21 }, "end": { "line": 10, "column": 1 } }, - "1": { "start": { "line": 3, "column": 2 }, "end": { "line": 9, "column": 3 } }, - "2": { "start": { "line": 5, "column": 4 }, "end": { "line": 5, "column": 35 } }, - "3": { "start": { "line": 8, "column": 4 }, "end": { "line": 8, "column": 16 } }, - "4": { "start": { "line": 13, "column": 24 }, "end": { "line": 30, "column": 1 } }, - "5": { "start": { "line": 14, "column": 2 }, "end": { "line": 14, "column": 41 } }, - "6": { "start": { "line": 14, "column": 27 }, "end": { "line": 14, "column": 41 } }, - "7": { "start": { "line": 15, "column": 2 }, "end": { "line": 15, "column": 34 } }, - "8": { "start": { "line": 15, "column": 21 }, "end": { "line": 15, "column": 34 } }, - "9": { "start": { "line": 16, "column": 2 }, "end": { "line": 16, "column": 45 } }, - "10": { "start": { "line": 16, "column": 30 }, "end": { "line": 16, "column": 45 } }, - "11": { "start": { "line": 18, "column": 15 }, "end": { "line": 18, "column": 26 } }, - "12": { "start": { "line": 19, "column": 2 }, "end": { "line": 23, "column": 3 } }, - "13": { "start": { "line": 20, "column": 4 }, "end": { "line": 20, "column": 33 } }, - "14": { "start": { "line": 20, "column": 21 }, "end": { "line": 20, "column": 33 } }, - "15": { "start": { "line": 21, "column": 4 }, "end": { "line": 21, "column": 42 } }, - "16": { "start": { "line": 21, "column": 25 }, "end": { "line": 21, "column": 42 } }, - "17": { "start": { "line": 22, "column": 4 }, "end": { "line": 22, "column": 51 } }, - "18": { "start": { "line": 24, "column": 2 }, "end": { "line": 24, "column": 39 } }, - "19": { "start": { "line": 24, "column": 26 }, "end": { "line": 24, "column": 39 } }, - "20": { "start": { "line": 26, "column": 2 }, "end": { "line": 28, "column": 3 } }, - "21": { "start": { "line": 27, "column": 4 }, "end": { "line": 27, "column": 17 } }, - "22": { "start": { "line": 29, "column": 2 }, "end": { "line": 29, "column": 13 } }, - "23": { "start": { "line": 33, "column": 25 }, "end": { "line": 69, "column": 1 } }, - "24": { "start": { "line": 35, "column": 26 }, "end": { "line": 45, "column": 60 } }, - "25": { "start": { "line": 48, "column": 24 }, "end": { "line": 65, "column": 3 } }, - "26": { "start": { "line": 49, "column": 4 }, "end": { "line": 62, "column": 5 } }, - "27": { "start": { "line": 50, "column": 6 }, "end": { "line": 50, "column": 16 } }, - "28": { "start": { "line": 51, "column": 11 }, "end": { "line": 62, "column": 5 } }, - "29": { "start": { "line": 52, "column": 6 }, "end": { "line": 59, "column": 8 } }, - "30": { "start": { "line": 53, "column": 8 }, "end": { "line": 57, "column": 9 } }, - "31": { "start": { "line": 54, "column": 10 }, "end": { "line": 54, "column": 20 } }, - "32": { "start": { "line": 55, "column": 15 }, "end": { "line": 57, "column": 9 } }, - "33": { "start": { "line": 56, "column": 10 }, "end": { "line": 56, "column": 26 } }, - "34": { "start": { "line": 58, "column": 8 }, "end": { "line": 58, "column": 16 } }, - "35": { "start": { "line": 60, "column": 11 }, "end": { "line": 62, "column": 5 } }, - "36": { "start": { "line": 61, "column": 6 }, "end": { "line": 61, "column": 22 } }, - "37": { "start": { "line": 64, "column": 4 }, "end": { "line": 64, "column": 16 } }, - "38": { "start": { "line": 68, "column": 2 }, "end": { "line": 68, "column": 51 } } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { "start": { "line": 2, "column": 21 }, "end": { "line": 2, "column": 22 } }, - "loc": { "start": { "line": 2, "column": 33 }, "end": { "line": 10, "column": 1 } }, - "line": 2 - }, - "1": { - "name": "(anonymous_1)", - "decl": { "start": { "line": 13, "column": 24 }, "end": { "line": 13, "column": 25 } }, - "loc": { "start": { "line": 13, "column": 34 }, "end": { "line": 30, "column": 1 } }, - "line": 13 - }, - "2": { - "name": "(anonymous_2)", - "decl": { "start": { "line": 33, "column": 25 }, "end": { "line": 33, "column": 26 } }, - "loc": { "start": { "line": 33, "column": 41 }, "end": { "line": 69, "column": 1 } }, - "line": 33 - }, - "3": { - "name": "(anonymous_3)", - "decl": { "start": { "line": 48, "column": 24 }, "end": { "line": 48, "column": 25 } }, - "loc": { "start": { "line": 48, "column": 40 }, "end": { "line": 65, "column": 3 } }, - "line": 48 - }, - "4": { - "name": "(anonymous_4)", - "decl": { "start": { "line": 52, "column": 23 }, "end": { "line": 52, "column": 24 } }, - "loc": { "start": { "line": 52, "column": 30 }, "end": { "line": 59, "column": 7 } }, - "line": 52 - } - }, - "branchMap": { - "0": { - "loc": { "start": { "line": 14, "column": 2 }, "end": { "line": 14, "column": 41 } }, - "type": "if", - "locations": [ - { "start": { "line": 14, "column": 2 }, "end": { "line": 14, "column": 41 } }, - { "start": {}, "end": {} } - ], - "line": 14 - }, - "1": { - "loc": { "start": { "line": 15, "column": 2 }, "end": { "line": 15, "column": 34 } }, - "type": "if", - "locations": [ - { "start": { "line": 15, "column": 2 }, "end": { "line": 15, "column": 34 } }, - { "start": {}, "end": {} } - ], - "line": 15 - }, - "2": { - "loc": { "start": { "line": 16, "column": 2 }, "end": { "line": 16, "column": 45 } }, - "type": "if", - "locations": [ - { "start": { "line": 16, "column": 2 }, "end": { "line": 16, "column": 45 } }, - { "start": {}, "end": {} } - ], - "line": 16 - }, - "3": { - "loc": { "start": { "line": 19, "column": 2 }, "end": { "line": 23, "column": 3 } }, - "type": "if", - "locations": [ - { "start": { "line": 19, "column": 2 }, "end": { "line": 23, "column": 3 } }, - { "start": {}, "end": {} } - ], - "line": 19 - }, - "4": { - "loc": { "start": { "line": 20, "column": 4 }, "end": { "line": 20, "column": 33 } }, - "type": "if", - "locations": [ - { "start": { "line": 20, "column": 4 }, "end": { "line": 20, "column": 33 } }, - { "start": {}, "end": {} } - ], - "line": 20 - }, - "5": { - "loc": { "start": { "line": 21, "column": 4 }, "end": { "line": 21, "column": 42 } }, - "type": "if", - "locations": [ - { "start": { "line": 21, "column": 4 }, "end": { "line": 21, "column": 42 } }, - { "start": {}, "end": {} } - ], - "line": 21 - }, - "6": { - "loc": { "start": { "line": 22, "column": 11 }, "end": { "line": 22, "column": 51 } }, - "type": "cond-expr", - "locations": [ - { "start": { "line": 22, "column": 36 }, "end": { "line": 22, "column": 41 } }, - { "start": { "line": 22, "column": 44 }, "end": { "line": 22, "column": 51 } } - ], - "line": 22 - }, - "7": { - "loc": { "start": { "line": 24, "column": 2 }, "end": { "line": 24, "column": 39 } }, - "type": "if", - "locations": [ - { "start": { "line": 24, "column": 2 }, "end": { "line": 24, "column": 39 } }, - { "start": {}, "end": {} } - ], - "line": 24 - }, - "8": { - "loc": { "start": { "line": 26, "column": 2 }, "end": { "line": 28, "column": 3 } }, - "type": "if", - "locations": [ - { "start": { "line": 26, "column": 2 }, "end": { "line": 28, "column": 3 } }, - { "start": {}, "end": {} } - ], - "line": 26 - }, - "9": { - "loc": { "start": { "line": 26, "column": 6 }, "end": { "line": 26, "column": 47 } }, - "type": "binary-expr", - "locations": [ - { "start": { "line": 26, "column": 6 }, "end": { "line": 26, "column": 23 } }, - { "start": { "line": 26, "column": 27 }, "end": { "line": 26, "column": 47 } } - ], - "line": 26 - }, - "10": { - "loc": { "start": { "line": 49, "column": 4 }, "end": { "line": 62, "column": 5 } }, - "type": "if", - "locations": [ - { "start": { "line": 49, "column": 4 }, "end": { "line": 62, "column": 5 } }, - { "start": { "line": 51, "column": 11 }, "end": { "line": 62, "column": 5 } } - ], - "line": 49 - }, - "11": { - "loc": { "start": { "line": 51, "column": 11 }, "end": { "line": 62, "column": 5 } }, - "type": "if", - "locations": [ - { "start": { "line": 51, "column": 11 }, "end": { "line": 62, "column": 5 } }, - { "start": { "line": 60, "column": 11 }, "end": { "line": 62, "column": 5 } } - ], - "line": 51 - }, - "12": { - "loc": { "start": { "line": 53, "column": 8 }, "end": { "line": 57, "column": 9 } }, - "type": "if", - "locations": [ - { "start": { "line": 53, "column": 8 }, "end": { "line": 57, "column": 9 } }, - { "start": { "line": 55, "column": 15 }, "end": { "line": 57, "column": 9 } } - ], - "line": 53 - }, - "13": { - "loc": { "start": { "line": 55, "column": 15 }, "end": { "line": 57, "column": 9 } }, - "type": "if", - "locations": [ - { "start": { "line": 55, "column": 15 }, "end": { "line": 57, "column": 9 } }, - { "start": {}, "end": {} } - ], - "line": 55 - }, - "14": { - "loc": { "start": { "line": 60, "column": 11 }, "end": { "line": 62, "column": 5 } }, - "type": "if", - "locations": [ - { "start": { "line": 60, "column": 11 }, "end": { "line": 62, "column": 5 } }, - { "start": {}, "end": {} } - ], - "line": 60 - } - }, - "s": { - "0": 4, - "1": 11, - "2": 11, - "3": 9, - "4": 4, - "5": 79, - "6": 2, - "7": 77, - "8": 1, - "9": 76, - "10": 0, - "11": 76, - "12": 76, - "13": 4, - "14": 1, - "15": 3, - "16": 1, - "17": 2, - "18": 72, - "19": 1, - "20": 71, - "21": 0, - "22": 71, - "23": 4, - "24": 9, - "25": 9, - "26": 45, - "27": 5, - "28": 40, - "29": 3, - "30": 15, - "31": 0, - "32": 15, - "33": 0, - "34": 15, - "35": 37, - "36": 4, - "37": 33, - "38": 9 - }, - "f": { "0": 11, "1": 79, "2": 9, "3": 45, "4": 15 }, - "b": { - "0": [2, 77], - "1": [1, 76], - "2": [0, 76], - "3": [4, 72], - "4": [1, 3], - "5": [1, 2], - "6": [1, 1], - "7": [1, 71], - "8": [0, 71], - "9": [71, 33], - "10": [5, 40], - "11": [3, 37], - "12": [0, 15], - "13": [0, 15], - "14": [4, 33] - }, - "_coverageSchema": "1a1c01bbd47fc00a2c39e90264f33305004495a9", - "hash": "656e6c675abdbe44107ca960705a00c714125dea" - }, - "/workspace/json-viewer/src/themes.js": { - "path": "/workspace/json-viewer/src/themes.js", - "statementMap": { - "0": { "start": { "line": 21, "column": 15 }, "end": { "line": 1426, "column": 1 } }, - "1": { "start": { "line": 1428, "column": 31 }, "end": { "line": 1428, "column": 50 } }, - "2": { "start": { "line": 1430, "column": 27 }, "end": { "line": 1448, "column": 1 } }, - "3": { "start": { "line": 1432, "column": 2 }, "end": { "line": 1443, "column": 3 } }, - "4": { "start": { "line": 1433, "column": 4 }, "end": { "line": 1435, "column": 5 } }, - "5": { "start": { "line": 1434, "column": 6 }, "end": { "line": 1434, "column": 50 } }, - "6": { "start": { "line": 1436, "column": 4 }, "end": { "line": 1440, "column": 10 } }, - "7": { "start": { "line": 1437, "column": 18 }, "end": { "line": 1437, "column": 56 } }, - "8": { "start": { "line": 1438, "column": 6 }, "end": { "line": 1438, "column": 18 } }, - "9": { "start": { "line": 1439, "column": 6 }, "end": { "line": 1439, "column": 16 } }, - "10": { "start": { "line": 1442, "column": 4 }, "end": { "line": 1442, "column": 24 } }, - "11": { "start": { "line": 1445, "column": 2 }, "end": { "line": 1447, "column": 16 } }, - "12": { "start": { "line": 1446, "column": 18 }, "end": { "line": 1446, "column": 44 } } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { "start": { "line": 1430, "column": 27 }, "end": { "line": 1430, "column": 28 } }, - "loc": { "start": { "line": 1430, "column": 45 }, "end": { "line": 1448, "column": 1 } }, - "line": 1430 - }, - "1": { - "name": "(anonymous_1)", - "decl": { "start": { "line": 1436, "column": 40 }, "end": { "line": 1436, "column": 41 } }, - "loc": { "start": { "line": 1436, "column": 55 }, "end": { "line": 1440, "column": 5 } }, - "line": 1436 - }, - "2": { - "name": "(anonymous_2)", - "decl": { "start": { "line": 1446, "column": 9 }, "end": { "line": 1446, "column": 10 } }, - "loc": { "start": { "line": 1446, "column": 18 }, "end": { "line": 1446, "column": 44 } }, - "line": 1446 - } - }, - "branchMap": { - "0": { - "loc": { "start": { "line": 1432, "column": 2 }, "end": { "line": 1443, "column": 3 } }, - "type": "if", - "locations": [ - { "start": { "line": 1432, "column": 2 }, "end": { "line": 1443, "column": 3 } }, - { "start": { "line": 1441, "column": 9 }, "end": { "line": 1443, "column": 3 } } - ], - "line": 1432 - }, - "1": { - "loc": { "start": { "line": 1433, "column": 4 }, "end": { "line": 1435, "column": 5 } }, - "type": "if", - "locations": [ - { "start": { "line": 1433, "column": 4 }, "end": { "line": 1435, "column": 5 } }, - { "start": {}, "end": {} } - ], - "line": 1433 - } - }, - "s": { - "0": 2, - "1": 2, - "2": 2, - "3": 26, - "4": 25, - "5": 1, - "6": 24, - "7": 384, - "8": 384, - "9": 384, - "10": 1, - "11": 25, - "12": 400 - }, - "f": { "0": 26, "1": 384, "2": 400 }, - "b": { "0": [25, 1], "1": [1, 24] }, - "_coverageSchema": "1a1c01bbd47fc00a2c39e90264f33305004495a9", - "hash": "0f6f7f4dc2aa8077f1b4a3847da610db0a82b9f8" - }, - "/workspace/json-viewer/src/validator.js": { - "path": "/workspace/json-viewer/src/validator.js", - "statementMap": { - "0": { "start": { "line": 1, "column": 31 }, "end": { "line": 7, "column": 1 } }, - "1": { "start": { "line": 2, "column": 2 }, "end": { "line": 2, "column": 46 } }, - "2": { "start": { "line": 2, "column": 34 }, "end": { "line": 2, "column": 46 } }, - "3": { "start": { "line": 3, "column": 2 }, "end": { "line": 4, "column": 42 } }, - "4": { "start": { "line": 3, "column": 24 }, "end": { "line": 3, "column": 35 } }, - "5": { "start": { "line": 4, "column": 7 }, "end": { "line": 4, "column": 42 } }, - "6": { "start": { "line": 4, "column": 30 }, "end": { "line": 4, "column": 42 } }, - "7": { "start": { "line": 6, "column": 2 }, "end": { "line": 6, "column": 41 } }, - "8": { "start": { "line": 9, "column": 30 }, "end": { "line": 13, "column": 1 } }, - "9": { "start": { "line": 10, "column": 2 }, "end": { "line": 10, "column": 45 } }, - "10": { "start": { "line": 10, "column": 33 }, "end": { "line": 10, "column": 45 } }, - "11": { "start": { "line": 12, "column": 2 }, "end": { "line": 12, "column": 40 } }, - "12": { "start": { "line": 15, "column": 38 }, "end": { "line": 24, "column": 1 } }, - "13": { "start": { "line": 16, "column": 2 }, "end": { "line": 16, "column": 59 } }, - "14": { "start": { "line": 16, "column": 47 }, "end": { "line": 16, "column": 59 } }, - "15": { "start": { "line": 17, "column": 2 }, "end": { "line": 19, "column": 3 } }, - "16": { "start": { "line": 18, "column": 4 }, "end": { "line": 18, "column": 29 } }, - "17": { "start": { "line": 20, "column": 2 }, "end": { "line": 22, "column": 3 } }, - "18": { "start": { "line": 21, "column": 4 }, "end": { "line": 21, "column": 51 } }, - "19": { "start": { "line": 23, "column": 2 }, "end": { "line": 23, "column": 14 } }, - "20": { "start": { "line": 26, "column": 47 }, "end": { "line": 37, "column": 1 } }, - "21": { "start": { "line": 27, "column": 2 }, "end": { "line": 27, "column": 46 } }, - "22": { "start": { "line": 27, "column": 34 }, "end": { "line": 27, "column": 46 } }, - "23": { "start": { "line": 28, "column": 2 }, "end": { "line": 28, "column": 45 } }, - "24": { "start": { "line": 28, "column": 33 }, "end": { "line": 28, "column": 45 } }, - "25": { "start": { "line": 29, "column": 2 }, "end": { "line": 34, "column": 3 } }, - "26": { "start": { "line": 29, "column": 24 }, "end": { "line": 29, "column": 35 } }, - "27": { "start": { "line": 30, "column": 7 }, "end": { "line": 34, "column": 3 } }, - "28": { "start": { "line": 30, "column": 30 }, "end": { "line": 30, "column": 42 } }, - "29": { "start": { "line": 31, "column": 7 }, "end": { "line": 34, "column": 3 } }, - "30": { "start": { "line": 32, "column": 4 }, "end": { "line": 32, "column": 29 } }, - "31": { "start": { "line": 33, "column": 4 }, "end": { "line": 33, "column": 49 } }, - "32": { "start": { "line": 33, "column": 37 }, "end": { "line": 33, "column": 49 } }, - "33": { "start": { "line": 36, "column": 2 }, "end": { "line": 36, "column": 62 } }, - "34": { "start": { "line": 39, "column": 36 }, "end": { "line": 50, "column": 1 } }, - "35": { "start": { "line": 40, "column": 2 }, "end": { "line": 40, "column": 45 } }, - "36": { "start": { "line": 40, "column": 33 }, "end": { "line": 40, "column": 45 } }, - "37": { "start": { "line": 41, "column": 2 }, "end": { "line": 47, "column": 3 } }, - "38": { "start": { "line": 42, "column": 4 }, "end": { "line": 46, "column": 5 } }, - "39": { "start": { "line": 43, "column": 6 }, "end": { "line": 43, "column": 30 } }, - "40": { "start": { "line": 45, "column": 6 }, "end": { "line": 45, "column": 18 } }, - "41": { "start": { "line": 49, "column": 2 }, "end": { "line": 49, "column": 48 } } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { "start": { "line": 1, "column": 31 }, "end": { "line": 1, "column": 32 } }, - "loc": { "start": { "line": 1, "column": 42 }, "end": { "line": 7, "column": 1 } }, - "line": 1 - }, - "1": { - "name": "(anonymous_1)", - "decl": { "start": { "line": 9, "column": 30 }, "end": { "line": 9, "column": 31 } }, - "loc": { "start": { "line": 9, "column": 41 }, "end": { "line": 13, "column": 1 } }, - "line": 9 - }, - "2": { - "name": "(anonymous_2)", - "decl": { "start": { "line": 15, "column": 38 }, "end": { "line": 15, "column": 39 } }, - "loc": { "start": { "line": 15, "column": 49 }, "end": { "line": 24, "column": 1 } }, - "line": 15 - }, - "3": { - "name": "(anonymous_3)", - "decl": { "start": { "line": 26, "column": 47 }, "end": { "line": 26, "column": 48 } }, - "loc": { "start": { "line": 26, "column": 58 }, "end": { "line": 37, "column": 1 } }, - "line": 26 - }, - "4": { - "name": "(anonymous_4)", - "decl": { "start": { "line": 39, "column": 36 }, "end": { "line": 39, "column": 37 } }, - "loc": { "start": { "line": 39, "column": 47 }, "end": { "line": 50, "column": 1 } }, - "line": 39 - } - }, - "branchMap": { - "0": { - "loc": { "start": { "line": 2, "column": 2 }, "end": { "line": 2, "column": 46 } }, - "type": "if", - "locations": [ - { "start": { "line": 2, "column": 2 }, "end": { "line": 2, "column": 46 } }, - { "start": {}, "end": {} } - ], - "line": 2 - }, - "1": { - "loc": { "start": { "line": 3, "column": 2 }, "end": { "line": 4, "column": 42 } }, - "type": "if", - "locations": [ - { "start": { "line": 3, "column": 2 }, "end": { "line": 4, "column": 42 } }, - { "start": { "line": 4, "column": 7 }, "end": { "line": 4, "column": 42 } } - ], - "line": 3 - }, - "2": { - "loc": { "start": { "line": 4, "column": 7 }, "end": { "line": 4, "column": 42 } }, - "type": "if", - "locations": [ - { "start": { "line": 4, "column": 7 }, "end": { "line": 4, "column": 42 } }, - { "start": {}, "end": {} } - ], - "line": 4 - }, - "3": { - "loc": { "start": { "line": 10, "column": 2 }, "end": { "line": 10, "column": 45 } }, - "type": "if", - "locations": [ - { "start": { "line": 10, "column": 2 }, "end": { "line": 10, "column": 45 } }, - { "start": {}, "end": {} } - ], - "line": 10 - }, - "4": { - "loc": { "start": { "line": 16, "column": 2 }, "end": { "line": 16, "column": 59 } }, - "type": "if", - "locations": [ - { "start": { "line": 16, "column": 2 }, "end": { "line": 16, "column": 59 } }, - { "start": {}, "end": {} } - ], - "line": 16 - }, - "5": { - "loc": { "start": { "line": 16, "column": 6 }, "end": { "line": 16, "column": 45 } }, - "type": "binary-expr", - "locations": [ - { "start": { "line": 16, "column": 6 }, "end": { "line": 16, "column": 31 } }, - { "start": { "line": 16, "column": 35 }, "end": { "line": 16, "column": 45 } } - ], - "line": 16 - }, - "6": { - "loc": { "start": { "line": 17, "column": 2 }, "end": { "line": 19, "column": 3 } }, - "type": "if", - "locations": [ - { "start": { "line": 17, "column": 2 }, "end": { "line": 19, "column": 3 } }, - { "start": {}, "end": {} } - ], - "line": 17 - }, - "7": { - "loc": { "start": { "line": 20, "column": 2 }, "end": { "line": 22, "column": 3 } }, - "type": "if", - "locations": [ - { "start": { "line": 20, "column": 2 }, "end": { "line": 22, "column": 3 } }, - { "start": {}, "end": {} } - ], - "line": 20 - }, - "8": { - "loc": { "start": { "line": 20, "column": 6 }, "end": { "line": 20, "column": 31 } }, - "type": "binary-expr", - "locations": [ - { "start": { "line": 20, "column": 6 }, "end": { "line": 20, "column": 18 } }, - { "start": { "line": 20, "column": 22 }, "end": { "line": 20, "column": 31 } } - ], - "line": 20 - }, - "9": { - "loc": { "start": { "line": 27, "column": 2 }, "end": { "line": 27, "column": 46 } }, - "type": "if", - "locations": [ - { "start": { "line": 27, "column": 2 }, "end": { "line": 27, "column": 46 } }, - { "start": {}, "end": {} } - ], - "line": 27 - }, - "10": { - "loc": { "start": { "line": 28, "column": 2 }, "end": { "line": 28, "column": 45 } }, - "type": "if", - "locations": [ - { "start": { "line": 28, "column": 2 }, "end": { "line": 28, "column": 45 } }, - { "start": {}, "end": {} } - ], - "line": 28 - }, - "11": { - "loc": { "start": { "line": 29, "column": 2 }, "end": { "line": 34, "column": 3 } }, - "type": "if", - "locations": [ - { "start": { "line": 29, "column": 2 }, "end": { "line": 34, "column": 3 } }, - { "start": { "line": 30, "column": 7 }, "end": { "line": 34, "column": 3 } } - ], - "line": 29 - }, - "12": { - "loc": { "start": { "line": 30, "column": 7 }, "end": { "line": 34, "column": 3 } }, - "type": "if", - "locations": [ - { "start": { "line": 30, "column": 7 }, "end": { "line": 34, "column": 3 } }, - { "start": { "line": 31, "column": 7 }, "end": { "line": 34, "column": 3 } } - ], - "line": 30 - }, - "13": { - "loc": { "start": { "line": 31, "column": 7 }, "end": { "line": 34, "column": 3 } }, - "type": "if", - "locations": [ - { "start": { "line": 31, "column": 7 }, "end": { "line": 34, "column": 3 } }, - { "start": {}, "end": {} } - ], - "line": 31 - }, - "14": { - "loc": { "start": { "line": 33, "column": 4 }, "end": { "line": 33, "column": 49 } }, - "type": "if", - "locations": [ - { "start": { "line": 33, "column": 4 }, "end": { "line": 33, "column": 49 } }, - { "start": {}, "end": {} } - ], - "line": 33 - }, - "15": { - "loc": { "start": { "line": 33, "column": 8 }, "end": { "line": 33, "column": 35 } }, - "type": "binary-expr", - "locations": [ - { "start": { "line": 33, "column": 8 }, "end": { "line": 33, "column": 21 } }, - { "start": { "line": 33, "column": 25 }, "end": { "line": 33, "column": 35 } } - ], - "line": 33 - }, - "16": { - "loc": { "start": { "line": 40, "column": 2 }, "end": { "line": 40, "column": 45 } }, - "type": "if", - "locations": [ - { "start": { "line": 40, "column": 2 }, "end": { "line": 40, "column": 45 } }, - { "start": {}, "end": {} } - ], - "line": 40 - }, - "17": { - "loc": { "start": { "line": 41, "column": 2 }, "end": { "line": 47, "column": 3 } }, - "type": "if", - "locations": [ - { "start": { "line": 41, "column": 2 }, "end": { "line": 47, "column": 3 } }, - { "start": {}, "end": {} } - ], - "line": 41 - } - }, - "s": { - "0": 2, - "1": 11, - "2": 4, - "3": 7, - "4": 1, - "5": 6, - "6": 3, - "7": 3, - "8": 2, - "9": 4, - "10": 3, - "11": 1, - "12": 2, - "13": 7, - "14": 2, - "15": 5, - "16": 4, - "17": 5, - "18": 3, - "19": 2, - "20": 2, - "21": 12, - "22": 3, - "23": 9, - "24": 2, - "25": 7, - "26": 2, - "27": 5, - "28": 1, - "29": 4, - "30": 4, - "31": 4, - "32": 2, - "33": 2, - "34": 2, - "35": 28, - "36": 1, - "37": 27, - "38": 26, - "39": 26, - "40": 25, - "41": 1 - }, - "f": { "0": 11, "1": 4, "2": 7, "3": 12, "4": 28 }, - "b": { - "0": [4, 7], - "1": [1, 6], - "2": [3, 3], - "3": [3, 1], - "4": [2, 5], - "5": [7, 3], - "6": [4, 1], - "7": [3, 2], - "8": [5, 3], - "9": [3, 9], - "10": [2, 7], - "11": [2, 5], - "12": [1, 4], - "13": [4, 0], - "14": [2, 2], - "15": [4, 2], - "16": [1, 27], - "17": [26, 1] - }, - "_coverageSchema": "1a1c01bbd47fc00a2c39e90264f33305004495a9", - "hash": "3dc5d5fe81c515595f98aaf5b68b6cf8d97ac7cc" - }, - "/workspace/json-viewer/src/renderer/container.js": { - "path": "/workspace/json-viewer/src/renderer/container.js", - "statementMap": { - "0": { "start": { "line": 5, "column": 24 }, "end": { "line": 5, "column": 53 } }, - "1": { "start": { "line": 6, "column": 2 }, "end": { "line": 6, "column": 39 } }, - "2": { "start": { "line": 7, "column": 2 }, "end": { "line": 7, "column": 33 } }, - "3": { "start": { "line": 8, "column": 16 }, "end": { "line": 8, "column": 20 } }, - "4": { "start": { "line": 9, "column": 16 }, "end": { "line": 9, "column": 20 } }, - "5": { "start": { "line": 11, "column": 16 }, "end": { "line": 11, "column": 18 } }, - "6": { "start": { "line": 13, "column": 2 }, "end": { "line": 116, "column": 3 } }, - "7": { "start": { "line": 24, "column": 4 }, "end": { "line": 47, "column": 5 } }, - "8": { "start": { "line": 25, "column": 35 }, "end": { "line": 25, "column": 55 } }, - "9": { "start": { "line": 27, "column": 6 }, "end": { "line": 46, "column": 7 } }, - "10": { "start": { "line": 28, "column": 8 }, "end": { "line": 28, "column": 54 } }, - "11": { "start": { "line": 30, "column": 8 }, "end": { "line": 39, "column": 10 } }, - "12": { "start": { "line": 36, "column": 12 }, "end": { "line": 36, "column": 49 } }, - "13": { "start": { "line": 36, "column": 25 }, "end": { "line": 36, "column": 49 } }, - "14": { "start": { "line": 37, "column": 12 }, "end": { "line": 37, "column": 34 } }, - "15": { "start": { "line": 40, "column": 8 }, "end": { "line": 40, "column": 54 } }, - "16": { "start": { "line": 41, "column": 8 }, "end": { "line": 45, "column": 9 } }, - "17": { "start": { "line": 42, "column": 10 }, "end": { "line": 42, "column": 48 } }, - "18": { "start": { "line": 43, "column": 10 }, "end": { "line": 43, "column": 51 } }, - "19": { "start": { "line": 44, "column": 10 }, "end": { "line": 44, "column": 27 } }, - "20": { "start": { "line": 48, "column": 4 }, "end": { "line": 75, "column": 5 } }, - "21": { "start": { "line": 49, "column": 6 }, "end": { "line": 49, "column": 37 } }, - "22": { "start": { "line": 50, "column": 6 }, "end": { "line": 74, "column": 7 } }, - "23": { "start": { "line": 51, "column": 8 }, "end": { "line": 68, "column": 12 } }, - "24": { "start": { "line": 52, "column": 10 }, "end": { "line": 68, "column": 12 } }, - "25": { "start": { "line": 56, "column": 30 }, "end": { "line": 56, "column": 50 } }, - "26": { "start": { "line": 57, "column": 14 }, "end": { "line": 61, "column": 15 } }, - "27": { "start": { "line": 58, "column": 16 }, "end": { "line": 58, "column": 46 } }, - "28": { "start": { "line": 59, "column": 16 }, "end": { "line": 59, "column": 46 } }, - "29": { "start": { "line": 60, "column": 16 }, "end": { "line": 60, "column": 51 } }, - "30": { "start": { "line": 63, "column": 14 }, "end": { "line": 63, "column": 34 } }, - "31": { "start": { "line": 66, "column": 14 }, "end": { "line": 66, "column": 57 } }, - "32": { "start": { "line": 66, "column": 27 }, "end": { "line": 66, "column": 57 } }, - "33": { "start": { "line": 69, "column": 8 }, "end": { "line": 69, "column": 62 } }, - "34": { "start": { "line": 69, "column": 21 }, "end": { "line": 69, "column": 62 } }, - "35": { "start": { "line": 70, "column": 8 }, "end": { "line": 70, "column": 46 } }, - "36": { "start": { "line": 72, "column": 24 }, "end": { "line": 72, "column": 63 } }, - "37": { "start": { "line": 73, "column": 8 }, "end": { "line": 73, "column": 37 } }, - "38": { "start": { "line": 73, "column": 21 }, "end": { "line": 73, "column": 37 } }, - "39": { "start": { "line": 77, "column": 29 }, "end": { "line": 77, "column": 31 } }, - "40": { "start": { "line": 79, "column": 4 }, "end": { "line": 82, "column": 5 } }, - "41": { "start": { "line": 80, "column": 6 }, "end": { "line": 80, "column": 31 } }, - "42": { "start": { "line": 81, "column": 6 }, "end": { "line": 81, "column": 42 } }, - "43": { "start": { "line": 84, "column": 4 }, "end": { "line": 87, "column": 5 } }, - "44": { "start": { "line": 85, "column": 6 }, "end": { "line": 85, "column": 27 } }, - "45": { "start": { "line": 86, "column": 6 }, "end": { "line": 86, "column": 38 } }, - "46": { "start": { "line": 88, "column": 4 }, "end": { "line": 90, "column": 5 } }, - "47": { "start": { "line": 89, "column": 6 }, "end": { "line": 89, "column": 38 } }, - "48": { "start": { "line": 93, "column": 4 }, "end": { "line": 96, "column": 5 } }, - "49": { "start": { "line": 94, "column": 6 }, "end": { "line": 94, "column": 31 } }, - "50": { "start": { "line": 95, "column": 6 }, "end": { "line": 95, "column": 59 } }, - "51": { "start": { "line": 98, "column": 4 }, "end": { "line": 101, "column": 5 } }, - "52": { "start": { "line": 99, "column": 6 }, "end": { "line": 99, "column": 31 } }, - "53": { "start": { "line": 100, "column": 6 }, "end": { "line": 100, "column": 59 } }, - "54": { "start": { "line": 103, "column": 4 }, "end": { "line": 106, "column": 5 } }, - "55": { "start": { "line": 104, "column": 6 }, "end": { "line": 104, "column": 41 } }, - "56": { "start": { "line": 105, "column": 6 }, "end": { "line": 105, "column": 70 } }, - "57": { "start": { "line": 108, "column": 4 }, "end": { "line": 115, "column": 5 } }, - "58": { "start": { "line": 112, "column": 6 }, "end": { "line": 112, "column": 66 } }, - "59": { "start": { "line": 113, "column": 6 }, "end": { "line": 113, "column": 75 } }, - "60": { "start": { "line": 114, "column": 6 }, "end": { "line": 114, "column": 43 } }, - "61": { "start": { "line": 118, "column": 2 }, "end": { "line": 118, "column": 22 } } - }, - "fnMap": { - "0": { - "name": "Container", - "decl": { "start": { "line": 4, "column": 9 }, "end": { "line": 4, "column": 18 } }, - "loc": { "start": { "line": 4, "column": 39 }, "end": { "line": 119, "column": 1 } }, - "line": 4 - }, - "1": { - "name": "(anonymous_1)", - "decl": { "start": { "line": 13, "column": 16 }, "end": { "line": 13, "column": 17 } }, - "loc": { "start": { "line": 22, "column": 8 }, "end": { "line": 116, "column": 3 } }, - "line": 22 - }, - "2": { - "name": "(anonymous_2)", - "decl": { "start": { "line": 35, "column": 26 }, "end": { "line": 35, "column": 27 } }, - "loc": { "start": { "line": 35, "column": 37 }, "end": { "line": 38, "column": 11 } }, - "line": 35 - }, - "3": { - "name": "(anonymous_3)", - "decl": { "start": { "line": 55, "column": 22 }, "end": { "line": 55, "column": 23 } }, - "loc": { "start": { "line": 55, "column": 61 }, "end": { "line": 64, "column": 13 } }, - "line": 55 - }, - "4": { - "name": "(anonymous_4)", - "decl": { "start": { "line": 65, "column": 22 }, "end": { "line": 65, "column": 23 } }, - "loc": { "start": { "line": 65, "column": 38 }, "end": { "line": 67, "column": 13 } }, - "line": 65 - } - }, - "branchMap": { - "0": { - "loc": { "start": { "line": 4, "column": 25 }, "end": { "line": 4, "column": 37 } }, - "type": "default-arg", - "locations": [{ "start": { "line": 4, "column": 35 }, "end": { "line": 4, "column": 37 } }], - "line": 4 - }, - "1": { - "loc": { "start": { "line": 24, "column": 4 }, "end": { "line": 47, "column": 5 } }, - "type": "if", - "locations": [ - { "start": { "line": 24, "column": 4 }, "end": { "line": 47, "column": 5 } }, - { "start": {}, "end": {} } - ], - "line": 24 - }, - "2": { - "loc": { "start": { "line": 27, "column": 6 }, "end": { "line": 46, "column": 7 } }, - "type": "if", - "locations": [ - { "start": { "line": 27, "column": 6 }, "end": { "line": 46, "column": 7 } }, - { "start": {}, "end": {} } - ], - "line": 27 - }, - "3": { - "loc": { "start": { "line": 36, "column": 12 }, "end": { "line": 36, "column": 49 } }, - "type": "if", - "locations": [ - { "start": { "line": 36, "column": 12 }, "end": { "line": 36, "column": 49 } }, - { "start": {}, "end": {} } - ], - "line": 36 - }, - "4": { - "loc": { "start": { "line": 41, "column": 8 }, "end": { "line": 45, "column": 9 } }, - "type": "if", - "locations": [ - { "start": { "line": 41, "column": 8 }, "end": { "line": 45, "column": 9 } }, - { "start": {}, "end": {} } - ], - "line": 41 - }, - "5": { - "loc": { "start": { "line": 41, "column": 12 }, "end": { "line": 41, "column": 40 } }, - "type": "binary-expr", - "locations": [ - { "start": { "line": 41, "column": 12 }, "end": { "line": 41, "column": 29 } }, - { "start": { "line": 41, "column": 33 }, "end": { "line": 41, "column": 40 } } - ], - "line": 41 - }, - "6": { - "loc": { "start": { "line": 48, "column": 4 }, "end": { "line": 75, "column": 5 } }, - "type": "if", - "locations": [ - { "start": { "line": 48, "column": 4 }, "end": { "line": 75, "column": 5 } }, - { "start": {}, "end": {} } - ], - "line": 48 - }, - "7": { - "loc": { "start": { "line": 48, "column": 8 }, "end": { "line": 48, "column": 70 } }, - "type": "binary-expr", - "locations": [ - { "start": { "line": 48, "column": 8 }, "end": { "line": 48, "column": 33 } }, - { "start": { "line": 48, "column": 37 }, "end": { "line": 48, "column": 70 } } - ], - "line": 48 - }, - "8": { - "loc": { "start": { "line": 50, "column": 6 }, "end": { "line": 74, "column": 7 } }, - "type": "if", - "locations": [ - { "start": { "line": 50, "column": 6 }, "end": { "line": 74, "column": 7 } }, - { "start": { "line": 71, "column": 13 }, "end": { "line": 74, "column": 7 } } - ], - "line": 50 - }, - "9": { - "loc": { "start": { "line": 51, "column": 8 }, "end": { "line": 68, "column": 12 } }, - "type": "if", - "locations": [ - { "start": { "line": 51, "column": 8 }, "end": { "line": 68, "column": 12 } }, - { "start": {}, "end": {} } - ], - "line": 51 - }, - "10": { - "loc": { "start": { "line": 57, "column": 14 }, "end": { "line": 61, "column": 15 } }, - "type": "if", - "locations": [ - { "start": { "line": 57, "column": 14 }, "end": { "line": 61, "column": 15 } }, - { "start": {}, "end": {} } - ], - "line": 57 - }, - "11": { - "loc": { "start": { "line": 66, "column": 14 }, "end": { "line": 66, "column": 57 } }, - "type": "if", - "locations": [ - { "start": { "line": 66, "column": 14 }, "end": { "line": 66, "column": 57 } }, - { "start": {}, "end": {} } - ], - "line": 66 - }, - "12": { - "loc": { "start": { "line": 69, "column": 8 }, "end": { "line": 69, "column": 62 } }, - "type": "if", - "locations": [ - { "start": { "line": 69, "column": 8 }, "end": { "line": 69, "column": 62 } }, - { "start": {}, "end": {} } - ], - "line": 69 - }, - "13": { - "loc": { "start": { "line": 73, "column": 8 }, "end": { "line": 73, "column": 37 } }, - "type": "if", - "locations": [ - { "start": { "line": 73, "column": 8 }, "end": { "line": 73, "column": 37 } }, - { "start": {}, "end": {} } - ], - "line": 73 - }, - "14": { - "loc": { "start": { "line": 79, "column": 4 }, "end": { "line": 82, "column": 5 } }, - "type": "if", - "locations": [ - { "start": { "line": 79, "column": 4 }, "end": { "line": 82, "column": 5 } }, - { "start": {}, "end": {} } - ], - "line": 79 - }, - "15": { - "loc": { "start": { "line": 79, "column": 8 }, "end": { "line": 79, "column": 61 } }, - "type": "binary-expr", - "locations": [ - { "start": { "line": 79, "column": 8 }, "end": { "line": 79, "column": 30 } }, - { "start": { "line": 79, "column": 34 }, "end": { "line": 79, "column": 61 } } - ], - "line": 79 - }, - "16": { - "loc": { "start": { "line": 84, "column": 4 }, "end": { "line": 87, "column": 5 } }, - "type": "if", - "locations": [ - { "start": { "line": 84, "column": 4 }, "end": { "line": 87, "column": 5 } }, - { "start": {}, "end": {} } - ], - "line": 84 - }, - "17": { - "loc": { "start": { "line": 84, "column": 8 }, "end": { "line": 84, "column": 55 } }, - "type": "binary-expr", - "locations": [ - { "start": { "line": 84, "column": 8 }, "end": { "line": 84, "column": 28 } }, - { "start": { "line": 84, "column": 32 }, "end": { "line": 84, "column": 55 } } - ], - "line": 84 - }, - "18": { - "loc": { "start": { "line": 88, "column": 4 }, "end": { "line": 90, "column": 5 } }, - "type": "if", - "locations": [ - { "start": { "line": 88, "column": 4 }, "end": { "line": 90, "column": 5 } }, - { "start": {}, "end": {} } - ], - "line": 88 - }, - "19": { - "loc": { "start": { "line": 88, "column": 8 }, "end": { "line": 88, "column": 59 } }, - "type": "binary-expr", - "locations": [ - { "start": { "line": 88, "column": 8 }, "end": { "line": 88, "column": 48 } }, - { "start": { "line": 88, "column": 52 }, "end": { "line": 88, "column": 59 } } - ], - "line": 88 - }, - "20": { - "loc": { "start": { "line": 93, "column": 4 }, "end": { "line": 96, "column": 5 } }, - "type": "if", - "locations": [ - { "start": { "line": 93, "column": 4 }, "end": { "line": 96, "column": 5 } }, - { "start": {}, "end": {} } - ], - "line": 93 - }, - "21": { - "loc": { "start": { "line": 93, "column": 8 }, "end": { "line": 93, "column": 61 } }, - "type": "binary-expr", - "locations": [ - { "start": { "line": 93, "column": 8 }, "end": { "line": 93, "column": 30 } }, - { "start": { "line": 93, "column": 34 }, "end": { "line": 93, "column": 61 } } - ], - "line": 93 - }, - "22": { - "loc": { "start": { "line": 98, "column": 4 }, "end": { "line": 101, "column": 5 } }, - "type": "if", - "locations": [ - { "start": { "line": 98, "column": 4 }, "end": { "line": 101, "column": 5 } }, - { "start": {}, "end": {} } - ], - "line": 98 - }, - "23": { - "loc": { "start": { "line": 98, "column": 8 }, "end": { "line": 98, "column": 61 } }, - "type": "binary-expr", - "locations": [ - { "start": { "line": 98, "column": 8 }, "end": { "line": 98, "column": 30 } }, - { "start": { "line": 98, "column": 34 }, "end": { "line": 98, "column": 61 } } - ], - "line": 98 - }, - "24": { - "loc": { "start": { "line": 103, "column": 4 }, "end": { "line": 106, "column": 5 } }, - "type": "if", - "locations": [ - { "start": { "line": 103, "column": 4 }, "end": { "line": 106, "column": 5 } }, - { "start": {}, "end": {} } - ], - "line": 103 - }, - "25": { - "loc": { "start": { "line": 103, "column": 8 }, "end": { "line": 103, "column": 76 } }, - "type": "binary-expr", - "locations": [ - { "start": { "line": 103, "column": 8 }, "end": { "line": 103, "column": 35 } }, - { "start": { "line": 103, "column": 39 }, "end": { "line": 103, "column": 76 } } - ], - "line": 103 - }, - "26": { - "loc": { "start": { "line": 108, "column": 4 }, "end": { "line": 115, "column": 5 } }, - "type": "if", - "locations": [ - { "start": { "line": 108, "column": 4 }, "end": { "line": 115, "column": 5 } }, - { "start": {}, "end": {} } - ], - "line": 108 - }, - "27": { - "loc": { "start": { "line": 109, "column": 6 }, "end": { "line": 110, "column": 45 } }, - "type": "binary-expr", - "locations": [ - { "start": { "line": 109, "column": 6 }, "end": { "line": 109, "column": 34 } }, - { "start": { "line": 110, "column": 6 }, "end": { "line": 110, "column": 45 } } - ], - "line": 109 - } - }, - "s": { - "0": 42, - "1": 42, - "2": 42, - "3": 42, - "4": 42, - "5": 42, - "6": 42, - "7": 81, - "8": 9, - "9": 9, - "10": 8, - "11": 8, - "12": 0, - "13": 0, - "14": 0, - "15": 8, - "16": 8, - "17": 0, - "18": 0, - "19": 0, - "20": 81, - "21": 25, - "22": 25, - "23": 3, - "24": 3, - "25": 2, - "26": 2, - "27": 2, - "28": 2, - "29": 2, - "30": 2, - "31": 0, - "32": 0, - "33": 3, - "34": 0, - "35": 3, - "36": 22, - "37": 22, - "38": 1, - "39": 81, - "40": 81, - "41": 26, - "42": 26, - "43": 81, - "44": 24, - "45": 24, - "46": 81, - "47": 2, - "48": 81, - "49": 28, - "50": 28, - "51": 81, - "52": 26, - "53": 26, - "54": 81, - "55": 28, - "56": 28, - "57": 81, - "58": 24, - "59": 24, - "60": 24, - "61": 42 - }, - "f": { "0": 42, "1": 81, "2": 0, "3": 2, "4": 0 }, - "b": { - "0": [21], - "1": [9, 72], - "2": [8, 1], - "3": [0, 0], - "4": [0, 8], - "5": [8, 0], - "6": [25, 56], - "7": [81, 35], - "8": [3, 22], - "9": [3, 0], - "10": [2, 0], - "11": [0, 0], - "12": [0, 3], - "13": [1, 21], - "14": [26, 55], - "15": [81, 32], - "16": [24, 57], - "17": [81, 32], - "18": [2, 79], - "19": [81, 29], - "20": [28, 53], - "21": [81, 36], - "22": [26, 55], - "23": [81, 36], - "24": [28, 53], - "25": [81, 36], - "26": [24, 57], - "27": [81, 34] - }, - "_coverageSchema": "1a1c01bbd47fc00a2c39e90264f33305004495a9", - "hash": "43dcbf1636b1c47e746e9752b6cd8198f2ac2de3" - }, - "/workspace/json-viewer/src/renderer/data-row.js": { - "path": "/workspace/json-viewer/src/renderer/data-row.js", - "statementMap": { - "0": { "start": { "line": 3, "column": 16 }, "end": { "line": 221, "column": 1 } }, - "1": { "start": { "line": 12, "column": 14 }, "end": { "line": 12, "column": 43 } }, - "2": { "start": { "line": 13, "column": 2 }, "end": { "line": 13, "column": 23 } }, - "3": { "start": { "line": 15, "column": 23 }, "end": { "line": 15, "column": 38 } }, - "4": { "start": { "line": 16, "column": 22 }, "end": { "line": 16, "column": 75 } }, - "5": { "start": { "line": 17, "column": 19 }, "end": { "line": 17, "column": 56 } }, - "6": { "start": { "line": 21, "column": 2 }, "end": { "line": 21, "column": 60 } }, - "7": { "start": { "line": 22, "column": 2 }, "end": { "line": 22, "column": 23 } }, - "8": { "start": { "line": 23, "column": 2 }, "end": { "line": 23, "column": 27 } }, - "9": { "start": { "line": 24, "column": 2 }, "end": { "line": 24, "column": 58 } }, - "10": { "start": { "line": 24, "column": 17 }, "end": { "line": 24, "column": 58 } }, - "11": { "start": { "line": 26, "column": 26 }, "end": { "line": 26, "column": 56 } }, - "12": { "start": { "line": 27, "column": 2 }, "end": { "line": 27, "column": 49 } }, - "13": { "start": { "line": 28, "column": 2 }, "end": { "line": 28, "column": 34 } }, - "14": { "start": { "line": 30, "column": 23 }, "end": { "line": 39, "column": 3 } }, - "15": { "start": { "line": 31, "column": 4 }, "end": { "line": 31, "column": 36 } }, - "16": { "start": { "line": 32, "column": 4 }, "end": { "line": 38, "column": 5 } }, - "17": { "start": { "line": 33, "column": 6 }, "end": { "line": 37, "column": 7 } }, - "18": { "start": { "line": 34, "column": 8 }, "end": { "line": 34, "column": 33 } }, - "19": { "start": { "line": 36, "column": 8 }, "end": { "line": 36, "column": 29 } }, - "20": { "start": { "line": 42, "column": 2 }, "end": { "line": 54, "column": 3 } }, - "21": { "start": { "line": 43, "column": 30 }, "end": { "line": 43, "column": 60 } }, - "22": { "start": { "line": 44, "column": 4 }, "end": { "line": 44, "column": 48 } }, - "23": { "start": { "line": 45, "column": 4 }, "end": { "line": 45, "column": 50 } }, - "24": { "start": { "line": 48, "column": 4 }, "end": { "line": 48, "column": 47 } }, - "25": { "start": { "line": 49, "column": 4 }, "end": { "line": 49, "column": 50 } }, - "26": { "start": { "line": 50, "column": 4 }, "end": { "line": 50, "column": 72 } }, - "27": { "start": { "line": 51, "column": 4 }, "end": { "line": 51, "column": 45 } }, - "28": { "start": { "line": 53, "column": 4 }, "end": { "line": 53, "column": 62 } }, - "29": { "start": { "line": 53, "column": 47 }, "end": { "line": 53, "column": 61 } }, - "30": { "start": { "line": 57, "column": 2 }, "end": { "line": 73, "column": 3 } }, - "31": { "start": { "line": 59, "column": 24 }, "end": { "line": 59, "column": 34 } }, - "32": { "start": { "line": 60, "column": 4 }, "end": { "line": 60, "column": 42 } }, - "33": { "start": { "line": 61, "column": 4 }, "end": { "line": 63, "column": 6 } }, - "34": { "start": { "line": 64, "column": 4 }, "end": { "line": 64, "column": 67 } }, - "35": { "start": { "line": 65, "column": 4 }, "end": { "line": 65, "column": 57 } }, - "36": { "start": { "line": 65, "column": 42 }, "end": { "line": 65, "column": 56 } }, - "37": { "start": { "line": 66, "column": 4 }, "end": { "line": 66, "column": 38 } }, - "38": { "start": { "line": 69, "column": 20 }, "end": { "line": 69, "column": 50 } }, - "39": { "start": { "line": 70, "column": 4 }, "end": { "line": 70, "column": 34 } }, - "40": { "start": { "line": 71, "column": 4 }, "end": { "line": 71, "column": 29 } }, - "41": { "start": { "line": 72, "column": 4 }, "end": { "line": 72, "column": 40 } }, - "42": { "start": { "line": 75, "column": 2 }, "end": { "line": 144, "column": 3 } }, - "43": { "start": { "line": 77, "column": 31 }, "end": { "line": 77, "column": 61 } }, - "44": { "start": { "line": 78, "column": 4 }, "end": { "line": 78, "column": 56 } }, - "45": { "start": { "line": 79, "column": 4 }, "end": { "line": 79, "column": 73 } }, - "46": { "start": { "line": 80, "column": 4 }, "end": { "line": 80, "column": 51 } }, - "47": { "start": { "line": 83, "column": 21 }, "end": { "line": 83, "column": 51 } }, - "48": { "start": { "line": 84, "column": 4 }, "end": { "line": 84, "column": 45 } }, - "49": { "start": { "line": 85, "column": 4 }, "end": { "line": 85, "column": 32 } }, - "50": { "start": { "line": 86, "column": 4 }, "end": { "line": 86, "column": 60 } }, - "51": { "start": { "line": 86, "column": 45 }, "end": { "line": 86, "column": 59 } }, - "52": { "start": { "line": 87, "column": 4 }, "end": { "line": 87, "column": 41 } }, - "53": { "start": { "line": 90, "column": 31 }, "end": { "line": 90, "column": 61 } }, - "54": { "start": { "line": 91, "column": 4 }, "end": { "line": 91, "column": 56 } }, - "55": { "start": { "line": 92, "column": 4 }, "end": { "line": 92, "column": 73 } }, - "56": { "start": { "line": 93, "column": 4 }, "end": { "line": 93, "column": 51 } }, - "57": { "start": { "line": 96, "column": 22 }, "end": { "line": 96, "column": 52 } }, - "58": { "start": { "line": 98, "column": 6 }, "end": { "line": 98, "column": 73 } }, - "59": { "start": { "line": 99, "column": 4 }, "end": { "line": 99, "column": 38 } }, - "60": { "start": { "line": 100, "column": 4 }, "end": { "line": 100, "column": 70 } }, - "61": { "start": { "line": 101, "column": 4 }, "end": { "line": 101, "column": 42 } }, - "62": { "start": { "line": 104, "column": 4 }, "end": { "line": 104, "column": 21 } }, - "63": { "start": { "line": 107, "column": 6 }, "end": { "line": 107, "column": 76 } }, - "64": { "start": { "line": 107, "column": 53 }, "end": { "line": 107, "column": 54 } }, - "65": { "start": { "line": 108, "column": 4 }, "end": { "line": 120, "column": 6 } }, - "66": { "start": { "line": 109, "column": 21 }, "end": { "line": 116, "column": 8 } }, - "67": { "start": { "line": 117, "column": 6 }, "end": { "line": 117, "column": 31 } }, - "68": { "start": { "line": 118, "column": 6 }, "end": { "line": 118, "column": 37 } }, - "69": { "start": { "line": 119, "column": 6 }, "end": { "line": 119, "column": 62 } }, - "70": { "start": { "line": 123, "column": 39 }, "end": { "line": 123, "column": 69 } }, - "71": { "start": { "line": 124, "column": 4 }, "end": { "line": 124, "column": 64 } }, - "72": { "start": { "line": 125, "column": 4 }, "end": { "line": 126, "column": 42 } }, - "73": { "start": { "line": 127, "column": 4 }, "end": { "line": 127, "column": 47 } }, - "74": { "start": { "line": 130, "column": 20 }, "end": { "line": 130, "column": 24 } }, - "75": { "start": { "line": 131, "column": 4 }, "end": { "line": 135, "column": 5 } }, - "76": { "start": { "line": 132, "column": 6 }, "end": { "line": 132, "column": 48 } }, - "77": { "start": { "line": 133, "column": 6 }, "end": { "line": 133, "column": 34 } }, - "78": { "start": { "line": 134, "column": 6 }, "end": { "line": 134, "column": 56 } }, - "79": { "start": { "line": 137, "column": 25 }, "end": { "line": 137, "column": 55 } }, - "80": { "start": { "line": 138, "column": 4 }, "end": { "line": 138, "column": 66 } }, - "81": { "start": { "line": 139, "column": 4 }, "end": { "line": 139, "column": 44 } }, - "82": { "start": { "line": 140, "column": 4 }, "end": { "line": 140, "column": 74 } }, - "83": { "start": { "line": 141, "column": 4 }, "end": { "line": 141, "column": 54 } }, - "84": { "start": { "line": 141, "column": 19 }, "end": { "line": 141, "column": 54 } }, - "85": { "start": { "line": 142, "column": 4 }, "end": { "line": 142, "column": 37 } }, - "86": { "start": { "line": 143, "column": 4 }, "end": { "line": 143, "column": 45 } }, - "87": { "start": { "line": 147, "column": 19 }, "end": { "line": 147, "column": 49 } }, - "88": { "start": { "line": 148, "column": 2 }, "end": { "line": 148, "column": 34 } }, - "89": { "start": { "line": 149, "column": 2 }, "end": { "line": 149, "column": 53 } }, - "90": { "start": { "line": 150, "column": 2 }, "end": { "line": 152, "column": 4 } }, - "91": { "start": { "line": 151, "column": 4 }, "end": { "line": 151, "column": 70 } }, - "92": { "start": { "line": 154, "column": 26 }, "end": { "line": 154, "column": 56 } }, - "93": { "start": { "line": 155, "column": 2 }, "end": { "line": 155, "column": 44 } }, - "94": { "start": { "line": 156, "column": 2 }, "end": { "line": 156, "column": 39 } }, - "95": { "start": { "line": 157, "column": 2 }, "end": { "line": 157, "column": 46 } }, - "96": { "start": { "line": 160, "column": 17 }, "end": { "line": 199, "column": 3 } }, - "97": { "start": { "line": 161, "column": 4 }, "end": { "line": 179, "column": 5 } }, - "98": { "start": { "line": 162, "column": 24 }, "end": { "line": 162, "column": 41 } }, - "99": { "start": { "line": 164, "column": 6 }, "end": { "line": 164, "column": 33 } }, - "100": { "start": { "line": 167, "column": 8 }, "end": { "line": 169, "column": 41 } }, - "101": { "start": { "line": 171, "column": 6 }, "end": { "line": 178, "column": 7 } }, - "102": { "start": { "line": 172, "column": 8 }, "end": { "line": 177, "column": 68 } }, - "103": { "start": { "line": 180, "column": 4 }, "end": { "line": 198, "column": 5 } }, - "104": { "start": { "line": 181, "column": 26 }, "end": { "line": 181, "column": 45 } }, - "105": { "start": { "line": 183, "column": 6 }, "end": { "line": 183, "column": 37 } }, - "106": { "start": { "line": 186, "column": 8 }, "end": { "line": 188, "column": 43 } }, - "107": { "start": { "line": 190, "column": 6 }, "end": { "line": 197, "column": 7 } }, - "108": { "start": { "line": 191, "column": 8 }, "end": { "line": 196, "column": 72 } }, - "109": { "start": { "line": 202, "column": 2 }, "end": { "line": 218, "column": 3 } }, - "110": { "start": { "line": 203, "column": 4 }, "end": { "line": 205, "column": 5 } }, - "111": { "start": { "line": 204, "column": 6 }, "end": { "line": 204, "column": 47 } }, - "112": { "start": { "line": 207, "column": 4 }, "end": { "line": 211, "column": 5 } }, - "113": { "start": { "line": 208, "column": 6 }, "end": { "line": 208, "column": 56 } }, - "114": { "start": { "line": 209, "column": 6 }, "end": { "line": 209, "column": 50 } }, - "115": { "start": { "line": 210, "column": 6 }, "end": { "line": 210, "column": 75 } }, - "116": { "start": { "line": 210, "column": 22 }, "end": { "line": 210, "column": 75 } }, - "117": { "start": { "line": 212, "column": 4 }, "end": { "line": 214, "column": 5 } }, - "118": { "start": { "line": 213, "column": 6 }, "end": { "line": 213, "column": 24 } }, - "119": { "start": { "line": 216, "column": 4 }, "end": { "line": 217, "column": 77 } }, - "120": { "start": { "line": 217, "column": 6 }, "end": { "line": 217, "column": 77 } }, - "121": { "start": { "line": 217, "column": 34 }, "end": { "line": 217, "column": 76 } }, - "122": { "start": { "line": 220, "column": 2 }, "end": { "line": 220, "column": 20 } } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { "start": { "line": 3, "column": 16 }, "end": { "line": 3, "column": 17 } }, - "loc": { "start": { "line": 11, "column": 3 }, "end": { "line": 221, "column": 1 } }, - "line": 11 - }, - "1": { - "name": "(anonymous_1)", - "decl": { "start": { "line": 30, "column": 23 }, "end": { "line": 30, "column": 24 } }, - "loc": { "start": { "line": 30, "column": 29 }, "end": { "line": 39, "column": 3 } }, - "line": 30 - }, - "2": { - "name": "(anonymous_2)", - "decl": { "start": { "line": 53, "column": 41 }, "end": { "line": 53, "column": 42 } }, - "loc": { "start": { "line": 53, "column": 47 }, "end": { "line": 53, "column": 61 } }, - "line": 53 - }, - "3": { - "name": "(anonymous_3)", - "decl": { "start": { "line": 65, "column": 36 }, "end": { "line": 65, "column": 37 } }, - "loc": { "start": { "line": 65, "column": 42 }, "end": { "line": 65, "column": 56 } }, - "line": 65 - }, - "4": { - "name": "(anonymous_4)", - "decl": { "start": { "line": 86, "column": 39 }, "end": { "line": 86, "column": 40 } }, - "loc": { "start": { "line": 86, "column": 45 }, "end": { "line": 86, "column": 59 } }, - "line": 86 - }, - "5": { - "name": "(anonymous_5)", - "decl": { "start": { "line": 107, "column": 43 }, "end": { "line": 107, "column": 44 } }, - "loc": { "start": { "line": 107, "column": 53 }, "end": { "line": 107, "column": 54 } }, - "line": 107 - }, - "6": { - "name": "(anonymous_6)", - "decl": { "start": { "line": 108, "column": 18 }, "end": { "line": 108, "column": 19 } }, - "loc": { "start": { "line": 108, "column": 27 }, "end": { "line": 120, "column": 5 } }, - "line": 108 - }, - "7": { - "name": "(anonymous_7)", - "decl": { "start": { "line": 150, "column": 37 }, "end": { "line": 150, "column": 38 } }, - "loc": { "start": { "line": 150, "column": 43 }, "end": { "line": 152, "column": 3 } }, - "line": 150 - }, - "8": { - "name": "(anonymous_8)", - "decl": { "start": { "line": 160, "column": 17 }, "end": { "line": 160, "column": 18 } }, - "loc": { "start": { "line": 160, "column": 33 }, "end": { "line": 199, "column": 3 } }, - "line": 160 - }, - "9": { - "name": "(anonymous_9)", - "decl": { "start": { "line": 202, "column": 16 }, "end": { "line": 202, "column": 17 } }, - "loc": { "start": { "line": 202, "column": 54 }, "end": { "line": 218, "column": 3 } }, - "line": 202 - }, - "10": { - "name": "(anonymous_10)", - "decl": { "start": { "line": 217, "column": 27 }, "end": { "line": 217, "column": 28 } }, - "loc": { "start": { "line": 217, "column": 34 }, "end": { "line": 217, "column": 76 } }, - "line": 217 - } - }, - "branchMap": { - "0": { - "loc": { "start": { "line": 10, "column": 2 }, "end": { "line": 10, "column": 11 } }, - "type": "default-arg", - "locations": [{ "start": { "line": 10, "column": 10 }, "end": { "line": 10, "column": 11 } }], - "line": 10 - }, - "1": { - "loc": { "start": { "line": 16, "column": 22 }, "end": { "line": 16, "column": 75 } }, - "type": "binary-expr", - "locations": [ - { "start": { "line": 16, "column": 22 }, "end": { "line": 16, "column": 46 } }, - { "start": { "line": 16, "column": 50 }, "end": { "line": 16, "column": 75 } } - ], - "line": 16 - }, - "2": { - "loc": { "start": { "line": 17, "column": 19 }, "end": { "line": 17, "column": 56 } }, - "type": "binary-expr", - "locations": [ - { "start": { "line": 17, "column": 19 }, "end": { "line": 17, "column": 36 } }, - { "start": { "line": 17, "column": 40 }, "end": { "line": 17, "column": 56 } } - ], - "line": 17 - }, - "3": { - "loc": { "start": { "line": 21, "column": 30 }, "end": { "line": 21, "column": 58 } }, - "type": "cond-expr", - "locations": [ - { "start": { "line": 21, "column": 43 }, "end": { "line": 21, "column": 53 } }, - { "start": { "line": 21, "column": 56 }, "end": { "line": 21, "column": 58 } } - ], - "line": 21 - }, - "4": { - "loc": { "start": { "line": 24, "column": 2 }, "end": { "line": 24, "column": 58 } }, - "type": "if", - "locations": [ - { "start": { "line": 24, "column": 2 }, "end": { "line": 24, "column": 58 } }, - { "start": {}, "end": {} } - ], - "line": 24 - }, - "5": { - "loc": { "start": { "line": 32, "column": 4 }, "end": { "line": 38, "column": 5 } }, - "type": "if", - "locations": [ - { "start": { "line": 32, "column": 4 }, "end": { "line": 38, "column": 5 } }, - { "start": {}, "end": {} } - ], - "line": 32 - }, - "6": { - "loc": { "start": { "line": 33, "column": 6 }, "end": { "line": 37, "column": 7 } }, - "type": "if", - "locations": [ - { "start": { "line": 33, "column": 6 }, "end": { "line": 37, "column": 7 } }, - { "start": { "line": 35, "column": 13 }, "end": { "line": 37, "column": 7 } } - ], - "line": 33 - }, - "7": { - "loc": { "start": { "line": 42, "column": 2 }, "end": { "line": 54, "column": 3 } }, - "type": "if", - "locations": [ - { "start": { "line": 42, "column": 2 }, "end": { "line": 54, "column": 3 } }, - { "start": {}, "end": {} } - ], - "line": 42 - }, - "8": { - "loc": { "start": { "line": 50, "column": 37 }, "end": { "line": 50, "column": 71 } }, - "type": "cond-expr", - "locations": [ - { "start": { "line": 50, "column": 50 }, "end": { "line": 50, "column": 60 } }, - { "start": { "line": 50, "column": 63 }, "end": { "line": 50, "column": 71 } } - ], - "line": 50 - }, - "9": { - "loc": { "start": { "line": 57, "column": 2 }, "end": { "line": 73, "column": 3 } }, - "type": "if", - "locations": [ - { "start": { "line": 57, "column": 2 }, "end": { "line": 73, "column": 3 } }, - { "start": {}, "end": {} } - ], - "line": 57 - }, - "10": { - "loc": { "start": { "line": 57, "column": 6 }, "end": { "line": 57, "column": 32 } }, - "type": "binary-expr", - "locations": [ - { "start": { "line": 57, "column": 6 }, "end": { "line": 57, "column": 18 } }, - { "start": { "line": 57, "column": 22 }, "end": { "line": 57, "column": 32 } } - ], - "line": 57 - }, - "11": { - "loc": { "start": { "line": 62, "column": 6 }, "end": { "line": 62, "column": 46 } }, - "type": "cond-expr", - "locations": [ - { "start": { "line": 62, "column": 33 }, "end": { "line": 62, "column": 41 } }, - { "start": { "line": 62, "column": 44 }, "end": { "line": 62, "column": 46 } } - ], - "line": 62 - }, - "12": { - "loc": { "start": { "line": 64, "column": 24 }, "end": { "line": 64, "column": 67 } }, - "type": "cond-expr", - "locations": [ - { "start": { "line": 64, "column": 51 }, "end": { "line": 64, "column": 54 } }, - { "start": { "line": 64, "column": 57 }, "end": { "line": 64, "column": 67 } } - ], - "line": 64 - }, - "13": { - "loc": { "start": { "line": 75, "column": 2 }, "end": { "line": 144, "column": 3 } }, - "type": "if", - "locations": [ - { "start": { "line": 75, "column": 2 }, "end": { "line": 144, "column": 3 } }, - { "start": { "line": 128, "column": 9 }, "end": { "line": 144, "column": 3 } } - ], - "line": 75 - }, - "14": { - "loc": { "start": { "line": 79, "column": 37 }, "end": { "line": 79, "column": 73 } }, - "type": "cond-expr", - "locations": [ - { "start": { "line": 79, "column": 64 }, "end": { "line": 79, "column": 67 } }, - { "start": { "line": 79, "column": 70 }, "end": { "line": 79, "column": 73 } } - ], - "line": 79 - }, - "15": { - "loc": { "start": { "line": 92, "column": 37 }, "end": { "line": 92, "column": 73 } }, - "type": "cond-expr", - "locations": [ - { "start": { "line": 92, "column": 64 }, "end": { "line": 92, "column": 67 } }, - { "start": { "line": 92, "column": 70 }, "end": { "line": 92, "column": 73 } } - ], - "line": 92 - }, - "16": { - "loc": { "start": { "line": 98, "column": 6 }, "end": { "line": 98, "column": 73 } }, - "type": "cond-expr", - "locations": [ - { "start": { "line": 98, "column": 33 }, "end": { "line": 98, "column": 45 } }, - { "start": { "line": 98, "column": 48 }, "end": { "line": 98, "column": 73 } } - ], - "line": 98 - }, - "17": { - "loc": { "start": { "line": 100, "column": 45 }, "end": { "line": 100, "column": 68 } }, - "type": "cond-expr", - "locations": [ - { "start": { "line": 100, "column": 60 }, "end": { "line": 100, "column": 62 } }, - { "start": { "line": 100, "column": 65 }, "end": { "line": 100, "column": 68 } } - ], - "line": 100 - }, - "18": { - "loc": { "start": { "line": 107, "column": 6 }, "end": { "line": 107, "column": 76 } }, - "type": "cond-expr", - "locations": [ - { "start": { "line": 107, "column": 33 }, "end": { "line": 107, "column": 55 } }, - { "start": { "line": 107, "column": 58 }, "end": { "line": 107, "column": 76 } } - ], - "line": 107 - }, - "19": { - "loc": { "start": { "line": 126, "column": 6 }, "end": { "line": 126, "column": 42 } }, - "type": "cond-expr", - "locations": [ - { "start": { "line": 126, "column": 33 }, "end": { "line": 126, "column": 36 } }, - { "start": { "line": 126, "column": 39 }, "end": { "line": 126, "column": 42 } } - ], - "line": 126 - }, - "20": { - "loc": { "start": { "line": 131, "column": 4 }, "end": { "line": 135, "column": 5 } }, - "type": "if", - "locations": [ - { "start": { "line": 131, "column": 4 }, "end": { "line": 135, "column": 5 } }, - { "start": {}, "end": {} } - ], - "line": 131 - }, - "21": { - "loc": { "start": { "line": 140, "column": 26 }, "end": { "line": 140, "column": 74 } }, - "type": "cond-expr", - "locations": [ - { "start": { "line": 140, "column": 54 }, "end": { "line": 140, "column": 66 } }, - { "start": { "line": 140, "column": 69 }, "end": { "line": 140, "column": 74 } } - ], - "line": 140 - }, - "22": { - "loc": { "start": { "line": 141, "column": 4 }, "end": { "line": 141, "column": 54 } }, - "type": "if", - "locations": [ - { "start": { "line": 141, "column": 4 }, "end": { "line": 141, "column": 54 } }, - { "start": {}, "end": {} } - ], - "line": 141 - }, - "23": { - "loc": { "start": { "line": 161, "column": 4 }, "end": { "line": 179, "column": 5 } }, - "type": "if", - "locations": [ - { "start": { "line": 161, "column": 4 }, "end": { "line": 179, "column": 5 } }, - { "start": {}, "end": {} } - ], - "line": 161 - }, - "24": { - "loc": { "start": { "line": 167, "column": 8 }, "end": { "line": 169, "column": 41 } }, - "type": "cond-expr", - "locations": [ - { "start": { "line": 168, "column": 12 }, "end": { "line": 168, "column": 14 } }, - { "start": { "line": 169, "column": 12 }, "end": { "line": 169, "column": 41 } } - ], - "line": 167 - }, - "25": { - "loc": { "start": { "line": 167, "column": 8 }, "end": { "line": 167, "column": 76 } }, - "type": "binary-expr", - "locations": [ - { "start": { "line": 167, "column": 8 }, "end": { "line": 167, "column": 27 } }, - { "start": { "line": 167, "column": 31 }, "end": { "line": 167, "column": 55 } }, - { "start": { "line": 167, "column": 59 }, "end": { "line": 167, "column": 76 } } - ], - "line": 167 - }, - "26": { - "loc": { "start": { "line": 171, "column": 6 }, "end": { "line": 178, "column": 7 } }, - "type": "if", - "locations": [ - { "start": { "line": 171, "column": 6 }, "end": { "line": 178, "column": 7 } }, - { "start": {}, "end": {} } - ], - "line": 171 - }, - "27": { - "loc": { "start": { "line": 180, "column": 4 }, "end": { "line": 198, "column": 5 } }, - "type": "if", - "locations": [ - { "start": { "line": 180, "column": 4 }, "end": { "line": 198, "column": 5 } }, - { "start": {}, "end": {} } - ], - "line": 180 - }, - "28": { - "loc": { "start": { "line": 186, "column": 8 }, "end": { "line": 188, "column": 43 } }, - "type": "cond-expr", - "locations": [ - { "start": { "line": 187, "column": 12 }, "end": { "line": 187, "column": 14 } }, - { "start": { "line": 188, "column": 12 }, "end": { "line": 188, "column": 43 } } - ], - "line": 186 - }, - "29": { - "loc": { "start": { "line": 186, "column": 8 }, "end": { "line": 186, "column": 76 } }, - "type": "binary-expr", - "locations": [ - { "start": { "line": 186, "column": 8 }, "end": { "line": 186, "column": 27 } }, - { "start": { "line": 186, "column": 31 }, "end": { "line": 186, "column": 55 } }, - { "start": { "line": 186, "column": 59 }, "end": { "line": 186, "column": 76 } } - ], - "line": 186 - }, - "30": { - "loc": { "start": { "line": 190, "column": 6 }, "end": { "line": 197, "column": 7 } }, - "type": "if", - "locations": [ - { "start": { "line": 190, "column": 6 }, "end": { "line": 197, "column": 7 } }, - { "start": {}, "end": {} } - ], - "line": 190 - }, - "31": { - "loc": { "start": { "line": 203, "column": 4 }, "end": { "line": 205, "column": 5 } }, - "type": "if", - "locations": [ - { "start": { "line": 203, "column": 4 }, "end": { "line": 205, "column": 5 } }, - { "start": {}, "end": {} } - ], - "line": 203 - }, - "32": { - "loc": { "start": { "line": 203, "column": 8 }, "end": { "line": 203, "column": 41 } }, - "type": "binary-expr", - "locations": [ - { "start": { "line": 203, "column": 8 }, "end": { "line": 203, "column": 28 } }, - { "start": { "line": 203, "column": 32 }, "end": { "line": 203, "column": 41 } } - ], - "line": 203 - }, - "33": { - "loc": { "start": { "line": 207, "column": 4 }, "end": { "line": 211, "column": 5 } }, - "type": "if", - "locations": [ - { "start": { "line": 207, "column": 4 }, "end": { "line": 211, "column": 5 } }, - { "start": {}, "end": {} } - ], - "line": 207 - }, - "34": { - "loc": { "start": { "line": 208, "column": 19 }, "end": { "line": 208, "column": 56 } }, - "type": "binary-expr", - "locations": [ - { "start": { "line": 208, "column": 19 }, "end": { "line": 208, "column": 36 } }, - { "start": { "line": 208, "column": 40 }, "end": { "line": 208, "column": 56 } } - ], - "line": 208 - }, - "35": { - "loc": { "start": { "line": 210, "column": 6 }, "end": { "line": 210, "column": 75 } }, - "type": "if", - "locations": [ - { "start": { "line": 210, "column": 6 }, "end": { "line": 210, "column": 75 } }, - { "start": {}, "end": {} } - ], - "line": 210 - }, - "36": { - "loc": { "start": { "line": 210, "column": 41 }, "end": { "line": 210, "column": 75 } }, - "type": "cond-expr", - "locations": [ - { "start": { "line": 210, "column": 54 }, "end": { "line": 210, "column": 64 } }, - { "start": { "line": 210, "column": 67 }, "end": { "line": 210, "column": 75 } } - ], - "line": 210 - }, - "37": { - "loc": { "start": { "line": 212, "column": 4 }, "end": { "line": 214, "column": 5 } }, - "type": "if", - "locations": [ - { "start": { "line": 212, "column": 4 }, "end": { "line": 214, "column": 5 } }, - { "start": {}, "end": {} } - ], - "line": 212 - }, - "38": { - "loc": { "start": { "line": 212, "column": 8 }, "end": { "line": 212, "column": 55 } }, - "type": "binary-expr", - "locations": [ - { "start": { "line": 212, "column": 8 }, "end": { "line": 212, "column": 32 } }, - { "start": { "line": 212, "column": 36 }, "end": { "line": 212, "column": 55 } } - ], - "line": 212 - }, - "39": { - "loc": { "start": { "line": 216, "column": 4 }, "end": { "line": 217, "column": 77 } }, - "type": "if", - "locations": [ - { "start": { "line": 216, "column": 4 }, "end": { "line": 217, "column": 77 } }, - { "start": {}, "end": {} } - ], - "line": 216 - } - }, - "s": { - "0": 3, - "1": 68, - "2": 68, - "3": 68, - "4": 68, - "5": 68, - "6": 68, - "7": 68, - "8": 68, - "9": 68, - "10": 36, - "11": 68, - "12": 68, - "13": 68, - "14": 68, - "15": 0, - "16": 0, - "17": 0, - "18": 0, - "19": 0, - "20": 68, - "21": 33, - "22": 33, - "23": 33, - "24": 33, - "25": 33, - "26": 33, - "27": 33, - "28": 33, - "29": 0, - "30": 68, - "31": 59, - "32": 59, - "33": 59, - "34": 59, - "35": 59, - "36": 0, - "37": 59, - "38": 59, - "39": 59, - "40": 59, - "41": 59, - "42": 68, - "43": 33, - "44": 33, - "45": 33, - "46": 33, - "47": 33, - "48": 33, - "49": 33, - "50": 33, - "51": 0, - "52": 33, - "53": 33, - "54": 33, - "55": 33, - "56": 33, - "57": 33, - "58": 33, - "59": 33, - "60": 33, - "61": 33, - "62": 33, - "63": 33, - "64": 2, - "65": 33, - "66": 36, - "67": 36, - "68": 36, - "69": 36, - "70": 33, - "71": 33, - "72": 33, - "73": 33, - "74": 35, - "75": 35, - "76": 28, - "77": 28, - "78": 28, - "79": 35, - "80": 35, - "81": 35, - "82": 35, - "83": 35, - "84": 28, - "85": 35, - "86": 35, - "87": 68, - "88": 68, - "89": 68, - "90": 68, - "91": 0, - "92": 68, - "93": 68, - "94": 68, - "95": 68, - "96": 68, - "97": 6, - "98": 6, - "99": 6, - "100": 6, - "101": 6, - "102": 1, - "103": 6, - "104": 3, - "105": 3, - "106": 3, - "107": 3, - "108": 1, - "109": 68, - "110": 10, - "111": 1, - "112": 10, - "113": 2, - "114": 2, - "115": 2, - "116": 1, - "117": 10, - "118": 6, - "119": 10, - "120": 5, - "121": 5, - "122": 68 - }, - "f": { "0": 68, "1": 0, "2": 0, "3": 0, "4": 0, "5": 2, "6": 36, "7": 0, "8": 6, "9": 10, "10": 5 }, - "b": { - "0": [32], - "1": [68, 67], - "2": [68, 48], - "3": [24, 44], - "4": [36, 32], - "5": [0, 0], - "6": [0, 0], - "7": [33, 35], - "8": [12, 21], - "9": [59, 9], - "10": [68, 68], - "11": [2, 57], - "12": [2, 57], - "13": [33, 35], - "14": [1, 32], - "15": [1, 32], - "16": [1, 32], - "17": [30, 3], - "18": [1, 32], - "19": [1, 32], - "20": [28, 7], - "21": [28, 7], - "22": [28, 7], - "23": [6, 0], - "24": [2, 4], - "25": [6, 6, 6], - "26": [1, 5], - "27": [3, 3], - "28": [1, 2], - "29": [3, 3, 3], - "30": [1, 2], - "31": [1, 9], - "32": [10, 2], - "33": [2, 8], - "34": [2, 0], - "35": [1, 1], - "36": [1, 0], - "37": [6, 4], - "38": [10, 6], - "39": [5, 5] - }, - "_coverageSchema": "1a1c01bbd47fc00a2c39e90264f33305004495a9", - "hash": "2c2a43e613bbe1891b3499dc7d7acf6a58b3d456" - }, - "/workspace/json-viewer/src/renderer/toolbar.js": { - "path": "/workspace/json-viewer/src/renderer/toolbar.js", - "statementMap": { - "0": { "start": { "line": 1, "column": 16 }, "end": { "line": 123, "column": 1 } }, - "1": { "start": { "line": 8, "column": 2 }, "end": { "line": 8, "column": 27 } }, - "2": { "start": { "line": 9, "column": 2 }, "end": { "line": 9, "column": 61 } }, - "3": { "start": { "line": 10, "column": 2 }, "end": { "line": 10, "column": 40 } }, - "4": { "start": { "line": 11, "column": 2 }, "end": { "line": 11, "column": 25 } }, - "5": { "start": { "line": 15, "column": 18 }, "end": { "line": 15, "column": 47 } }, - "6": { "start": { "line": 16, "column": 2 }, "end": { "line": 16, "column": 31 } }, - "7": { "start": { "line": 19, "column": 18 }, "end": { "line": 19, "column": 47 } }, - "8": { "start": { "line": 20, "column": 2 }, "end": { "line": 20, "column": 31 } }, - "9": { "start": { "line": 21, "column": 2 }, "end": { "line": 21, "column": 30 } }, - "10": { "start": { "line": 24, "column": 24 }, "end": { "line": 24, "column": 53 } }, - "11": { "start": { "line": 25, "column": 2 }, "end": { "line": 25, "column": 44 } }, - "12": { "start": { "line": 26, "column": 2 }, "end": { "line": 26, "column": 36 } }, - "13": { "start": { "line": 29, "column": 29 }, "end": { "line": 29, "column": 58 } }, - "14": { "start": { "line": 30, "column": 2 }, "end": { "line": 30, "column": 57 } }, - "15": { "start": { "line": 31, "column": 2 }, "end": { "line": 31, "column": 41 } }, - "16": { "start": { "line": 32, "column": 22 }, "end": { "line": 32, "column": 52 } }, - "17": { "start": { "line": 33, "column": 2 }, "end": { "line": 33, "column": 40 } }, - "18": { "start": { "line": 34, "column": 2 }, "end": { "line": 34, "column": 51 } }, - "19": { "start": { "line": 34, "column": 37 }, "end": { "line": 34, "column": 51 } }, - "20": { "start": { "line": 35, "column": 2 }, "end": { "line": 35, "column": 45 } }, - "21": { "start": { "line": 38, "column": 28 }, "end": { "line": 38, "column": 57 } }, - "22": { "start": { "line": 39, "column": 2 }, "end": { "line": 39, "column": 56 } }, - "23": { "start": { "line": 40, "column": 2 }, "end": { "line": 40, "column": 40 } }, - "24": { "start": { "line": 41, "column": 21 }, "end": { "line": 41, "column": 51 } }, - "25": { "start": { "line": 42, "column": 2 }, "end": { "line": 42, "column": 36 } }, - "26": { "start": { "line": 43, "column": 2 }, "end": { "line": 43, "column": 43 } }, - "27": { "start": { "line": 44, "column": 2 }, "end": { "line": 47, "column": 3 } }, - "28": { "start": { "line": 45, "column": 4 }, "end": { "line": 45, "column": 63 } }, - "29": { "start": { "line": 45, "column": 45 }, "end": { "line": 45, "column": 63 } }, - "30": { "start": { "line": 46, "column": 4 }, "end": { "line": 46, "column": 41 } }, - "31": { "start": { "line": 50, "column": 30 }, "end": { "line": 50, "column": 59 } }, - "32": { "start": { "line": 51, "column": 2 }, "end": { "line": 51, "column": 58 } }, - "33": { "start": { "line": 52, "column": 2 }, "end": { "line": 52, "column": 42 } }, - "34": { "start": { "line": 54, "column": 23 }, "end": { "line": 54, "column": 53 } }, - "35": { "start": { "line": 55, "column": 2 }, "end": { "line": 55, "column": 39 } }, - "36": { "start": { "line": 56, "column": 2 }, "end": { "line": 56, "column": 47 } }, - "37": { "start": { "line": 57, "column": 2 }, "end": { "line": 61, "column": 3 } }, - "38": { "start": { "line": 58, "column": 4 }, "end": { "line": 58, "column": 80 } }, - "39": { "start": { "line": 58, "column": 45 }, "end": { "line": 58, "column": 80 } }, - "40": { "start": { "line": 59, "column": 4 }, "end": { "line": 59, "column": 45 } }, - "41": { "start": { "line": 59, "column": 27 }, "end": { "line": 59, "column": 45 } }, - "42": { "start": { "line": 60, "column": 4 }, "end": { "line": 60, "column": 41 } }, - "43": { "start": { "line": 64, "column": 28 }, "end": { "line": 64, "column": 57 } }, - "44": { "start": { "line": 65, "column": 2 }, "end": { "line": 65, "column": 56 } }, - "45": { "start": { "line": 66, "column": 2 }, "end": { "line": 66, "column": 40 } }, - "46": { "start": { "line": 67, "column": 21 }, "end": { "line": 67, "column": 51 } }, - "47": { "start": { "line": 68, "column": 2 }, "end": { "line": 68, "column": 38 } }, - "48": { "start": { "line": 69, "column": 2 }, "end": { "line": 72, "column": 3 } }, - "49": { "start": { "line": 70, "column": 4 }, "end": { "line": 70, "column": 20 } }, - "50": { "start": { "line": 71, "column": 4 }, "end": { "line": 71, "column": 37 } }, - "51": { "start": { "line": 73, "column": 2 }, "end": { "line": 73, "column": 43 } }, - "52": { "start": { "line": 76, "column": 29 }, "end": { "line": 76, "column": 58 } }, - "53": { "start": { "line": 77, "column": 2 }, "end": { "line": 77, "column": 57 } }, - "54": { "start": { "line": 78, "column": 2 }, "end": { "line": 78, "column": 41 } }, - "55": { "start": { "line": 79, "column": 22 }, "end": { "line": 79, "column": 52 } }, - "56": { "start": { "line": 80, "column": 2 }, "end": { "line": 80, "column": 40 } }, - "57": { "start": { "line": 81, "column": 2 }, "end": { "line": 84, "column": 3 } }, - "58": { "start": { "line": 82, "column": 4 }, "end": { "line": 82, "column": 20 } }, - "59": { "start": { "line": 83, "column": 4 }, "end": { "line": 83, "column": 37 } }, - "60": { "start": { "line": 85, "column": 2 }, "end": { "line": 85, "column": 45 } }, - "61": { "start": { "line": 88, "column": 26 }, "end": { "line": 88, "column": 55 } }, - "62": { "start": { "line": 89, "column": 2 }, "end": { "line": 89, "column": 54 } }, - "63": { "start": { "line": 90, "column": 2 }, "end": { "line": 90, "column": 38 } }, - "64": { "start": { "line": 91, "column": 19 }, "end": { "line": 91, "column": 49 } }, - "65": { "start": { "line": 92, "column": 2 }, "end": { "line": 92, "column": 70 } }, - "66": { "start": { "line": 93, "column": 2 }, "end": { "line": 99, "column": 3 } }, - "67": { "start": { "line": 94, "column": 4 }, "end": { "line": 94, "column": 39 } }, - "68": { "start": { "line": 95, "column": 4 }, "end": { "line": 95, "column": 40 } }, - "69": { "start": { "line": 96, "column": 4 }, "end": { "line": 98, "column": 6 } }, - "70": { "start": { "line": 100, "column": 2 }, "end": { "line": 100, "column": 39 } }, - "71": { "start": { "line": 103, "column": 21 }, "end": { "line": 103, "column": 51 } }, - "72": { "start": { "line": 104, "column": 2 }, "end": { "line": 104, "column": 38 } }, - "73": { "start": { "line": 105, "column": 2 }, "end": { "line": 105, "column": 39 } }, - "74": { "start": { "line": 106, "column": 2 }, "end": { "line": 106, "column": 47 } }, - "75": { "start": { "line": 107, "column": 2 }, "end": { "line": 107, "column": 40 } }, - "76": { "start": { "line": 108, "column": 2 }, "end": { "line": 108, "column": 36 } }, - "77": { "start": { "line": 109, "column": 2 }, "end": { "line": 111, "column": 3 } }, - "78": { "start": { "line": 110, "column": 4 }, "end": { "line": 110, "column": 28 } }, - "79": { "start": { "line": 112, "column": 2 }, "end": { "line": 112, "column": 40 } }, - "80": { "start": { "line": 114, "column": 2 }, "end": { "line": 120, "column": 3 } }, - "81": { "start": { "line": 115, "column": 4 }, "end": { "line": 115, "column": 21 } }, - "82": { "start": { "line": 116, "column": 4 }, "end": { "line": 116, "column": 19 } }, - "83": { "start": { "line": 117, "column": 4 }, "end": { "line": 117, "column": 43 } }, - "84": { "start": { "line": 117, "column": 21 }, "end": { "line": 117, "column": 43 } }, - "85": { "start": { "line": 118, "column": 4 }, "end": { "line": 118, "column": 40 } }, - "86": { "start": { "line": 119, "column": 4 }, "end": { "line": 119, "column": 16 } }, - "87": { "start": { "line": 122, "column": 2 }, "end": { "line": 122, "column": 24 } } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { "start": { "line": 1, "column": 16 }, "end": { "line": 1, "column": 17 } }, - "loc": { "start": { "line": 7, "column": 3 }, "end": { "line": 123, "column": 1 } }, - "line": 7 - }, - "1": { - "name": "(anonymous_1)", - "decl": { "start": { "line": 34, "column": 31 }, "end": { "line": 34, "column": 32 } }, - "loc": { "start": { "line": 34, "column": 37 }, "end": { "line": 34, "column": 51 } }, - "line": 34 - }, - "2": { - "name": "(anonymous_2)", - "decl": { "start": { "line": 44, "column": 30 }, "end": { "line": 44, "column": 31 } }, - "loc": { "start": { "line": 44, "column": 36 }, "end": { "line": 47, "column": 3 } }, - "line": 44 - }, - "3": { - "name": "(anonymous_3)", - "decl": { "start": { "line": 57, "column": 32 }, "end": { "line": 57, "column": 33 } }, - "loc": { "start": { "line": 57, "column": 38 }, "end": { "line": 61, "column": 3 } }, - "line": 57 - }, - "4": { - "name": "(anonymous_4)", - "decl": { "start": { "line": 69, "column": 30 }, "end": { "line": 69, "column": 31 } }, - "loc": { "start": { "line": 69, "column": 36 }, "end": { "line": 72, "column": 3 } }, - "line": 69 - }, - "5": { - "name": "(anonymous_5)", - "decl": { "start": { "line": 81, "column": 31 }, "end": { "line": 81, "column": 32 } }, - "loc": { "start": { "line": 81, "column": 37 }, "end": { "line": 84, "column": 3 } }, - "line": 81 - }, - "6": { - "name": "(anonymous_6)", - "decl": { "start": { "line": 93, "column": 28 }, "end": { "line": 93, "column": 29 } }, - "loc": { "start": { "line": 93, "column": 34 }, "end": { "line": 99, "column": 3 } }, - "line": 93 - }, - "7": { - "name": "(anonymous_7)", - "decl": { "start": { "line": 109, "column": 24 }, "end": { "line": 109, "column": 25 } }, - "loc": { "start": { "line": 109, "column": 31 }, "end": { "line": 111, "column": 3 } }, - "line": 109 - }, - "8": { - "name": "(anonymous_8)", - "decl": { "start": { "line": 114, "column": 17 }, "end": { "line": 114, "column": 18 } }, - "loc": { "start": { "line": 114, "column": 23 }, "end": { "line": 120, "column": 3 } }, - "line": 114 - } - }, - "branchMap": { - "0": { - "loc": { "start": { "line": 8, "column": 16 }, "end": { "line": 8, "column": 27 } }, - "type": "binary-expr", - "locations": [ - { "start": { "line": 8, "column": 16 }, "end": { "line": 8, "column": 22 } }, - { "start": { "line": 8, "column": 26 }, "end": { "line": 8, "column": 27 } } - ], - "line": 8 - }, - "1": { - "loc": { "start": { "line": 9, "column": 18 }, "end": { "line": 9, "column": 61 } }, - "type": "cond-expr", - "locations": [ - { "start": { "line": 9, "column": 49 }, "end": { "line": 9, "column": 57 } }, - { "start": { "line": 9, "column": 60 }, "end": { "line": 9, "column": 61 } } - ], - "line": 9 - }, - "2": { - "loc": { "start": { "line": 10, "column": 21 }, "end": { "line": 10, "column": 40 } }, - "type": "binary-expr", - "locations": [ - { "start": { "line": 10, "column": 21 }, "end": { "line": 10, "column": 32 } }, - { "start": { "line": 10, "column": 36 }, "end": { "line": 10, "column": 40 } } - ], - "line": 10 - }, - "3": { - "loc": { "start": { "line": 45, "column": 4 }, "end": { "line": 45, "column": 63 } }, - "type": "if", - "locations": [ - { "start": { "line": 45, "column": 4 }, "end": { "line": 45, "column": 63 } }, - { "start": {}, "end": {} } - ], - "line": 45 - }, - "4": { - "loc": { "start": { "line": 58, "column": 4 }, "end": { "line": 58, "column": 80 } }, - "type": "if", - "locations": [ - { "start": { "line": 58, "column": 4 }, "end": { "line": 58, "column": 80 } }, - { "start": {}, "end": {} } - ], - "line": 58 - }, - "5": { - "loc": { "start": { "line": 59, "column": 4 }, "end": { "line": 59, "column": 45 } }, - "type": "if", - "locations": [ - { "start": { "line": 59, "column": 4 }, "end": { "line": 59, "column": 45 } }, - { "start": {}, "end": {} } - ], - "line": 59 - }, - "6": { - "loc": { "start": { "line": 92, "column": 36 }, "end": { "line": 92, "column": 68 } }, - "type": "cond-expr", - "locations": [ - { "start": { "line": 92, "column": 55 }, "end": { "line": 92, "column": 63 } }, - { "start": { "line": 92, "column": 66 }, "end": { "line": 92, "column": 68 } } - ], - "line": 92 - }, - "7": { - "loc": { "start": { "line": 117, "column": 4 }, "end": { "line": 117, "column": 43 } }, - "type": "if", - "locations": [ - { "start": { "line": 117, "column": 4 }, "end": { "line": 117, "column": 43 } }, - { "start": {}, "end": {} } - ], - "line": 117 - } - }, - "s": { - "0": 3, - "1": 18, - "2": 18, - "3": 18, - "4": 18, - "5": 18, - "6": 18, - "7": 18, - "8": 18, - "9": 18, - "10": 18, - "11": 18, - "12": 18, - "13": 18, - "14": 18, - "15": 18, - "16": 18, - "17": 18, - "18": 18, - "19": 1, - "20": 18, - "21": 18, - "22": 18, - "23": 18, - "24": 18, - "25": 18, - "26": 18, - "27": 18, - "28": 1, - "29": 1, - "30": 1, - "31": 18, - "32": 18, - "33": 18, - "34": 18, - "35": 18, - "36": 18, - "37": 18, - "38": 1, - "39": 0, - "40": 1, - "41": 1, - "42": 1, - "43": 18, - "44": 18, - "45": 18, - "46": 18, - "47": 18, - "48": 18, - "49": 1, - "50": 1, - "51": 18, - "52": 18, - "53": 18, - "54": 18, - "55": 18, - "56": 18, - "57": 18, - "58": 1, - "59": 1, - "60": 18, - "61": 18, - "62": 18, - "63": 18, - "64": 18, - "65": 18, - "66": 18, - "67": 3, - "68": 3, - "69": 3, - "70": 18, - "71": 18, - "72": 18, - "73": 18, - "74": 18, - "75": 18, - "76": 18, - "77": 18, - "78": 1, - "79": 18, - "80": 18, - "81": 1, - "82": 1, - "83": 1, - "84": 1, - "85": 1, - "86": 1, - "87": 18 - }, - "f": { "0": 18, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 3, "7": 1, "8": 1 }, - "b": { - "0": [18, 16], - "1": [2, 16], - "2": [18, 17], - "3": [1, 0], - "4": [0, 1], - "5": [1, 0], - "6": [18, 0], - "7": [1, 0] - }, - "_coverageSchema": "1a1c01bbd47fc00a2c39e90264f33305004495a9", - "hash": "ad33794d826a644f8b50393052207b9f722ec113" - } -} diff --git a/coverage/lcov-report/base.css b/coverage/lcov-report/base.css deleted file mode 100644 index f418035..0000000 --- a/coverage/lcov-report/base.css +++ /dev/null @@ -1,224 +0,0 @@ -body, html { - margin:0; padding: 0; - height: 100%; -} -body { - font-family: Helvetica Neue, Helvetica, Arial; - font-size: 14px; - color:#333; -} -.small { font-size: 12px; } -*, *:after, *:before { - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; - box-sizing:border-box; - } -h1 { font-size: 20px; margin: 0;} -h2 { font-size: 14px; } -pre { - font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; - margin: 0; - padding: 0; - -moz-tab-size: 2; - -o-tab-size: 2; - tab-size: 2; -} -a { color:#0074D9; text-decoration:none; } -a:hover { text-decoration:underline; } -.strong { font-weight: bold; } -.space-top1 { padding: 10px 0 0 0; } -.pad2y { padding: 20px 0; } -.pad1y { padding: 10px 0; } -.pad2x { padding: 0 20px; } -.pad2 { padding: 20px; } -.pad1 { padding: 10px; } -.space-left2 { padding-left:55px; } -.space-right2 { padding-right:20px; } -.center { text-align:center; } -.clearfix { display:block; } -.clearfix:after { - content:''; - display:block; - height:0; - clear:both; - visibility:hidden; - } -.fl { float: left; } -@media only screen and (max-width:640px) { - .col3 { width:100%; max-width:100%; } - .hide-mobile { display:none!important; } -} - -.quiet { - color: #7f7f7f; - color: rgba(0,0,0,0.5); -} -.quiet a { opacity: 0.7; } - -.fraction { - font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; - font-size: 10px; - color: #555; - background: #E8E8E8; - padding: 4px 5px; - border-radius: 3px; - vertical-align: middle; -} - -div.path a:link, div.path a:visited { color: #333; } -table.coverage { - border-collapse: collapse; - margin: 10px 0 0 0; - padding: 0; -} - -table.coverage td { - margin: 0; - padding: 0; - vertical-align: top; -} -table.coverage td.line-count { - text-align: right; - padding: 0 5px 0 20px; -} -table.coverage td.line-coverage { - text-align: right; - padding-right: 10px; - min-width:20px; -} - -table.coverage td span.cline-any { - display: inline-block; - padding: 0 5px; - width: 100%; -} -.missing-if-branch { - display: inline-block; - margin-right: 5px; - border-radius: 3px; - position: relative; - padding: 0 4px; - background: #333; - color: yellow; -} - -.skip-if-branch { - display: none; - margin-right: 10px; - position: relative; - padding: 0 4px; - background: #ccc; - color: white; -} -.missing-if-branch .typ, .skip-if-branch .typ { - color: inherit !important; -} -.coverage-summary { - border-collapse: collapse; - width: 100%; -} -.coverage-summary tr { border-bottom: 1px solid #bbb; } -.keyline-all { border: 1px solid #ddd; } -.coverage-summary td, .coverage-summary th { padding: 10px; } -.coverage-summary tbody { border: 1px solid #bbb; } -.coverage-summary td { border-right: 1px solid #bbb; } -.coverage-summary td:last-child { border-right: none; } -.coverage-summary th { - text-align: left; - font-weight: normal; - white-space: nowrap; -} -.coverage-summary th.file { border-right: none !important; } -.coverage-summary th.pct { } -.coverage-summary th.pic, -.coverage-summary th.abs, -.coverage-summary td.pct, -.coverage-summary td.abs { text-align: right; } -.coverage-summary td.file { white-space: nowrap; } -.coverage-summary td.pic { min-width: 120px !important; } -.coverage-summary tfoot td { } - -.coverage-summary .sorter { - height: 10px; - width: 7px; - display: inline-block; - margin-left: 0.5em; - background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; -} -.coverage-summary .sorted .sorter { - background-position: 0 -20px; -} -.coverage-summary .sorted-desc .sorter { - background-position: 0 -10px; -} -.status-line { height: 10px; } -/* yellow */ -.cbranch-no { background: yellow !important; color: #111; } -/* dark red */ -.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } -.low .chart { border:1px solid #C21F39 } -.highlighted, -.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ - background: #C21F39 !important; -} -/* medium red */ -.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } -/* light red */ -.low, .cline-no { background:#FCE1E5 } -/* light green */ -.high, .cline-yes { background:rgb(230,245,208) } -/* medium green */ -.cstat-yes { background:rgb(161,215,106) } -/* dark green */ -.status-line.high, .high .cover-fill { background:rgb(77,146,33) } -.high .chart { border:1px solid rgb(77,146,33) } -/* dark yellow (gold) */ -.status-line.medium, .medium .cover-fill { background: #f9cd0b; } -.medium .chart { border:1px solid #f9cd0b; } -/* light yellow */ -.medium { background: #fff4c2; } - -.cstat-skip { background: #ddd; color: #111; } -.fstat-skip { background: #ddd; color: #111 !important; } -.cbranch-skip { background: #ddd !important; color: #111; } - -span.cline-neutral { background: #eaeaea; } - -.coverage-summary td.empty { - opacity: .5; - padding-top: 4px; - padding-bottom: 4px; - line-height: 1; - color: #888; -} - -.cover-fill, .cover-empty { - display:inline-block; - height: 12px; -} -.chart { - line-height: 0; -} -.cover-empty { - background: white; -} -.cover-full { - border-right: none !important; -} -pre.prettyprint { - border: none !important; - padding: 0 !important; - margin: 0 !important; -} -.com { color: #999 !important; } -.ignore-none { color: #999; font-weight: normal; } - -.wrapper { - min-height: 100%; - height: auto !important; - height: 100%; - margin: 0 auto -48px; -} -.footer, .push { - height: 48px; -} diff --git a/coverage/lcov-report/block-navigation.js b/coverage/lcov-report/block-navigation.js deleted file mode 100644 index b221675..0000000 --- a/coverage/lcov-report/block-navigation.js +++ /dev/null @@ -1,75 +0,0 @@ -/* eslint-disable */ -var jumpToCode = (function init() { - // Classes of code we would like to highlight in the file view - var missingCoverageClasses = [".cbranch-no", ".cstat-no", ".fstat-no"] - - // Elements to highlight in the file listing view - var fileListingElements = ["td.pct.low"] - - // We don't want to select elements that are direct descendants of another match - var notSelector = ":not(" + missingCoverageClasses.join("):not(") + ") > " // becomes `:not(a):not(b) > ` - - // Selecter that finds elements on the page to which we can jump - var selector = fileListingElements.join(", ") + ", " + notSelector + missingCoverageClasses.join(", " + notSelector) // becomes `:not(a):not(b) > a, :not(a):not(b) > b` - - // The NodeList of matching elements - var missingCoverageElements = document.querySelectorAll(selector) - - var currentIndex - - function toggleClass(index) { - missingCoverageElements.item(currentIndex).classList.remove("highlighted") - missingCoverageElements.item(index).classList.add("highlighted") - } - - function makeCurrent(index) { - toggleClass(index) - currentIndex = index - missingCoverageElements.item(index).scrollIntoView({ - behavior: "smooth", - block: "center", - inline: "center", - }) - } - - function goToPrevious() { - var nextIndex = 0 - if (typeof currentIndex !== "number" || currentIndex === 0) { - nextIndex = missingCoverageElements.length - 1 - } else if (missingCoverageElements.length > 1) { - nextIndex = currentIndex - 1 - } - - makeCurrent(nextIndex) - } - - function goToNext() { - var nextIndex = 0 - - if (typeof currentIndex === "number" && currentIndex < missingCoverageElements.length - 1) { - nextIndex = currentIndex + 1 - } - - makeCurrent(nextIndex) - } - - return function jump(event) { - if (document.getElementById("fileSearch") === document.activeElement && document.activeElement != null) { - // if we're currently focused on the search input, we don't want to navigate - return - } - - switch (event.which) { - case 78: // n - case 74: // j - goToNext() - break - case 66: // b - case 75: // k - case 80: // p - goToPrevious() - break - } - } -})() -window.addEventListener("keydown", jumpToCode) diff --git a/coverage/lcov-report/favicon.png b/coverage/lcov-report/favicon.png deleted file mode 100644 index c1525b8..0000000 Binary files a/coverage/lcov-report/favicon.png and /dev/null differ diff --git a/coverage/lcov-report/index.html b/coverage/lcov-report/index.html deleted file mode 100644 index 90f66ed..0000000 --- a/coverage/lcov-report/index.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - Code coverage report for All files - - - - - - - - - -
-
-

All files

-
- -
- 88.53% - Statements - 386/436 -
- - -
- 85.53% - Branches - 207/242 -
- - -
- 73.33% - Functions - 44/60 -
- - -
- 90.2% - Lines - 359/398 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
src -
-
80.98%132/16384.44%76/9074.28%26/3580.98%115/142
src/renderer -
-
93.04%254/27386.18%131/15272%18/2595.31%244/256
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/prettify.css b/coverage/lcov-report/prettify.css deleted file mode 100644 index b317a7c..0000000 --- a/coverage/lcov-report/prettify.css +++ /dev/null @@ -1 +0,0 @@ -.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/coverage/lcov-report/prettify.js b/coverage/lcov-report/prettify.js deleted file mode 100644 index a928be1..0000000 --- a/coverage/lcov-report/prettify.js +++ /dev/null @@ -1,896 +0,0 @@ -/* eslint-disable */ -window.PR_SHOULD_USE_CONTINUATION = true -;(function () { - var h = ["break,continue,do,else,for,if,return,while"] - var u = [ - h, - "auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile", - ] - var p = [u, "catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"] - var l = [ - p, - "alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where", - ] - var x = [ - p, - "abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient", - ] - var R = [ - x, - "as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var", - ] - var r = - "all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes" - var w = [p, "debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"] - var s = - "caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END" - var I = [ - h, - "and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None", - ] - var f = [ - h, - "alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END", - ] - var H = [h, "case,done,elif,esac,eval,fi,function,in,local,set,then,until"] - var A = [l, R, w, s + I, f, H] - var e = - /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/ - var C = "str" - var z = "kwd" - var j = "com" - var O = "typ" - var G = "lit" - var L = "pun" - var F = "pln" - var m = "tag" - var E = "dec" - var J = "src" - var P = "atn" - var n = "atv" - var N = "nocode" - var M = - "(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*" - function k(Z) { - var ad = 0 - var S = false - var ac = false - for (var V = 0, U = Z.length; V < U; ++V) { - var ae = Z[V] - if (ae.ignoreCase) { - ac = true - } else { - if (/[a-z]/i.test(ae.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ""))) { - S = true - ac = false - break - } - } - } - var Y = { b: 8, t: 9, n: 10, v: 11, f: 12, r: 13 } - function ab(ah) { - var ag = ah.charCodeAt(0) - if (ag !== 92) { - return ag - } - var af = ah.charAt(1) - ag = Y[af] - if (ag) { - return ag - } else { - if ("0" <= af && af <= "7") { - return parseInt(ah.substring(1), 8) - } else { - if (af === "u" || af === "x") { - return parseInt(ah.substring(2), 16) - } else { - return ah.charCodeAt(1) - } - } - } - } - function T(af) { - if (af < 32) { - return (af < 16 ? "\\x0" : "\\x") + af.toString(16) - } - var ag = String.fromCharCode(af) - if (ag === "\\" || ag === "-" || ag === "[" || ag === "]") { - ag = "\\" + ag - } - return ag - } - function X(am) { - var aq = am - .substring(1, am.length - 1) - .match( - new RegExp( - "\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]", - "g" - ) - ) - var ak = [] - var af = [] - var ao = aq[0] === "^" - for (var ar = ao ? 1 : 0, aj = aq.length; ar < aj; ++ar) { - var ah = aq[ar] - if (/\\[bdsw]/i.test(ah)) { - ak.push(ah) - } else { - var ag = ab(ah) - var al - if (ar + 2 < aj && "-" === aq[ar + 1]) { - al = ab(aq[ar + 2]) - ar += 2 - } else { - al = ag - } - af.push([ag, al]) - if (!(al < 65 || ag > 122)) { - if (!(al < 65 || ag > 90)) { - af.push([Math.max(65, ag) | 32, Math.min(al, 90) | 32]) - } - if (!(al < 97 || ag > 122)) { - af.push([Math.max(97, ag) & ~32, Math.min(al, 122) & ~32]) - } - } - } - } - af.sort(function (av, au) { - return av[0] - au[0] || au[1] - av[1] - }) - var ai = [] - var ap = [NaN, NaN] - for (var ar = 0; ar < af.length; ++ar) { - var at = af[ar] - if (at[0] <= ap[1] + 1) { - ap[1] = Math.max(ap[1], at[1]) - } else { - ai.push((ap = at)) - } - } - var an = ["["] - if (ao) { - an.push("^") - } - an.push.apply(an, ak) - for (var ar = 0; ar < ai.length; ++ar) { - var at = ai[ar] - an.push(T(at[0])) - if (at[1] > at[0]) { - if (at[1] + 1 > at[0]) { - an.push("-") - } - an.push(T(at[1])) - } - } - an.push("]") - return an.join("") - } - function W(al) { - var aj = al.source.match( - new RegExp( - "(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)", - "g" - ) - ) - var ah = aj.length - var an = [] - for (var ak = 0, am = 0; ak < ah; ++ak) { - var ag = aj[ak] - if (ag === "(") { - ++am - } else { - if ("\\" === ag.charAt(0)) { - var af = +ag.substring(1) - if (af && af <= am) { - an[af] = -1 - } - } - } - } - for (var ak = 1; ak < an.length; ++ak) { - if (-1 === an[ak]) { - an[ak] = ++ad - } - } - for (var ak = 0, am = 0; ak < ah; ++ak) { - var ag = aj[ak] - if (ag === "(") { - ++am - if (an[am] === undefined) { - aj[ak] = "(?:" - } - } else { - if ("\\" === ag.charAt(0)) { - var af = +ag.substring(1) - if (af && af <= am) { - aj[ak] = "\\" + an[am] - } - } - } - } - for (var ak = 0, am = 0; ak < ah; ++ak) { - if ("^" === aj[ak] && "^" !== aj[ak + 1]) { - aj[ak] = "" - } - } - if (al.ignoreCase && S) { - for (var ak = 0; ak < ah; ++ak) { - var ag = aj[ak] - var ai = ag.charAt(0) - if (ag.length >= 2 && ai === "[") { - aj[ak] = X(ag) - } else { - if (ai !== "\\") { - aj[ak] = ag.replace(/[a-zA-Z]/g, function (ao) { - var ap = ao.charCodeAt(0) - return "[" + String.fromCharCode(ap & ~32, ap | 32) + "]" - }) - } - } - } - } - return aj.join("") - } - var aa = [] - for (var V = 0, U = Z.length; V < U; ++V) { - var ae = Z[V] - if (ae.global || ae.multiline) { - throw new Error("" + ae) - } - aa.push("(?:" + W(ae) + ")") - } - return new RegExp(aa.join("|"), ac ? "gi" : "g") - } - function a(V) { - var U = /(?:^|\s)nocode(?:\s|$)/ - var X = [] - var T = 0 - var Z = [] - var W = 0 - var S - if (V.currentStyle) { - S = V.currentStyle.whiteSpace - } else { - if (window.getComputedStyle) { - S = document.defaultView.getComputedStyle(V, null).getPropertyValue("white-space") - } - } - var Y = S && "pre" === S.substring(0, 3) - function aa(ab) { - switch (ab.nodeType) { - case 1: - if (U.test(ab.className)) { - return - } - for (var ae = ab.firstChild; ae; ae = ae.nextSibling) { - aa(ae) - } - var ad = ab.nodeName - if ("BR" === ad || "LI" === ad) { - X[W] = "\n" - Z[W << 1] = T++ - Z[(W++ << 1) | 1] = ab - } - break - case 3: - case 4: - var ac = ab.nodeValue - if (ac.length) { - if (!Y) { - ac = ac.replace(/[ \t\r\n]+/g, " ") - } else { - ac = ac.replace(/\r\n?/g, "\n") - } - X[W] = ac - Z[W << 1] = T - T += ac.length - Z[(W++ << 1) | 1] = ab - } - break - } - } - aa(V) - return { sourceCode: X.join("").replace(/\n$/, ""), spans: Z } - } - function B(S, U, W, T) { - if (!U) { - return - } - var V = { sourceCode: U, basePos: S } - W(V) - T.push.apply(T, V.decorations) - } - var v = /\S/ - function o(S) { - var V = undefined - for (var U = S.firstChild; U; U = U.nextSibling) { - var T = U.nodeType - V = T === 1 ? (V ? S : U) : T === 3 ? (v.test(U.nodeValue) ? S : V) : V - } - return V === S ? undefined : V - } - function g(U, T) { - var S = {} - var V - ;(function () { - var ad = U.concat(T) - var ah = [] - var ag = {} - for (var ab = 0, Z = ad.length; ab < Z; ++ab) { - var Y = ad[ab] - var ac = Y[3] - if (ac) { - for (var ae = ac.length; --ae >= 0; ) { - S[ac.charAt(ae)] = Y - } - } - var af = Y[1] - var aa = "" + af - if (!ag.hasOwnProperty(aa)) { - ah.push(af) - ag[aa] = null - } - } - ah.push(/[\0-\uffff]/) - V = k(ah) - })() - var X = T.length - var W = function (ah) { - var Z = ah.sourceCode, - Y = ah.basePos - var ad = [Y, F] - var af = 0 - var an = Z.match(V) || [] - var aj = {} - for (var ae = 0, aq = an.length; ae < aq; ++ae) { - var ag = an[ae] - var ap = aj[ag] - var ai = void 0 - var am - if (typeof ap === "string") { - am = false - } else { - var aa = S[ag.charAt(0)] - if (aa) { - ai = ag.match(aa[1]) - ap = aa[0] - } else { - for (var ao = 0; ao < X; ++ao) { - aa = T[ao] - ai = ag.match(aa[1]) - if (ai) { - ap = aa[0] - break - } - } - if (!ai) { - ap = F - } - } - am = ap.length >= 5 && "lang-" === ap.substring(0, 5) - if (am && !(ai && typeof ai[1] === "string")) { - am = false - ap = J - } - if (!am) { - aj[ag] = ap - } - } - var ab = af - af += ag.length - if (!am) { - ad.push(Y + ab, ap) - } else { - var al = ai[1] - var ak = ag.indexOf(al) - var ac = ak + al.length - if (ai[2]) { - ac = ag.length - ai[2].length - ak = ac - al.length - } - var ar = ap.substring(5) - B(Y + ab, ag.substring(0, ak), W, ad) - B(Y + ab + ak, al, q(ar, al), ad) - B(Y + ab + ac, ag.substring(ac), W, ad) - } - } - ah.decorations = ad - } - return W - } - function i(T) { - var W = [], - S = [] - if (T.tripleQuotedStrings) { - W.push([ - C, - /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/, - null, - "'\"", - ]) - } else { - if (T.multiLineStrings) { - W.push([ - C, - /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/, - null, - "'\"`", - ]) - } else { - W.push([C, /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/, null, "\"'"]) - } - } - if (T.verbatimStrings) { - S.push([C, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]) - } - var Y = T.hashComments - if (Y) { - if (T.cStyleComments) { - if (Y > 1) { - W.push([j, /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, "#"]) - } else { - W.push([ - j, - /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/, - null, - "#", - ]) - } - S.push([C, /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/, null]) - } else { - W.push([j, /^#[^\r\n]*/, null, "#"]) - } - } - if (T.cStyleComments) { - S.push([j, /^\/\/[^\r\n]*/, null]) - S.push([j, /^\/\*[\s\S]*?(?:\*\/|$)/, null]) - } - if (T.regexLiterals) { - var X = "/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/" - S.push(["lang-regex", new RegExp("^" + M + "(" + X + ")")]) - } - var V = T.types - if (V) { - S.push([O, V]) - } - var U = ("" + T.keywords).replace(/^ | $/g, "") - if (U.length) { - S.push([z, new RegExp("^(?:" + U.replace(/[\s,]+/g, "|") + ")\\b"), null]) - } - W.push([F, /^\s+/, null, " \r\n\t\xA0"]) - S.push( - [G, /^@[a-z_$][a-z_$@0-9]*/i, null], - [O, /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/, null], - [F, /^[a-z_$][a-z_$@0-9]*/i, null], - [ - G, - new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*", "i"), - null, - "0123456789", - ], - [F, /^\\[\s\S]?/, null], - [L, /^.[^\s\w\.$@\'\"\`\/\#\\]*/, null] - ) - return g(W, S) - } - var K = i({ keywords: A, hashComments: true, cStyleComments: true, multiLineStrings: true, regexLiterals: true }) - function Q(V, ag) { - var U = /(?:^|\s)nocode(?:\s|$)/ - var ab = /\r\n?|\n/ - var ac = V.ownerDocument - var S - if (V.currentStyle) { - S = V.currentStyle.whiteSpace - } else { - if (window.getComputedStyle) { - S = ac.defaultView.getComputedStyle(V, null).getPropertyValue("white-space") - } - } - var Z = S && "pre" === S.substring(0, 3) - var af = ac.createElement("LI") - while (V.firstChild) { - af.appendChild(V.firstChild) - } - var W = [af] - function ae(al) { - switch (al.nodeType) { - case 1: - if (U.test(al.className)) { - break - } - if ("BR" === al.nodeName) { - ad(al) - if (al.parentNode) { - al.parentNode.removeChild(al) - } - } else { - for (var an = al.firstChild; an; an = an.nextSibling) { - ae(an) - } - } - break - case 3: - case 4: - if (Z) { - var am = al.nodeValue - var aj = am.match(ab) - if (aj) { - var ai = am.substring(0, aj.index) - al.nodeValue = ai - var ah = am.substring(aj.index + aj[0].length) - if (ah) { - var ak = al.parentNode - ak.insertBefore(ac.createTextNode(ah), al.nextSibling) - } - ad(al) - if (!ai) { - al.parentNode.removeChild(al) - } - } - } - break - } - } - function ad(ak) { - while (!ak.nextSibling) { - ak = ak.parentNode - if (!ak) { - return - } - } - function ai(al, ar) { - var aq = ar ? al.cloneNode(false) : al - var ao = al.parentNode - if (ao) { - var ap = ai(ao, 1) - var an = al.nextSibling - ap.appendChild(aq) - for (var am = an; am; am = an) { - an = am.nextSibling - ap.appendChild(am) - } - } - return aq - } - var ah = ai(ak.nextSibling, 0) - for (var aj; (aj = ah.parentNode) && aj.nodeType === 1; ) { - ah = aj - } - W.push(ah) - } - for (var Y = 0; Y < W.length; ++Y) { - ae(W[Y]) - } - if (ag === (ag | 0)) { - W[0].setAttribute("value", ag) - } - var aa = ac.createElement("OL") - aa.className = "linenums" - var X = Math.max(0, (ag - 1) | 0) || 0 - for (var Y = 0, T = W.length; Y < T; ++Y) { - af = W[Y] - af.className = "L" + ((Y + X) % 10) - if (!af.firstChild) { - af.appendChild(ac.createTextNode("\xA0")) - } - aa.appendChild(af) - } - V.appendChild(aa) - } - function D(ac) { - var aj = /\bMSIE\b/.test(navigator.userAgent) - var am = /\n/g - var al = ac.sourceCode - var an = al.length - var V = 0 - var aa = ac.spans - var T = aa.length - var ah = 0 - var X = ac.decorations - var Y = X.length - var Z = 0 - X[Y] = an - var ar, aq - for (aq = ar = 0; aq < Y; ) { - if (X[aq] !== X[aq + 2]) { - X[ar++] = X[aq++] - X[ar++] = X[aq++] - } else { - aq += 2 - } - } - Y = ar - for (aq = ar = 0; aq < Y; ) { - var at = X[aq] - var ab = X[aq + 1] - var W = aq + 2 - while (W + 2 <= Y && X[W + 1] === ab) { - W += 2 - } - X[ar++] = at - X[ar++] = ab - aq = W - } - Y = X.length = ar - var ae = null - while (ah < T) { - var af = aa[ah] - var S = aa[ah + 2] || an - var ag = X[Z] - var ap = X[Z + 2] || an - var W = Math.min(S, ap) - var ak = aa[ah + 1] - var U - if (ak.nodeType !== 1 && (U = al.substring(V, W))) { - if (aj) { - U = U.replace(am, "\r") - } - ak.nodeValue = U - var ai = ak.ownerDocument - var ao = ai.createElement("SPAN") - ao.className = X[Z + 1] - var ad = ak.parentNode - ad.replaceChild(ao, ak) - ao.appendChild(ak) - if (V < S) { - aa[ah + 1] = ak = ai.createTextNode(al.substring(W, S)) - ad.insertBefore(ak, ao.nextSibling) - } - } - V = W - if (V >= S) { - ah += 2 - } - if (V >= ap) { - Z += 2 - } - } - } - var t = {} - function c(U, V) { - for (var S = V.length; --S >= 0; ) { - var T = V[S] - if (!t.hasOwnProperty(T)) { - t[T] = U - } else { - if (window.console) { - console.warn("cannot override language handler %s", T) - } - } - } - } - function q(T, S) { - if (!(T && t.hasOwnProperty(T))) { - T = /^\s*]*(?:>|$)/], - [j, /^<\!--[\s\S]*?(?:-\->|$)/], - ["lang-", /^<\?([\s\S]+?)(?:\?>|$)/], - ["lang-", /^<%([\s\S]+?)(?:%>|$)/], - [L, /^(?:<[%?]|[%?]>)/], - ["lang-", /^]*>([\s\S]+?)<\/xmp\b[^>]*>/i], - ["lang-js", /^]*>([\s\S]*?)(<\/script\b[^>]*>)/i], - ["lang-css", /^]*>([\s\S]*?)(<\/style\b[^>]*>)/i], - ["lang-in.tag", /^(<\/?[a-z][^<>]*>)/i], - ] - ), - ["default-markup", "htm", "html", "mxml", "xhtml", "xml", "xsl"] - ) - c( - g( - [ - [F, /^[\s]+/, null, " \t\r\n"], - [n, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, "\"'"], - ], - [ - [m, /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i], - [P, /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i], - ["lang-uq.val", /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/], - [L, /^[=<>\/]+/], - ["lang-js", /^on\w+\s*=\s*\"([^\"]+)\"/i], - ["lang-js", /^on\w+\s*=\s*\'([^\']+)\'/i], - ["lang-js", /^on\w+\s*=\s*([^\"\'>\s]+)/i], - ["lang-css", /^style\s*=\s*\"([^\"]+)\"/i], - ["lang-css", /^style\s*=\s*\'([^\']+)\'/i], - ["lang-css", /^style\s*=\s*([^\"\'>\s]+)/i], - ] - ), - ["in.tag"] - ) - c(g([], [[n, /^[\s\S]+/]]), ["uq.val"]) - c(i({ keywords: l, hashComments: true, cStyleComments: true, types: e }), ["c", "cc", "cpp", "cxx", "cyc", "m"]) - c(i({ keywords: "null,true,false" }), ["json"]) - c(i({ keywords: R, hashComments: true, cStyleComments: true, verbatimStrings: true, types: e }), ["cs"]) - c(i({ keywords: x, cStyleComments: true }), ["java"]) - c(i({ keywords: H, hashComments: true, multiLineStrings: true }), ["bsh", "csh", "sh"]) - c(i({ keywords: I, hashComments: true, multiLineStrings: true, tripleQuotedStrings: true }), ["cv", "py"]) - c(i({ keywords: s, hashComments: true, multiLineStrings: true, regexLiterals: true }), ["perl", "pl", "pm"]) - c(i({ keywords: f, hashComments: true, multiLineStrings: true, regexLiterals: true }), ["rb"]) - c(i({ keywords: w, cStyleComments: true, regexLiterals: true }), ["js"]) - c( - i({ - keywords: r, - hashComments: 3, - cStyleComments: true, - multilineStrings: true, - tripleQuotedStrings: true, - regexLiterals: true, - }), - ["coffee"] - ) - c(g([], [[C, /^[\s\S]+/]]), ["regex"]) - function d(V) { - var U = V.langExtension - try { - var S = a(V.sourceNode) - var T = S.sourceCode - V.sourceCode = T - V.spans = S.spans - V.basePos = 0 - q(U, T)(V) - D(V) - } catch (W) { - if ("console" in window) { - console.log(W && W.stack ? W.stack : W) - } - } - } - function y(W, V, U) { - var S = document.createElement("PRE") - S.innerHTML = W - if (U) { - Q(S, U) - } - var T = { langExtension: V, numberLines: U, sourceNode: S } - d(T) - return S.innerHTML - } - function b(ad) { - function Y(af) { - return document.getElementsByTagName(af) - } - var ac = [Y("pre"), Y("code"), Y("xmp")] - var T = [] - for (var aa = 0; aa < ac.length; ++aa) { - for (var Z = 0, V = ac[aa].length; Z < V; ++Z) { - T.push(ac[aa][Z]) - } - } - ac = null - var W = Date - if (!W.now) { - W = { - now: function () { - return +new Date() - }, - } - } - var X = 0 - var S - var ab = /\blang(?:uage)?-([\w.]+)(?!\S)/ - var ae = /\bprettyprint\b/ - function U() { - var ag = window.PR_SHOULD_USE_CONTINUATION ? W.now() + 250 : Infinity - for (; X < T.length && W.now() < ag; X++) { - var aj = T[X] - var ai = aj.className - if (ai.indexOf("prettyprint") >= 0) { - var ah = ai.match(ab) - var am - if (!ah && (am = o(aj)) && "CODE" === am.tagName) { - ah = am.className.match(ab) - } - if (ah) { - ah = ah[1] - } - var al = false - for (var ak = aj.parentNode; ak; ak = ak.parentNode) { - if ( - (ak.tagName === "pre" || ak.tagName === "code" || ak.tagName === "xmp") && - ak.className && - ak.className.indexOf("prettyprint") >= 0 - ) { - al = true - break - } - } - if (!al) { - var af = aj.className.match(/\blinenums\b(?::(\d+))?/) - af = af ? (af[1] && af[1].length ? +af[1] : true) : false - if (af) { - Q(aj, af) - } - S = { langExtension: ah, sourceNode: aj, numberLines: af } - d(S) - } - } - } - if (X < T.length) { - setTimeout(U, 250) - } else { - if (ad) { - ad() - } - } - } - U() - } - window.prettyPrintOne = y - window.prettyPrint = b - window.PR = { - createSimpleLexer: g, - registerLangHandler: c, - sourceDecorator: i, - PR_ATTRIB_NAME: P, - PR_ATTRIB_VALUE: n, - PR_COMMENT: j, - PR_DECLARATION: E, - PR_KEYWORD: z, - PR_LITERAL: G, - PR_NOCODE: N, - PR_PLAIN: F, - PR_PUNCTUATION: L, - PR_SOURCE: J, - PR_STRING: C, - PR_TAG: m, - PR_TYPE: O, - } -})() -PR.registerLangHandler( - PR.createSimpleLexer( - [], - [ - [PR.PR_DECLARATION, /^]*(?:>|$)/], - [PR.PR_COMMENT, /^<\!--[\s\S]*?(?:-\->|$)/], - [PR.PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/], - ["lang-", /^<\?([\s\S]+?)(?:\?>|$)/], - ["lang-", /^<%([\s\S]+?)(?:%>|$)/], - ["lang-", /^]*>([\s\S]+?)<\/xmp\b[^>]*>/i], - [ - "lang-handlebars", - /^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i, - ], - ["lang-js", /^]*>([\s\S]*?)(<\/script\b[^>]*>)/i], - ["lang-css", /^]*>([\s\S]*?)(<\/style\b[^>]*>)/i], - ["lang-in.tag", /^(<\/?[a-z][^<>]*>)/i], - [PR.PR_DECLARATION, /^{{[#^>/]?\s*[\w.][^}]*}}/], - [PR.PR_DECLARATION, /^{{&?\s*[\w.][^}]*}}/], - [PR.PR_DECLARATION, /^{{{>?\s*[\w.][^}]*}}}/], - [PR.PR_COMMENT, /^{{![^}]*}}/], - ] - ), - ["handlebars", "hbs"] -) -PR.registerLangHandler( - PR.createSimpleLexer( - [[PR.PR_PLAIN, /^[ \t\r\n\f]+/, null, " \t\r\n\f"]], - [ - [PR.PR_STRING, /^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/, null], - [PR.PR_STRING, /^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/, null], - ["lang-css-str", /^url\(([^\)\"\']*)\)/i], - [PR.PR_KEYWORD, /^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i, null], - ["lang-css-kw", /^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i], - [PR.PR_COMMENT, /^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//], - [PR.PR_COMMENT, /^(?:)/], - [PR.PR_LITERAL, /^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i], - [PR.PR_LITERAL, /^#(?:[0-9a-f]{3}){1,2}/i], - [PR.PR_PLAIN, /^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i], - [PR.PR_PUNCTUATION, /^[^\s\w\'\"]+/], - ] - ), - ["css"] -) -PR.registerLangHandler( - PR.createSimpleLexer([], [[PR.PR_KEYWORD, /^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]), - ["css-kw"] -) -PR.registerLangHandler(PR.createSimpleLexer([], [[PR.PR_STRING, /^[^\)\"\']+/]]), ["css-str"]) diff --git a/coverage/lcov-report/sort-arrow-sprite.png b/coverage/lcov-report/sort-arrow-sprite.png deleted file mode 100644 index 6ed6831..0000000 Binary files a/coverage/lcov-report/sort-arrow-sprite.png and /dev/null differ diff --git a/coverage/lcov-report/sorter.js b/coverage/lcov-report/sorter.js deleted file mode 100644 index fdf7d02..0000000 --- a/coverage/lcov-report/sorter.js +++ /dev/null @@ -1,189 +0,0 @@ -/* eslint-disable */ -var addSorting = (function () { - "use strict" - var cols, - currentSort = { - index: 0, - desc: false, - } - - // returns the summary table element - function getTable() { - return document.querySelector(".coverage-summary") - } - // returns the thead element of the summary table - function getTableHeader() { - return getTable().querySelector("thead tr") - } - // returns the tbody element of the summary table - function getTableBody() { - return getTable().querySelector("tbody") - } - // returns the th element for nth column - function getNthColumn(n) { - return getTableHeader().querySelectorAll("th")[n] - } - - function onFilterInput() { - const searchValue = document.getElementById("fileSearch").value - const rows = document.getElementsByTagName("tbody")[0].children - for (let i = 0; i < rows.length; i++) { - const row = rows[i] - if (row.textContent.toLowerCase().includes(searchValue.toLowerCase())) { - row.style.display = "" - } else { - row.style.display = "none" - } - } - } - - // loads the search box - function addSearchBox() { - var template = document.getElementById("filterTemplate") - var templateClone = template.content.cloneNode(true) - templateClone.getElementById("fileSearch").oninput = onFilterInput - template.parentElement.appendChild(templateClone) - } - - // loads all columns - function loadColumns() { - var colNodes = getTableHeader().querySelectorAll("th"), - colNode, - cols = [], - col, - i - - for (i = 0; i < colNodes.length; i += 1) { - colNode = colNodes[i] - col = { - key: colNode.getAttribute("data-col"), - sortable: !colNode.getAttribute("data-nosort"), - type: colNode.getAttribute("data-type") || "string", - } - cols.push(col) - if (col.sortable) { - col.defaultDescSort = col.type === "number" - colNode.innerHTML = colNode.innerHTML + '' - } - } - return cols - } - // attaches a data attribute to every tr element with an object - // of data values keyed by column name - function loadRowData(tableRow) { - var tableCols = tableRow.querySelectorAll("td"), - colNode, - col, - data = {}, - i, - val - for (i = 0; i < tableCols.length; i += 1) { - colNode = tableCols[i] - col = cols[i] - val = colNode.getAttribute("data-value") - if (col.type === "number") { - val = Number(val) - } - data[col.key] = val - } - return data - } - // loads all row data - function loadData() { - var rows = getTableBody().querySelectorAll("tr"), - i - - for (i = 0; i < rows.length; i += 1) { - rows[i].data = loadRowData(rows[i]) - } - } - // sorts the table using the data for the ith column - function sortByIndex(index, desc) { - var key = cols[index].key, - sorter = function (a, b) { - a = a.data[key] - b = b.data[key] - return a < b ? -1 : a > b ? 1 : 0 - }, - finalSorter = sorter, - tableBody = document.querySelector(".coverage-summary tbody"), - rowNodes = tableBody.querySelectorAll("tr"), - rows = [], - i - - if (desc) { - finalSorter = function (a, b) { - return -1 * sorter(a, b) - } - } - - for (i = 0; i < rowNodes.length; i += 1) { - rows.push(rowNodes[i]) - tableBody.removeChild(rowNodes[i]) - } - - rows.sort(finalSorter) - - for (i = 0; i < rows.length; i += 1) { - tableBody.appendChild(rows[i]) - } - } - // removes sort indicators for current column being sorted - function removeSortIndicators() { - var col = getNthColumn(currentSort.index), - cls = col.className - - cls = cls.replace(/ sorted$/, "").replace(/ sorted-desc$/, "") - col.className = cls - } - // adds sort indicators for current column being sorted - function addSortIndicators() { - getNthColumn(currentSort.index).className += currentSort.desc ? " sorted-desc" : " sorted" - } - // adds event listeners for all sorter widgets - function enableUI() { - var i, - el, - ithSorter = function ithSorter(i) { - var col = cols[i] - - return function () { - var desc = col.defaultDescSort - - if (currentSort.index === i) { - desc = !currentSort.desc - } - sortByIndex(i, desc) - removeSortIndicators() - currentSort.index = i - currentSort.desc = desc - addSortIndicators() - } - } - for (i = 0; i < cols.length; i += 1) { - if (cols[i].sortable) { - // add the click event handler on the th so users - // dont have to click on those tiny arrows - el = getNthColumn(i).querySelector(".sorter").parentElement - if (el.addEventListener) { - el.addEventListener("click", ithSorter(i)) - } else { - el.attachEvent("onclick", ithSorter(i)) - } - } - } - } - // adds sorting functionality to the UI - return function () { - if (!getTable()) { - return - } - cols = loadColumns() - loadData() - addSearchBox() - addSortIndicators() - enableUI() - } -})() - -window.addEventListener("load", addSorting) diff --git a/coverage/lcov-report/src/component.js.html b/coverage/lcov-report/src/component.js.html deleted file mode 100644 index 104c46d..0000000 --- a/coverage/lcov-report/src/component.js.html +++ /dev/null @@ -1,742 +0,0 @@ - - - - - - Code coverage report for src/component.js - - - - - - - - - -
-
-

All files / src component.js

-
- -
- 60.86% - Statements - 42/69 -
- - -
- 55% - Branches - 11/20 -
- - -
- 59.09% - Functions - 13/22 -
- - -
- 63.07% - Lines - 41/65 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -21x -  -21x -  -21x -  -  -21x -21x -21x -  -21x -21x -  -  -21x -  -21x -  -  -  -  -  -2x -18x -  -  -  -1x -  -21x -6x -  -  -21x -16x -16x -12x -1x -  -11x -  -10x -10x -  -5x -  -  -  -  -3x -  -  -  -  -  -  -  -3x -  -  -  -2x -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -23x -23x -  -23x -  -  -  -1x -  -22x -21x -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -18x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -21x -  -  -10x -  -  -  -  -  -  -  -  -  -  -  -  -1x - 
// /**
-//  * This component supports three ways to pass the source JSON:
-//  * 1. via the "json" attribute,
-//  *    <json-viewer json='{"name": "test"}'></json-viewer>
-//  * 2. via the "json" property,
-//  *    const jsonViewer = document.createElement("json-viewer");
-//  *    jsonViewer.json = {name: "test"}
-//  * 3. via content,
-//  *    <json-viewer>{"name": "test"}</json-viewer>
-//  **/
- 
-//#########################################NEW
-import styles from "./styles.css"
-import { themeStyles } from "./themes"
-import { isUrl } from "./data-helpers"
-import {
-  validateBoolean,
-  validateBooleanOrPositiveNumber,
-  validatePositiveNumber,
-  validateStringOrJson,
-  validateString,
-} from "./validator"
-import Renderer from "./renderer/container"
- 
-const DEFAULT_PARAMS = {
-  indent: 2,
-  expanded: 1,
-  theme: "default-light",
-  showDataTypes: true,
-  showToolbar: false,
-  expandIconType: "arrow",
-  showCopy: true,
-  showSize: true,
-  data: null,
-}
- 
-class JsonViewer extends HTMLElement {
-  #themeStylesContainer
-  #options
-  #contentData
-  #renderer
- 
-  constructor() {
-    super()
- 
-    this.#options = { ...DEFAULT_PARAMS }
- 
-    this.#themeStylesContainer = document.createElement("style")
- 
-    // Attach a shadow DOM to encapsulate the component
-    const shadowRoot = this.attachShadow({ mode: "open" })
-    const basicStyles = document.createElement("style")
-    basicStyles.textContent = `${styles}`
- 
-    shadowRoot.appendChild(basicStyles)
-    shadowRoot.appendChild(this.#themeStylesContainer)
- 
-    // set default theme
-    this.theme = this.#options.theme
-    // initialize renderer
-    this.#renderer = new Renderer(shadowRoot, this.#options)
-  }
- 
-  // component attributes
-  static get observedAttributes() {
-    // convert camelCase to kebab-case
-    return Object.keys(DEFAULT_PARAMS).map((k) =>
-      k.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase()
-    )
-  }
- 
-  static allowedAttributes = ["id"].concat(JsonViewer.observedAttributes)
- 
-  #warn = (...args) => {
-    console.warn(`JsonViewer${this.id ? ` (${this.id})` : ""}:`, ...args)
-  }
- 
-  #validateAndUpdate = (propName, value, validatorFunc, allowedValues) => {
-    try {
-      value = validatorFunc(value)
-      if (allowedValues && !allowedValues.includes(value)) {
-        throw new Error(`should be one of ${allowedValues.join(", ")}`)
-      }
-      if (this.#options[propName] === value) return
- 
-      this.#options[propName] = value
-      this.#render()
-    } catch (e) {
-      this.#warn(`Attribute ${propName}: ${e.message}`)
-    }
-  }
- 
-  set showDataTypes(value) {
-    this.#validateAndUpdate("showDataTypes", value, validateBoolean)
-  }
- 
-  set showToolbar(value) {
-    this.#validateAndUpdate("showToolbar", value, validateBoolean)
-  }
- 
-  set indent(newIndent) {
-    this.#validateAndUpdate("indent", newIndent, validatePositiveNumber)
-  }
- 
-  set expandIconType(name) {
-    this.#validateAndUpdate("expandIconType", name, validateString, [
-      "arrow",
-      "square",
-      "circle",
-    ])
-  }
- 
-  set expanded(newExpanded) {
-    this.#validateAndUpdate(
-      "expanded",
-      newExpanded,
-      validateBooleanOrPositiveNumber
-    )
-  }
- 
-  set showSize(newShowSize) {
-    this.#validateAndUpdate("showSize", newShowSize, validateBoolean)
-  }
- 
-  set showCopy(showCopy) {
-    this.#validateAndUpdate("showCopy", showCopy, validateBoolean)
-  }
- 
-  // validate and set theme
-  // theme can be a string or an object
-  // validationg theme is more complex than other attributes
-  set theme(newTheme) {
-    try {
-      newTheme = validateStringOrJson(newTheme)
-      // do nothing if the theme is the same or theme container is empty
-      if (
-        this.#options.theme === newTheme &&
-        this.#themeStylesContainer.textContent !== ""
-      )
-        return
- 
-      this.#themeStylesContainer.textContent = themeStyles(newTheme)
-      this.#options.theme = newTheme
-    } catch (e) {
-      this.#warn(`Attribute theme: ${e.message}`)
-    }
-  }
- 
-  // validate and set data
-  // data can be a string or an object
-  // validating data is more complex than other attributes
-  set data(newData) {
-    try {
-      newData = validateStringOrJson(newData)
-      // build a string from the value to compare with the current data
-      const newDataString = JSON.stringify(newData)
-      // do nothing if the data is the same
-      if (this.#options.data === newDataString) return
-      this.#options.data = newDataString
- 
-      if (isUrl(newData)) {
-        fetch(newData)
-          .then((r) => r.json())
-          .then((data) => {
-            this.#contentData = data
-            this.#render()
-          })
-      } else {
-        this.#contentData = newData
-        this.#render()
-      }
-    } catch (e) {
-      this.#warn(`Attribute data: ${e.message}`)
-    }
-  }
- 
-  get options() {
-    return this.#options
-  }
- 
-  connectedCallback() {
-    window.addEventListener("DOMContentLoaded", () => {
-      const data = this.textContent
-      this.textContent = ""
-      if (data) this.data = data
-    })
-  }
- 
-  attributeChangedCallback(name, oldValue, newValue) {
-    // console.log("=====Changed=====")
-    // console.log(name, oldValue, newValue)
-    // filter out not allowed attributes
-    if (JsonViewer.allowedAttributes.indexOf(name) > -1) {
-      // convert kebab-case to camelCase
-      const propName = name.replace(/-([a-z])/g, (g) => g[1].toUpperCase())
-      this[propName] = newValue
-    } else {
-      this.#warn(`Attribute ${name} is not supported and will be ignored!`)
-      this.removeAttribute(name)
-    }
-  }
- 
-  #render = () => {
-    // console.log("====================RENDER");
- 
-    this.#renderer.update({
-      data: this.#contentData,
-      expanded: this.#options.expanded,
-      expandIconType: this.#options.expandIconType,
-      indent: this.#options.indent,
-      showDataTypes: this.#options.showDataTypes,
-      showToolbar: this.#options.showToolbar,
-      showSize: this.#options.showSize,
-      showCopy: this.#options.showCopy,
-    })
-  }
-}
- 
-customElements.define("json-viewer", JsonViewer)
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/data-helpers.js.html b/coverage/lcov-report/src/data-helpers.js.html deleted file mode 100644 index 1ad1914..0000000 --- a/coverage/lcov-report/src/data-helpers.js.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - Code coverage report for src/data-helpers.js - - - - - - - - - -
-
-

All files / src data-helpers.js

-
- -
- 89.74% - Statements - 35/39 -
- - -
- 86.66% - Branches - 26/30 -
- - -
- 100% - Functions - 5/5 -
- - -
- 90.9% - Lines - 30/33 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70  -4x -11x -  -11x -  -  -9x -  -  -  -  -4x -79x -77x -76x -  -76x -76x -4x -3x -2x -  -72x -  -71x -  -  -71x -  -  -  -4x -  -9x -  -  -  -  -  -  -  -  -  -  -  -  -9x -45x -5x -40x -3x -15x -  -15x -  -  -15x -  -37x -4x -  -  -33x -  -  -  -9x -  - 
// This function checks if a string is a valid URL.
-export const isUrl = (string) => {
-  try {
-    // Attempt to create a URL object from the input string
-    return Boolean(new URL(string)) // Return true if successful
-  } catch (e) {
-    // If an error occurs (invalid URL), return false
-    return false
-  }
-}
- 
-// This function determines the type of data.
-export const dataType = (data) => {
-  if (Array.isArray(data)) return "array" // Check if data is an array
-  if (data === null) return "null" // Check if data is null
-  Iif (data instanceof RegExp) return "regexp" // Check if data is a regular expression
- 
-  const type = typeof data // Get the JavaScript type of data
-  if (type === "number") {
-    if (isNaN(data)) return "NaN" // Check if data is NaN
-    if (!isFinite(data)) return "Infinity" // Check if data is Infinity
-    return Number.isInteger(data) ? "int" : "float" // Check if data is integer or float
-  }
-  if (type === "boolean") return "bool" // Check if data is a boolean
- 
-  Iif (type === "object" && data instanceof Date) {
-    return "date"
-  }
-  return type // Return the type of data as a string (e.g., "string", "object")
-}
- 
-// This function parses a JSON string with custom handling for "NaN" and "undefined" strings.
-export const parseJson = (jsonString) => {
-  // Replace ": NaN" and ": undefined" with ": "NaN"" and ": "undefined"" for valid JSON syntax
-  const fixedJsonString = jsonString
-    // replace new lines
-    .replace(/\n/gi, " ")
-    // replace all NaN values with "NaN"
-    .replace(/:\s*NaN/gi, ': "NaN"')
-    // replace all undefined values with "undefined"
-    .replace(/:\s*undefined/gi, ': "undefined"')
-    // replace all NaN in arrays with "NaN"
-    .replace(/\[(.*)NaN(.*)\]/gi, '[$1"NaN"$2]')
-    // replace undefined in arrays with "undefined"
-    .replace(/\[(.*)undefined(.*)\]/gi, '[$1"undefined"$2]')
- 
-  // Define a custom reviver function for JSON parsing
-  const customReviver = (key, value) => {
-    if (value === "NaN") {
-      return NaN // Convert "NaN" to the actual NaN value
-    } else if (Array.isArray(value)) {
-      return value.map((v) => {
-        Iif (v === "NaN") {
-          return NaN // Convert "NaN" to the actual NaN value
-        } else Iif (v === "undefined") {
-          return undefined // Convert "undefined" to the undefined value
-        }
-        return v
-      })
-    } else if (value === "undefined") {
-      return undefined // Convert "undefined" to the undefined value
-    }
- 
-    return value
-  }
- 
-  // Parse the modified JSON string using the custom reviver function
-  return JSON.parse(fixedJsonString, customReviver)
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/index.html b/coverage/lcov-report/src/index.html deleted file mode 100644 index d7f1e67..0000000 --- a/coverage/lcov-report/src/index.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - Code coverage report for src - - - - - - - - - -
-
-

All files src

-
- -
- 80.98% - Statements - 132/163 -
- - -
- 84.44% - Branches - 76/90 -
- - -
- 74.28% - Functions - 26/35 -
- - -
- 80.98% - Lines - 115/142 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
component.js -
-
60.86%42/6955%11/2059.09%13/2263.07%41/65
data-helpers.js -
-
89.74%35/3986.66%26/30100%5/590.9%30/33
themes.js -
-
100%13/13100%4/4100%3/3100%13/13
validator.js -
-
100%42/4297.22%35/36100%5/5100%31/31
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/renderer/container.js.html b/coverage/lcov-report/src/renderer/container.js.html deleted file mode 100644 index 64b3b5c..0000000 --- a/coverage/lcov-report/src/renderer/container.js.html +++ /dev/null @@ -1,448 +0,0 @@ - - - - - - Code coverage report for src/renderer/container.js - - - - - - - - - -
-
-

All files / src/renderer container.js

-
- -
- 85.48% - Statements - 53/62 -
- - -
- 83.63% - Branches - 46/55 -
- - -
- 60% - Functions - 3/5 -
- - -
- 89.65% - Lines - 52/58 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122  -  -  -  -42x -42x -42x -42x -42x -  -42x -  -42x -  -  -  -  -  -  -  -  -  -  -81x -9x -  -9x -8x -  -8x -  -  -  -  -  -  -  -  -  -8x -8x -  -  -  -  -  -  -81x -25x -25x -3x -3x -  -  -  -2x -2x -2x -2x -2x -  -  -2x -  -  -  -  -  -3x -3x -  -22x -22x -  -  -  -81x -  -81x -26x -26x -  -  -81x -24x -24x -  -81x -2x -  -  -  -81x -28x -28x -  -  -81x -26x -26x -  -  -81x -28x -28x -  -  -81x -  -  -  -24x -24x -24x -  -  -  -42x -  -  -  - 
import DataRow from "./data-row"
-import Toolbar from "./toolbar"
- 
-function Container(root, options = {}) {
-  const containerElem = document.createElement("div")
-  containerElem.className = "container"
-  root.appendChild(containerElem)
-  let dataRow = null
-  let toolbar = null
- 
-  const cache = {}
- 
-  this.update = ({
-    data,
-    expanded,
-    indent,
-    expandIconType,
-    showDataTypes,
-    showToolbar,
-    showSize,
-    showCopy,
-  }) => {
-    // DATA
-    if (data) {
-      const newDataCompareString = JSON.stringify(data)
-      // if data has not changed, do nothing
-      if (cache.dataComapreString !== newDataCompareString) {
-        cache.dataComapreString = newDataCompareString
- 
-        dataRow = new DataRow({
-          key: "",
-          value: data,
-          expanded,
-          indent,
-          onToggleExpand: (level) => {
-            if (toolbar) toolbar.expanded = level
-            cache.expanded = level
-          },
-        })
-        containerElem.replaceChildren(dataRow.element)
-        Iif (cache.showToolbar && toolbar) {
-          containerElem.prepend(toolbar.element)
-          toolbar.maxExpandLevel = dataRow.maxLevel
-          toolbar.refresh()
-        }
-      }
-    }
-    if (showToolbar !== undefined && cache.showToolbar !== showToolbar) {
-      cache.showToolbar = showToolbar
-      if (showToolbar) {
-        Eif (!toolbar)
-          toolbar = new Toolbar({
-            expanded: cache.expanded,
-            indent: cache.indent,
-            onChange: ({ expanded, indent, showDetails }) => {
-              const options = { expanded, indent }
-              Eif (showDetails !== undefined) {
-                options.showCopy = showDetails
-                options.showSize = showDetails
-                options.showDataTypes = showDetails
-              }
- 
-              this.update(options)
-            },
-            onSearch: (searchTerm) => {
-              if (dataRow) dataRow.update({ searchTerm })
-            },
-          })
-        Iif (dataRow) toolbar.maxExpandLevel = dataRow.maxLevel
-        containerElem.prepend(toolbar.element)
-      } else {
-        const element = containerElem.querySelector(".toolbar")
-        if (element) element.remove()
-      }
-    }
- 
-    const propsToBeUpdated = {}
-    // EXPANDED
-    if (expanded !== undefined && cache.expanded !== expanded) {
-      cache.expanded = expanded
-      propsToBeUpdated.expanded = expanded
-    }
-    // INDENT
-    if (indent !== undefined && cache.indent !== indent) {
-      cache.indent = indent
-      propsToBeUpdated.indent = indent
-    }
-    if (Object.keys(propsToBeUpdated).length > 0 && dataRow) {
-      dataRow.update(propsToBeUpdated)
-    }
- 
-    // SHOW COPY
-    if (showCopy !== undefined && cache.showCopy !== showCopy) {
-      cache.showCopy = showCopy
-      containerElem.classList.toggle("show-copy", showCopy)
-    }
-    // SHOW SIZE
-    if (showSize !== undefined && cache.showSize !== showSize) {
-      cache.showSize = showSize
-      containerElem.classList.toggle("show-size", showSize)
-    }
-    // SHOW DATA TYPES
-    if (showDataTypes !== undefined && cache.showDataTypes !== showDataTypes) {
-      cache.showDataTypes = showDataTypes
-      containerElem.classList.toggle("show-data-types", showDataTypes)
-    }
-    // EXPAND ICON TYPE
-    if (
-      expandIconType !== undefined &&
-      cache.expandIconType !== expandIconType
-    ) {
-      containerElem.classList.add(`expand-icon-${expandIconType}`)
-      containerElem.classList.remove(`expand-icon-${cache.expandIconType}`)
-      cache.expandIconType = expandIconType
-    }
-  }
- 
-  this.update(options)
-}
- 
-export default Container
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/renderer/data-row.js.html b/coverage/lcov-report/src/renderer/data-row.js.html deleted file mode 100644 index 3bb2f7c..0000000 --- a/coverage/lcov-report/src/renderer/data-row.js.html +++ /dev/null @@ -1,754 +0,0 @@ - - - - - - Code coverage report for src/renderer/data-row.js - - - - - - - - - -
-
-

All files / src/renderer data-row.js

-
- -
- 92.68% - Statements - 114/123 -
- - -
- 91.35% - Branches - 74/81 -
- - -
- 54.54% - Functions - 6/11 -
- - -
- 94.78% - Lines - 109/115 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224  -  -3x -  -  -  -  -  -  -  -  -68x -68x -  -68x -68x -68x -  -  -  -68x -68x -68x -68x -  -68x -68x -68x -  -68x -  -  -  -  -  -  -  -  -  -  -  -68x -33x -33x -33x -  -  -33x -33x -33x -33x -  -33x -  -  -  -68x -  -59x -59x -59x -  -  -59x -59x -59x -  -  -59x -59x -59x -59x -  -  -68x -  -33x -33x -33x -33x -  -  -33x -33x -33x -33x -33x -  -  -33x -33x -33x -33x -  -  -33x -  -33x -33x -33x -33x -  -  -33x -  -  -33x -33x -36x -  -  -  -  -  -  -  -36x -36x -36x -  -  -  -33x -33x -33x -  -33x -  -  -35x -35x -28x -28x -28x -  -  -35x -35x -35x -35x -35x -35x -35x -  -  -  -68x -68x -68x -68x -  -  -  -68x -68x -68x -68x -  -  -68x -6x -6x -  -6x -  -  -6x -  -  -  -6x -1x -  -  -  -  -  -  -  -6x -3x -  -3x -  -  -3x -  -  -  -3x -1x -  -  -  -  -  -  -  -  -  -  -68x -10x -1x -  -  -10x -2x -2x -2x -  -10x -6x -  -  -10x -5x -  -  -68x -  -  -  - 
import { dataType } from "../data-helpers"
- 
-const DataRow = function ({
-  key,
-  value,
-  expanded,
-  indent,
-  searchTerm,
-  onToggleExpand,
-  level = 0,
-}) {
-  const row = document.createElement("div")
-  this.maxLevel = level
- 
-  const thisDataType = dataType(value)
-  const hasChildren = thisDataType === "array" || thisDataType === "object"
-  let isExpanded = expanded === true || expanded > level
-  let expandIcon, childrenRows, keyEl, valueEl
- 
-  // ROW CONTAINER
-  row.className = `data-row ${isExpanded ? "expanded" : ""}`
-  row.dataset.key = key
-  row.dataset.level = level
-  if (level > 0) row.style.paddingLeft = `${indent * 5}px`
- 
-  const keyValueWrapper = document.createElement("span")
-  keyValueWrapper.className = "key-value-wrapper"
-  row.appendChild(keyValueWrapper)
- 
-  const toggleExpand = () => {
-    row.classList.toggle("expanded")
-    if (onToggleExpand) {
-      if (row.classList.contains("expanded")) {
-        onToggleExpand(level + 1)
-      } else {
-        onToggleExpand(level)
-      }
-    }
-  }
- 
-  // EXPAND ICON
-  if (hasChildren) {
-    const expandIconWrapper = document.createElement("span")
-    expandIconWrapper.className = "icon-wrapper"
-    keyValueWrapper.appendChild(expandIconWrapper)
- 
-    // create the icon (i tag) using the DOM API
-    expandIcon = document.createElement("span")
-    expandIcon.className = `expand icon clickable`
-    expandIcon.setAttribute("title", isExpanded ? "Collapse" : "Expand")
-    expandIconWrapper.appendChild(expandIcon)
- 
-    expandIcon.addEventListener("click", () => toggleExpand())
-  }
- 
-  // KEY VALUE WRAPPER
-  if (key !== null && key !== "") {
-    // KEY
-    const keyDataType = typeof key
-    keyEl = document.createElement("span")
-    keyEl.className = `key clickable ${
-      keyDataType === "number" ? "number" : ""
-    }`
-    keyEl.textContent = keyDataType === "number" ? key : `"${key}"`
-    keyEl.addEventListener("click", () => toggleExpand())
-    keyValueWrapper.appendChild(keyEl)
- 
-    // COLON
-    const colonEl = document.createElement("span")
-    colonEl.classList.add("colon")
-    colonEl.textContent = ":"
-    keyValueWrapper.appendChild(colonEl)
-  }
- 
-  if (hasChildren) {
-    // OPENING PARENTHESIS
-    const openingParenthesis = document.createElement("span")
-    openingParenthesis.className = "opening-parenthesis"
-    openingParenthesis.textContent = thisDataType === "array" ? "[" : "{"
-    keyValueWrapper.appendChild(openingParenthesis)
- 
-    // ELLIPSIS
-    const ellipsis = document.createElement("span")
-    ellipsis.className = "ellipsis clickable"
-    ellipsis.textContent = "..."
-    ellipsis.addEventListener("click", () => toggleExpand())
-    keyValueWrapper.appendChild(ellipsis)
- 
-    // CLOSING PARENTHESIS
-    const closingParenthesis = document.createElement("span")
-    closingParenthesis.className = "closing-parenthesis"
-    closingParenthesis.textContent = thisDataType === "array" ? "]" : "}"
-    keyValueWrapper.appendChild(closingParenthesis)
- 
-    // ITEMS SIZE
-    const itemsSize = document.createElement("span")
-    const length =
-      thisDataType === "array" ? value.length : Object.keys(value).length
-    itemsSize.className = "items-size"
-    itemsSize.textContent = `${length} item${length === 1 ? "" : "s"}`
-    keyValueWrapper.appendChild(itemsSize)
- 
-    // CHILDREN ROWS
-    childrenRows = []
- 
-    const items =
-      thisDataType === "array" ? value.map((v, i) => i) : Object.keys(value)
-    items.forEach((key) => {
-      const subRow = new DataRow({
-        key,
-        value: value[key],
-        expanded,
-        indent,
-        onToggleExpand,
-        level: level + 1,
-      })
-      childrenRows.push(subRow)
-      row.appendChild(subRow.element)
-      this.maxLevel = Math.max(this.maxLevel, subRow.maxLevel)
-    })
- 
-    // EXPANDED CLOSING PARENTHESIS
-    const expandedClosingParenthesis = document.createElement("span")
-    expandedClosingParenthesis.className = "closing-parenthesis"
-    expandedClosingParenthesis.textContent =
-      thisDataType === "array" ? "]" : "}"
-    row.appendChild(expandedClosingParenthesis)
-  } else {
-    // VALUE
-    let valueType = null
-    if (!["nan", "NaN", "undefined", "null"].includes(thisDataType)) {
-      valueType = document.createElement("span")
-      valueType.className = `type`
-      valueType.textContent = thisDataType.toLowerCase()
-    }
- 
-    const valueWrapper = document.createElement("span")
-    valueWrapper.className = `value ${thisDataType.toLowerCase()}`
-    valueEl = document.createElement("span")
-    valueEl.textContent = thisDataType === "string" ? `"${value}"` : value
-    if (valueType) valueWrapper.appendChild(valueType)
-    valueWrapper.appendChild(valueEl)
-    keyValueWrapper.appendChild(valueWrapper)
-  }
- 
-  // COPY ICON
-  const copyIcon = document.createElement("span")
-  copyIcon.className = "copy icon"
-  copyIcon.setAttribute("title", "Copy to clipboard")
-  copyIcon.addEventListener("click", () => {
-    navigator.clipboard.writeText(JSON.stringify(value, null, indent))
-  })
- 
-  const copyIconWrapper = document.createElement("span")
-  copyIconWrapper.className = "icon-wrapper"
-  copyIconWrapper.appendChild(copyIcon)
-  keyValueWrapper.appendChild(copyIconWrapper)
- 
-  // this function highlights the search term
-  const search = (searchTerm) => {
-    Eif (keyEl) {
-      const keyString = keyEl.textContent
-      // remove any existing matches
-      keyEl.innerHTML = keyString
- 
-      const keyIndex =
-        searchTerm === null || searchTerm === undefined || searchTerm === ""
-          ? -1
-          : keyString.indexOf(searchTerm)
- 
-      if (keyIndex > -1) {
-        keyEl.innerHTML =
-          keyString.slice(0, keyIndex) +
-          `<span class="match">${keyString.slice(
-            keyIndex,
-            keyIndex + searchTerm.length
-          )}</span>${keyString.slice(keyIndex + searchTerm.length)}`
-      }
-    }
-    if (valueEl) {
-      const valueString = valueEl.textContent
-      // remove any existing matches
-      valueEl.innerHTML = valueString
- 
-      const valueIndex =
-        searchTerm === null || searchTerm === undefined || searchTerm === ""
-          ? -1
-          : valueString.indexOf(searchTerm)
- 
-      if (valueIndex > -1) {
-        valueEl.innerHTML =
-          valueString.slice(0, valueIndex) +
-          `<span class="match">${valueString.slice(
-            valueIndex,
-            valueIndex + searchTerm.length
-          )}</span>${valueString.slice(valueIndex + searchTerm.length)}`
-      }
-    }
-  }
- 
-  // this function updates the icon based on the expanded state
-  this.update = ({ expanded, indent, searchTerm }) => {
-    if (indent !== undefined && level > 0) {
-      row.style.paddingLeft = `${indent * 5}px`
-    }
- 
-    if (expanded !== undefined) {
-      isExpanded = expanded === true || expanded > level
-      row.classList.toggle("expanded", isExpanded)
-      if (expandIcon) expandIcon.title = isExpanded ? "Collapse" : "Expand"
-    }
-    if (searchTerm !== undefined && searchTerm !== null) {
-      search(searchTerm)
-    }
- 
-    if (childrenRows)
-      childrenRows.forEach((r) => r.update({ expanded, indent, searchTerm }))
-  }
- 
-  this.element = row
-}
- 
-export default DataRow
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/renderer/index.html b/coverage/lcov-report/src/renderer/index.html deleted file mode 100644 index e9c21a4..0000000 --- a/coverage/lcov-report/src/renderer/index.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - Code coverage report for src/renderer - - - - - - - - - -
-
-

All files src/renderer

-
- -
- 93.04% - Statements - 254/273 -
- - -
- 86.18% - Branches - 131/152 -
- - -
- 72% - Functions - 18/25 -
- - -
- 95.31% - Lines - 244/256 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
container.js -
-
85.48%53/6283.63%46/5560%3/589.65%52/58
data-row.js -
-
92.68%114/12391.35%74/8154.54%6/1194.78%109/115
toolbar.js -
-
98.86%87/8868.75%11/16100%9/9100%83/83
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/renderer/toolbar.js.html b/coverage/lcov-report/src/renderer/toolbar.js.html deleted file mode 100644 index e1886c6..0000000 --- a/coverage/lcov-report/src/renderer/toolbar.js.html +++ /dev/null @@ -1,460 +0,0 @@ - - - - - - Code coverage report for src/renderer/toolbar.js - - - - - - - - - -
-
-

All files / src/renderer toolbar.js

-
- -
- 98.86% - Statements - 87/88 -
- - -
- 68.75% - Branches - 11/16 -
- - -
- 100% - Functions - 9/9 -
- - -
- 100% - Lines - 83/83 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -1263x -  -  -  -  -  -  -18x -18x -18x -18x -  -  -  -18x -18x -  -  -18x -18x -18x -  -  -18x -18x -18x -  -  -18x -18x -18x -18x -18x -18x -18x -  -  -18x -18x -18x -18x -18x -18x -18x -1x -1x -  -  -  -18x -18x -18x -  -18x -18x -18x -18x -1x -1x -1x -  -  -  -18x -18x -18x -18x -18x -18x -1x -1x -  -18x -  -  -18x -18x -18x -18x -18x -18x -1x -1x -  -18x -  -  -18x -18x -18x -18x -18x -18x -3x -3x -3x -  -  -  -18x -  -  -18x -18x -18x -18x -18x -18x -18x -1x -  -18x -  -18x -1x -1x -1x -1x -1x -  -  -18x -  -  -  - 
const Toolbar = function ({
-  expanded,
-  indent,
-  onChange,
-  onSearch,
-  showDetails,
-}) {
-  this.indent = indent || 2
-  this.expanded = typeof expanded === "number" ? expanded : 2
-  this.showDetails = showDetails || true
-  this.maxExpandLevel = 0
- 
-  let searchInput
- 
-  const toolbar = document.createElement("div")
-  toolbar.className = "toolbar"
- 
-  // OPTIONS
-  const options = document.createElement("div")
-  options.className = "options"
-  toolbar.appendChild(options)
- 
-  // SEARCH WRAPPER
-  const searchWrapper = document.createElement("div")
-  searchWrapper.className = "search-wrapper"
-  toolbar.appendChild(searchWrapper)
- 
-  // REFRESH ICON
-  const refreshIconWrapper = document.createElement("div")
-  refreshIconWrapper.className = "icon-wrapper clickable"
-  options.appendChild(refreshIconWrapper)
-  const refreshIcon = document.createElement("span")
-  refreshIcon.className = "icon refresh"
-  refreshIconWrapper.onclick = () => this.refresh()
-  refreshIconWrapper.appendChild(refreshIcon)
- 
-  // EXPAND ICON
-  const expandIconWrapper = document.createElement("div")
-  expandIconWrapper.className = "icon-wrapper clickable"
-  options.appendChild(expandIconWrapper)
-  const expandIcon = document.createElement("span")
-  expandIcon.className = "icon plus"
-  expandIconWrapper.appendChild(expandIcon)
-  expandIconWrapper.onclick = () => {
-    Eif (this.expanded < this.maxExpandLevel) this.expanded += 1
-    onChange({ expanded: this.expanded })
-  }
- 
-  // COLLAPSE ICON
-  const collapseIconWrapper = document.createElement("div")
-  collapseIconWrapper.className = "icon-wrapper clickable"
-  options.appendChild(collapseIconWrapper)
- 
-  const collapseIcon = document.createElement("span")
-  collapseIcon.className = "icon minus"
-  collapseIconWrapper.appendChild(collapseIcon)
-  collapseIconWrapper.onclick = () => {
-    Iif (this.expanded > this.maxExpandLevel) this.expanded = this.maxExpandLevel
-    Eif (this.expanded > 0) this.expanded -= 1
-    onChange({ expanded: this.expanded })
-  }
- 
-  // INDENT ICON
-  const indentIconWrapper = document.createElement("div")
-  indentIconWrapper.className = "icon-wrapper clickable"
-  options.appendChild(indentIconWrapper)
-  const indentIcon = document.createElement("span")
-  indentIcon.className = "icon indent"
-  indentIconWrapper.onclick = () => {
-    this.indent += 1
-    onChange({ indent: this.indent })
-  }
-  indentIconWrapper.appendChild(indentIcon)
- 
-  // OUTDENT ICON
-  const outdentIconWrapper = document.createElement("div")
-  outdentIconWrapper.className = "icon-wrapper clickable"
-  options.appendChild(outdentIconWrapper)
-  const outdentIcon = document.createElement("span")
-  outdentIcon.className = "icon outdent"
-  outdentIconWrapper.onclick = () => {
-    this.indent -= 1
-    onChange({ indent: this.indent })
-  }
-  outdentIconWrapper.appendChild(outdentIcon)
- 
-  // INFO ICON
-  const infoIconWrapper = document.createElement("div")
-  infoIconWrapper.className = "icon-wrapper clickable"
-  options.appendChild(infoIconWrapper)
-  const infoIcon = document.createElement("span")
-  infoIcon.className = `icon info ${this.showDetails ? "active" : ""}`
-  infoIconWrapper.onclick = () => {
-    infoIcon.classList.toggle("active")
-    this.showDetails = !this.showDetails
-    onChange({
-      showDetails: this.showDetails,
-    })
-  }
-  infoIconWrapper.appendChild(infoIcon)
- 
-  // SEARCH INPUT
-  const searchIcon = document.createElement("span")
-  searchIcon.className = "icon search"
-  searchWrapper.appendChild(searchIcon)
-  searchInput = document.createElement("input")
-  searchInput.className = "search-input"
-  searchInput.placeholder = "Search"
-  searchInput.oninput = (e) => {
-    onSearch(e.target.value)
-  }
-  searchWrapper.appendChild(searchInput)
- 
-  this.refresh = () => {
-    this.expanded = 1
-    this.indent = 2
-    Eif (searchInput) searchInput.value = ""
-    onChange({ indent: 2, expanded: 1 })
-    onSearch("")
-  }
- 
-  this.element = toolbar
-}
- 
-export default Toolbar
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/themes.js.html b/coverage/lcov-report/src/themes.js.html deleted file mode 100644 index 2f02fe3..0000000 --- a/coverage/lcov-report/src/themes.js.html +++ /dev/null @@ -1,4429 +0,0 @@ - - - - - - Code coverage report for src/themes.js - - - - - - - - - -
-
-

All files / src themes.js

-
- -
- 100% - Statements - 13/13 -
- - -
- 100% - Branches - 4/4 -
- - -
- 100% - Functions - 3/3 -
- - -
- 100% - Lines - 13/13 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495 -496 -497 -498 -499 -500 -501 -502 -503 -504 -505 -506 -507 -508 -509 -510 -511 -512 -513 -514 -515 -516 -517 -518 -519 -520 -521 -522 -523 -524 -525 -526 -527 -528 -529 -530 -531 -532 -533 -534 -535 -536 -537 -538 -539 -540 -541 -542 -543 -544 -545 -546 -547 -548 -549 -550 -551 -552 -553 -554 -555 -556 -557 -558 -559 -560 -561 -562 -563 -564 -565 -566 -567 -568 -569 -570 -571 -572 -573 -574 -575 -576 -577 -578 -579 -580 -581 -582 -583 -584 -585 -586 -587 -588 -589 -590 -591 -592 -593 -594 -595 -596 -597 -598 -599 -600 -601 -602 -603 -604 -605 -606 -607 -608 -609 -610 -611 -612 -613 -614 -615 -616 -617 -618 -619 -620 -621 -622 -623 -624 -625 -626 -627 -628 -629 -630 -631 -632 -633 -634 -635 -636 -637 -638 -639 -640 -641 -642 -643 -644 -645 -646 -647 -648 -649 -650 -651 -652 -653 -654 -655 -656 -657 -658 -659 -660 -661 -662 -663 -664 -665 -666 -667 -668 -669 -670 -671 -672 -673 -674 -675 -676 -677 -678 -679 -680 -681 -682 -683 -684 -685 -686 -687 -688 -689 -690 -691 -692 -693 -694 -695 -696 -697 -698 -699 -700 -701 -702 -703 -704 -705 -706 -707 -708 -709 -710 -711 -712 -713 -714 -715 -716 -717 -718 -719 -720 -721 -722 -723 -724 -725 -726 -727 -728 -729 -730 -731 -732 -733 -734 -735 -736 -737 -738 -739 -740 -741 -742 -743 -744 -745 -746 -747 -748 -749 -750 -751 -752 -753 -754 -755 -756 -757 -758 -759 -760 -761 -762 -763 -764 -765 -766 -767 -768 -769 -770 -771 -772 -773 -774 -775 -776 -777 -778 -779 -780 -781 -782 -783 -784 -785 -786 -787 -788 -789 -790 -791 -792 -793 -794 -795 -796 -797 -798 -799 -800 -801 -802 -803 -804 -805 -806 -807 -808 -809 -810 -811 -812 -813 -814 -815 -816 -817 -818 -819 -820 -821 -822 -823 -824 -825 -826 -827 -828 -829 -830 -831 -832 -833 -834 -835 -836 -837 -838 -839 -840 -841 -842 -843 -844 -845 -846 -847 -848 -849 -850 -851 -852 -853 -854 -855 -856 -857 -858 -859 -860 -861 -862 -863 -864 -865 -866 -867 -868 -869 -870 -871 -872 -873 -874 -875 -876 -877 -878 -879 -880 -881 -882 -883 -884 -885 -886 -887 -888 -889 -890 -891 -892 -893 -894 -895 -896 -897 -898 -899 -900 -901 -902 -903 -904 -905 -906 -907 -908 -909 -910 -911 -912 -913 -914 -915 -916 -917 -918 -919 -920 -921 -922 -923 -924 -925 -926 -927 -928 -929 -930 -931 -932 -933 -934 -935 -936 -937 -938 -939 -940 -941 -942 -943 -944 -945 -946 -947 -948 -949 -950 -951 -952 -953 -954 -955 -956 -957 -958 -959 -960 -961 -962 -963 -964 -965 -966 -967 -968 -969 -970 -971 -972 -973 -974 -975 -976 -977 -978 -979 -980 -981 -982 -983 -984 -985 -986 -987 -988 -989 -990 -991 -992 -993 -994 -995 -996 -997 -998 -999 -1000 -1001 -1002 -1003 -1004 -1005 -1006 -1007 -1008 -1009 -1010 -1011 -1012 -1013 -1014 -1015 -1016 -1017 -1018 -1019 -1020 -1021 -1022 -1023 -1024 -1025 -1026 -1027 -1028 -1029 -1030 -1031 -1032 -1033 -1034 -1035 -1036 -1037 -1038 -1039 -1040 -1041 -1042 -1043 -1044 -1045 -1046 -1047 -1048 -1049 -1050 -1051 -1052 -1053 -1054 -1055 -1056 -1057 -1058 -1059 -1060 -1061 -1062 -1063 -1064 -1065 -1066 -1067 -1068 -1069 -1070 -1071 -1072 -1073 -1074 -1075 -1076 -1077 -1078 -1079 -1080 -1081 -1082 -1083 -1084 -1085 -1086 -1087 -1088 -1089 -1090 -1091 -1092 -1093 -1094 -1095 -1096 -1097 -1098 -1099 -1100 -1101 -1102 -1103 -1104 -1105 -1106 -1107 -1108 -1109 -1110 -1111 -1112 -1113 -1114 -1115 -1116 -1117 -1118 -1119 -1120 -1121 -1122 -1123 -1124 -1125 -1126 -1127 -1128 -1129 -1130 -1131 -1132 -1133 -1134 -1135 -1136 -1137 -1138 -1139 -1140 -1141 -1142 -1143 -1144 -1145 -1146 -1147 -1148 -1149 -1150 -1151 -1152 -1153 -1154 -1155 -1156 -1157 -1158 -1159 -1160 -1161 -1162 -1163 -1164 -1165 -1166 -1167 -1168 -1169 -1170 -1171 -1172 -1173 -1174 -1175 -1176 -1177 -1178 -1179 -1180 -1181 -1182 -1183 -1184 -1185 -1186 -1187 -1188 -1189 -1190 -1191 -1192 -1193 -1194 -1195 -1196 -1197 -1198 -1199 -1200 -1201 -1202 -1203 -1204 -1205 -1206 -1207 -1208 -1209 -1210 -1211 -1212 -1213 -1214 -1215 -1216 -1217 -1218 -1219 -1220 -1221 -1222 -1223 -1224 -1225 -1226 -1227 -1228 -1229 -1230 -1231 -1232 -1233 -1234 -1235 -1236 -1237 -1238 -1239 -1240 -1241 -1242 -1243 -1244 -1245 -1246 -1247 -1248 -1249 -1250 -1251 -1252 -1253 -1254 -1255 -1256 -1257 -1258 -1259 -1260 -1261 -1262 -1263 -1264 -1265 -1266 -1267 -1268 -1269 -1270 -1271 -1272 -1273 -1274 -1275 -1276 -1277 -1278 -1279 -1280 -1281 -1282 -1283 -1284 -1285 -1286 -1287 -1288 -1289 -1290 -1291 -1292 -1293 -1294 -1295 -1296 -1297 -1298 -1299 -1300 -1301 -1302 -1303 -1304 -1305 -1306 -1307 -1308 -1309 -1310 -1311 -1312 -1313 -1314 -1315 -1316 -1317 -1318 -1319 -1320 -1321 -1322 -1323 -1324 -1325 -1326 -1327 -1328 -1329 -1330 -1331 -1332 -1333 -1334 -1335 -1336 -1337 -1338 -1339 -1340 -1341 -1342 -1343 -1344 -1345 -1346 -1347 -1348 -1349 -1350 -1351 -1352 -1353 -1354 -1355 -1356 -1357 -1358 -1359 -1360 -1361 -1362 -1363 -1364 -1365 -1366 -1367 -1368 -1369 -1370 -1371 -1372 -1373 -1374 -1375 -1376 -1377 -1378 -1379 -1380 -1381 -1382 -1383 -1384 -1385 -1386 -1387 -1388 -1389 -1390 -1391 -1392 -1393 -1394 -1395 -1396 -1397 -1398 -1399 -1400 -1401 -1402 -1403 -1404 -1405 -1406 -1407 -1408 -1409 -1410 -1411 -1412 -1413 -1414 -1415 -1416 -1417 -1418 -1419 -1420 -1421 -1422 -1423 -1424 -1425 -1426 -1427 -1428 -1429 -1430 -1431 -1432 -1433 -1434 -1435 -1436 -1437 -1438 -1439 -1440 -1441 -1442 -1443 -1444 -1445 -1446 -1447 -1448 -1449  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -  -2x -  -26x -25x -1x -  -24x -384x -384x -384x -  -  -1x -  -  -25x -400x -  -  - 
/* 
-  --base00: Default Background 
-  --base01: Lighter Background (Used for status bars, line number and folding marks)
-  --base02: Selection Background
-  --base03: Comments, Invisibles, Line Highlighting 
-  --base04: Dark Foreground (Used for status bars) 
-  --base05: Default Foreground, Caret, Delimiters, Operators 
-  --base06: Light Foreground (Not often used) 
-  --base07: Light Background (Not often used) 
-  --base08: Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted 
-  --base09: Integers, Boolean, Constants, XML Attributes, Markup Link Url 
-  --base0A: Classes, Markup Bold, Search Text Background 
-  --base0B: Strings, Inherited Class, Markup Code, Diff Inserted 
-  --base0C: Support, Regular Expressions, Escape Characters, Markup Quotes 
-  --base0D: Functions, Methods, Attribute IDs, Headings 
-  --base0E: Keywords, Storage, Selector, Markup Italic, Diff Changed 
-  --base0F: Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?> 
-*/
- 
-/* source: https://github.com/gammons/base16-obsidian */
-const themes = {
-  apathy: [
-    "#031a16",
-    "#0b342d",
-    "#184e45",
-    "#2b685e",
-    "#5f9c92",
-    "#81b5ac",
-    "#a7cec8",
-    "#d2e7e4",
-    "#3e9688",
-    "#3e7996",
-    "#3e4c96",
-    "#883e96",
-    "#963e4c",
-    "#96883e",
-    "#4c963e",
-    "#3e965b",
-  ],
-  ashes: [
-    "#1c2023",
-    "#393f45",
-    "#565e65",
-    "#747c84",
-    "#adb3ba",
-    "#c7ccd1",
-    "#dfe2e5",
-    "#f3f4f5",
-    "#c7ae95",
-    "#c7c795",
-    "#aec795",
-    "#95c7ae",
-    "#95aec7",
-    "#ae95c7",
-    "#c795ae",
-    "#c79595",
-  ],
-  "atelier-dune-light": [
-    "#fefbec",
-    "#e8e4cf",
-    "#a6a28c",
-    "#999580",
-    "#7d7a68",
-    "#6e6b5e",
-    "#292824",
-    "#20201d",
-    "#d73737",
-    "#b65611",
-    "#ae9513",
-    "#60ac39",
-    "#1fad83",
-    "#6684e1",
-    "#b854d4",
-    "#d43552",
-  ],
-  "atelier-dune": [
-    "#20201d",
-    "#292824",
-    "#6e6b5e",
-    "#7d7a68",
-    "#999580",
-    "#a6a28c",
-    "#e8e4cf",
-    "#fefbec",
-    "#d73737",
-    "#b65611",
-    "#ae9513",
-    "#60ac39",
-    "#1fad83",
-    "#6684e1",
-    "#b854d4",
-    "#d43552",
-  ],
-  atlas: [
-    "#002635",
-    "#00384d",
-    "#517f8d",
-    "#6c8b91",
-    "#869696",
-    "#a1a19a",
-    "#e6e6dc",
-    "#fafaf8",
-    "#ff5a67",
-    "#f08e48",
-    "#ffcc1b",
-    "#7fc06e",
-    "#14747e",
-    "#5dd7b9",
-    "#9a70a4",
-    "#c43060",
-  ],
-  bespin: [
-    "#28211c",
-    "#36312e",
-    "#5e5d5c",
-    "#666666",
-    "#797977",
-    "#8a8986",
-    "#9d9b97",
-    "#baae9e",
-    "#cf6a4c",
-    "#cf7d34",
-    "#f9ee98",
-    "#54be0d",
-    "#afc4db",
-    "#5ea6ea",
-    "#9b859d",
-    "#937121",
-  ],
-  "black-metal": [
-    "#000000",
-    "#121212",
-    "#222222",
-    "#333333",
-    "#999999",
-    "#c1c1c1",
-    "#999999",
-    "#c1c1c1",
-    "#5f8787",
-    "#aaaaaa",
-    "#a06666",
-    "#dd9999",
-    "#aaaaaa",
-    "#888888",
-    "#999999",
-    "#444444",
-  ],
-  brewer: [
-    "#0c0d0e",
-    "#2e2f30",
-    "#515253",
-    "#737475",
-    "#959697",
-    "#b7b8b9",
-    "#dadbdc",
-    "#fcfdfe",
-    "#e31a1c",
-    "#e6550d",
-    "#dca060",
-    "#31a354",
-    "#80b1d3",
-    "#3182bd",
-    "#756bb1",
-    "#b15928",
-  ],
-  bright: [
-    "#000000",
-    "#303030",
-    "#505050",
-    "#b0b0b0",
-    "#d0d0d0",
-    "#e0e0e0",
-    "#f5f5f5",
-    "#ffffff",
-    "#fb0120",
-    "#fc6d24",
-    "#fda331",
-    "#a1c659",
-    "#76c7b7",
-    "#6fb3d2",
-    "#d381c3",
-    "#be643c",
-  ],
-  brogrammer: [
-    "#1f1f1f",
-    "#f81118",
-    "#2dc55e",
-    "#ecba0f",
-    "#2a84d2",
-    "#4e5ab7",
-    "#1081d6",
-    "#d6dbe5",
-    "#d6dbe5",
-    "#de352e",
-    "#1dd361",
-    "#f3bd09",
-    "#1081d6",
-    "#5350b9",
-    "#0f7ddb",
-    "#ffffff",
-  ],
-  "brushtrees-dark": [
-    "#485867",
-    "#5a6d7a",
-    "#6d828e",
-    "#8299a1",
-    "#98afb5",
-    "#b0c5c8",
-    "#c9dbdc",
-    "#e3efef",
-    "#b38686",
-    "#d8bba2",
-    "#aab386",
-    "#87b386",
-    "#86b3b3",
-    "#868cb3",
-    "#b386b2",
-    "#b39f9f",
-  ],
-  brushtrees: [
-    "#e3efef",
-    "#c9dbdc",
-    "#b0c5c8",
-    "#98afb5",
-    "#8299a1",
-    "#6d828e",
-    "#5a6d7a",
-    "#485867",
-    "#b38686",
-    "#d8bba2",
-    "#aab386",
-    "#87b386",
-    "#86b3b3",
-    "#868cb3",
-    "#b386b2",
-    "#b39f9f",
-  ],
-  chalk: [
-    "#151515",
-    "#202020",
-    "#303030",
-    "#505050",
-    "#b0b0b0",
-    "#d0d0d0",
-    "#e0e0e0",
-    "#f5f5f5",
-    "#fb9fb1",
-    "#eda987",
-    "#ddb26f",
-    "#acc267",
-    "#12cfc0",
-    "#6fc2ef",
-    "#e1a3ee",
-    "#deaf8f",
-  ],
-  circus: [
-    "#191919",
-    "#202020",
-    "#303030",
-    "#5f5a60",
-    "#505050",
-    "#a7a7a7",
-    "#808080",
-    "#ffffff",
-    "#dc657d",
-    "#4bb1a7",
-    "#c3ba63",
-    "#84b97c",
-    "#4bb1a7",
-    "#639ee4",
-    "#b888e2",
-    "#b888e2",
-  ],
-  "classic-dark": [
-    "#151515",
-    "#202020",
-    "#303030",
-    "#505050",
-    "#b0b0b0",
-    "#d0d0d0",
-    "#e0e0e0",
-    "#f5f5f5",
-    "#ac4142",
-    "#d28445",
-    "#f4bf75",
-    "#90a959",
-    "#75b5aa",
-    "#6a9fb5",
-    "#aa759f",
-    "#8f5536",
-  ],
-  "classic-light": [
-    "#f5f5f5",
-    "#e0e0e0",
-    "#d0d0d0",
-    "#b0b0b0",
-    "#505050",
-    "#303030",
-    "#202020",
-    "#151515",
-    "#ac4142",
-    "#d28445",
-    "#f4bf75",
-    "#90a959",
-    "#75b5aa",
-    "#6a9fb5",
-    "#aa759f",
-    "#8f5536",
-  ],
-  codeschool: [
-    "#232c31",
-    "#1c3657",
-    "#2a343a",
-    "#3f4944",
-    "#84898c",
-    "#9ea7a6",
-    "#a7cfa3",
-    "#b5d8f6",
-    "#2a5491",
-    "#43820d",
-    "#a03b1e",
-    "#237986",
-    "#b02f30",
-    "#484d79",
-    "#c59820",
-    "#c98344",
-  ],
-  cupcake: [
-    "#fbf1f2",
-    "#f2f1f4",
-    "#d8d5dd",
-    "#bfb9c6",
-    "#a59daf",
-    "#8b8198",
-    "#72677e",
-    "#585062",
-    "#d57e85",
-    "#ebb790",
-    "#dcb16c",
-    "#a3b367",
-    "#69a9a7",
-    "#7297b9",
-    "#bb99b4",
-    "#baa58c",
-  ],
-  cupertino: [
-    "#ffffff",
-    "#c0c0c0",
-    "#c0c0c0",
-    "#808080",
-    "#808080",
-    "#404040",
-    "#404040",
-    "#5e5e5e",
-    "#c41a15",
-    "#eb8500",
-    "#826b28",
-    "#007400",
-    "#318495",
-    "#0000ff",
-    "#a90d91",
-    "#826b28",
-  ],
-  darcula: [
-    "#2b2b2b",
-    "#323232",
-    "#323232",
-    "#606366",
-    "#a4a3a3",
-    "#a9b7c6",
-    "#ffc66d",
-    "#ffffff",
-    "#4eade5",
-    "#689757",
-    "#bbb529",
-    "#6a8759",
-    "#629755",
-    "#9876aa",
-    "#cc7832",
-    "#808080",
-  ],
-  darktooth: [
-    "#1d2021",
-    "#32302f",
-    "#504945",
-    "#665c54",
-    "#928374",
-    "#a89984",
-    "#d5c4a1",
-    "#fdf4c1",
-    "#fb543f",
-    "#fe8625",
-    "#fac03b",
-    "#95c085",
-    "#8ba59b",
-    "#0d6678",
-    "#8f4673",
-    "#a87322",
-  ],
-  "default-dark": [
-    "#181818",
-    "#282828",
-    "#383838",
-    "#585858",
-    "#b8b8b8",
-    "#d8d8d8",
-    "#e8e8e8",
-    "#f8f8f8",
-    "#ab4642",
-    "#dc9656",
-    "#f7ca88",
-    "#a1b56c",
-    "#86c1b9",
-    "#7cafc2",
-    "#ba8baf",
-    "#a16946",
-  ],
-  "default-light": [
-    "#ffffff",
-    "#e8e8e8",
-    "#d8d8d8",
-    "#b8b8b8",
-    "#585858",
-    "#383838",
-    "#282828",
-    "#181818",
-    "#ab4642",
-    "#dc9656",
-    "#ab4642",
-    "#a1b56c",
-    "#86c1b9",
-    "#7cafc2",
-    "#ba8baf",
-    "#a16946",
-  ],
-  dracula: [
-    "#282936",
-    "#3a3c4e",
-    "#4d4f68",
-    "#626483",
-    "#62d6e8",
-    "#e9e9f4",
-    "#f1f2f8",
-    "#f7f7fb",
-    "#ea51b2",
-    "#b45bcf",
-    "#00f769",
-    "#ebff87",
-    "#a1efe4",
-    "#62d6e8",
-    "#b45bcf",
-    "#00f769",
-  ],
-  eighties: [
-    "#2d2d2d",
-    "#393939",
-    "#515151",
-    "#747369",
-    "#a09f93",
-    "#d3d0c8",
-    "#e8e6df",
-    "#f2f0ec",
-    "#f2777a",
-    "#f99157",
-    "#ffcc66",
-    "#99cc99",
-    "#66cccc",
-    "#6699cc",
-    "#cc99cc",
-    "#d27b53",
-  ],
-  embers: [
-    "#16130f",
-    "#2c2620",
-    "#433b32",
-    "#5a5047",
-    "#8a8075",
-    "#a39a90",
-    "#beb6ae",
-    "#dbd6d1",
-    "#826d57",
-    "#828257",
-    "#6d8257",
-    "#57826d",
-    "#576d82",
-    "#6d5782",
-    "#82576d",
-    "#825757",
-  ],
-  flat: [
-    "#2c3e50",
-    "#34495e",
-    "#7f8c8d",
-    "#95a5a6",
-    "#bdc3c7",
-    "#e0e0e0",
-    "#f5f5f5",
-    "#ecf0f1",
-    "#e74c3c",
-    "#e67e22",
-    "#f1c40f",
-    "#2ecc71",
-    "#1abc9c",
-    "#3498db",
-    "#9b59b6",
-    "#be643c",
-  ],
-  "fruit-soda": [
-    "#f1ecf1",
-    "#e0dee0",
-    "#d8d5d5",
-    "#b5b4b6",
-    "#979598",
-    "#515151",
-    "#474545",
-    "#2d2c2c",
-    "#fe3e31",
-    "#fe6d08",
-    "#f7e203",
-    "#47f74c",
-    "#0f9cfd",
-    "#2931df",
-    "#611fce",
-    "#b16f40",
-  ],
-  github: [
-    "#ffffff",
-    "#f5f5f5",
-    "#c8c8fa",
-    "#969896",
-    "#e8e8e8",
-    "#333333",
-    "#ffffff",
-    "#ffffff",
-    "#ed6a43",
-    "#0086b3",
-    "#795da3",
-    "#183691",
-    "#183691",
-    "#795da3",
-    "#a71d5d",
-    "#333333",
-  ],
-  "google-dark": [
-    "#1d1f21",
-    "#282a2e",
-    "#373b41",
-    "#969896",
-    "#b4b7b4",
-    "#c5c8c6",
-    "#e0e0e0",
-    "#ffffff",
-    "#cc342b",
-    "#f96a38",
-    "#fba922",
-    "#198844",
-    "#3971ed",
-    "#3971ed",
-    "#a36ac7",
-    "#3971ed",
-  ],
-  "google-light": [
-    "#ffffff",
-    "#e0e0e0",
-    "#c5c8c6",
-    "#b4b7b4",
-    "#969896",
-    "#373b41",
-    "#282a2e",
-    "#1d1f21",
-    "#cc342b",
-    "#f96a38",
-    "#fba922",
-    "#198844",
-    "#3971ed",
-    "#3971ed",
-    "#a36ac7",
-    "#3971ed",
-  ],
-  "grayscale-dark": [
-    "#101010",
-    "#252525",
-    "#464646",
-    "#525252",
-    "#ababab",
-    "#b9b9b9",
-    "#e3e3e3",
-    "#f7f7f7",
-    "#7c7c7c",
-    "#999999",
-    "#a0a0a0",
-    "#8e8e8e",
-    "#868686",
-    "#686868",
-    "#747474",
-    "#5e5e5e",
-  ],
-  "grayscale-light": [
-    "#f7f7f7",
-    "#e3e3e3",
-    "#b9b9b9",
-    "#ababab",
-    "#525252",
-    "#464646",
-    "#252525",
-    "#101010",
-    "#7c7c7c",
-    "#999999",
-    "#a0a0a0",
-    "#8e8e8e",
-    "#868686",
-    "#686868",
-    "#747474",
-    "#5e5e5e",
-  ],
-  greenscreen: [
-    "#001100",
-    "#003300",
-    "#005500",
-    "#007700",
-    "#009900",
-    "#00bb00",
-    "#00dd00",
-    "#00ff00",
-    "#007700",
-    "#009900",
-    "#007700",
-    "#00bb00",
-    "#005500",
-    "#009900",
-    "#00bb00",
-    "#005500",
-  ],
-  "gruvbox-dark-hard": [
-    "#1d2021",
-    "#3c3836",
-    "#504945",
-    "#665c54",
-    "#bdae93",
-    "#d5c4a1",
-    "#ebdbb2",
-    "#fbf1c7",
-    "#fb4934",
-    "#fe8019",
-    "#fabd2f",
-    "#b8bb26",
-    "#8ec07c",
-    "#83a598",
-    "#d3869b",
-    "#d65d0e",
-  ],
-  "gruvbox-light-hard": [
-    "#f9f5d7",
-    "#ebdbb2",
-    "#d5c4a1",
-    "#bdae93",
-    "#665c54",
-    "#504945",
-    "#3c3836",
-    "#282828",
-    "#9d0006",
-    "#af3a03",
-    "#b57614",
-    "#79740e",
-    "#427b58",
-    "#076678",
-    "#8f3f71",
-    "#d65d0e",
-  ],
-  "harmonic-dark": [
-    "#0b1c2c",
-    "#223b54",
-    "#405c79",
-    "#627e99",
-    "#aabcce",
-    "#cbd6e2",
-    "#e5ebf1",
-    "#f7f9fb",
-    "#bf8b56",
-    "#bfbf56",
-    "#8bbf56",
-    "#56bf8b",
-    "#568bbf",
-    "#8b56bf",
-    "#bf568b",
-    "#bf5656",
-  ],
-  "harmonic-light": [
-    "#f7f9fb",
-    "#e5ebf1",
-    "#cbd6e2",
-    "#aabcce",
-    "#627e99",
-    "#405c79",
-    "#223b54",
-    "#0b1c2c",
-    "#bf8b56",
-    "#bfbf56",
-    "#8bbf56",
-    "#56bf8b",
-    "#568bbf",
-    "#8b56bf",
-    "#bf568b",
-    "#bf5656",
-  ],
-  "heetch-light": [
-    "#feffff",
-    "#392551",
-    "#7b6d8b",
-    "#9c92a8",
-    "#ddd6e5",
-    "#5a496e",
-    "#470546",
-    "#190134",
-    "#27d9d5",
-    "#bdb6c5",
-    "#5ba2b6",
-    "#f80059",
-    "#c33678",
-    "#47f9f5",
-    "#bd0152",
-    "#dedae2",
-  ],
-  heetch: [
-    "#190134",
-    "#392551",
-    "#5a496e",
-    "#7b6d8b",
-    "#9c92a8",
-    "#bdb6c5",
-    "#dedae2",
-    "#feffff",
-    "#27d9d5",
-    "#5ba2b6",
-    "#8f6c97",
-    "#c33678",
-    "#f80059",
-    "#bd0152",
-    "#82034c",
-    "#470546",
-  ],
-  helios: [
-    "#1d2021",
-    "#383c3e",
-    "#53585b",
-    "#6f7579",
-    "#cdcdcd",
-    "#d5d5d5",
-    "#dddddd",
-    "#e5e5e5",
-    "#d72638",
-    "#eb8413",
-    "#f19d1a",
-    "#88b92d",
-    "#1ba595",
-    "#1e8bac",
-    "#be4264",
-    "#c85e0d",
-  ],
-  hopscotch: [
-    "#322931",
-    "#433b42",
-    "#5c545b",
-    "#797379",
-    "#989498",
-    "#b9b5b8",
-    "#d5d3d5",
-    "#ffffff",
-    "#dd464c",
-    "#fd8b19",
-    "#fdcc59",
-    "#8fc13e",
-    "#149b93",
-    "#1290bf",
-    "#c85e7c",
-    "#b33508",
-  ],
-  "horizon-dark": [
-    "#1c1e26",
-    "#232530",
-    "#2e303e",
-    "#676a8d",
-    "#ced1d0",
-    "#cbced0",
-    "#dcdfe4",
-    "#e3e6ee",
-    "#e93c58",
-    "#e58d7d",
-    "#efb993",
-    "#efaf8e",
-    "#24a8b4",
-    "#df5273",
-    "#b072d1",
-    "#e4a382",
-  ],
-  "ia-dark": [
-    "#1a1a1a",
-    "#222222",
-    "#1d414d",
-    "#767676",
-    "#b8b8b8",
-    "#cccccc",
-    "#e8e8e8",
-    "#f8f8f8",
-    "#d88568",
-    "#d86868",
-    "#b99353",
-    "#83a471",
-    "#7c9cae",
-    "#8eccdd",
-    "#b98eb2",
-    "#8b6c37",
-  ],
-  "ia-light": [
-    "#f6f6f6",
-    "#dedede",
-    "#bde5f2",
-    "#898989",
-    "#767676",
-    "#181818",
-    "#e8e8e8",
-    "#f8f8f8",
-    "#9c5a02",
-    "#c43e18",
-    "#c48218",
-    "#38781c",
-    "#2d6bb1",
-    "#48bac2",
-    "#a94598",
-    "#8b6c37",
-  ],
-  icy: [
-    "#021012",
-    "#031619",
-    "#041f23",
-    "#052e34",
-    "#064048",
-    "#095b67",
-    "#0c7c8c",
-    "#109cb0",
-    "#16c1d9",
-    "#b3ebf2",
-    "#80deea",
-    "#4dd0e1",
-    "#26c6da",
-    "#00bcd4",
-    "#00acc1",
-    "#0097a7",
-  ],
-  isotope: [
-    "#000000",
-    "#404040",
-    "#606060",
-    "#808080",
-    "#c0c0c0",
-    "#d0d0d0",
-    "#e0e0e0",
-    "#ffffff",
-    "#ff0000",
-    "#ff9900",
-    "#ff0099",
-    "#33ff00",
-    "#00ffff",
-    "#0066ff",
-    "#cc00ff",
-    "#3300ff",
-  ],
-  macintosh: [
-    "#000000",
-    "#404040",
-    "#404040",
-    "#808080",
-    "#808080",
-    "#c0c0c0",
-    "#c0c0c0",
-    "#ffffff",
-    "#dd0907",
-    "#ff6403",
-    "#fbf305",
-    "#1fb714",
-    "#02abea",
-    "#0000d3",
-    "#4700a5",
-    "#90713a",
-  ],
-  marrakesh: [
-    "#201602",
-    "#302e00",
-    "#5f5b17",
-    "#6c6823",
-    "#86813b",
-    "#948e48",
-    "#ccc37a",
-    "#faf0a5",
-    "#c35359",
-    "#b36144",
-    "#a88339",
-    "#18974e",
-    "#75a738",
-    "#477ca1",
-    "#8868b3",
-    "#b3588e",
-  ],
-  materia: [
-    "#263238",
-    "#2c393f",
-    "#37474f",
-    "#707880",
-    "#c9ccd3",
-    "#cdd3de",
-    "#d5dbe5",
-    "#ffffff",
-    "#ec5f67",
-    "#ea9560",
-    "#ffcc00",
-    "#8bd649",
-    "#80cbc4",
-    "#89ddff",
-    "#82aaff",
-    "#ec5f67",
-  ],
-  "material-lighter": [
-    "#fafafa",
-    "#e7eaec",
-    "#cceae7",
-    "#ccd7da",
-    "#8796b0",
-    "#80cbc4",
-    "#80cbc4",
-    "#666666",
-    "#ff5370",
-    "#f76d47",
-    "#ffb62c",
-    "#91b859",
-    "#39adb5",
-    "#6182b8",
-    "#7c4dff",
-    "#e53935",
-  ],
-  material: [
-    "#263238",
-    "#2e3c43",
-    "#314549",
-    "#546e7a",
-    "#b2ccd6",
-    "#eeffff",
-    "#eeffff",
-    "#ffffff",
-    "#f07178",
-    "#f78c6c",
-    "#ffcb6b",
-    "#c3e88d",
-    "#89ddff",
-    "#82aaff",
-    "#c792ea",
-    "#ff5370",
-  ],
-  "mellow-purple": [
-    "#1e0528",
-    "#1a092d",
-    "#331354",
-    "#320f55",
-    "#873582",
-    "#ffeeff",
-    "#ffeeff",
-    "#f8c0ff",
-    "#00d9e9",
-    "#aa00a3",
-    "#955ae7",
-    "#05cb0d",
-    "#b900b1",
-    "#550068",
-    "#8991bb",
-    "#4d6fff",
-  ],
-  "mexico-light": [
-    "#f8f8f8",
-    "#e8e8e8",
-    "#d8d8d8",
-    "#b8b8b8",
-    "#585858",
-    "#383838",
-    "#282828",
-    "#181818",
-    "#ab4642",
-    "#dc9656",
-    "#f79a0e",
-    "#538947",
-    "#4b8093",
-    "#7cafc2",
-    "#96609e",
-    "#a16946",
-  ],
-  mocha: [
-    "#3b3228",
-    "#534636",
-    "#645240",
-    "#7e705a",
-    "#b8afad",
-    "#d0c8c6",
-    "#e9e1dd",
-    "#f5eeeb",
-    "#cb6077",
-    "#d28b71",
-    "#f4bc87",
-    "#beb55b",
-    "#7bbda4",
-    "#8ab3b5",
-    "#a89bb9",
-    "#bb9584",
-  ],
-  monokai: [
-    "#272822",
-    "#383830",
-    "#49483e",
-    "#75715e",
-    "#a59f85",
-    "#f8f8f2",
-    "#f5f4f1",
-    "#f9f8f5",
-    "#f92672",
-    "#fd971f",
-    "#f4bf75",
-    "#a6e22e",
-    "#a1efe4",
-    "#66d9ef",
-    "#ae81ff",
-    "#cc6633",
-  ],
-  nord: [
-    "#2e3440",
-    "#3b4252",
-    "#434c5e",
-    "#4c566a",
-    "#d8dee9",
-    "#e5e9f0",
-    "#eceff4",
-    "#8fbcbb",
-    "#88c0d0",
-    "#81a1c1",
-    "#5e81ac",
-    "#bf616a",
-    "#d08770",
-    "#ebcb8b",
-    "#a3be8c",
-    "#b48ead",
-  ],
-  ocean: [
-    "#2b303b",
-    "#343d46",
-    "#4f5b66",
-    "#65737e",
-    "#a7adba",
-    "#c0c5ce",
-    "#dfe1e8",
-    "#eff1f5",
-    "#bf616a",
-    "#d08770",
-    "#ebcb8b",
-    "#a3be8c",
-    "#96b5b4",
-    "#8fa1b3",
-    "#b48ead",
-    "#ab7967",
-  ],
-  "one-light": [
-    "#fafafa",
-    "#f0f0f1",
-    "#e5e5e6",
-    "#a0a1a7",
-    "#696c77",
-    "#383a42",
-    "#202227",
-    "#090a0b",
-    "#ca1243",
-    "#d75f00",
-    "#c18401",
-    "#50a14f",
-    "#0184bc",
-    "#4078f2",
-    "#a626a4",
-    "#986801",
-  ],
-  onedark: [
-    "#282c34",
-    "#353b45",
-    "#3e4451",
-    "#545862",
-    "#565c64",
-    "#abb2bf",
-    "#b6bdca",
-    "#c8ccd4",
-    "#e06c75",
-    "#d19a66",
-    "#e5c07b",
-    "#98c379",
-    "#56b6c2",
-    "#61afef",
-    "#c678dd",
-    "#be5046",
-  ],
-  "papercolor-dark": [
-    "#1c1c1c",
-    "#af005f",
-    "#5faf00",
-    "#d7af5f",
-    "#5fafd7",
-    "#808080",
-    "#d7875f",
-    "#d0d0d0",
-    "#585858",
-    "#5faf5f",
-    "#afd700",
-    "#af87d7",
-    "#ffaf00",
-    "#ff5faf",
-    "#00afaf",
-    "#5f8787",
-  ],
-  "papercolor-light": [
-    "#eeeeee",
-    "#af0000",
-    "#008700",
-    "#5f8700",
-    "#0087af",
-    "#878787",
-    "#005f87",
-    "#444444",
-    "#bcbcbc",
-    "#d70000",
-    "#d70087",
-    "#8700af",
-    "#d75f00",
-    "#d75f00",
-    "#005faf",
-    "#005f87",
-  ],
-  paraiso: [
-    "#2f1e2e",
-    "#41323f",
-    "#4f424c",
-    "#776e71",
-    "#8d8687",
-    "#a39e9b",
-    "#b9b6b0",
-    "#e7e9db",
-    "#ef6155",
-    "#f99b15",
-    "#fec418",
-    "#48b685",
-    "#5bc4bf",
-    "#06b6ef",
-    "#815ba4",
-    "#e96ba8",
-  ],
-  pico: [
-    "#000000",
-    "#1d2b53",
-    "#7e2553",
-    "#008751",
-    "#ab5236",
-    "#5f574f",
-    "#c2c3c7",
-    "#fff1e8",
-    "#ff004d",
-    "#ffa300",
-    "#fff024",
-    "#00e756",
-    "#29adff",
-    "#83769c",
-    "#ff77a8",
-    "#ffccaa",
-  ],
-  pop: [
-    "#000000",
-    "#202020",
-    "#303030",
-    "#505050",
-    "#b0b0b0",
-    "#d0d0d0",
-    "#e0e0e0",
-    "#ffffff",
-    "#eb008a",
-    "#f29333",
-    "#f8ca12",
-    "#37b349",
-    "#00aabb",
-    "#0e5a94",
-    "#b31e8d",
-    "#7a2d00",
-  ],
-  railscasts: [
-    "#2b2b2b",
-    "#272935",
-    "#3a4055",
-    "#5a647e",
-    "#d4cfc9",
-    "#e6e1dc",
-    "#f4f1ed",
-    "#f9f7f3",
-    "#da4939",
-    "#cc7833",
-    "#ffc66d",
-    "#a5c261",
-    "#519f50",
-    "#6d9cbe",
-    "#b6b3eb",
-    "#bc9458",
-  ],
-  seti: [
-    "#151718",
-    "#282a2b",
-    "#3b758c",
-    "#41535b",
-    "#43a5d5",
-    "#d6d6d6",
-    "#eeeeee",
-    "#ffffff",
-    "#cd3f45",
-    "#db7b55",
-    "#e6cd69",
-    "#9fca56",
-    "#55dbbe",
-    "#55b5db",
-    "#a074c4",
-    "#8a553f",
-  ],
-  "solarized-dark": [
-    "#002b36",
-    "#073642",
-    "#586e75",
-    "#657b83",
-    "#839496",
-    "#93a1a1",
-    "#eee8d5",
-    "#fdf6e3",
-    "#dc322f",
-    "#cb4b16",
-    "#b58900",
-    "#859900",
-    "#2aa198",
-    "#268bd2",
-    "#6c71c4",
-    "#d33682",
-  ],
-  "solarized-light": [
-    "#fdf6e3",
-    "#eee8d5",
-    "#93a1a1",
-    "#839496",
-    "#657b83",
-    "#586e75",
-    "#073642",
-    "#002b36",
-    "#dc322f",
-    "#cb4b16",
-    "#b58900",
-    "#859900",
-    "#2aa198",
-    "#268bd2",
-    "#6c71c4",
-    "#d33682",
-  ],
-  spacemacs: [
-    "#1f2022",
-    "#282828",
-    "#444155",
-    "#585858",
-    "#b8b8b8",
-    "#a3a3a3",
-    "#e8e8e8",
-    "#f8f8f8",
-    "#f2241f",
-    "#ffa500",
-    "#b1951d",
-    "#67b11d",
-    "#2d9574",
-    "#4f97d7",
-    "#a31db1",
-    "#b03060",
-  ],
-  "summerfruit-dark": [
-    "#151515",
-    "#202020",
-    "#303030",
-    "#505050",
-    "#b0b0b0",
-    "#d0d0d0",
-    "#e0e0e0",
-    "#ffffff",
-    "#ff0086",
-    "#fd8900",
-    "#aba800",
-    "#00c918",
-    "#1faaaa",
-    "#3777e6",
-    "#ad00a1",
-    "#cc6633",
-  ],
-  "summerfruit-light": [
-    "#ffffff",
-    "#e0e0e0",
-    "#d0d0d0",
-    "#b0b0b0",
-    "#000000",
-    "#101010",
-    "#151515",
-    "#202020",
-    "#ff0086",
-    "#fd8900",
-    "#aba800",
-    "#00c918",
-    "#1faaaa",
-    "#3777e6",
-    "#ad00a1",
-    "#cc6633",
-  ],
-  "tomorrow-night": [
-    "#1d1f21",
-    "#282a2e",
-    "#373b41",
-    "#969896",
-    "#b4b7b4",
-    "#c5c8c6",
-    "#e0e0e0",
-    "#ffffff",
-    "#cc6666",
-    "#de935f",
-    "#f0c674",
-    "#b5bd68",
-    "#8abeb7",
-    "#81a2be",
-    "#b294bb",
-    "#a3685a",
-  ],
-  tomorrow: [
-    "#ffffff",
-    "#e0e0e0",
-    "#d6d6d6",
-    "#8e908c",
-    "#969896",
-    "#4d4d4c",
-    "#282a2e",
-    "#1d1f21",
-    "#c82829",
-    "#f5871f",
-    "#eab700",
-    "#718c00",
-    "#3e999f",
-    "#4271ae",
-    "#8959a8",
-    "#a3685a",
-  ],
-  tube: [
-    "#231f20",
-    "#1c3f95",
-    "#5a5758",
-    "#737171",
-    "#959ca1",
-    "#d9d8d8",
-    "#e7e7e8",
-    "#ffffff",
-    "#ee2e24",
-    "#f386a1",
-    "#ffd204",
-    "#00853e",
-    "#85cebc",
-    "#009ddc",
-    "#98005d",
-    "#b06110",
-  ],
-  twilight: [
-    "#1e1e1e",
-    "#323537",
-    "#464b50",
-    "#5f5a60",
-    "#838184",
-    "#a7a7a7",
-    "#c3c3c3",
-    "#ffffff",
-    "#cf6a4c",
-    "#cda869",
-    "#f9ee98",
-    "#8f9d6a",
-    "#afc4db",
-    "#7587a6",
-    "#9b859d",
-    "#9b703f",
-  ],
-  woodland: [
-    "#231e18",
-    "#302b25",
-    "#48413a",
-    "#9d8b70",
-    "#b4a490",
-    "#cabcb1",
-    "#d7c8bc",
-    "#e4d4c8",
-    "#d35c5c",
-    "#ca7f32",
-    "#e0ac16",
-    "#b7ba53",
-    "#6eb958",
-    "#88a4d3",
-    "#bb90e2",
-    "#b49368",
-  ],
-  zenburn: [
-    "#383838",
-    "#404040",
-    "#606060",
-    "#6f6f6f",
-    "#808080",
-    "#dcdccc",
-    "#c0c0c0",
-    "#ffffff",
-    "#dca3a3",
-    "#dfaf8f",
-    "#e0cf9f",
-    "#5f7f5f",
-    "#93e0e3",
-    "#7cb8bb",
-    "#dc8cc3",
-    "#000000",
-  ],
-}
- 
-export const availableThemes = Object.keys(themes)
- 
-export const themeStyles = (nameOrObject) => {
-  let theme
-  if (typeof nameOrObject === "string") {
-    if (themes[nameOrObject] === undefined) {
-      throw new Error(`${nameOrObject} not found`)
-    }
-    theme = themes[nameOrObject].reduce((map, v, i) => {
-      const key = `base0${i.toString(16).toUpperCase()}`
-      map[key] = v
-      return map
-    }, {})
-  } else {
-    theme = nameOrObject
-  }
- 
-  return `.container{${Object.keys(theme)
-    .map((key) => `--${key}: ${theme[key]};`)
-    .join("")}}`
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/validator.js.html b/coverage/lcov-report/src/validator.js.html deleted file mode 100644 index a659d6d..0000000 --- a/coverage/lcov-report/src/validator.js.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - - - Code coverage report for src/validator.js - - - - - - - - - -
-
-

All files / src validator.js

-
- -
- 100% - Statements - 42/42 -
- - -
- 97.22% - Branches - 35/36 -
- - -
- 100% - Functions - 5/5 -
- - -
- 100% - Lines - 31/31 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -512x -11x -7x -6x -  -3x -  -  -2x -4x -  -1x -  -  -2x -7x -5x -4x -  -5x -3x -  -2x -  -  -2x -12x -9x -7x -5x -4x -4x -4x -  -  -2x -  -  -2x -28x -27x -26x -26x -  -25x -  -  -  -1x -  - 
export const validateBoolean = (value) => {
-  if (typeof value === "boolean") return value
-  if (value === "true") return true
-  else if (value === "false") return false
- 
-  throw new Error(`should be a boolean!`)
-}
- 
-export const validateString = (value) => {
-  if (typeof value === "string") return value
- 
-  throw new Error(`should be a string!`)
-}
- 
-export const validatePositiveNumber = (value) => {
-  if (typeof value === "number" && value >= 0) return value
-  if (typeof value === "string") {
-    value = parseFloat(value)
-  }
-  if (isNaN(value) || value < 0) {
-    throw new Error(`should be a positive number!`)
-  }
-  return value
-}
- 
-export const validateBooleanOrPositiveNumber = (value) => {
-  if (typeof value === "boolean") return value
-  if (typeof value === "number") return value
-  if (value === "true") return true
-  else if (value === "false") return false
-  else Eif (typeof value === "string") {
-    value = parseFloat(value)
-    if (!isNaN(value) && value >= 0) return value
-  }
- 
-  throw new Error(`should be a boolean or a positive number!`)
-}
- 
-export const validateStringOrJson = (value) => {
-  if (typeof value === "object") return value
-  if (typeof value === "string") {
-    try {
-      return JSON.parse(value)
-    } catch (e) {
-      return value
-    }
-  }
- 
-  throw new Error(`should be a string or JSON!`)
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov.info b/coverage/lcov.info deleted file mode 100644 index 3a49888..0000000 --- a/coverage/lcov.info +++ /dev/null @@ -1,823 +0,0 @@ -TN: -SF:src/component.js -FN:43,(anonymous_0) -FN:65,(anonymous_1) -FN:67,(anonymous_2) -FN:74,(anonymous_3) -FN:78,(anonymous_4) -FN:93,(anonymous_5) -FN:97,(anonymous_6) -FN:101,(anonymous_7) -FN:105,(anonymous_8) -FN:113,(anonymous_9) -FN:121,(anonymous_10) -FN:125,(anonymous_11) -FN:132,(anonymous_12) -FN:152,(anonymous_13) -FN:163,(anonymous_14) -FN:164,(anonymous_15) -FN:177,(anonymous_16) -FN:181,(anonymous_17) -FN:182,(anonymous_18) -FN:189,(anonymous_19) -FN:195,(anonymous_20) -FN:203,(anonymous_21) -FNF:22 -FNH:13 -FNDA:21,(anonymous_0) -FNDA:2,(anonymous_1) -FNDA:18,(anonymous_2) -FNDA:6,(anonymous_3) -FNDA:16,(anonymous_4) -FNDA:3,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:3,(anonymous_7) -FNDA:2,(anonymous_8) -FNDA:5,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:3,(anonymous_11) -FNDA:23,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:18,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:10,(anonymous_21) -DA:25,1 -DA:44,21 -DA:46,21 -DA:48,21 -DA:51,21 -DA:52,21 -DA:53,21 -DA:55,21 -DA:56,21 -DA:59,21 -DA:61,21 -DA:67,2 -DA:68,18 -DA:72,1 -DA:74,21 -DA:75,6 -DA:78,21 -DA:79,16 -DA:80,16 -DA:81,12 -DA:82,1 -DA:84,11 -DA:86,10 -DA:87,10 -DA:89,5 -DA:94,3 -DA:98,0 -DA:102,3 -DA:106,2 -DA:114,5 -DA:122,0 -DA:126,3 -DA:133,23 -DA:134,23 -DA:136,23 -DA:140,1 -DA:142,22 -DA:143,21 -DA:145,1 -DA:153,0 -DA:154,0 -DA:156,0 -DA:158,0 -DA:159,0 -DA:161,0 -DA:162,0 -DA:163,0 -DA:165,0 -DA:166,0 -DA:169,0 -DA:170,0 -DA:173,0 -DA:178,18 -DA:182,0 -DA:183,0 -DA:184,0 -DA:185,0 -DA:193,0 -DA:195,0 -DA:196,0 -DA:198,0 -DA:199,0 -DA:203,21 -DA:206,10 -DA:219,1 -LF:65 -LH:41 -BRDA:75,0,0,0 -BRDA:75,0,1,6 -BRDA:81,1,0,1 -BRDA:81,1,1,11 -BRDA:81,2,0,12 -BRDA:81,2,1,2 -BRDA:84,3,0,1 -BRDA:84,3,1,10 -BRDA:136,4,0,1 -BRDA:136,4,1,22 -BRDA:137,5,0,23 -BRDA:137,5,1,22 -BRDA:158,6,0,0 -BRDA:158,6,1,0 -BRDA:161,7,0,0 -BRDA:161,7,1,0 -BRDA:185,8,0,0 -BRDA:185,8,1,0 -BRDA:193,9,0,0 -BRDA:193,9,1,0 -BRF:20 -BRH:11 -end_of_record -TN: -SF:src/data-helpers.js -FN:2,(anonymous_0) -FN:13,(anonymous_1) -FN:33,(anonymous_2) -FN:48,(anonymous_3) -FN:52,(anonymous_4) -FNF:5 -FNH:5 -FNDA:11,(anonymous_0) -FNDA:79,(anonymous_1) -FNDA:9,(anonymous_2) -FNDA:45,(anonymous_3) -FNDA:15,(anonymous_4) -DA:2,4 -DA:3,11 -DA:5,11 -DA:8,9 -DA:13,4 -DA:14,79 -DA:15,77 -DA:16,76 -DA:18,76 -DA:19,76 -DA:20,4 -DA:21,3 -DA:22,2 -DA:24,72 -DA:26,71 -DA:27,0 -DA:29,71 -DA:33,4 -DA:35,9 -DA:48,9 -DA:49,45 -DA:50,5 -DA:51,40 -DA:52,3 -DA:53,15 -DA:54,0 -DA:55,15 -DA:56,0 -DA:58,15 -DA:60,37 -DA:61,4 -DA:64,33 -DA:68,9 -LF:33 -LH:30 -BRDA:14,0,0,2 -BRDA:14,0,1,77 -BRDA:15,1,0,1 -BRDA:15,1,1,76 -BRDA:16,2,0,0 -BRDA:16,2,1,76 -BRDA:19,3,0,4 -BRDA:19,3,1,72 -BRDA:20,4,0,1 -BRDA:20,4,1,3 -BRDA:21,5,0,1 -BRDA:21,5,1,2 -BRDA:22,6,0,1 -BRDA:22,6,1,1 -BRDA:24,7,0,1 -BRDA:24,7,1,71 -BRDA:26,8,0,0 -BRDA:26,8,1,71 -BRDA:26,9,0,71 -BRDA:26,9,1,33 -BRDA:49,10,0,5 -BRDA:49,10,1,40 -BRDA:51,11,0,3 -BRDA:51,11,1,37 -BRDA:53,12,0,0 -BRDA:53,12,1,15 -BRDA:55,13,0,0 -BRDA:55,13,1,15 -BRDA:60,14,0,4 -BRDA:60,14,1,33 -BRF:30 -BRH:26 -end_of_record -TN: -SF:src/themes.js -FN:1430,(anonymous_0) -FN:1436,(anonymous_1) -FN:1446,(anonymous_2) -FNF:3 -FNH:3 -FNDA:26,(anonymous_0) -FNDA:384,(anonymous_1) -FNDA:400,(anonymous_2) -DA:21,2 -DA:1428,2 -DA:1430,2 -DA:1432,26 -DA:1433,25 -DA:1434,1 -DA:1436,24 -DA:1437,384 -DA:1438,384 -DA:1439,384 -DA:1442,1 -DA:1445,25 -DA:1446,400 -LF:13 -LH:13 -BRDA:1432,0,0,25 -BRDA:1432,0,1,1 -BRDA:1433,1,0,1 -BRDA:1433,1,1,24 -BRF:4 -BRH:4 -end_of_record -TN: -SF:src/validator.js -FN:1,(anonymous_0) -FN:9,(anonymous_1) -FN:15,(anonymous_2) -FN:26,(anonymous_3) -FN:39,(anonymous_4) -FNF:5 -FNH:5 -FNDA:11,(anonymous_0) -FNDA:4,(anonymous_1) -FNDA:7,(anonymous_2) -FNDA:12,(anonymous_3) -FNDA:28,(anonymous_4) -DA:1,2 -DA:2,11 -DA:3,7 -DA:4,6 -DA:6,3 -DA:9,2 -DA:10,4 -DA:12,1 -DA:15,2 -DA:16,7 -DA:17,5 -DA:18,4 -DA:20,5 -DA:21,3 -DA:23,2 -DA:26,2 -DA:27,12 -DA:28,9 -DA:29,7 -DA:30,5 -DA:31,4 -DA:32,4 -DA:33,4 -DA:36,2 -DA:39,2 -DA:40,28 -DA:41,27 -DA:42,26 -DA:43,26 -DA:45,25 -DA:49,1 -LF:31 -LH:31 -BRDA:2,0,0,4 -BRDA:2,0,1,7 -BRDA:3,1,0,1 -BRDA:3,1,1,6 -BRDA:4,2,0,3 -BRDA:4,2,1,3 -BRDA:10,3,0,3 -BRDA:10,3,1,1 -BRDA:16,4,0,2 -BRDA:16,4,1,5 -BRDA:16,5,0,7 -BRDA:16,5,1,3 -BRDA:17,6,0,4 -BRDA:17,6,1,1 -BRDA:20,7,0,3 -BRDA:20,7,1,2 -BRDA:20,8,0,5 -BRDA:20,8,1,3 -BRDA:27,9,0,3 -BRDA:27,9,1,9 -BRDA:28,10,0,2 -BRDA:28,10,1,7 -BRDA:29,11,0,2 -BRDA:29,11,1,5 -BRDA:30,12,0,1 -BRDA:30,12,1,4 -BRDA:31,13,0,4 -BRDA:31,13,1,0 -BRDA:33,14,0,2 -BRDA:33,14,1,2 -BRDA:33,15,0,4 -BRDA:33,15,1,2 -BRDA:40,16,0,1 -BRDA:40,16,1,27 -BRDA:41,17,0,26 -BRDA:41,17,1,1 -BRF:36 -BRH:35 -end_of_record -TN: -SF:src/renderer/container.js -FN:4,Container -FN:13,(anonymous_1) -FN:35,(anonymous_2) -FN:55,(anonymous_3) -FN:65,(anonymous_4) -FNF:5 -FNH:3 -FNDA:42,Container -FNDA:81,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:2,(anonymous_3) -FNDA:0,(anonymous_4) -DA:5,42 -DA:6,42 -DA:7,42 -DA:8,42 -DA:9,42 -DA:11,42 -DA:13,42 -DA:24,81 -DA:25,9 -DA:27,9 -DA:28,8 -DA:30,8 -DA:36,0 -DA:37,0 -DA:40,8 -DA:41,8 -DA:42,0 -DA:43,0 -DA:44,0 -DA:48,81 -DA:49,25 -DA:50,25 -DA:51,3 -DA:52,3 -DA:56,2 -DA:57,2 -DA:58,2 -DA:59,2 -DA:60,2 -DA:63,2 -DA:66,0 -DA:69,3 -DA:70,3 -DA:72,22 -DA:73,22 -DA:77,81 -DA:79,81 -DA:80,26 -DA:81,26 -DA:84,81 -DA:85,24 -DA:86,24 -DA:88,81 -DA:89,2 -DA:93,81 -DA:94,28 -DA:95,28 -DA:98,81 -DA:99,26 -DA:100,26 -DA:103,81 -DA:104,28 -DA:105,28 -DA:108,81 -DA:112,24 -DA:113,24 -DA:114,24 -DA:118,42 -LF:58 -LH:52 -BRDA:4,0,0,21 -BRDA:24,1,0,9 -BRDA:24,1,1,72 -BRDA:27,2,0,8 -BRDA:27,2,1,1 -BRDA:36,3,0,0 -BRDA:36,3,1,0 -BRDA:41,4,0,0 -BRDA:41,4,1,8 -BRDA:41,5,0,8 -BRDA:41,5,1,0 -BRDA:48,6,0,25 -BRDA:48,6,1,56 -BRDA:48,7,0,81 -BRDA:48,7,1,35 -BRDA:50,8,0,3 -BRDA:50,8,1,22 -BRDA:51,9,0,3 -BRDA:51,9,1,0 -BRDA:57,10,0,2 -BRDA:57,10,1,0 -BRDA:66,11,0,0 -BRDA:66,11,1,0 -BRDA:69,12,0,0 -BRDA:69,12,1,3 -BRDA:73,13,0,1 -BRDA:73,13,1,21 -BRDA:79,14,0,26 -BRDA:79,14,1,55 -BRDA:79,15,0,81 -BRDA:79,15,1,32 -BRDA:84,16,0,24 -BRDA:84,16,1,57 -BRDA:84,17,0,81 -BRDA:84,17,1,32 -BRDA:88,18,0,2 -BRDA:88,18,1,79 -BRDA:88,19,0,81 -BRDA:88,19,1,29 -BRDA:93,20,0,28 -BRDA:93,20,1,53 -BRDA:93,21,0,81 -BRDA:93,21,1,36 -BRDA:98,22,0,26 -BRDA:98,22,1,55 -BRDA:98,23,0,81 -BRDA:98,23,1,36 -BRDA:103,24,0,28 -BRDA:103,24,1,53 -BRDA:103,25,0,81 -BRDA:103,25,1,36 -BRDA:108,26,0,24 -BRDA:108,26,1,57 -BRDA:109,27,0,81 -BRDA:109,27,1,34 -BRF:55 -BRH:46 -end_of_record -TN: -SF:src/renderer/data-row.js -FN:3,(anonymous_0) -FN:30,(anonymous_1) -FN:53,(anonymous_2) -FN:65,(anonymous_3) -FN:86,(anonymous_4) -FN:107,(anonymous_5) -FN:108,(anonymous_6) -FN:150,(anonymous_7) -FN:160,(anonymous_8) -FN:202,(anonymous_9) -FN:217,(anonymous_10) -FNF:11 -FNH:6 -FNDA:68,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:2,(anonymous_5) -FNDA:36,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:6,(anonymous_8) -FNDA:10,(anonymous_9) -FNDA:5,(anonymous_10) -DA:3,3 -DA:12,68 -DA:13,68 -DA:15,68 -DA:16,68 -DA:17,68 -DA:21,68 -DA:22,68 -DA:23,68 -DA:24,68 -DA:26,68 -DA:27,68 -DA:28,68 -DA:30,68 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:36,0 -DA:42,68 -DA:43,33 -DA:44,33 -DA:45,33 -DA:48,33 -DA:49,33 -DA:50,33 -DA:51,33 -DA:53,33 -DA:57,68 -DA:59,59 -DA:60,59 -DA:61,59 -DA:64,59 -DA:65,59 -DA:66,59 -DA:69,59 -DA:70,59 -DA:71,59 -DA:72,59 -DA:75,68 -DA:77,33 -DA:78,33 -DA:79,33 -DA:80,33 -DA:83,33 -DA:84,33 -DA:85,33 -DA:86,33 -DA:87,33 -DA:90,33 -DA:91,33 -DA:92,33 -DA:93,33 -DA:96,33 -DA:98,33 -DA:99,33 -DA:100,33 -DA:101,33 -DA:104,33 -DA:107,33 -DA:108,33 -DA:109,36 -DA:117,36 -DA:118,36 -DA:119,36 -DA:123,33 -DA:124,33 -DA:125,33 -DA:127,33 -DA:130,35 -DA:131,35 -DA:132,28 -DA:133,28 -DA:134,28 -DA:137,35 -DA:138,35 -DA:139,35 -DA:140,35 -DA:141,35 -DA:142,35 -DA:143,35 -DA:147,68 -DA:148,68 -DA:149,68 -DA:150,68 -DA:151,0 -DA:154,68 -DA:155,68 -DA:156,68 -DA:157,68 -DA:160,68 -DA:161,6 -DA:162,6 -DA:164,6 -DA:167,6 -DA:171,6 -DA:172,1 -DA:180,6 -DA:181,3 -DA:183,3 -DA:186,3 -DA:190,3 -DA:191,1 -DA:202,68 -DA:203,10 -DA:204,1 -DA:207,10 -DA:208,2 -DA:209,2 -DA:210,2 -DA:212,10 -DA:213,6 -DA:216,10 -DA:217,5 -DA:220,68 -LF:115 -LH:109 -BRDA:10,0,0,32 -BRDA:16,1,0,68 -BRDA:16,1,1,67 -BRDA:17,2,0,68 -BRDA:17,2,1,48 -BRDA:21,3,0,24 -BRDA:21,3,1,44 -BRDA:24,4,0,36 -BRDA:24,4,1,32 -BRDA:32,5,0,0 -BRDA:32,5,1,0 -BRDA:33,6,0,0 -BRDA:33,6,1,0 -BRDA:42,7,0,33 -BRDA:42,7,1,35 -BRDA:50,8,0,12 -BRDA:50,8,1,21 -BRDA:57,9,0,59 -BRDA:57,9,1,9 -BRDA:57,10,0,68 -BRDA:57,10,1,68 -BRDA:62,11,0,2 -BRDA:62,11,1,57 -BRDA:64,12,0,2 -BRDA:64,12,1,57 -BRDA:75,13,0,33 -BRDA:75,13,1,35 -BRDA:79,14,0,1 -BRDA:79,14,1,32 -BRDA:92,15,0,1 -BRDA:92,15,1,32 -BRDA:98,16,0,1 -BRDA:98,16,1,32 -BRDA:100,17,0,30 -BRDA:100,17,1,3 -BRDA:107,18,0,1 -BRDA:107,18,1,32 -BRDA:126,19,0,1 -BRDA:126,19,1,32 -BRDA:131,20,0,28 -BRDA:131,20,1,7 -BRDA:140,21,0,28 -BRDA:140,21,1,7 -BRDA:141,22,0,28 -BRDA:141,22,1,7 -BRDA:161,23,0,6 -BRDA:161,23,1,0 -BRDA:167,24,0,2 -BRDA:167,24,1,4 -BRDA:167,25,0,6 -BRDA:167,25,1,6 -BRDA:167,25,2,6 -BRDA:171,26,0,1 -BRDA:171,26,1,5 -BRDA:180,27,0,3 -BRDA:180,27,1,3 -BRDA:186,28,0,1 -BRDA:186,28,1,2 -BRDA:186,29,0,3 -BRDA:186,29,1,3 -BRDA:186,29,2,3 -BRDA:190,30,0,1 -BRDA:190,30,1,2 -BRDA:203,31,0,1 -BRDA:203,31,1,9 -BRDA:203,32,0,10 -BRDA:203,32,1,2 -BRDA:207,33,0,2 -BRDA:207,33,1,8 -BRDA:208,34,0,2 -BRDA:208,34,1,0 -BRDA:210,35,0,1 -BRDA:210,35,1,1 -BRDA:210,36,0,1 -BRDA:210,36,1,0 -BRDA:212,37,0,6 -BRDA:212,37,1,4 -BRDA:212,38,0,10 -BRDA:212,38,1,6 -BRDA:216,39,0,5 -BRDA:216,39,1,5 -BRF:81 -BRH:74 -end_of_record -TN: -SF:src/renderer/toolbar.js -FN:1,(anonymous_0) -FN:34,(anonymous_1) -FN:44,(anonymous_2) -FN:57,(anonymous_3) -FN:69,(anonymous_4) -FN:81,(anonymous_5) -FN:93,(anonymous_6) -FN:109,(anonymous_7) -FN:114,(anonymous_8) -FNF:9 -FNH:9 -FNDA:18,(anonymous_0) -FNDA:1,(anonymous_1) -FNDA:1,(anonymous_2) -FNDA:1,(anonymous_3) -FNDA:1,(anonymous_4) -FNDA:1,(anonymous_5) -FNDA:3,(anonymous_6) -FNDA:1,(anonymous_7) -FNDA:1,(anonymous_8) -DA:1,3 -DA:8,18 -DA:9,18 -DA:10,18 -DA:11,18 -DA:15,18 -DA:16,18 -DA:19,18 -DA:20,18 -DA:21,18 -DA:24,18 -DA:25,18 -DA:26,18 -DA:29,18 -DA:30,18 -DA:31,18 -DA:32,18 -DA:33,18 -DA:34,18 -DA:35,18 -DA:38,18 -DA:39,18 -DA:40,18 -DA:41,18 -DA:42,18 -DA:43,18 -DA:44,18 -DA:45,1 -DA:46,1 -DA:50,18 -DA:51,18 -DA:52,18 -DA:54,18 -DA:55,18 -DA:56,18 -DA:57,18 -DA:58,1 -DA:59,1 -DA:60,1 -DA:64,18 -DA:65,18 -DA:66,18 -DA:67,18 -DA:68,18 -DA:69,18 -DA:70,1 -DA:71,1 -DA:73,18 -DA:76,18 -DA:77,18 -DA:78,18 -DA:79,18 -DA:80,18 -DA:81,18 -DA:82,1 -DA:83,1 -DA:85,18 -DA:88,18 -DA:89,18 -DA:90,18 -DA:91,18 -DA:92,18 -DA:93,18 -DA:94,3 -DA:95,3 -DA:96,3 -DA:100,18 -DA:103,18 -DA:104,18 -DA:105,18 -DA:106,18 -DA:107,18 -DA:108,18 -DA:109,18 -DA:110,1 -DA:112,18 -DA:114,18 -DA:115,1 -DA:116,1 -DA:117,1 -DA:118,1 -DA:119,1 -DA:122,18 -LF:83 -LH:83 -BRDA:8,0,0,18 -BRDA:8,0,1,16 -BRDA:9,1,0,2 -BRDA:9,1,1,16 -BRDA:10,2,0,18 -BRDA:10,2,1,17 -BRDA:45,3,0,1 -BRDA:45,3,1,0 -BRDA:58,4,0,0 -BRDA:58,4,1,1 -BRDA:59,5,0,1 -BRDA:59,5,1,0 -BRDA:92,6,0,18 -BRDA:92,6,1,0 -BRDA:117,7,0,1 -BRDA:117,7,1,0 -BRF:16 -BRH:11 -end_of_record diff --git a/demo/build/index.js b/demo/build/index.js deleted file mode 100644 index e0d720e..0000000 --- a/demo/build/index.js +++ /dev/null @@ -1,28 +0,0 @@ - -/* -MIT License - -Copyright (c) 2025 Andreas Pfau - -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. - -*/ - -(()=>{var q=`.container{background-color:var(--base00);color:var(--base05);padding:10px;letter-spacing:0.5px;font-family:monospace;border-radius:3px}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;padding-bottom:5px;border-bottom:solid 1px var(--base02)}.toolbar .options,.toolbar .search-wrapper{display:flex;align-items:center}.toolbar .icon-wrapper{height:15px;display:flex;align-items:center;padding:2px 5px}.toolbar .icon-wrapper:hover{background-color:var(--base02);border-radius:3px}.toolbar .icon-wrapper:first-child{margin-left:0px}.toolbar .search.icon{margin-right:5px}.toolbar .search-input{border:none;background:transparent;outline:none;flex:1;font-size:16px;color:var(--base0D)}.match{background-color:yellow;font-weight:bold;color:red}.data-row{padding:3px 0}.data-row .data-row{border-left:solid 1px var(--base02);padding-left:20px;margin-left:5px;display:none}.data-row.expanded>.data-row{display:block}.data-row .key-value-wrapper{display:flex;align-items:center}.data-row .key{color:var(--base07)}.data-row .key.number{color:var(--base0C)}.data-row .colon{color:var(--base07);margin:0 5px 0 0}.clickable{cursor:pointer}.data-row .opening-parenthesis,.data-row .closing-parenthesis{color:var(--base07)}.data-row .ellipsis{color:var(--base09)}.data-row.expanded>.key-value-wrapper .closing-parenthesis,.data-row.expanded>.key-value-wrapper .ellipsis{display:none}.data-row>.closing-parenthesis{display:none}.data-row.expanded>.closing-parenthesis{display:inline-block}.data-row .items-size{margin-left:10px;color:var(--base04);font-style:italic;display:none}.show-size .data-row .items-size{display:inline-block}.data-row .value.bool,.data-row .value.boolean{color:var(--base0E)}.data-row .value.function{color:var(--base0D)}.data-row .value.int,.data-row .value.integer{color:var(--base0F)}.data-row .value.float{color:var(--base0B)}.data-row .value.string{color:var(--base09)}.data-row .value.string .content{overflow-wrap:break-word}.data-row .value.string .content::before{content:open-quote}.data-row .value.string .content::after{content:close-quote}.data-row .value.regexp{color:var(--base0A)}.data-row .value.nan{color:var(--base08)}.data-row .value.null{color:var(--base0A)}.data-row .value.undefined{color:var(--base05)}.data-row .value.date{color:var(--base0D)}.data-row .value.nan,.data-row .value.null,.data-row .value.undefined{border-radius:3px;background-color:var(--base02);padding:1px 2px}.data-row .value .type{font-size:smaller;margin-right:4px;opacity:0.8;display:none}.data-row .value .value-data{word-break:break-all}.show-data-types .data-row .value .type{display:inline-block}.icon-wrapper,.copy-icon-wrapper{display:inline-block;cursor:pointer}.icon{display:block;position:relative}.icon:before,.icon:after{content:"";position:absolute;display:block}.expand.icon{margin-right:5px}.expand-icon-arrow .expand.icon{margin-left:3px;width:0;height:0;border-left:solid 6px var(--base0E);border-top:solid 6px transparent;border-bottom:solid 6px transparent}.expand-icon-arrow .expanded>.key-value-wrapper .expand.icon,.expand-icon-arrow .expanded.icon.expand{transform:rotate(90deg);border-left-color:var(--base0D)}.expand-icon-square .expand.icon,.expand-icon-circle .expand.icon{display:block;width:9px;height:9px;border-radius:2px;border:solid 1px var(--base0E)}.expand-icon-circle .expand.icon{border-radius:50%}.expand-icon-square .expand.icon:before,.expand-icon-circle .expand.icon:before,.expand-icon-square .expand.icon:after,.expand-icon-circle .expand.icon:after{width:5px;height:1px;background-color:var(--base0E);left:2px;top:4px}.expand-icon-square .expand.icon:after,.expand-icon-circle .expand.icon:after{transform:rotate(90deg)}.expand-icon-square .expanded>.key-value-wrapper .expand.icon:after,.expand-icon-circle .expanded>.key-value-wrapper .expand.icon:after,.expand-icon-square .expand.icon.expanded:after,.expand-icon-circle .expand.icon.expanded:after{display:none}.expand-icon-square .expanded>.key-value-wrapper .expand.icon,.expand-icon-circle .expanded>.key-value-wrapper .expand.icon,.expand-icon-square .expand.icon.expanded,.expand-icon-circle .expanded.expand.icon{border-color:var(--base0D)}.expand-icon-square .expanded>.key-value-wrapper .expand.icon:before,.expand-icon-circle .expanded>.key-value-wrapper .expand.icon:before,.expand-icon-square .expanded.expand.icon:before,.expand-icon-circle .expanded.expand.icon:before{background-color:var(--base0D)}.icon-wrapper{display:inline-block;cursor:pointer}.show-copy .key-value-wrapper:hover .icon.copy{display:block}.copy.icon{margin-left:10px;display:none;width:8px;height:10px;border:solid 1px var(--base0D);border-radius:1px;position:relative;top:4px;transition:0.2s all}.copy.icon:active{transform:scale(1.6);background-color:var(--base0B)}.copy.icon:before{content:"";display:block;left:-3px;top:-3px;width:8px;height:10px;border-top:solid 1px var(--base0D);border-left:solid 1px var(--base0D);border-radius:1px 0 0 0}.plus.icon{width:11px;height:1px;background-color:var(--base0D)}.plus.icon:after{content:"";width:11px;height:1px;background-color:var(--base0D);-webkit-transform:rotate(90deg);transform:rotate(90deg)}.minus.icon{width:11px;height:1px;background-color:var(--base0D)}.indent.icon{color:var(--base0D);width:17px;height:8px;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D)}.indent.icon:before{content:"";position:absolute;top:2px;right:0;width:11px;height:2px;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D)}.indent.icon:after{content:"";position:absolute;top:1px;width:0;height:0;border-top:solid 3px transparent;border-bottom:solid 3px transparent;border-left:solid 3px var(--base0D);border-right:solid 3px transparent}.outdent.icon{color:var(--base0D);margin-left:2px;width:17px;height:8px;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D)}.outdent.icon:before{content:"";top:2px;right:0;width:11px;height:2px;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D)}.outdent.icon:after{content:"";top:1px;left:-3px;width:0;height:0;border-top:solid 3px transparent;border-bottom:solid 3px transparent;border-left:solid 3px transparent;border-right:solid 3px var(--base0D)}.refresh.icon{color:var(--base0D);width:10px;height:10px;border-radius:50%;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D);border-left:solid 1px transparent;border-right:solid 1px var(--base0D)}.refresh.icon:before{content:"";left:1px;top:8px;width:3px;height:3px;border-top:solid 1px var(--base0D);border-left:solid 1px var(--base0D);-webkit-transform:rotate(-22.5deg);transform:rotate(-22.5deg)}.info.icon{width:12px;height:11px;border:solid 1px var(--base0D);border-radius:2px}.info.icon::before{top:5px;left:5px;width:2px;height:5px;background-color:var(--base0D)}.info.icon::after{top:2px;left:5px;width:2px;height:2px;background-color:var(--base0D)}.info.icon.active{background-color:var(--base0D)}.info.icon.active::before,.info.icon.active::after{background-color:var(--base02)}.search.icon{color:var(--base0D);width:11px;height:11px;border:solid 1px var(--base0D);border-radius:100%;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.search.icon:before{content:"";top:11px;left:5px;height:6px;width:1px;background-color:var(--base0D)} -`;var A={apathy:["#031a16","#0b342d","#184e45","#2b685e","#5f9c92","#81b5ac","#a7cec8","#d2e7e4","#3e9688","#3e7996","#3e4c96","#883e96","#963e4c","#96883e","#4c963e","#3e965b"],ashes:["#1c2023","#393f45","#565e65","#747c84","#adb3ba","#c7ccd1","#dfe2e5","#f3f4f5","#c7ae95","#c7c795","#aec795","#95c7ae","#95aec7","#ae95c7","#c795ae","#c79595"],"atelier-dune-light":["#fefbec","#e8e4cf","#a6a28c","#999580","#7d7a68","#6e6b5e","#292824","#20201d","#d73737","#b65611","#ae9513","#60ac39","#1fad83","#6684e1","#b854d4","#d43552"],"atelier-dune":["#20201d","#292824","#6e6b5e","#7d7a68","#999580","#a6a28c","#e8e4cf","#fefbec","#d73737","#b65611","#ae9513","#60ac39","#1fad83","#6684e1","#b854d4","#d43552"],atlas:["#002635","#00384d","#517f8d","#6c8b91","#869696","#a1a19a","#e6e6dc","#fafaf8","#ff5a67","#f08e48","#ffcc1b","#7fc06e","#14747e","#5dd7b9","#9a70a4","#c43060"],bespin:["#28211c","#36312e","#5e5d5c","#666666","#797977","#8a8986","#9d9b97","#baae9e","#cf6a4c","#cf7d34","#f9ee98","#54be0d","#afc4db","#5ea6ea","#9b859d","#937121"],"black-metal":["#000000","#121212","#222222","#333333","#999999","#c1c1c1","#999999","#c1c1c1","#5f8787","#aaaaaa","#a06666","#dd9999","#aaaaaa","#888888","#999999","#444444"],brewer:["#0c0d0e","#2e2f30","#515253","#737475","#959697","#b7b8b9","#dadbdc","#fcfdfe","#e31a1c","#e6550d","#dca060","#31a354","#80b1d3","#3182bd","#756bb1","#b15928"],bright:["#000000","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#f5f5f5","#ffffff","#fb0120","#fc6d24","#fda331","#a1c659","#76c7b7","#6fb3d2","#d381c3","#be643c"],brogrammer:["#1f1f1f","#f81118","#2dc55e","#ecba0f","#2a84d2","#4e5ab7","#1081d6","#d6dbe5","#d6dbe5","#de352e","#1dd361","#f3bd09","#1081d6","#5350b9","#0f7ddb","#ffffff"],"brushtrees-dark":["#485867","#5a6d7a","#6d828e","#8299a1","#98afb5","#b0c5c8","#c9dbdc","#e3efef","#b38686","#d8bba2","#aab386","#87b386","#86b3b3","#868cb3","#b386b2","#b39f9f"],brushtrees:["#e3efef","#c9dbdc","#b0c5c8","#98afb5","#8299a1","#6d828e","#5a6d7a","#485867","#b38686","#d8bba2","#aab386","#87b386","#86b3b3","#868cb3","#b386b2","#b39f9f"],chalk:["#151515","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#f5f5f5","#fb9fb1","#eda987","#ddb26f","#acc267","#12cfc0","#6fc2ef","#e1a3ee","#deaf8f"],circus:["#191919","#202020","#303030","#5f5a60","#505050","#a7a7a7","#808080","#ffffff","#dc657d","#4bb1a7","#c3ba63","#84b97c","#4bb1a7","#639ee4","#b888e2","#b888e2"],"classic-dark":["#151515","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#f5f5f5","#ac4142","#d28445","#f4bf75","#90a959","#75b5aa","#6a9fb5","#aa759f","#8f5536"],"classic-light":["#f5f5f5","#e0e0e0","#d0d0d0","#b0b0b0","#505050","#303030","#202020","#151515","#ac4142","#d28445","#f4bf75","#90a959","#75b5aa","#6a9fb5","#aa759f","#8f5536"],codeschool:["#232c31","#1c3657","#2a343a","#3f4944","#84898c","#9ea7a6","#a7cfa3","#b5d8f6","#2a5491","#43820d","#a03b1e","#237986","#b02f30","#484d79","#c59820","#c98344"],cupcake:["#fbf1f2","#f2f1f4","#d8d5dd","#bfb9c6","#a59daf","#8b8198","#72677e","#585062","#d57e85","#ebb790","#dcb16c","#a3b367","#69a9a7","#7297b9","#bb99b4","#baa58c"],cupertino:["#ffffff","#c0c0c0","#c0c0c0","#808080","#808080","#404040","#404040","#5e5e5e","#c41a15","#eb8500","#826b28","#007400","#318495","#0000ff","#a90d91","#826b28"],darcula:["#2b2b2b","#323232","#323232","#606366","#a4a3a3","#a9b7c6","#ffc66d","#ffffff","#4eade5","#689757","#bbb529","#6a8759","#629755","#9876aa","#cc7832","#808080"],darktooth:["#1d2021","#32302f","#504945","#665c54","#928374","#a89984","#d5c4a1","#fdf4c1","#fb543f","#fe8625","#fac03b","#95c085","#8ba59b","#0d6678","#8f4673","#a87322"],"default-dark":["#181818","#282828","#383838","#585858","#b8b8b8","#d8d8d8","#e8e8e8","#f8f8f8","#ab4642","#dc9656","#f7ca88","#a1b56c","#86c1b9","#7cafc2","#ba8baf","#a16946"],"default-light":["#ffffff","#e8e8e8","#d8d8d8","#b8b8b8","#585858","#383838","#282828","#181818","#ab4642","#dc9656","#ab4642","#a1b56c","#86c1b9","#7cafc2","#ba8baf","#a16946"],dracula:["#282936","#3a3c4e","#4d4f68","#626483","#62d6e8","#e9e9f4","#f1f2f8","#f7f7fb","#ea51b2","#b45bcf","#00f769","#ebff87","#a1efe4","#62d6e8","#b45bcf","#00f769"],eighties:["#2d2d2d","#393939","#515151","#747369","#a09f93","#d3d0c8","#e8e6df","#f2f0ec","#f2777a","#f99157","#ffcc66","#99cc99","#66cccc","#6699cc","#cc99cc","#d27b53"],embers:["#16130f","#2c2620","#433b32","#5a5047","#8a8075","#a39a90","#beb6ae","#dbd6d1","#826d57","#828257","#6d8257","#57826d","#576d82","#6d5782","#82576d","#825757"],flat:["#2c3e50","#34495e","#7f8c8d","#95a5a6","#bdc3c7","#e0e0e0","#f5f5f5","#ecf0f1","#e74c3c","#e67e22","#f1c40f","#2ecc71","#1abc9c","#3498db","#9b59b6","#be643c"],"fruit-soda":["#f1ecf1","#e0dee0","#d8d5d5","#b5b4b6","#979598","#515151","#474545","#2d2c2c","#fe3e31","#fe6d08","#f7e203","#47f74c","#0f9cfd","#2931df","#611fce","#b16f40"],github:["#ffffff","#f5f5f5","#c8c8fa","#969896","#e8e8e8","#333333","#ffffff","#969896","#ed6a43","#0086b3","#795da3","#183691","#183691","#795da3","#a71d5d","#333333"],"google-dark":["#1d1f21","#282a2e","#373b41","#969896","#b4b7b4","#c5c8c6","#e0e0e0","#ffffff","#cc342b","#f96a38","#fba922","#198844","#3971ed","#3971ed","#a36ac7","#3971ed"],"google-light":["#ffffff","#e0e0e0","#c5c8c6","#b4b7b4","#969896","#373b41","#282a2e","#1d1f21","#cc342b","#f96a38","#fba922","#198844","#3971ed","#3971ed","#a36ac7","#3971ed"],"grayscale-dark":["#101010","#252525","#464646","#525252","#ababab","#b9b9b9","#e3e3e3","#f7f7f7","#7c7c7c","#999999","#a0a0a0","#8e8e8e","#868686","#686868","#747474","#5e5e5e"],"grayscale-light":["#f7f7f7","#e3e3e3","#b9b9b9","#ababab","#525252","#464646","#252525","#101010","#7c7c7c","#999999","#a0a0a0","#8e8e8e","#868686","#686868","#747474","#5e5e5e"],greenscreen:["#001100","#003300","#005500","#007700","#009900","#00bb00","#00dd00","#00ff00","#007700","#009900","#007700","#00bb00","#005500","#009900","#00bb00","#005500"],"gruvbox-dark-hard":["#1d2021","#3c3836","#504945","#665c54","#bdae93","#d5c4a1","#ebdbb2","#fbf1c7","#fb4934","#fe8019","#fabd2f","#b8bb26","#8ec07c","#83a598","#d3869b","#d65d0e"],"gruvbox-light-hard":["#f9f5d7","#ebdbb2","#d5c4a1","#bdae93","#665c54","#504945","#3c3836","#282828","#9d0006","#af3a03","#b57614","#79740e","#427b58","#076678","#8f3f71","#d65d0e"],"harmonic-dark":["#0b1c2c","#223b54","#405c79","#627e99","#aabcce","#cbd6e2","#e5ebf1","#f7f9fb","#bf8b56","#bfbf56","#8bbf56","#56bf8b","#568bbf","#8b56bf","#bf568b","#bf5656"],"harmonic-light":["#f7f9fb","#e5ebf1","#cbd6e2","#aabcce","#627e99","#405c79","#223b54","#0b1c2c","#bf8b56","#bfbf56","#8bbf56","#56bf8b","#568bbf","#8b56bf","#bf568b","#bf5656"],"heetch-light":["#feffff","#392551","#7b6d8b","#9c92a8","#ddd6e5","#5a496e","#470546","#190134","#27d9d5","#bdb6c5","#5ba2b6","#f80059","#c33678","#47f9f5","#bd0152","#dedae2"],heetch:["#190134","#392551","#5a496e","#7b6d8b","#9c92a8","#bdb6c5","#dedae2","#feffff","#27d9d5","#5ba2b6","#8f6c97","#c33678","#f80059","#bd0152","#82034c","#470546"],helios:["#1d2021","#383c3e","#53585b","#6f7579","#cdcdcd","#d5d5d5","#dddddd","#e5e5e5","#d72638","#eb8413","#f19d1a","#88b92d","#1ba595","#1e8bac","#be4264","#c85e0d"],hopscotch:["#322931","#433b42","#5c545b","#797379","#989498","#b9b5b8","#d5d3d5","#ffffff","#dd464c","#fd8b19","#fdcc59","#8fc13e","#149b93","#1290bf","#c85e7c","#b33508"],"horizon-dark":["#1c1e26","#232530","#2e303e","#676a8d","#ced1d0","#cbced0","#dcdfe4","#e3e6ee","#e93c58","#e58d7d","#efb993","#efaf8e","#24a8b4","#df5273","#b072d1","#e4a382"],"ia-dark":["#1a1a1a","#222222","#1d414d","#767676","#b8b8b8","#cccccc","#e8e8e8","#f8f8f8","#d88568","#d86868","#b99353","#83a471","#7c9cae","#8eccdd","#b98eb2","#8b6c37"],"ia-light":["#f6f6f6","#dedede","#bde5f2","#898989","#767676","#181818","#e8e8e8","#898989","#9c5a02","#c43e18","#c48218","#38781c","#2d6bb1","#48bac2","#a94598","#8b6c37"],icy:["#021012","#031619","#041f23","#052e34","#064048","#095b67","#0c7c8c","#109cb0","#16c1d9","#b3ebf2","#80deea","#4dd0e1","#26c6da","#00bcd4","#00acc1","#0097a7"],isotope:["#000000","#404040","#606060","#808080","#c0c0c0","#d0d0d0","#e0e0e0","#ffffff","#ff0000","#ff9900","#ff0099","#33ff00","#00ffff","#0066ff","#cc00ff","#3300ff"],macintosh:["#000000","#404040","#404040","#808080","#808080","#c0c0c0","#c0c0c0","#ffffff","#dd0907","#ff6403","#fbf305","#1fb714","#02abea","#0000d3","#4700a5","#90713a"],marrakesh:["#201602","#302e00","#5f5b17","#6c6823","#86813b","#948e48","#ccc37a","#faf0a5","#c35359","#b36144","#a88339","#18974e","#75a738","#477ca1","#8868b3","#b3588e"],materia:["#263238","#2c393f","#37474f","#707880","#c9ccd3","#cdd3de","#d5dbe5","#ffffff","#ec5f67","#ea9560","#ffcc00","#8bd649","#80cbc4","#89ddff","#82aaff","#ec5f67"],"material-lighter":["#fafafa","#e7eaec","#cceae7","#ccd7da","#8796b0","#80cbc4","#80cbc4","#666666","#ff5370","#f76d47","#ffb62c","#91b859","#39adb5","#6182b8","#7c4dff","#e53935"],material:["#263238","#2e3c43","#314549","#546e7a","#b2ccd6","#eeffff","#eeffff","#ffffff","#f07178","#f78c6c","#ffcb6b","#c3e88d","#89ddff","#82aaff","#c792ea","#ff5370"],"mellow-purple":["#1e0528","#1a092d","#331354","#320f55","#873582","#ffeeff","#ffeeff","#f8c0ff","#00d9e9","#aa00a3","#955ae7","#05cb0d","#b900b1","#550068","#8991bb","#4d6fff"],"mexico-light":["#f8f8f8","#e8e8e8","#d8d8d8","#b8b8b8","#585858","#383838","#282828","#181818","#ab4642","#dc9656","#f79a0e","#538947","#4b8093","#7cafc2","#96609e","#a16946"],mocha:["#3b3228","#534636","#645240","#7e705a","#b8afad","#d0c8c6","#e9e1dd","#f5eeeb","#cb6077","#d28b71","#f4bc87","#beb55b","#7bbda4","#8ab3b5","#a89bb9","#bb9584"],monokai:["#272822","#383830","#49483e","#75715e","#a59f85","#f8f8f2","#f5f4f1","#f9f8f5","#f92672","#fd971f","#f4bf75","#a6e22e","#a1efe4","#66d9ef","#ae81ff","#cc6633"],nord:["#2e3440","#3b4252","#434c5e","#4c566a","#d8dee9","#e5e9f0","#eceff4","#8fbcbb","#88c0d0","#81a1c1","#5e81ac","#bf616a","#d08770","#ebcb8b","#a3be8c","#b48ead"],ocean:["#2b303b","#343d46","#4f5b66","#65737e","#a7adba","#c0c5ce","#dfe1e8","#eff1f5","#bf616a","#d08770","#ebcb8b","#a3be8c","#96b5b4","#8fa1b3","#b48ead","#ab7967"],"one-light":["#fafafa","#f0f0f1","#e5e5e6","#a0a1a7","#696c77","#383a42","#202227","#090a0b","#ca1243","#d75f00","#c18401","#50a14f","#0184bc","#4078f2","#a626a4","#986801"],onedark:["#282c34","#353b45","#3e4451","#545862","#565c64","#abb2bf","#b6bdca","#c8ccd4","#e06c75","#d19a66","#e5c07b","#98c379","#56b6c2","#61afef","#c678dd","#be5046"],"papercolor-dark":["#1c1c1c","#af005f","#5faf00","#d7af5f","#5fafd7","#808080","#d7875f","#d0d0d0","#585858","#5faf5f","#afd700","#af87d7","#ffaf00","#ff5faf","#00afaf","#5f8787"],"papercolor-light":["#eeeeee","#af0000","#008700","#5f8700","#0087af","#878787","#005f87","#444444","#bcbcbc","#d70000","#d70087","#8700af","#d75f00","#d75f00","#005faf","#005f87"],paraiso:["#2f1e2e","#41323f","#4f424c","#776e71","#8d8687","#a39e9b","#b9b6b0","#e7e9db","#ef6155","#f99b15","#fec418","#48b685","#5bc4bf","#06b6ef","#815ba4","#e96ba8"],pico:["#000000","#1d2b53","#7e2553","#008751","#ab5236","#5f574f","#c2c3c7","#fff1e8","#ff004d","#ffa300","#fff024","#00e756","#29adff","#83769c","#ff77a8","#ffccaa"],pop:["#000000","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#ffffff","#eb008a","#f29333","#f8ca12","#37b349","#00aabb","#0e5a94","#b31e8d","#7a2d00"],railscasts:["#2b2b2b","#272935","#3a4055","#5a647e","#d4cfc9","#e6e1dc","#f4f1ed","#f9f7f3","#da4939","#cc7833","#ffc66d","#a5c261","#519f50","#6d9cbe","#b6b3eb","#bc9458"],seti:["#151718","#282a2b","#3b758c","#41535b","#43a5d5","#d6d6d6","#eeeeee","#ffffff","#cd3f45","#db7b55","#e6cd69","#9fca56","#55dbbe","#55b5db","#a074c4","#8a553f"],"solarized-dark":["#002b36","#073642","#586e75","#657b83","#839496","#93a1a1","#eee8d5","#fdf6e3","#dc322f","#cb4b16","#b58900","#859900","#2aa198","#268bd2","#6c71c4","#d33682"],"solarized-light":["#fdf6e3","#eee8d5","#93a1a1","#839496","#657b83","#586e75","#073642","#002b36","#dc322f","#cb4b16","#b58900","#859900","#2aa198","#268bd2","#6c71c4","#d33682"],spacemacs:["#1f2022","#282828","#444155","#585858","#b8b8b8","#a3a3a3","#e8e8e8","#f8f8f8","#f2241f","#ffa500","#b1951d","#67b11d","#2d9574","#4f97d7","#a31db1","#b03060"],"summerfruit-dark":["#151515","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#ffffff","#ff0086","#fd8900","#aba800","#00c918","#1faaaa","#3777e6","#ad00a1","#cc6633"],"summerfruit-light":["#ffffff","#e0e0e0","#d0d0d0","#b0b0b0","#000000","#101010","#151515","#202020","#ff0086","#fd8900","#aba800","#00c918","#1faaaa","#3777e6","#ad00a1","#cc6633"],"tomorrow-night":["#1d1f21","#282a2e","#373b41","#969896","#b4b7b4","#c5c8c6","#e0e0e0","#ffffff","#cc6666","#de935f","#f0c674","#b5bd68","#8abeb7","#81a2be","#b294bb","#a3685a"],tomorrow:["#ffffff","#e0e0e0","#d6d6d6","#8e908c","#969896","#4d4d4c","#282a2e","#1d1f21","#c82829","#f5871f","#eab700","#718c00","#3e999f","#4271ae","#8959a8","#a3685a"],tube:["#231f20","#1c3f95","#5a5758","#737171","#959ca1","#d9d8d8","#e7e7e8","#ffffff","#ee2e24","#f386a1","#ffd204","#00853e","#85cebc","#009ddc","#98005d","#b06110"],twilight:["#1e1e1e","#323537","#464b50","#5f5a60","#838184","#a7a7a7","#c3c3c3","#ffffff","#cf6a4c","#cda869","#f9ee98","#8f9d6a","#afc4db","#7587a6","#9b859d","#9b703f"],woodland:["#231e18","#302b25","#48413a","#9d8b70","#b4a490","#cabcb1","#d7c8bc","#e4d4c8","#d35c5c","#ca7f32","#e0ac16","#b7ba53","#6eb958","#88a4d3","#bb90e2","#b49368"],zenburn:["#383838","#404040","#606060","#6f6f6f","#808080","#dcdccc","#c0c0c0","#ffffff","#dca3a3","#dfaf8f","#e0cf9f","#5f7f5f","#93e0e3","#7cb8bb","#dc8cc3","#000000"]},V=Object.keys(A),R=a=>{let e;if(typeof a=="string"){if(A[a]===void 0)throw new Error(`${a} not found`);e=A[a].reduce((d,r,o)=>{let t=`base0${o.toString(16).toUpperCase()}`;return d[t]=r,d},{})}else e=a;return`.container{${Object.keys(e).map(d=>`--${d}: ${e[d]};`).join("")}}`};var j=a=>{try{return!!new URL(a)}catch{return!1}},W=a=>{if(Array.isArray(a))return"array";if(a===null)return"null";if(a instanceof RegExp)return"regexp";let e=typeof a;return e==="number"?isNaN(a)?"NaN":isFinite(a)?Number.isInteger(a)?"int":"float":"Infinity":e==="boolean"?"bool":e==="object"&&a instanceof Date?"date":e};var $=a=>{if(typeof a=="boolean")return a;if(a==="true")return!0;if(a==="false")return!1;throw new Error("should be a boolean!")},J=a=>{if(typeof a=="string")return a;throw new Error("should be a string!")},O=a=>{if(typeof a=="number"&&a>=0)return a;if(typeof a=="string"&&(a=parseFloat(a)),isNaN(a)||a<0)throw new Error("should be a positive number!");return a},B=a=>{if(typeof a=="boolean"||typeof a=="number")return a;if(a==="true")return!0;if(a==="false")return!1;if(typeof a=="string"&&(a=parseFloat(a),!isNaN(a)&&a>=0))return a;throw new Error("should be a boolean or a positive number!")},z=a=>{if(typeof a=="object")return a;if(typeof a=="string")try{return JSON.parse(a)}catch{return a}throw new Error("should be a string or JSON!")};var P=function({key:a,value:e,expanded:d,indent:r,onToggleExpand:o,level:t=0,parentRow:v}){let n=document.createElement("div");this.maxLevel=t;let i=W(e),m=i==="array"||i==="object",x=d===!0||d>t,p,g,b,h;n.className=`data-row ${x?"expanded":""}`,n.dataset.key=a,n.dataset.level=t,t>0&&(n.style.paddingLeft=`${r*5}px`);let f=document.createElement("span");f.className="key-value-wrapper",n.appendChild(f);let w=()=>{n.classList.toggle("expanded"),o&&(n.classList.contains("expanded")?o(t+1):o(t))};if(m){let c=document.createElement("span");c.className="icon-wrapper",f.appendChild(c),p=document.createElement("span"),p.className="expand icon clickable",p.setAttribute("title",x?"Collapse":"Expand"),c.appendChild(p),c.addEventListener("click",()=>w())}if(a!==null&&a!==""){let c=typeof a;b=document.createElement("span"),b.className=`key clickable ${c==="number"?"number":""}`,b.textContent=c==="number"?a:`${a}`,b.addEventListener("click",()=>w()),f.appendChild(b);let s=document.createElement("span");s.classList.add("colon"),s.textContent=":",f.appendChild(s)}if(m){let c=document.createElement("span");c.className="opening-parenthesis",c.textContent=i==="array"?"[":"{",f.appendChild(c);let s=document.createElement("span");s.className="ellipsis clickable",s.textContent="...",s.addEventListener("click",()=>w()),f.appendChild(s);let l=document.createElement("span");l.className="closing-parenthesis",l.textContent=i==="array"?"]":"}",f.appendChild(l);let E=document.createElement("span"),D=i==="array"?e.length:Object.keys(e).length;E.className="items-size",E.textContent=`${D} item${D===1?"":"s"}`,f.appendChild(E),g=[],(i==="array"?e.map((C,k)=>k):Object.keys(e)).forEach(C=>{let k=new P({key:C,value:e[C],expanded:d,indent:r,onToggleExpand:o,level:t+1,parentRow:n});g.push(k),n.appendChild(k.element),this.maxLevel=Math.max(this.maxLevel,k.maxLevel)});let S=document.createElement("span");S.className="closing-parenthesis",S.textContent=i==="array"?"]":"}",n.appendChild(S)}else{let c=null;["nan","NaN","undefined","null"].includes(i)||(c=document.createElement("span"),c.className="type",c.textContent=i.toLowerCase());let s=document.createElement("span");s.className=`value ${i.toLowerCase()}`,h=document.createElement("span"),h.className="value-data",h.textContent=i==="string"?`"${e}"`:e,c&&s.appendChild(c),s.appendChild(h),f.appendChild(s)}let u=document.createElement("span");u.className="copy icon",u.setAttribute("title","Copy to clipboard");let y=document.createElement("span");y.className="icon-wrapper",y.addEventListener("click",()=>{navigator.clipboard.writeText(JSON.stringify(e,null,r))}),y.appendChild(u),f.appendChild(y);let N=c=>{let s=new RegExp(c,"gi"),l=[];b&&l.push(b),h&&l.push(h);let E=!1;l.forEach(D=>{let L=D.textContent;if(D.innerHTML=L,!c||c==="")return;let S=[...L.matchAll(s)].map(I=>I.index),C=[],k=0;S.forEach(I=>{E=!0,C.push(L.slice(k,I)),C.push(`${c}`),k=I+c.length}),C.push(L.slice(k)),D.innerHTML=C.join("")}),E&&!n.classList.contains("expanded")&&(w(),v&&v.classList.add("expanded"))};this.update=({expanded:c,indent:s,searchTerm:l})=>{s!==void 0&&t>0&&(n.style.paddingLeft=`${s*5}px`),c!==void 0&&(x=c===!0||c>t,n.classList.toggle("expanded",x),p&&(p.title=x?"Collapse":"Expand")),l!=null&&N(l),g&&g.forEach(E=>E.update({expanded:c,indent:s,searchTerm:l}))},this.element=n},U=P;var G=function({expanded:a,indent:e,onChange:d,onSearch:r,showDetails:o}){this.indent=e||2,this.expanded=typeof a=="number"?a:2,this.showDetails=o!==!1,this.maxExpandLevel=0;let t,v=document.createElement("div");v.className="toolbar";let n=document.createElement("div");n.className="options",v.appendChild(n);let i=document.createElement("div");i.className="search-wrapper",v.appendChild(i);let m=document.createElement("div");m.className="icon-wrapper clickable",n.appendChild(m);let x=document.createElement("span");x.className="icon refresh",m.onclick=()=>this.refresh(),m.appendChild(x);let p=document.createElement("div");p.className="icon-wrapper clickable",n.appendChild(p);let g=document.createElement("span");g.className="icon plus",p.appendChild(g),p.onclick=()=>{this.expanded{this.expanded>this.maxExpandLevel&&(this.expanded=this.maxExpandLevel),this.expanded>0&&(this.expanded-=1),d({expanded:this.expanded})};let f=document.createElement("div");f.className="icon-wrapper clickable",n.appendChild(f);let w=document.createElement("span");w.className="icon indent",f.onclick=()=>{this.indent+=1,d({indent:this.indent})},f.appendChild(w);let u=document.createElement("div");u.className="icon-wrapper clickable",n.appendChild(u);let y=document.createElement("span");y.className="icon outdent",u.onclick=()=>{this.indent-=1,d({indent:this.indent})},u.appendChild(y);let N=document.createElement("div");N.className="icon-wrapper clickable",n.appendChild(N);let c=document.createElement("span");c.className=`icon info ${this.showDetails?"active":""}`,N.onclick=()=>{c.classList.toggle("active"),this.showDetails=!this.showDetails,d({showDetails:this.showDetails})},N.appendChild(c);let s=document.createElement("span");s.className="icon search",i.appendChild(s),t=document.createElement("input"),t.className="search-input",t.placeholder="Search",t.oninput=l=>{r(l.target.value)},i.appendChild(t),this.refresh=()=>{this.expanded=1,this.indent=2,t&&(t.value=""),d({indent:2,expanded:1}),r("")},this.updateShowDetails=l=>{this.showDetails=l,this.showDetails?c.classList.add("active"):c.classList.remove("active")},this.element=v},M=G;function K(a,e={}){let d=document.createElement("div");d.className="container",a.appendChild(d);let r=null,o=null,t={};this.update=({data:v,expanded:n,indent:i,expandIconType:m,showDataTypes:x,showToolbar:p,showSize:g,showCopy:b})=>{if(v){let f=JSON.stringify(v);t.dataComapreString!==f&&(t.dataComapreString=f,r=new U({key:"",value:v,expanded:n,indent:i,onToggleExpand:w=>{o&&(o.expanded=w),t.expanded=w}}),d.replaceChildren(r.element),t.showToolbar&&o&&(d.prepend(o.element),o.maxExpandLevel=r.maxLevel,o.refresh()))}if(p!==void 0&&t.showToolbar!==p)if(t.showToolbar=p,p)o||(o=new M({expanded:t.expanded,indent:t.indent,onChange:({expanded:f,indent:w,showDetails:u})=>{let y={expanded:f,indent:w};u!==void 0&&(y.showCopy=u,y.showSize=u,y.showDataTypes=u),this.update(y)},onSearch:f=>{r&&r.update({searchTerm:f})}})),r&&(o.maxExpandLevel=r.maxLevel),d.prepend(o.element);else{let f=d.querySelector(".toolbar");f&&f.remove()}let h={};n!==void 0&&t.expanded!==n&&(t.expanded=n,h.expanded=n),i!==void 0&&t.indent!==i&&(t.indent=i,h.indent=i),Object.keys(h).length>0&&r&&r.update(h),b!==void 0&&t.showCopy!==b&&(t.showCopy=b,d.classList.toggle("show-copy",b)),g!==void 0&&t.showSize!==g&&(t.showSize=g,d.classList.toggle("show-size",g),o&&o.updateShowDetails(t.showSize||t.showDataTypes)),x!==void 0&&t.showDataTypes!==x&&(t.showDataTypes=x,d.classList.toggle("show-data-types",x),o&&o.updateShowDetails(t.showSize||t.showDataTypes)),m!==void 0&&t.expandIconType!==m&&(d.classList.add(`expand-icon-${m}`),d.classList.remove(`expand-icon-${t.expandIconType}`),t.expandIconType=m)},this.update(e)}var F=K;var H={indent:2,expanded:1,theme:"default-light",showDataTypes:!0,showToolbar:!1,expandIconType:"arrow",showCopy:!0,showSize:!0,data:null},T=class a extends HTMLElement{#t;#e;#c;#n;constructor(){super(),this.#e={...H},this.#t=document.createElement("style");let e=this.attachShadow({mode:"open"}),d=document.createElement("style");d.textContent=`${q}`,e.appendChild(d),e.appendChild(this.#t),this.theme=this.#e.theme,this.#n=new F(e,this.#e)}static get observedAttributes(){return Object.keys(H).map(e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase())}static allowedAttributes=["id"].concat(a.observedAttributes);#d=(...e)=>{console.warn(`JsonViewer${this.id?` (${this.id})`:""}:`,...e)};#a=(e,d,r,o)=>{try{if(d=r(d),o&&!o.includes(d))throw new Error(`should be one of ${o.join(", ")}`);if(this.#e[e]===d)return;this.#e[e]=d,this.#o()}catch(t){this.#d(`Attribute ${e}: ${t.message}`)}};set showDataTypes(e){this.#a("showDataTypes",e,$)}set showToolbar(e){this.#a("showToolbar",e,$)}set indent(e){this.#a("indent",e,O)}set expandIconType(e){this.#a("expandIconType",e,J,["arrow","square","circle"])}set expanded(e){this.#a("expanded",e,B)}set showSize(e){this.#a("showSize",e,$)}set showCopy(e){this.#a("showCopy",e,$)}set theme(e){try{if(e=z(e),this.#e.theme===e&&this.#t.textContent!=="")return;this.#t.textContent=R(e),this.#e.theme=e}catch(d){this.#d(`Attribute theme: ${d.message}`)}}set data(e){try{e=z(e);let d=JSON.stringify(e);if(this.#e.data===d)return;this.#e.data=d,j(e)?fetch(e).then(r=>r.json()).then(r=>{this.#c=r,this.#o()}):(this.#c=e,this.#o())}catch(d){this.#d(`Attribute data: ${d.message}`)}}get options(){return this.#e}connectedCallback(){window.addEventListener("DOMContentLoaded",()=>{let e=this.textContent;this.textContent="",e&&(this.data=e)})}attributeChangedCallback(e,d,r){if(a.allowedAttributes.indexOf(e)>-1){let o=e.replace(/-([a-z])/g,t=>t[1].toUpperCase());this[o]=r}else this.#d(`Attribute ${e} is not supported and will be ignored!`),this.removeAttribute(e)}#o=()=>{this.#n.update({data:this.#c,expanded:this.#e.expanded,expandIconType:this.#e.expandIconType,indent:this.#e.indent,showDataTypes:this.#e.showDataTypes,showToolbar:this.#e.showToolbar,showSize:this.#e.showSize,showCopy:this.#e.showCopy})}};customElements.get("andypf-json-viewer")||customElements.define("andypf-json-viewer",T);})(); diff --git a/demo/build/themes.js b/demo/build/themes.js deleted file mode 100644 index 4296ced..0000000 --- a/demo/build/themes.js +++ /dev/null @@ -1,27 +0,0 @@ - -/* -MIT License - -Copyright (c) 2025 Andreas Pfau - -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. - -*/ - -var a={apathy:["#031a16","#0b342d","#184e45","#2b685e","#5f9c92","#81b5ac","#a7cec8","#d2e7e4","#3e9688","#3e7996","#3e4c96","#883e96","#963e4c","#96883e","#4c963e","#3e965b"],ashes:["#1c2023","#393f45","#565e65","#747c84","#adb3ba","#c7ccd1","#dfe2e5","#f3f4f5","#c7ae95","#c7c795","#aec795","#95c7ae","#95aec7","#ae95c7","#c795ae","#c79595"],"atelier-dune-light":["#fefbec","#e8e4cf","#a6a28c","#999580","#7d7a68","#6e6b5e","#292824","#20201d","#d73737","#b65611","#ae9513","#60ac39","#1fad83","#6684e1","#b854d4","#d43552"],"atelier-dune":["#20201d","#292824","#6e6b5e","#7d7a68","#999580","#a6a28c","#e8e4cf","#fefbec","#d73737","#b65611","#ae9513","#60ac39","#1fad83","#6684e1","#b854d4","#d43552"],atlas:["#002635","#00384d","#517f8d","#6c8b91","#869696","#a1a19a","#e6e6dc","#fafaf8","#ff5a67","#f08e48","#ffcc1b","#7fc06e","#14747e","#5dd7b9","#9a70a4","#c43060"],bespin:["#28211c","#36312e","#5e5d5c","#666666","#797977","#8a8986","#9d9b97","#baae9e","#cf6a4c","#cf7d34","#f9ee98","#54be0d","#afc4db","#5ea6ea","#9b859d","#937121"],"black-metal":["#000000","#121212","#222222","#333333","#999999","#c1c1c1","#999999","#c1c1c1","#5f8787","#aaaaaa","#a06666","#dd9999","#aaaaaa","#888888","#999999","#444444"],brewer:["#0c0d0e","#2e2f30","#515253","#737475","#959697","#b7b8b9","#dadbdc","#fcfdfe","#e31a1c","#e6550d","#dca060","#31a354","#80b1d3","#3182bd","#756bb1","#b15928"],bright:["#000000","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#f5f5f5","#ffffff","#fb0120","#fc6d24","#fda331","#a1c659","#76c7b7","#6fb3d2","#d381c3","#be643c"],brogrammer:["#1f1f1f","#f81118","#2dc55e","#ecba0f","#2a84d2","#4e5ab7","#1081d6","#d6dbe5","#d6dbe5","#de352e","#1dd361","#f3bd09","#1081d6","#5350b9","#0f7ddb","#ffffff"],"brushtrees-dark":["#485867","#5a6d7a","#6d828e","#8299a1","#98afb5","#b0c5c8","#c9dbdc","#e3efef","#b38686","#d8bba2","#aab386","#87b386","#86b3b3","#868cb3","#b386b2","#b39f9f"],brushtrees:["#e3efef","#c9dbdc","#b0c5c8","#98afb5","#8299a1","#6d828e","#5a6d7a","#485867","#b38686","#d8bba2","#aab386","#87b386","#86b3b3","#868cb3","#b386b2","#b39f9f"],chalk:["#151515","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#f5f5f5","#fb9fb1","#eda987","#ddb26f","#acc267","#12cfc0","#6fc2ef","#e1a3ee","#deaf8f"],circus:["#191919","#202020","#303030","#5f5a60","#505050","#a7a7a7","#808080","#ffffff","#dc657d","#4bb1a7","#c3ba63","#84b97c","#4bb1a7","#639ee4","#b888e2","#b888e2"],"classic-dark":["#151515","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#f5f5f5","#ac4142","#d28445","#f4bf75","#90a959","#75b5aa","#6a9fb5","#aa759f","#8f5536"],"classic-light":["#f5f5f5","#e0e0e0","#d0d0d0","#b0b0b0","#505050","#303030","#202020","#151515","#ac4142","#d28445","#f4bf75","#90a959","#75b5aa","#6a9fb5","#aa759f","#8f5536"],codeschool:["#232c31","#1c3657","#2a343a","#3f4944","#84898c","#9ea7a6","#a7cfa3","#b5d8f6","#2a5491","#43820d","#a03b1e","#237986","#b02f30","#484d79","#c59820","#c98344"],cupcake:["#fbf1f2","#f2f1f4","#d8d5dd","#bfb9c6","#a59daf","#8b8198","#72677e","#585062","#d57e85","#ebb790","#dcb16c","#a3b367","#69a9a7","#7297b9","#bb99b4","#baa58c"],cupertino:["#ffffff","#c0c0c0","#c0c0c0","#808080","#808080","#404040","#404040","#5e5e5e","#c41a15","#eb8500","#826b28","#007400","#318495","#0000ff","#a90d91","#826b28"],darcula:["#2b2b2b","#323232","#323232","#606366","#a4a3a3","#a9b7c6","#ffc66d","#ffffff","#4eade5","#689757","#bbb529","#6a8759","#629755","#9876aa","#cc7832","#808080"],darktooth:["#1d2021","#32302f","#504945","#665c54","#928374","#a89984","#d5c4a1","#fdf4c1","#fb543f","#fe8625","#fac03b","#95c085","#8ba59b","#0d6678","#8f4673","#a87322"],"default-dark":["#181818","#282828","#383838","#585858","#b8b8b8","#d8d8d8","#e8e8e8","#f8f8f8","#ab4642","#dc9656","#f7ca88","#a1b56c","#86c1b9","#7cafc2","#ba8baf","#a16946"],"default-light":["#ffffff","#e8e8e8","#d8d8d8","#b8b8b8","#585858","#383838","#282828","#181818","#ab4642","#dc9656","#ab4642","#a1b56c","#86c1b9","#7cafc2","#ba8baf","#a16946"],dracula:["#282936","#3a3c4e","#4d4f68","#626483","#62d6e8","#e9e9f4","#f1f2f8","#f7f7fb","#ea51b2","#b45bcf","#00f769","#ebff87","#a1efe4","#62d6e8","#b45bcf","#00f769"],eighties:["#2d2d2d","#393939","#515151","#747369","#a09f93","#d3d0c8","#e8e6df","#f2f0ec","#f2777a","#f99157","#ffcc66","#99cc99","#66cccc","#6699cc","#cc99cc","#d27b53"],embers:["#16130f","#2c2620","#433b32","#5a5047","#8a8075","#a39a90","#beb6ae","#dbd6d1","#826d57","#828257","#6d8257","#57826d","#576d82","#6d5782","#82576d","#825757"],flat:["#2c3e50","#34495e","#7f8c8d","#95a5a6","#bdc3c7","#e0e0e0","#f5f5f5","#ecf0f1","#e74c3c","#e67e22","#f1c40f","#2ecc71","#1abc9c","#3498db","#9b59b6","#be643c"],"fruit-soda":["#f1ecf1","#e0dee0","#d8d5d5","#b5b4b6","#979598","#515151","#474545","#2d2c2c","#fe3e31","#fe6d08","#f7e203","#47f74c","#0f9cfd","#2931df","#611fce","#b16f40"],github:["#ffffff","#f5f5f5","#c8c8fa","#969896","#e8e8e8","#333333","#ffffff","#969896","#ed6a43","#0086b3","#795da3","#183691","#183691","#795da3","#a71d5d","#333333"],"google-dark":["#1d1f21","#282a2e","#373b41","#969896","#b4b7b4","#c5c8c6","#e0e0e0","#ffffff","#cc342b","#f96a38","#fba922","#198844","#3971ed","#3971ed","#a36ac7","#3971ed"],"google-light":["#ffffff","#e0e0e0","#c5c8c6","#b4b7b4","#969896","#373b41","#282a2e","#1d1f21","#cc342b","#f96a38","#fba922","#198844","#3971ed","#3971ed","#a36ac7","#3971ed"],"grayscale-dark":["#101010","#252525","#464646","#525252","#ababab","#b9b9b9","#e3e3e3","#f7f7f7","#7c7c7c","#999999","#a0a0a0","#8e8e8e","#868686","#686868","#747474","#5e5e5e"],"grayscale-light":["#f7f7f7","#e3e3e3","#b9b9b9","#ababab","#525252","#464646","#252525","#101010","#7c7c7c","#999999","#a0a0a0","#8e8e8e","#868686","#686868","#747474","#5e5e5e"],greenscreen:["#001100","#003300","#005500","#007700","#009900","#00bb00","#00dd00","#00ff00","#007700","#009900","#007700","#00bb00","#005500","#009900","#00bb00","#005500"],"gruvbox-dark-hard":["#1d2021","#3c3836","#504945","#665c54","#bdae93","#d5c4a1","#ebdbb2","#fbf1c7","#fb4934","#fe8019","#fabd2f","#b8bb26","#8ec07c","#83a598","#d3869b","#d65d0e"],"gruvbox-light-hard":["#f9f5d7","#ebdbb2","#d5c4a1","#bdae93","#665c54","#504945","#3c3836","#282828","#9d0006","#af3a03","#b57614","#79740e","#427b58","#076678","#8f3f71","#d65d0e"],"harmonic-dark":["#0b1c2c","#223b54","#405c79","#627e99","#aabcce","#cbd6e2","#e5ebf1","#f7f9fb","#bf8b56","#bfbf56","#8bbf56","#56bf8b","#568bbf","#8b56bf","#bf568b","#bf5656"],"harmonic-light":["#f7f9fb","#e5ebf1","#cbd6e2","#aabcce","#627e99","#405c79","#223b54","#0b1c2c","#bf8b56","#bfbf56","#8bbf56","#56bf8b","#568bbf","#8b56bf","#bf568b","#bf5656"],"heetch-light":["#feffff","#392551","#7b6d8b","#9c92a8","#ddd6e5","#5a496e","#470546","#190134","#27d9d5","#bdb6c5","#5ba2b6","#f80059","#c33678","#47f9f5","#bd0152","#dedae2"],heetch:["#190134","#392551","#5a496e","#7b6d8b","#9c92a8","#bdb6c5","#dedae2","#feffff","#27d9d5","#5ba2b6","#8f6c97","#c33678","#f80059","#bd0152","#82034c","#470546"],helios:["#1d2021","#383c3e","#53585b","#6f7579","#cdcdcd","#d5d5d5","#dddddd","#e5e5e5","#d72638","#eb8413","#f19d1a","#88b92d","#1ba595","#1e8bac","#be4264","#c85e0d"],hopscotch:["#322931","#433b42","#5c545b","#797379","#989498","#b9b5b8","#d5d3d5","#ffffff","#dd464c","#fd8b19","#fdcc59","#8fc13e","#149b93","#1290bf","#c85e7c","#b33508"],"horizon-dark":["#1c1e26","#232530","#2e303e","#676a8d","#ced1d0","#cbced0","#dcdfe4","#e3e6ee","#e93c58","#e58d7d","#efb993","#efaf8e","#24a8b4","#df5273","#b072d1","#e4a382"],"ia-dark":["#1a1a1a","#222222","#1d414d","#767676","#b8b8b8","#cccccc","#e8e8e8","#f8f8f8","#d88568","#d86868","#b99353","#83a471","#7c9cae","#8eccdd","#b98eb2","#8b6c37"],"ia-light":["#f6f6f6","#dedede","#bde5f2","#898989","#767676","#181818","#e8e8e8","#898989","#9c5a02","#c43e18","#c48218","#38781c","#2d6bb1","#48bac2","#a94598","#8b6c37"],icy:["#021012","#031619","#041f23","#052e34","#064048","#095b67","#0c7c8c","#109cb0","#16c1d9","#b3ebf2","#80deea","#4dd0e1","#26c6da","#00bcd4","#00acc1","#0097a7"],isotope:["#000000","#404040","#606060","#808080","#c0c0c0","#d0d0d0","#e0e0e0","#ffffff","#ff0000","#ff9900","#ff0099","#33ff00","#00ffff","#0066ff","#cc00ff","#3300ff"],macintosh:["#000000","#404040","#404040","#808080","#808080","#c0c0c0","#c0c0c0","#ffffff","#dd0907","#ff6403","#fbf305","#1fb714","#02abea","#0000d3","#4700a5","#90713a"],marrakesh:["#201602","#302e00","#5f5b17","#6c6823","#86813b","#948e48","#ccc37a","#faf0a5","#c35359","#b36144","#a88339","#18974e","#75a738","#477ca1","#8868b3","#b3588e"],materia:["#263238","#2c393f","#37474f","#707880","#c9ccd3","#cdd3de","#d5dbe5","#ffffff","#ec5f67","#ea9560","#ffcc00","#8bd649","#80cbc4","#89ddff","#82aaff","#ec5f67"],"material-lighter":["#fafafa","#e7eaec","#cceae7","#ccd7da","#8796b0","#80cbc4","#80cbc4","#666666","#ff5370","#f76d47","#ffb62c","#91b859","#39adb5","#6182b8","#7c4dff","#e53935"],material:["#263238","#2e3c43","#314549","#546e7a","#b2ccd6","#eeffff","#eeffff","#ffffff","#f07178","#f78c6c","#ffcb6b","#c3e88d","#89ddff","#82aaff","#c792ea","#ff5370"],"mellow-purple":["#1e0528","#1a092d","#331354","#320f55","#873582","#ffeeff","#ffeeff","#f8c0ff","#00d9e9","#aa00a3","#955ae7","#05cb0d","#b900b1","#550068","#8991bb","#4d6fff"],"mexico-light":["#f8f8f8","#e8e8e8","#d8d8d8","#b8b8b8","#585858","#383838","#282828","#181818","#ab4642","#dc9656","#f79a0e","#538947","#4b8093","#7cafc2","#96609e","#a16946"],mocha:["#3b3228","#534636","#645240","#7e705a","#b8afad","#d0c8c6","#e9e1dd","#f5eeeb","#cb6077","#d28b71","#f4bc87","#beb55b","#7bbda4","#8ab3b5","#a89bb9","#bb9584"],monokai:["#272822","#383830","#49483e","#75715e","#a59f85","#f8f8f2","#f5f4f1","#f9f8f5","#f92672","#fd971f","#f4bf75","#a6e22e","#a1efe4","#66d9ef","#ae81ff","#cc6633"],nord:["#2e3440","#3b4252","#434c5e","#4c566a","#d8dee9","#e5e9f0","#eceff4","#8fbcbb","#88c0d0","#81a1c1","#5e81ac","#bf616a","#d08770","#ebcb8b","#a3be8c","#b48ead"],ocean:["#2b303b","#343d46","#4f5b66","#65737e","#a7adba","#c0c5ce","#dfe1e8","#eff1f5","#bf616a","#d08770","#ebcb8b","#a3be8c","#96b5b4","#8fa1b3","#b48ead","#ab7967"],"one-light":["#fafafa","#f0f0f1","#e5e5e6","#a0a1a7","#696c77","#383a42","#202227","#090a0b","#ca1243","#d75f00","#c18401","#50a14f","#0184bc","#4078f2","#a626a4","#986801"],onedark:["#282c34","#353b45","#3e4451","#545862","#565c64","#abb2bf","#b6bdca","#c8ccd4","#e06c75","#d19a66","#e5c07b","#98c379","#56b6c2","#61afef","#c678dd","#be5046"],"papercolor-dark":["#1c1c1c","#af005f","#5faf00","#d7af5f","#5fafd7","#808080","#d7875f","#d0d0d0","#585858","#5faf5f","#afd700","#af87d7","#ffaf00","#ff5faf","#00afaf","#5f8787"],"papercolor-light":["#eeeeee","#af0000","#008700","#5f8700","#0087af","#878787","#005f87","#444444","#bcbcbc","#d70000","#d70087","#8700af","#d75f00","#d75f00","#005faf","#005f87"],paraiso:["#2f1e2e","#41323f","#4f424c","#776e71","#8d8687","#a39e9b","#b9b6b0","#e7e9db","#ef6155","#f99b15","#fec418","#48b685","#5bc4bf","#06b6ef","#815ba4","#e96ba8"],pico:["#000000","#1d2b53","#7e2553","#008751","#ab5236","#5f574f","#c2c3c7","#fff1e8","#ff004d","#ffa300","#fff024","#00e756","#29adff","#83769c","#ff77a8","#ffccaa"],pop:["#000000","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#ffffff","#eb008a","#f29333","#f8ca12","#37b349","#00aabb","#0e5a94","#b31e8d","#7a2d00"],railscasts:["#2b2b2b","#272935","#3a4055","#5a647e","#d4cfc9","#e6e1dc","#f4f1ed","#f9f7f3","#da4939","#cc7833","#ffc66d","#a5c261","#519f50","#6d9cbe","#b6b3eb","#bc9458"],seti:["#151718","#282a2b","#3b758c","#41535b","#43a5d5","#d6d6d6","#eeeeee","#ffffff","#cd3f45","#db7b55","#e6cd69","#9fca56","#55dbbe","#55b5db","#a074c4","#8a553f"],"solarized-dark":["#002b36","#073642","#586e75","#657b83","#839496","#93a1a1","#eee8d5","#fdf6e3","#dc322f","#cb4b16","#b58900","#859900","#2aa198","#268bd2","#6c71c4","#d33682"],"solarized-light":["#fdf6e3","#eee8d5","#93a1a1","#839496","#657b83","#586e75","#073642","#002b36","#dc322f","#cb4b16","#b58900","#859900","#2aa198","#268bd2","#6c71c4","#d33682"],spacemacs:["#1f2022","#282828","#444155","#585858","#b8b8b8","#a3a3a3","#e8e8e8","#f8f8f8","#f2241f","#ffa500","#b1951d","#67b11d","#2d9574","#4f97d7","#a31db1","#b03060"],"summerfruit-dark":["#151515","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#ffffff","#ff0086","#fd8900","#aba800","#00c918","#1faaaa","#3777e6","#ad00a1","#cc6633"],"summerfruit-light":["#ffffff","#e0e0e0","#d0d0d0","#b0b0b0","#000000","#101010","#151515","#202020","#ff0086","#fd8900","#aba800","#00c918","#1faaaa","#3777e6","#ad00a1","#cc6633"],"tomorrow-night":["#1d1f21","#282a2e","#373b41","#969896","#b4b7b4","#c5c8c6","#e0e0e0","#ffffff","#cc6666","#de935f","#f0c674","#b5bd68","#8abeb7","#81a2be","#b294bb","#a3685a"],tomorrow:["#ffffff","#e0e0e0","#d6d6d6","#8e908c","#969896","#4d4d4c","#282a2e","#1d1f21","#c82829","#f5871f","#eab700","#718c00","#3e999f","#4271ae","#8959a8","#a3685a"],tube:["#231f20","#1c3f95","#5a5758","#737171","#959ca1","#d9d8d8","#e7e7e8","#ffffff","#ee2e24","#f386a1","#ffd204","#00853e","#85cebc","#009ddc","#98005d","#b06110"],twilight:["#1e1e1e","#323537","#464b50","#5f5a60","#838184","#a7a7a7","#c3c3c3","#ffffff","#cf6a4c","#cda869","#f9ee98","#8f9d6a","#afc4db","#7587a6","#9b859d","#9b703f"],woodland:["#231e18","#302b25","#48413a","#9d8b70","#b4a490","#cabcb1","#d7c8bc","#e4d4c8","#d35c5c","#ca7f32","#e0ac16","#b7ba53","#6eb958","#88a4d3","#bb90e2","#b49368"],zenburn:["#383838","#404040","#606060","#6f6f6f","#808080","#dcdccc","#c0c0c0","#ffffff","#dca3a3","#dfaf8f","#e0cf9f","#5f7f5f","#93e0e3","#7cb8bb","#dc8cc3","#000000"]},t=Object.keys(a),o=f=>{let b;if(typeof f=="string"){if(a[f]===void 0)throw new Error(`${f} not found`);b=a[f].reduce((e,c,d)=>{let r=`base0${d.toString(16).toUpperCase()}`;return e[r]=c,e},{})}else b=f;return`.container{${Object.keys(b).map(e=>`--${e}: ${b[e]};`).join("")}}`};export{t as availableThemes,o as themeStyles}; diff --git a/demo/index.html b/demo/index.html deleted file mode 100644 index 7d0967b..0000000 --- a/demo/index.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - - JsonViewer - - - - - - - - - - - - -
- -

Json Viewer Demo

-

A modern JSON data visualization tool

-
- - - -
- -
-
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
-
-
- - - - -
-
- - - - diff --git a/demo/index.js b/demo/index.js deleted file mode 100644 index e7958c4..0000000 --- a/demo/index.js +++ /dev/null @@ -1,177 +0,0 @@ -const defaultTheme = "monokai" -const defaultIndent = 2 -const defaultExpanded = 2 -const defaultShowDataTypes = true -const defaultShowToolbar = true -const defaultShowSize = true -const defaultShowCopy = true -const defaultExpandIconType = "square" - -const jsonViewer = document.getElementById("andypf-json-viewer") -jsonViewer.id = "json" -jsonViewer.expanded = defaultExpanded -jsonViewer.indent = defaultIndent -jsonViewer.showDataTypes = defaultShowDataTypes -jsonViewer.theme = defaultTheme -jsonViewer.showToolbar = defaultShowToolbar -jsonViewer.showSize = defaultShowSize -jsonViewer.showCopy = defaultShowCopy -jsonViewer.expandIconType = defaultExpandIconType -jsonViewer.data = { - string: "this is a test", - integer: 42, - array: [1, 2, 3, "test", NaN], - float: 3.14159, - undefined: undefined, - object: { - "first-child": true, - "second-child": false, - "last-child": null, - strings: { - veryLong: - "The 'json-viewer' is a powerful tool designed specifically for displaying and analyzing JSON data. JSON (JavaScript Object Notation) is a widely used data format for transmission and storage. It's easy to understand and write, but when it comes to visualizing extensive or complex JSON data, it can be a challenge.", - }, - }, - token: - "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c", - string_number: "1234", - date: new Date(), -} - -const output = document.getElementById("output") -const updateOutput = () => { - const json = JSON.parse(jsonViewer.options.data) - if (json?.object?.strings?.veryLong) json.object.strings.veryLong = json?.object.strings.veryLong.slice(0, 50) + "..." - output.innerText = ` - k !== "data") - .map((k) => `${k.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}="${jsonViewer.options[k]}"`) - .join("\n ")}> -${JSON.stringify(json, null, 2)} -` -} - -// select theme -const select = document.getElementById("theme") -const loadingOption = document.createElement("option") -loadingOption.value = "loading" -loadingOption.innerText = "loading..." -select.append(loadingOption) - -// Load available themes -import("./build/themes.js").then((module) => { - loadingOption.remove() - module.availableThemes.forEach((theme) => { - const option = document.createElement("option") - option.value = theme - option.innerText = theme - if (theme === defaultTheme) option.selected = true - select.append(option) - }) - // add event listener - select.addEventListener("change", function () { - jsonViewer.setAttribute("theme", this.value) - updateOutput() - }) -}) - -// expanded -const expandedSelect = document.getElementById("expanded") -const expandedValues = ["true", "false", 0, 1, 2, 3] -expandedValues.forEach((v) => { - const option = document.createElement("option") - option.value = v - option.innerText = v - if (v === defaultExpanded) option.selected = true - expandedSelect.append(option) -}) -expandedSelect.addEventListener("change", function () { - jsonViewer.expanded = this.value - updateOutput() -}) - -// indent -const indentSelect = document.getElementById("indent") -Array.from({ length: 10 }, (_, i) => i).forEach((v) => { - const option = document.createElement("option") - option.value = v - option.innerText = v - if (v === defaultIndent) option.selected = true - indentSelect.append(option) -}) -indentSelect.addEventListener("change", function () { - jsonViewer.indent = this.value - updateOutput() -}) - -// expand icon -const expandIconSelect = document.getElementById("expand-icon-type") -const expandIconValues = ["arrow", "square", "circle"] -expandIconValues.forEach((v) => { - const option = document.createElement("option") - option.value = v - option.innerText = v - if (v === defaultExpandIconType) option.selected = true - expandIconSelect.append(option) -}) -expandIconSelect.addEventListener("change", function () { - jsonViewer.expandIconType = this.value - updateOutput() -}) - -// show data types -const showDataTypesCheckbox = document.getElementById("show-data-types") -showDataTypesCheckbox.checked = defaultShowDataTypes -showDataTypesCheckbox.addEventListener("change", function () { - jsonViewer.showDataTypes = this.checked - updateOutput() -}) - -// show toolbar -const showToolbarCheckbox = document.getElementById("show-toolbar") -showToolbarCheckbox.checked = defaultShowToolbar -showToolbarCheckbox.addEventListener("change", function () { - jsonViewer.showToolbar = this.checked - updateOutput() -}) - -const showSizeCheckbox = document.getElementById("show-size") -showSizeCheckbox.checked = defaultShowSize -showSizeCheckbox.addEventListener("change", function () { - jsonViewer.showSize = this.checked - updateOutput() -}) - -const showCopyCheckbox = document.getElementById("show-copy") -showCopyCheckbox.checked = defaultShowCopy -showCopyCheckbox.addEventListener("change", function () { - jsonViewer.showCopy = this.checked - updateOutput() -}) - -const showCodeBox = document.getElementById("show-code") -showCodeBox.checked = false -showCodeBox.addEventListener("change", function () { - document.getElementById("html-code").classList.toggle("hidden") -}) - -const showSourceBox = document.getElementById("show-source") -showSourceBox.checked = false -showSourceBox.addEventListener("change", function () { - document.getElementById("source-code").classList.toggle("hidden") -}) - -const sourceCode = document.getElementById("source-code") -sourceCode.value = JSON.stringify(JSON.parse(jsonViewer.options.data), null, 2) -sourceCode.addEventListener("input", function () { - try { - const newData = JSON.parse(this.value) - jsonViewer.data = newData - jsonViewer.expanded = true - updateOutput() - } catch (e) { - console.warn(e) - } -}) -updateOutput() diff --git a/demo/site.webmanifest b/demo/site.webmanifest deleted file mode 100644 index 548927a..0000000 --- a/demo/site.webmanifest +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "", - "short_name": "", - "icons": [ - { - "src": "assets/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "assets/android-chrome-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ], - "theme_color": "#ffffff", - "background_color": "#ffffff", - "display": "standalone" -} diff --git a/demo/styles.css b/demo/styles.css deleted file mode 100644 index 82a3a4d..0000000 --- a/demo/styles.css +++ /dev/null @@ -1,142 +0,0 @@ -body { - font-family: sans-serif; -} - -.input-element { - display: flex; - flex-direction: column; - justify-content: space-between; - margin-bottom: 15px; -} -.input-element label { - margin-bottom: 5px; -} - -.title { - padding: 10px; - display:flex; - justify-content: space-between; - align-items: center; -} - -.title h1 { - color: #333333; -} -.title .slogan { - color: #e8772e; - margin-top: -20px; - font-size: small; -} - -select, -input { - padding: 10px; - border: 1px solid #ccc; - border-radius: 5px; -} -form.options { - padding: 10px; - min-width: 300px; -} - -.display { - flex-grow: 1; -} - -.options-container { - display: flex; - flex-direction: column; -} - -.container { - display: flex; - flex-direction: row; -} - -/* The switch - the box around the slider */ -.switch { - position: relative; - display: inline-block; - width: 54px; - height: 28px; -} - -/* Hide default HTML checkbox */ -.switch input { - opacity: 0; - width: 0; - height: 0; -} - -/* The slider */ -.slider { - position: absolute; - cursor: pointer; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: #ccc; - -webkit-transition: 0.4s; - transition: 0.4s; -} - -.slider:before { - position: absolute; - content: ""; - height: 20px; - width: 20px; - left: 4px; - bottom: 4px; - background-color: white; - -webkit-transition: 0.4s; - transition: 0.4s; -} - -input:checked + .slider { - background-color: #e8772e; -} - -input:focus + .slider { - box-shadow: 0 0 1px #e8772e; -} - -input:checked + .slider:before { - -webkit-transform: translateX(26px); - -ms-transform: translateX(26px); - transform: translateX(26px); -} - -/* Rounded sliders */ -.slider.round { - border-radius: 28px; -} - -.slider.round:before { - border-radius: 50%; -} - -pre.html-code { - background-color: #f5f5f5; - padding: 10px; - border: 1px solid #ccc; - border-radius: 5px; - overflow: auto; - font-family: "Courier New", monospace; - font-size: 14px; -} - -.hidden { - display: none; -} - -pre.html-code code { - display: block; - white-space: pre; - color: #333; -} - -.source-code { - width: 100%; - height: 400px; -} diff --git a/dist/cjs/index.js b/dist/cjs/index.js deleted file mode 100644 index d1d5a5b..0000000 --- a/dist/cjs/index.js +++ /dev/null @@ -1,28 +0,0 @@ - -/* -MIT License - -Copyright (c) 2025 Andreas Pfau - -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. - -*/ - -var q=`.container{background-color:var(--base00);color:var(--base05);padding:10px;letter-spacing:0.5px;font-family:monospace;border-radius:3px}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;padding-bottom:5px;border-bottom:solid 1px var(--base02)}.toolbar .options,.toolbar .search-wrapper{display:flex;align-items:center}.toolbar .icon-wrapper{height:15px;display:flex;align-items:center;padding:2px 5px}.toolbar .icon-wrapper:hover{background-color:var(--base02);border-radius:3px}.toolbar .icon-wrapper:first-child{margin-left:0px}.toolbar .search.icon{margin-right:5px}.toolbar .search-input{border:none;background:transparent;outline:none;flex:1;font-size:16px;color:var(--base0D)}.match{background-color:yellow;font-weight:bold;color:red}.data-row{padding:3px 0}.data-row .data-row{border-left:solid 1px var(--base02);padding-left:20px;margin-left:5px;display:none}.data-row.expanded>.data-row{display:block}.data-row .key-value-wrapper{display:flex;align-items:center}.data-row .key{color:var(--base07)}.data-row .key.number{color:var(--base0C)}.data-row .colon{color:var(--base07);margin:0 5px 0 0}.clickable{cursor:pointer}.data-row .opening-parenthesis,.data-row .closing-parenthesis{color:var(--base07)}.data-row .ellipsis{color:var(--base09)}.data-row.expanded>.key-value-wrapper .closing-parenthesis,.data-row.expanded>.key-value-wrapper .ellipsis{display:none}.data-row>.closing-parenthesis{display:none}.data-row.expanded>.closing-parenthesis{display:inline-block}.data-row .items-size{margin-left:10px;color:var(--base04);font-style:italic;display:none}.show-size .data-row .items-size{display:inline-block}.data-row .value.bool,.data-row .value.boolean{color:var(--base0E)}.data-row .value.function{color:var(--base0D)}.data-row .value.int,.data-row .value.integer{color:var(--base0F)}.data-row .value.float{color:var(--base0B)}.data-row .value.string{color:var(--base09)}.data-row .value.string .content{overflow-wrap:break-word}.data-row .value.string .content::before{content:open-quote}.data-row .value.string .content::after{content:close-quote}.data-row .value.regexp{color:var(--base0A)}.data-row .value.nan{color:var(--base08)}.data-row .value.null{color:var(--base0A)}.data-row .value.undefined{color:var(--base05)}.data-row .value.date{color:var(--base0D)}.data-row .value.nan,.data-row .value.null,.data-row .value.undefined{border-radius:3px;background-color:var(--base02);padding:1px 2px}.data-row .value .type{font-size:smaller;margin-right:4px;opacity:0.8;display:none}.data-row .value .value-data{word-break:break-all}.show-data-types .data-row .value .type{display:inline-block}.icon-wrapper,.copy-icon-wrapper{display:inline-block;cursor:pointer}.icon{display:block;position:relative}.icon:before,.icon:after{content:"";position:absolute;display:block}.expand.icon{margin-right:5px}.expand-icon-arrow .expand.icon{margin-left:3px;width:0;height:0;border-left:solid 6px var(--base0E);border-top:solid 6px transparent;border-bottom:solid 6px transparent}.expand-icon-arrow .expanded>.key-value-wrapper .expand.icon,.expand-icon-arrow .expanded.icon.expand{transform:rotate(90deg);border-left-color:var(--base0D)}.expand-icon-square .expand.icon,.expand-icon-circle .expand.icon{display:block;width:9px;height:9px;border-radius:2px;border:solid 1px var(--base0E)}.expand-icon-circle .expand.icon{border-radius:50%}.expand-icon-square .expand.icon:before,.expand-icon-circle .expand.icon:before,.expand-icon-square .expand.icon:after,.expand-icon-circle .expand.icon:after{width:5px;height:1px;background-color:var(--base0E);left:2px;top:4px}.expand-icon-square .expand.icon:after,.expand-icon-circle .expand.icon:after{transform:rotate(90deg)}.expand-icon-square .expanded>.key-value-wrapper .expand.icon:after,.expand-icon-circle .expanded>.key-value-wrapper .expand.icon:after,.expand-icon-square .expand.icon.expanded:after,.expand-icon-circle .expand.icon.expanded:after{display:none}.expand-icon-square .expanded>.key-value-wrapper .expand.icon,.expand-icon-circle .expanded>.key-value-wrapper .expand.icon,.expand-icon-square .expand.icon.expanded,.expand-icon-circle .expanded.expand.icon{border-color:var(--base0D)}.expand-icon-square .expanded>.key-value-wrapper .expand.icon:before,.expand-icon-circle .expanded>.key-value-wrapper .expand.icon:before,.expand-icon-square .expanded.expand.icon:before,.expand-icon-circle .expanded.expand.icon:before{background-color:var(--base0D)}.icon-wrapper{display:inline-block;cursor:pointer}.show-copy .key-value-wrapper:hover .icon.copy{display:block}.copy.icon{margin-left:10px;display:none;width:8px;height:10px;border:solid 1px var(--base0D);border-radius:1px;position:relative;top:4px;transition:0.2s all}.copy.icon:active{transform:scale(1.6);background-color:var(--base0B)}.copy.icon:before{content:"";display:block;left:-3px;top:-3px;width:8px;height:10px;border-top:solid 1px var(--base0D);border-left:solid 1px var(--base0D);border-radius:1px 0 0 0}.plus.icon{width:11px;height:1px;background-color:var(--base0D)}.plus.icon:after{content:"";width:11px;height:1px;background-color:var(--base0D);-webkit-transform:rotate(90deg);transform:rotate(90deg)}.minus.icon{width:11px;height:1px;background-color:var(--base0D)}.indent.icon{color:var(--base0D);width:17px;height:8px;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D)}.indent.icon:before{content:"";position:absolute;top:2px;right:0;width:11px;height:2px;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D)}.indent.icon:after{content:"";position:absolute;top:1px;width:0;height:0;border-top:solid 3px transparent;border-bottom:solid 3px transparent;border-left:solid 3px var(--base0D);border-right:solid 3px transparent}.outdent.icon{color:var(--base0D);margin-left:2px;width:17px;height:8px;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D)}.outdent.icon:before{content:"";top:2px;right:0;width:11px;height:2px;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D)}.outdent.icon:after{content:"";top:1px;left:-3px;width:0;height:0;border-top:solid 3px transparent;border-bottom:solid 3px transparent;border-left:solid 3px transparent;border-right:solid 3px var(--base0D)}.refresh.icon{color:var(--base0D);width:10px;height:10px;border-radius:50%;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D);border-left:solid 1px transparent;border-right:solid 1px var(--base0D)}.refresh.icon:before{content:"";left:1px;top:8px;width:3px;height:3px;border-top:solid 1px var(--base0D);border-left:solid 1px var(--base0D);-webkit-transform:rotate(-22.5deg);transform:rotate(-22.5deg)}.info.icon{width:12px;height:11px;border:solid 1px var(--base0D);border-radius:2px}.info.icon::before{top:5px;left:5px;width:2px;height:5px;background-color:var(--base0D)}.info.icon::after{top:2px;left:5px;width:2px;height:2px;background-color:var(--base0D)}.info.icon.active{background-color:var(--base0D)}.info.icon.active::before,.info.icon.active::after{background-color:var(--base02)}.search.icon{color:var(--base0D);width:11px;height:11px;border:solid 1px var(--base0D);border-radius:100%;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.search.icon:before{content:"";top:11px;left:5px;height:6px;width:1px;background-color:var(--base0D)} -`;var A={apathy:["#031a16","#0b342d","#184e45","#2b685e","#5f9c92","#81b5ac","#a7cec8","#d2e7e4","#3e9688","#3e7996","#3e4c96","#883e96","#963e4c","#96883e","#4c963e","#3e965b"],ashes:["#1c2023","#393f45","#565e65","#747c84","#adb3ba","#c7ccd1","#dfe2e5","#f3f4f5","#c7ae95","#c7c795","#aec795","#95c7ae","#95aec7","#ae95c7","#c795ae","#c79595"],"atelier-dune-light":["#fefbec","#e8e4cf","#a6a28c","#999580","#7d7a68","#6e6b5e","#292824","#20201d","#d73737","#b65611","#ae9513","#60ac39","#1fad83","#6684e1","#b854d4","#d43552"],"atelier-dune":["#20201d","#292824","#6e6b5e","#7d7a68","#999580","#a6a28c","#e8e4cf","#fefbec","#d73737","#b65611","#ae9513","#60ac39","#1fad83","#6684e1","#b854d4","#d43552"],atlas:["#002635","#00384d","#517f8d","#6c8b91","#869696","#a1a19a","#e6e6dc","#fafaf8","#ff5a67","#f08e48","#ffcc1b","#7fc06e","#14747e","#5dd7b9","#9a70a4","#c43060"],bespin:["#28211c","#36312e","#5e5d5c","#666666","#797977","#8a8986","#9d9b97","#baae9e","#cf6a4c","#cf7d34","#f9ee98","#54be0d","#afc4db","#5ea6ea","#9b859d","#937121"],"black-metal":["#000000","#121212","#222222","#333333","#999999","#c1c1c1","#999999","#c1c1c1","#5f8787","#aaaaaa","#a06666","#dd9999","#aaaaaa","#888888","#999999","#444444"],brewer:["#0c0d0e","#2e2f30","#515253","#737475","#959697","#b7b8b9","#dadbdc","#fcfdfe","#e31a1c","#e6550d","#dca060","#31a354","#80b1d3","#3182bd","#756bb1","#b15928"],bright:["#000000","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#f5f5f5","#ffffff","#fb0120","#fc6d24","#fda331","#a1c659","#76c7b7","#6fb3d2","#d381c3","#be643c"],brogrammer:["#1f1f1f","#f81118","#2dc55e","#ecba0f","#2a84d2","#4e5ab7","#1081d6","#d6dbe5","#d6dbe5","#de352e","#1dd361","#f3bd09","#1081d6","#5350b9","#0f7ddb","#ffffff"],"brushtrees-dark":["#485867","#5a6d7a","#6d828e","#8299a1","#98afb5","#b0c5c8","#c9dbdc","#e3efef","#b38686","#d8bba2","#aab386","#87b386","#86b3b3","#868cb3","#b386b2","#b39f9f"],brushtrees:["#e3efef","#c9dbdc","#b0c5c8","#98afb5","#8299a1","#6d828e","#5a6d7a","#485867","#b38686","#d8bba2","#aab386","#87b386","#86b3b3","#868cb3","#b386b2","#b39f9f"],chalk:["#151515","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#f5f5f5","#fb9fb1","#eda987","#ddb26f","#acc267","#12cfc0","#6fc2ef","#e1a3ee","#deaf8f"],circus:["#191919","#202020","#303030","#5f5a60","#505050","#a7a7a7","#808080","#ffffff","#dc657d","#4bb1a7","#c3ba63","#84b97c","#4bb1a7","#639ee4","#b888e2","#b888e2"],"classic-dark":["#151515","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#f5f5f5","#ac4142","#d28445","#f4bf75","#90a959","#75b5aa","#6a9fb5","#aa759f","#8f5536"],"classic-light":["#f5f5f5","#e0e0e0","#d0d0d0","#b0b0b0","#505050","#303030","#202020","#151515","#ac4142","#d28445","#f4bf75","#90a959","#75b5aa","#6a9fb5","#aa759f","#8f5536"],codeschool:["#232c31","#1c3657","#2a343a","#3f4944","#84898c","#9ea7a6","#a7cfa3","#b5d8f6","#2a5491","#43820d","#a03b1e","#237986","#b02f30","#484d79","#c59820","#c98344"],cupcake:["#fbf1f2","#f2f1f4","#d8d5dd","#bfb9c6","#a59daf","#8b8198","#72677e","#585062","#d57e85","#ebb790","#dcb16c","#a3b367","#69a9a7","#7297b9","#bb99b4","#baa58c"],cupertino:["#ffffff","#c0c0c0","#c0c0c0","#808080","#808080","#404040","#404040","#5e5e5e","#c41a15","#eb8500","#826b28","#007400","#318495","#0000ff","#a90d91","#826b28"],darcula:["#2b2b2b","#323232","#323232","#606366","#a4a3a3","#a9b7c6","#ffc66d","#ffffff","#4eade5","#689757","#bbb529","#6a8759","#629755","#9876aa","#cc7832","#808080"],darktooth:["#1d2021","#32302f","#504945","#665c54","#928374","#a89984","#d5c4a1","#fdf4c1","#fb543f","#fe8625","#fac03b","#95c085","#8ba59b","#0d6678","#8f4673","#a87322"],"default-dark":["#181818","#282828","#383838","#585858","#b8b8b8","#d8d8d8","#e8e8e8","#f8f8f8","#ab4642","#dc9656","#f7ca88","#a1b56c","#86c1b9","#7cafc2","#ba8baf","#a16946"],"default-light":["#ffffff","#e8e8e8","#d8d8d8","#b8b8b8","#585858","#383838","#282828","#181818","#ab4642","#dc9656","#ab4642","#a1b56c","#86c1b9","#7cafc2","#ba8baf","#a16946"],dracula:["#282936","#3a3c4e","#4d4f68","#626483","#62d6e8","#e9e9f4","#f1f2f8","#f7f7fb","#ea51b2","#b45bcf","#00f769","#ebff87","#a1efe4","#62d6e8","#b45bcf","#00f769"],eighties:["#2d2d2d","#393939","#515151","#747369","#a09f93","#d3d0c8","#e8e6df","#f2f0ec","#f2777a","#f99157","#ffcc66","#99cc99","#66cccc","#6699cc","#cc99cc","#d27b53"],embers:["#16130f","#2c2620","#433b32","#5a5047","#8a8075","#a39a90","#beb6ae","#dbd6d1","#826d57","#828257","#6d8257","#57826d","#576d82","#6d5782","#82576d","#825757"],flat:["#2c3e50","#34495e","#7f8c8d","#95a5a6","#bdc3c7","#e0e0e0","#f5f5f5","#ecf0f1","#e74c3c","#e67e22","#f1c40f","#2ecc71","#1abc9c","#3498db","#9b59b6","#be643c"],"fruit-soda":["#f1ecf1","#e0dee0","#d8d5d5","#b5b4b6","#979598","#515151","#474545","#2d2c2c","#fe3e31","#fe6d08","#f7e203","#47f74c","#0f9cfd","#2931df","#611fce","#b16f40"],github:["#ffffff","#f5f5f5","#c8c8fa","#969896","#e8e8e8","#333333","#ffffff","#969896","#ed6a43","#0086b3","#795da3","#183691","#183691","#795da3","#a71d5d","#333333"],"google-dark":["#1d1f21","#282a2e","#373b41","#969896","#b4b7b4","#c5c8c6","#e0e0e0","#ffffff","#cc342b","#f96a38","#fba922","#198844","#3971ed","#3971ed","#a36ac7","#3971ed"],"google-light":["#ffffff","#e0e0e0","#c5c8c6","#b4b7b4","#969896","#373b41","#282a2e","#1d1f21","#cc342b","#f96a38","#fba922","#198844","#3971ed","#3971ed","#a36ac7","#3971ed"],"grayscale-dark":["#101010","#252525","#464646","#525252","#ababab","#b9b9b9","#e3e3e3","#f7f7f7","#7c7c7c","#999999","#a0a0a0","#8e8e8e","#868686","#686868","#747474","#5e5e5e"],"grayscale-light":["#f7f7f7","#e3e3e3","#b9b9b9","#ababab","#525252","#464646","#252525","#101010","#7c7c7c","#999999","#a0a0a0","#8e8e8e","#868686","#686868","#747474","#5e5e5e"],greenscreen:["#001100","#003300","#005500","#007700","#009900","#00bb00","#00dd00","#00ff00","#007700","#009900","#007700","#00bb00","#005500","#009900","#00bb00","#005500"],"gruvbox-dark-hard":["#1d2021","#3c3836","#504945","#665c54","#bdae93","#d5c4a1","#ebdbb2","#fbf1c7","#fb4934","#fe8019","#fabd2f","#b8bb26","#8ec07c","#83a598","#d3869b","#d65d0e"],"gruvbox-light-hard":["#f9f5d7","#ebdbb2","#d5c4a1","#bdae93","#665c54","#504945","#3c3836","#282828","#9d0006","#af3a03","#b57614","#79740e","#427b58","#076678","#8f3f71","#d65d0e"],"harmonic-dark":["#0b1c2c","#223b54","#405c79","#627e99","#aabcce","#cbd6e2","#e5ebf1","#f7f9fb","#bf8b56","#bfbf56","#8bbf56","#56bf8b","#568bbf","#8b56bf","#bf568b","#bf5656"],"harmonic-light":["#f7f9fb","#e5ebf1","#cbd6e2","#aabcce","#627e99","#405c79","#223b54","#0b1c2c","#bf8b56","#bfbf56","#8bbf56","#56bf8b","#568bbf","#8b56bf","#bf568b","#bf5656"],"heetch-light":["#feffff","#392551","#7b6d8b","#9c92a8","#ddd6e5","#5a496e","#470546","#190134","#27d9d5","#bdb6c5","#5ba2b6","#f80059","#c33678","#47f9f5","#bd0152","#dedae2"],heetch:["#190134","#392551","#5a496e","#7b6d8b","#9c92a8","#bdb6c5","#dedae2","#feffff","#27d9d5","#5ba2b6","#8f6c97","#c33678","#f80059","#bd0152","#82034c","#470546"],helios:["#1d2021","#383c3e","#53585b","#6f7579","#cdcdcd","#d5d5d5","#dddddd","#e5e5e5","#d72638","#eb8413","#f19d1a","#88b92d","#1ba595","#1e8bac","#be4264","#c85e0d"],hopscotch:["#322931","#433b42","#5c545b","#797379","#989498","#b9b5b8","#d5d3d5","#ffffff","#dd464c","#fd8b19","#fdcc59","#8fc13e","#149b93","#1290bf","#c85e7c","#b33508"],"horizon-dark":["#1c1e26","#232530","#2e303e","#676a8d","#ced1d0","#cbced0","#dcdfe4","#e3e6ee","#e93c58","#e58d7d","#efb993","#efaf8e","#24a8b4","#df5273","#b072d1","#e4a382"],"ia-dark":["#1a1a1a","#222222","#1d414d","#767676","#b8b8b8","#cccccc","#e8e8e8","#f8f8f8","#d88568","#d86868","#b99353","#83a471","#7c9cae","#8eccdd","#b98eb2","#8b6c37"],"ia-light":["#f6f6f6","#dedede","#bde5f2","#898989","#767676","#181818","#e8e8e8","#898989","#9c5a02","#c43e18","#c48218","#38781c","#2d6bb1","#48bac2","#a94598","#8b6c37"],icy:["#021012","#031619","#041f23","#052e34","#064048","#095b67","#0c7c8c","#109cb0","#16c1d9","#b3ebf2","#80deea","#4dd0e1","#26c6da","#00bcd4","#00acc1","#0097a7"],isotope:["#000000","#404040","#606060","#808080","#c0c0c0","#d0d0d0","#e0e0e0","#ffffff","#ff0000","#ff9900","#ff0099","#33ff00","#00ffff","#0066ff","#cc00ff","#3300ff"],macintosh:["#000000","#404040","#404040","#808080","#808080","#c0c0c0","#c0c0c0","#ffffff","#dd0907","#ff6403","#fbf305","#1fb714","#02abea","#0000d3","#4700a5","#90713a"],marrakesh:["#201602","#302e00","#5f5b17","#6c6823","#86813b","#948e48","#ccc37a","#faf0a5","#c35359","#b36144","#a88339","#18974e","#75a738","#477ca1","#8868b3","#b3588e"],materia:["#263238","#2c393f","#37474f","#707880","#c9ccd3","#cdd3de","#d5dbe5","#ffffff","#ec5f67","#ea9560","#ffcc00","#8bd649","#80cbc4","#89ddff","#82aaff","#ec5f67"],"material-lighter":["#fafafa","#e7eaec","#cceae7","#ccd7da","#8796b0","#80cbc4","#80cbc4","#666666","#ff5370","#f76d47","#ffb62c","#91b859","#39adb5","#6182b8","#7c4dff","#e53935"],material:["#263238","#2e3c43","#314549","#546e7a","#b2ccd6","#eeffff","#eeffff","#ffffff","#f07178","#f78c6c","#ffcb6b","#c3e88d","#89ddff","#82aaff","#c792ea","#ff5370"],"mellow-purple":["#1e0528","#1a092d","#331354","#320f55","#873582","#ffeeff","#ffeeff","#f8c0ff","#00d9e9","#aa00a3","#955ae7","#05cb0d","#b900b1","#550068","#8991bb","#4d6fff"],"mexico-light":["#f8f8f8","#e8e8e8","#d8d8d8","#b8b8b8","#585858","#383838","#282828","#181818","#ab4642","#dc9656","#f79a0e","#538947","#4b8093","#7cafc2","#96609e","#a16946"],mocha:["#3b3228","#534636","#645240","#7e705a","#b8afad","#d0c8c6","#e9e1dd","#f5eeeb","#cb6077","#d28b71","#f4bc87","#beb55b","#7bbda4","#8ab3b5","#a89bb9","#bb9584"],monokai:["#272822","#383830","#49483e","#75715e","#a59f85","#f8f8f2","#f5f4f1","#f9f8f5","#f92672","#fd971f","#f4bf75","#a6e22e","#a1efe4","#66d9ef","#ae81ff","#cc6633"],nord:["#2e3440","#3b4252","#434c5e","#4c566a","#d8dee9","#e5e9f0","#eceff4","#8fbcbb","#88c0d0","#81a1c1","#5e81ac","#bf616a","#d08770","#ebcb8b","#a3be8c","#b48ead"],ocean:["#2b303b","#343d46","#4f5b66","#65737e","#a7adba","#c0c5ce","#dfe1e8","#eff1f5","#bf616a","#d08770","#ebcb8b","#a3be8c","#96b5b4","#8fa1b3","#b48ead","#ab7967"],"one-light":["#fafafa","#f0f0f1","#e5e5e6","#a0a1a7","#696c77","#383a42","#202227","#090a0b","#ca1243","#d75f00","#c18401","#50a14f","#0184bc","#4078f2","#a626a4","#986801"],onedark:["#282c34","#353b45","#3e4451","#545862","#565c64","#abb2bf","#b6bdca","#c8ccd4","#e06c75","#d19a66","#e5c07b","#98c379","#56b6c2","#61afef","#c678dd","#be5046"],"papercolor-dark":["#1c1c1c","#af005f","#5faf00","#d7af5f","#5fafd7","#808080","#d7875f","#d0d0d0","#585858","#5faf5f","#afd700","#af87d7","#ffaf00","#ff5faf","#00afaf","#5f8787"],"papercolor-light":["#eeeeee","#af0000","#008700","#5f8700","#0087af","#878787","#005f87","#444444","#bcbcbc","#d70000","#d70087","#8700af","#d75f00","#d75f00","#005faf","#005f87"],paraiso:["#2f1e2e","#41323f","#4f424c","#776e71","#8d8687","#a39e9b","#b9b6b0","#e7e9db","#ef6155","#f99b15","#fec418","#48b685","#5bc4bf","#06b6ef","#815ba4","#e96ba8"],pico:["#000000","#1d2b53","#7e2553","#008751","#ab5236","#5f574f","#c2c3c7","#fff1e8","#ff004d","#ffa300","#fff024","#00e756","#29adff","#83769c","#ff77a8","#ffccaa"],pop:["#000000","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#ffffff","#eb008a","#f29333","#f8ca12","#37b349","#00aabb","#0e5a94","#b31e8d","#7a2d00"],railscasts:["#2b2b2b","#272935","#3a4055","#5a647e","#d4cfc9","#e6e1dc","#f4f1ed","#f9f7f3","#da4939","#cc7833","#ffc66d","#a5c261","#519f50","#6d9cbe","#b6b3eb","#bc9458"],seti:["#151718","#282a2b","#3b758c","#41535b","#43a5d5","#d6d6d6","#eeeeee","#ffffff","#cd3f45","#db7b55","#e6cd69","#9fca56","#55dbbe","#55b5db","#a074c4","#8a553f"],"solarized-dark":["#002b36","#073642","#586e75","#657b83","#839496","#93a1a1","#eee8d5","#fdf6e3","#dc322f","#cb4b16","#b58900","#859900","#2aa198","#268bd2","#6c71c4","#d33682"],"solarized-light":["#fdf6e3","#eee8d5","#93a1a1","#839496","#657b83","#586e75","#073642","#002b36","#dc322f","#cb4b16","#b58900","#859900","#2aa198","#268bd2","#6c71c4","#d33682"],spacemacs:["#1f2022","#282828","#444155","#585858","#b8b8b8","#a3a3a3","#e8e8e8","#f8f8f8","#f2241f","#ffa500","#b1951d","#67b11d","#2d9574","#4f97d7","#a31db1","#b03060"],"summerfruit-dark":["#151515","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#ffffff","#ff0086","#fd8900","#aba800","#00c918","#1faaaa","#3777e6","#ad00a1","#cc6633"],"summerfruit-light":["#ffffff","#e0e0e0","#d0d0d0","#b0b0b0","#000000","#101010","#151515","#202020","#ff0086","#fd8900","#aba800","#00c918","#1faaaa","#3777e6","#ad00a1","#cc6633"],"tomorrow-night":["#1d1f21","#282a2e","#373b41","#969896","#b4b7b4","#c5c8c6","#e0e0e0","#ffffff","#cc6666","#de935f","#f0c674","#b5bd68","#8abeb7","#81a2be","#b294bb","#a3685a"],tomorrow:["#ffffff","#e0e0e0","#d6d6d6","#8e908c","#969896","#4d4d4c","#282a2e","#1d1f21","#c82829","#f5871f","#eab700","#718c00","#3e999f","#4271ae","#8959a8","#a3685a"],tube:["#231f20","#1c3f95","#5a5758","#737171","#959ca1","#d9d8d8","#e7e7e8","#ffffff","#ee2e24","#f386a1","#ffd204","#00853e","#85cebc","#009ddc","#98005d","#b06110"],twilight:["#1e1e1e","#323537","#464b50","#5f5a60","#838184","#a7a7a7","#c3c3c3","#ffffff","#cf6a4c","#cda869","#f9ee98","#8f9d6a","#afc4db","#7587a6","#9b859d","#9b703f"],woodland:["#231e18","#302b25","#48413a","#9d8b70","#b4a490","#cabcb1","#d7c8bc","#e4d4c8","#d35c5c","#ca7f32","#e0ac16","#b7ba53","#6eb958","#88a4d3","#bb90e2","#b49368"],zenburn:["#383838","#404040","#606060","#6f6f6f","#808080","#dcdccc","#c0c0c0","#ffffff","#dca3a3","#dfaf8f","#e0cf9f","#5f7f5f","#93e0e3","#7cb8bb","#dc8cc3","#000000"]},V=Object.keys(A),R=a=>{let e;if(typeof a=="string"){if(A[a]===void 0)throw new Error(`${a} not found`);e=A[a].reduce((d,r,o)=>{let t=`base0${o.toString(16).toUpperCase()}`;return d[t]=r,d},{})}else e=a;return`.container{${Object.keys(e).map(d=>`--${d}: ${e[d]};`).join("")}}`};var j=a=>{try{return!!new URL(a)}catch{return!1}},W=a=>{if(Array.isArray(a))return"array";if(a===null)return"null";if(a instanceof RegExp)return"regexp";let e=typeof a;return e==="number"?isNaN(a)?"NaN":isFinite(a)?Number.isInteger(a)?"int":"float":"Infinity":e==="boolean"?"bool":e==="object"&&a instanceof Date?"date":e};var $=a=>{if(typeof a=="boolean")return a;if(a==="true")return!0;if(a==="false")return!1;throw new Error("should be a boolean!")},J=a=>{if(typeof a=="string")return a;throw new Error("should be a string!")},O=a=>{if(typeof a=="number"&&a>=0)return a;if(typeof a=="string"&&(a=parseFloat(a)),isNaN(a)||a<0)throw new Error("should be a positive number!");return a},B=a=>{if(typeof a=="boolean"||typeof a=="number")return a;if(a==="true")return!0;if(a==="false")return!1;if(typeof a=="string"&&(a=parseFloat(a),!isNaN(a)&&a>=0))return a;throw new Error("should be a boolean or a positive number!")},z=a=>{if(typeof a=="object")return a;if(typeof a=="string")try{return JSON.parse(a)}catch{return a}throw new Error("should be a string or JSON!")};var P=function({key:a,value:e,expanded:d,indent:r,onToggleExpand:o,level:t=0,parentRow:v}){let n=document.createElement("div");this.maxLevel=t;let i=W(e),m=i==="array"||i==="object",x=d===!0||d>t,p,g,b,h;n.className=`data-row ${x?"expanded":""}`,n.dataset.key=a,n.dataset.level=t,t>0&&(n.style.paddingLeft=`${r*5}px`);let f=document.createElement("span");f.className="key-value-wrapper",n.appendChild(f);let w=()=>{n.classList.toggle("expanded"),o&&(n.classList.contains("expanded")?o(t+1):o(t))};if(m){let c=document.createElement("span");c.className="icon-wrapper",f.appendChild(c),p=document.createElement("span"),p.className="expand icon clickable",p.setAttribute("title",x?"Collapse":"Expand"),c.appendChild(p),c.addEventListener("click",()=>w())}if(a!==null&&a!==""){let c=typeof a;b=document.createElement("span"),b.className=`key clickable ${c==="number"?"number":""}`,b.textContent=c==="number"?a:`${a}`,b.addEventListener("click",()=>w()),f.appendChild(b);let s=document.createElement("span");s.classList.add("colon"),s.textContent=":",f.appendChild(s)}if(m){let c=document.createElement("span");c.className="opening-parenthesis",c.textContent=i==="array"?"[":"{",f.appendChild(c);let s=document.createElement("span");s.className="ellipsis clickable",s.textContent="...",s.addEventListener("click",()=>w()),f.appendChild(s);let l=document.createElement("span");l.className="closing-parenthesis",l.textContent=i==="array"?"]":"}",f.appendChild(l);let E=document.createElement("span"),D=i==="array"?e.length:Object.keys(e).length;E.className="items-size",E.textContent=`${D} item${D===1?"":"s"}`,f.appendChild(E),g=[],(i==="array"?e.map((C,k)=>k):Object.keys(e)).forEach(C=>{let k=new P({key:C,value:e[C],expanded:d,indent:r,onToggleExpand:o,level:t+1,parentRow:n});g.push(k),n.appendChild(k.element),this.maxLevel=Math.max(this.maxLevel,k.maxLevel)});let S=document.createElement("span");S.className="closing-parenthesis",S.textContent=i==="array"?"]":"}",n.appendChild(S)}else{let c=null;["nan","NaN","undefined","null"].includes(i)||(c=document.createElement("span"),c.className="type",c.textContent=i.toLowerCase());let s=document.createElement("span");s.className=`value ${i.toLowerCase()}`,h=document.createElement("span"),h.className="value-data",h.textContent=i==="string"?`"${e}"`:e,c&&s.appendChild(c),s.appendChild(h),f.appendChild(s)}let u=document.createElement("span");u.className="copy icon",u.setAttribute("title","Copy to clipboard");let y=document.createElement("span");y.className="icon-wrapper",y.addEventListener("click",()=>{navigator.clipboard.writeText(JSON.stringify(e,null,r))}),y.appendChild(u),f.appendChild(y);let N=c=>{let s=new RegExp(c,"gi"),l=[];b&&l.push(b),h&&l.push(h);let E=!1;l.forEach(D=>{let L=D.textContent;if(D.innerHTML=L,!c||c==="")return;let S=[...L.matchAll(s)].map(I=>I.index),C=[],k=0;S.forEach(I=>{E=!0,C.push(L.slice(k,I)),C.push(`${c}`),k=I+c.length}),C.push(L.slice(k)),D.innerHTML=C.join("")}),E&&!n.classList.contains("expanded")&&(w(),v&&v.classList.add("expanded"))};this.update=({expanded:c,indent:s,searchTerm:l})=>{s!==void 0&&t>0&&(n.style.paddingLeft=`${s*5}px`),c!==void 0&&(x=c===!0||c>t,n.classList.toggle("expanded",x),p&&(p.title=x?"Collapse":"Expand")),l!=null&&N(l),g&&g.forEach(E=>E.update({expanded:c,indent:s,searchTerm:l}))},this.element=n},U=P;var G=function({expanded:a,indent:e,onChange:d,onSearch:r,showDetails:o}){this.indent=e||2,this.expanded=typeof a=="number"?a:2,this.showDetails=o!==!1,this.maxExpandLevel=0;let t,v=document.createElement("div");v.className="toolbar";let n=document.createElement("div");n.className="options",v.appendChild(n);let i=document.createElement("div");i.className="search-wrapper",v.appendChild(i);let m=document.createElement("div");m.className="icon-wrapper clickable",n.appendChild(m);let x=document.createElement("span");x.className="icon refresh",m.onclick=()=>this.refresh(),m.appendChild(x);let p=document.createElement("div");p.className="icon-wrapper clickable",n.appendChild(p);let g=document.createElement("span");g.className="icon plus",p.appendChild(g),p.onclick=()=>{this.expanded{this.expanded>this.maxExpandLevel&&(this.expanded=this.maxExpandLevel),this.expanded>0&&(this.expanded-=1),d({expanded:this.expanded})};let f=document.createElement("div");f.className="icon-wrapper clickable",n.appendChild(f);let w=document.createElement("span");w.className="icon indent",f.onclick=()=>{this.indent+=1,d({indent:this.indent})},f.appendChild(w);let u=document.createElement("div");u.className="icon-wrapper clickable",n.appendChild(u);let y=document.createElement("span");y.className="icon outdent",u.onclick=()=>{this.indent-=1,d({indent:this.indent})},u.appendChild(y);let N=document.createElement("div");N.className="icon-wrapper clickable",n.appendChild(N);let c=document.createElement("span");c.className=`icon info ${this.showDetails?"active":""}`,N.onclick=()=>{c.classList.toggle("active"),this.showDetails=!this.showDetails,d({showDetails:this.showDetails})},N.appendChild(c);let s=document.createElement("span");s.className="icon search",i.appendChild(s),t=document.createElement("input"),t.className="search-input",t.placeholder="Search",t.oninput=l=>{r(l.target.value)},i.appendChild(t),this.refresh=()=>{this.expanded=1,this.indent=2,t&&(t.value=""),d({indent:2,expanded:1}),r("")},this.updateShowDetails=l=>{this.showDetails=l,this.showDetails?c.classList.add("active"):c.classList.remove("active")},this.element=v},M=G;function K(a,e={}){let d=document.createElement("div");d.className="container",a.appendChild(d);let r=null,o=null,t={};this.update=({data:v,expanded:n,indent:i,expandIconType:m,showDataTypes:x,showToolbar:p,showSize:g,showCopy:b})=>{if(v){let f=JSON.stringify(v);t.dataComapreString!==f&&(t.dataComapreString=f,r=new U({key:"",value:v,expanded:n,indent:i,onToggleExpand:w=>{o&&(o.expanded=w),t.expanded=w}}),d.replaceChildren(r.element),t.showToolbar&&o&&(d.prepend(o.element),o.maxExpandLevel=r.maxLevel,o.refresh()))}if(p!==void 0&&t.showToolbar!==p)if(t.showToolbar=p,p)o||(o=new M({expanded:t.expanded,indent:t.indent,onChange:({expanded:f,indent:w,showDetails:u})=>{let y={expanded:f,indent:w};u!==void 0&&(y.showCopy=u,y.showSize=u,y.showDataTypes=u),this.update(y)},onSearch:f=>{r&&r.update({searchTerm:f})}})),r&&(o.maxExpandLevel=r.maxLevel),d.prepend(o.element);else{let f=d.querySelector(".toolbar");f&&f.remove()}let h={};n!==void 0&&t.expanded!==n&&(t.expanded=n,h.expanded=n),i!==void 0&&t.indent!==i&&(t.indent=i,h.indent=i),Object.keys(h).length>0&&r&&r.update(h),b!==void 0&&t.showCopy!==b&&(t.showCopy=b,d.classList.toggle("show-copy",b)),g!==void 0&&t.showSize!==g&&(t.showSize=g,d.classList.toggle("show-size",g),o&&o.updateShowDetails(t.showSize||t.showDataTypes)),x!==void 0&&t.showDataTypes!==x&&(t.showDataTypes=x,d.classList.toggle("show-data-types",x),o&&o.updateShowDetails(t.showSize||t.showDataTypes)),m!==void 0&&t.expandIconType!==m&&(d.classList.add(`expand-icon-${m}`),d.classList.remove(`expand-icon-${t.expandIconType}`),t.expandIconType=m)},this.update(e)}var F=K;var H={indent:2,expanded:1,theme:"default-light",showDataTypes:!0,showToolbar:!1,expandIconType:"arrow",showCopy:!0,showSize:!0,data:null},T=class a extends HTMLElement{#t;#e;#c;#n;constructor(){super(),this.#e={...H},this.#t=document.createElement("style");let e=this.attachShadow({mode:"open"}),d=document.createElement("style");d.textContent=`${q}`,e.appendChild(d),e.appendChild(this.#t),this.theme=this.#e.theme,this.#n=new F(e,this.#e)}static get observedAttributes(){return Object.keys(H).map(e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase())}static allowedAttributes=["id"].concat(a.observedAttributes);#d=(...e)=>{console.warn(`JsonViewer${this.id?` (${this.id})`:""}:`,...e)};#a=(e,d,r,o)=>{try{if(d=r(d),o&&!o.includes(d))throw new Error(`should be one of ${o.join(", ")}`);if(this.#e[e]===d)return;this.#e[e]=d,this.#o()}catch(t){this.#d(`Attribute ${e}: ${t.message}`)}};set showDataTypes(e){this.#a("showDataTypes",e,$)}set showToolbar(e){this.#a("showToolbar",e,$)}set indent(e){this.#a("indent",e,O)}set expandIconType(e){this.#a("expandIconType",e,J,["arrow","square","circle"])}set expanded(e){this.#a("expanded",e,B)}set showSize(e){this.#a("showSize",e,$)}set showCopy(e){this.#a("showCopy",e,$)}set theme(e){try{if(e=z(e),this.#e.theme===e&&this.#t.textContent!=="")return;this.#t.textContent=R(e),this.#e.theme=e}catch(d){this.#d(`Attribute theme: ${d.message}`)}}set data(e){try{e=z(e);let d=JSON.stringify(e);if(this.#e.data===d)return;this.#e.data=d,j(e)?fetch(e).then(r=>r.json()).then(r=>{this.#c=r,this.#o()}):(this.#c=e,this.#o())}catch(d){this.#d(`Attribute data: ${d.message}`)}}get options(){return this.#e}connectedCallback(){window.addEventListener("DOMContentLoaded",()=>{let e=this.textContent;this.textContent="",e&&(this.data=e)})}attributeChangedCallback(e,d,r){if(a.allowedAttributes.indexOf(e)>-1){let o=e.replace(/-([a-z])/g,t=>t[1].toUpperCase());this[o]=r}else this.#d(`Attribute ${e} is not supported and will be ignored!`),this.removeAttribute(e)}#o=()=>{this.#n.update({data:this.#c,expanded:this.#e.expanded,expandIconType:this.#e.expandIconType,indent:this.#e.indent,showDataTypes:this.#e.showDataTypes,showToolbar:this.#e.showToolbar,showSize:this.#e.showSize,showCopy:this.#e.showCopy})}};customElements.get("andypf-json-viewer")||customElements.define("andypf-json-viewer",T); diff --git a/dist/cjs/react/JsonViewer.js b/dist/cjs/react/JsonViewer.js deleted file mode 100644 index b991554..0000000 --- a/dist/cjs/react/JsonViewer.js +++ /dev/null @@ -1,28 +0,0 @@ - -/* -MIT License - -Copyright (c) 2025 Andreas Pfau - -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. - -*/ - -var K=Object.create;var A=Object.defineProperty;var Q=Object.getOwnPropertyDescriptor;var X=Object.getOwnPropertyNames;var Y=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var ee=(e,a)=>{for(var t in a)A(e,t,{get:a[t],enumerable:!0})},j=(e,a,t,n)=>{if(a&&typeof a=="object"||typeof a=="function")for(let c of X(a))!_.call(e,c)&&c!==t&&A(e,c,{get:()=>a[c],enumerable:!(n=Q(a,c))||n.enumerable});return e};var ae=(e,a,t)=>(t=e!=null?K(Y(e)):{},j(a||!e||!e.__esModule?A(t,"default",{value:e,enumerable:!0}):t,e)),te=e=>j(A({},"__esModule",{value:!0}),e);var fe={};ee(fe,{default:()=>re});module.exports=te(fe);var z=ae(require("react"));var J=`.container{background-color:var(--base00);color:var(--base05);padding:10px;letter-spacing:0.5px;font-family:monospace;border-radius:3px}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;padding-bottom:5px;border-bottom:solid 1px var(--base02)}.toolbar .options,.toolbar .search-wrapper{display:flex;align-items:center}.toolbar .icon-wrapper{height:15px;display:flex;align-items:center;padding:2px 5px}.toolbar .icon-wrapper:hover{background-color:var(--base02);border-radius:3px}.toolbar .icon-wrapper:first-child{margin-left:0px}.toolbar .search.icon{margin-right:5px}.toolbar .search-input{border:none;background:transparent;outline:none;flex:1;font-size:16px;color:var(--base0D)}.match{background-color:yellow;font-weight:bold;color:red}.data-row{padding:3px 0}.data-row .data-row{border-left:solid 1px var(--base02);padding-left:20px;margin-left:5px;display:none}.data-row.expanded>.data-row{display:block}.data-row .key-value-wrapper{display:flex;align-items:center}.data-row .key{color:var(--base07)}.data-row .key.number{color:var(--base0C)}.data-row .colon{color:var(--base07);margin:0 5px 0 0}.clickable{cursor:pointer}.data-row .opening-parenthesis,.data-row .closing-parenthesis{color:var(--base07)}.data-row .ellipsis{color:var(--base09)}.data-row.expanded>.key-value-wrapper .closing-parenthesis,.data-row.expanded>.key-value-wrapper .ellipsis{display:none}.data-row>.closing-parenthesis{display:none}.data-row.expanded>.closing-parenthesis{display:inline-block}.data-row .items-size{margin-left:10px;color:var(--base04);font-style:italic;display:none}.show-size .data-row .items-size{display:inline-block}.data-row .value.bool,.data-row .value.boolean{color:var(--base0E)}.data-row .value.function{color:var(--base0D)}.data-row .value.int,.data-row .value.integer{color:var(--base0F)}.data-row .value.float{color:var(--base0B)}.data-row .value.string{color:var(--base09)}.data-row .value.string .content{overflow-wrap:break-word}.data-row .value.string .content::before{content:open-quote}.data-row .value.string .content::after{content:close-quote}.data-row .value.regexp{color:var(--base0A)}.data-row .value.nan{color:var(--base08)}.data-row .value.null{color:var(--base0A)}.data-row .value.undefined{color:var(--base05)}.data-row .value.date{color:var(--base0D)}.data-row .value.nan,.data-row .value.null,.data-row .value.undefined{border-radius:3px;background-color:var(--base02);padding:1px 2px}.data-row .value .type{font-size:smaller;margin-right:4px;opacity:0.8;display:none}.data-row .value .value-data{word-break:break-all}.show-data-types .data-row .value .type{display:inline-block}.icon-wrapper,.copy-icon-wrapper{display:inline-block;cursor:pointer}.icon{display:block;position:relative}.icon:before,.icon:after{content:"";position:absolute;display:block}.expand.icon{margin-right:5px}.expand-icon-arrow .expand.icon{margin-left:3px;width:0;height:0;border-left:solid 6px var(--base0E);border-top:solid 6px transparent;border-bottom:solid 6px transparent}.expand-icon-arrow .expanded>.key-value-wrapper .expand.icon,.expand-icon-arrow .expanded.icon.expand{transform:rotate(90deg);border-left-color:var(--base0D)}.expand-icon-square .expand.icon,.expand-icon-circle .expand.icon{display:block;width:9px;height:9px;border-radius:2px;border:solid 1px var(--base0E)}.expand-icon-circle .expand.icon{border-radius:50%}.expand-icon-square .expand.icon:before,.expand-icon-circle .expand.icon:before,.expand-icon-square .expand.icon:after,.expand-icon-circle .expand.icon:after{width:5px;height:1px;background-color:var(--base0E);left:2px;top:4px}.expand-icon-square .expand.icon:after,.expand-icon-circle .expand.icon:after{transform:rotate(90deg)}.expand-icon-square .expanded>.key-value-wrapper .expand.icon:after,.expand-icon-circle .expanded>.key-value-wrapper .expand.icon:after,.expand-icon-square .expand.icon.expanded:after,.expand-icon-circle .expand.icon.expanded:after{display:none}.expand-icon-square .expanded>.key-value-wrapper .expand.icon,.expand-icon-circle .expanded>.key-value-wrapper .expand.icon,.expand-icon-square .expand.icon.expanded,.expand-icon-circle .expanded.expand.icon{border-color:var(--base0D)}.expand-icon-square .expanded>.key-value-wrapper .expand.icon:before,.expand-icon-circle .expanded>.key-value-wrapper .expand.icon:before,.expand-icon-square .expanded.expand.icon:before,.expand-icon-circle .expanded.expand.icon:before{background-color:var(--base0D)}.icon-wrapper{display:inline-block;cursor:pointer}.show-copy .key-value-wrapper:hover .icon.copy{display:block}.copy.icon{margin-left:10px;display:none;width:8px;height:10px;border:solid 1px var(--base0D);border-radius:1px;position:relative;top:4px;transition:0.2s all}.copy.icon:active{transform:scale(1.6);background-color:var(--base0B)}.copy.icon:before{content:"";display:block;left:-3px;top:-3px;width:8px;height:10px;border-top:solid 1px var(--base0D);border-left:solid 1px var(--base0D);border-radius:1px 0 0 0}.plus.icon{width:11px;height:1px;background-color:var(--base0D)}.plus.icon:after{content:"";width:11px;height:1px;background-color:var(--base0D);-webkit-transform:rotate(90deg);transform:rotate(90deg)}.minus.icon{width:11px;height:1px;background-color:var(--base0D)}.indent.icon{color:var(--base0D);width:17px;height:8px;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D)}.indent.icon:before{content:"";position:absolute;top:2px;right:0;width:11px;height:2px;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D)}.indent.icon:after{content:"";position:absolute;top:1px;width:0;height:0;border-top:solid 3px transparent;border-bottom:solid 3px transparent;border-left:solid 3px var(--base0D);border-right:solid 3px transparent}.outdent.icon{color:var(--base0D);margin-left:2px;width:17px;height:8px;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D)}.outdent.icon:before{content:"";top:2px;right:0;width:11px;height:2px;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D)}.outdent.icon:after{content:"";top:1px;left:-3px;width:0;height:0;border-top:solid 3px transparent;border-bottom:solid 3px transparent;border-left:solid 3px transparent;border-right:solid 3px var(--base0D)}.refresh.icon{color:var(--base0D);width:10px;height:10px;border-radius:50%;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D);border-left:solid 1px transparent;border-right:solid 1px var(--base0D)}.refresh.icon:before{content:"";left:1px;top:8px;width:3px;height:3px;border-top:solid 1px var(--base0D);border-left:solid 1px var(--base0D);-webkit-transform:rotate(-22.5deg);transform:rotate(-22.5deg)}.info.icon{width:12px;height:11px;border:solid 1px var(--base0D);border-radius:2px}.info.icon::before{top:5px;left:5px;width:2px;height:5px;background-color:var(--base0D)}.info.icon::after{top:2px;left:5px;width:2px;height:2px;background-color:var(--base0D)}.info.icon.active{background-color:var(--base0D)}.info.icon.active::before,.info.icon.active::after{background-color:var(--base02)}.search.icon{color:var(--base0D);width:11px;height:11px;border:solid 1px var(--base0D);border-radius:100%;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.search.icon:before{content:"";top:11px;left:5px;height:6px;width:1px;background-color:var(--base0D)} -`;var T={apathy:["#031a16","#0b342d","#184e45","#2b685e","#5f9c92","#81b5ac","#a7cec8","#d2e7e4","#3e9688","#3e7996","#3e4c96","#883e96","#963e4c","#96883e","#4c963e","#3e965b"],ashes:["#1c2023","#393f45","#565e65","#747c84","#adb3ba","#c7ccd1","#dfe2e5","#f3f4f5","#c7ae95","#c7c795","#aec795","#95c7ae","#95aec7","#ae95c7","#c795ae","#c79595"],"atelier-dune-light":["#fefbec","#e8e4cf","#a6a28c","#999580","#7d7a68","#6e6b5e","#292824","#20201d","#d73737","#b65611","#ae9513","#60ac39","#1fad83","#6684e1","#b854d4","#d43552"],"atelier-dune":["#20201d","#292824","#6e6b5e","#7d7a68","#999580","#a6a28c","#e8e4cf","#fefbec","#d73737","#b65611","#ae9513","#60ac39","#1fad83","#6684e1","#b854d4","#d43552"],atlas:["#002635","#00384d","#517f8d","#6c8b91","#869696","#a1a19a","#e6e6dc","#fafaf8","#ff5a67","#f08e48","#ffcc1b","#7fc06e","#14747e","#5dd7b9","#9a70a4","#c43060"],bespin:["#28211c","#36312e","#5e5d5c","#666666","#797977","#8a8986","#9d9b97","#baae9e","#cf6a4c","#cf7d34","#f9ee98","#54be0d","#afc4db","#5ea6ea","#9b859d","#937121"],"black-metal":["#000000","#121212","#222222","#333333","#999999","#c1c1c1","#999999","#c1c1c1","#5f8787","#aaaaaa","#a06666","#dd9999","#aaaaaa","#888888","#999999","#444444"],brewer:["#0c0d0e","#2e2f30","#515253","#737475","#959697","#b7b8b9","#dadbdc","#fcfdfe","#e31a1c","#e6550d","#dca060","#31a354","#80b1d3","#3182bd","#756bb1","#b15928"],bright:["#000000","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#f5f5f5","#ffffff","#fb0120","#fc6d24","#fda331","#a1c659","#76c7b7","#6fb3d2","#d381c3","#be643c"],brogrammer:["#1f1f1f","#f81118","#2dc55e","#ecba0f","#2a84d2","#4e5ab7","#1081d6","#d6dbe5","#d6dbe5","#de352e","#1dd361","#f3bd09","#1081d6","#5350b9","#0f7ddb","#ffffff"],"brushtrees-dark":["#485867","#5a6d7a","#6d828e","#8299a1","#98afb5","#b0c5c8","#c9dbdc","#e3efef","#b38686","#d8bba2","#aab386","#87b386","#86b3b3","#868cb3","#b386b2","#b39f9f"],brushtrees:["#e3efef","#c9dbdc","#b0c5c8","#98afb5","#8299a1","#6d828e","#5a6d7a","#485867","#b38686","#d8bba2","#aab386","#87b386","#86b3b3","#868cb3","#b386b2","#b39f9f"],chalk:["#151515","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#f5f5f5","#fb9fb1","#eda987","#ddb26f","#acc267","#12cfc0","#6fc2ef","#e1a3ee","#deaf8f"],circus:["#191919","#202020","#303030","#5f5a60","#505050","#a7a7a7","#808080","#ffffff","#dc657d","#4bb1a7","#c3ba63","#84b97c","#4bb1a7","#639ee4","#b888e2","#b888e2"],"classic-dark":["#151515","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#f5f5f5","#ac4142","#d28445","#f4bf75","#90a959","#75b5aa","#6a9fb5","#aa759f","#8f5536"],"classic-light":["#f5f5f5","#e0e0e0","#d0d0d0","#b0b0b0","#505050","#303030","#202020","#151515","#ac4142","#d28445","#f4bf75","#90a959","#75b5aa","#6a9fb5","#aa759f","#8f5536"],codeschool:["#232c31","#1c3657","#2a343a","#3f4944","#84898c","#9ea7a6","#a7cfa3","#b5d8f6","#2a5491","#43820d","#a03b1e","#237986","#b02f30","#484d79","#c59820","#c98344"],cupcake:["#fbf1f2","#f2f1f4","#d8d5dd","#bfb9c6","#a59daf","#8b8198","#72677e","#585062","#d57e85","#ebb790","#dcb16c","#a3b367","#69a9a7","#7297b9","#bb99b4","#baa58c"],cupertino:["#ffffff","#c0c0c0","#c0c0c0","#808080","#808080","#404040","#404040","#5e5e5e","#c41a15","#eb8500","#826b28","#007400","#318495","#0000ff","#a90d91","#826b28"],darcula:["#2b2b2b","#323232","#323232","#606366","#a4a3a3","#a9b7c6","#ffc66d","#ffffff","#4eade5","#689757","#bbb529","#6a8759","#629755","#9876aa","#cc7832","#808080"],darktooth:["#1d2021","#32302f","#504945","#665c54","#928374","#a89984","#d5c4a1","#fdf4c1","#fb543f","#fe8625","#fac03b","#95c085","#8ba59b","#0d6678","#8f4673","#a87322"],"default-dark":["#181818","#282828","#383838","#585858","#b8b8b8","#d8d8d8","#e8e8e8","#f8f8f8","#ab4642","#dc9656","#f7ca88","#a1b56c","#86c1b9","#7cafc2","#ba8baf","#a16946"],"default-light":["#ffffff","#e8e8e8","#d8d8d8","#b8b8b8","#585858","#383838","#282828","#181818","#ab4642","#dc9656","#ab4642","#a1b56c","#86c1b9","#7cafc2","#ba8baf","#a16946"],dracula:["#282936","#3a3c4e","#4d4f68","#626483","#62d6e8","#e9e9f4","#f1f2f8","#f7f7fb","#ea51b2","#b45bcf","#00f769","#ebff87","#a1efe4","#62d6e8","#b45bcf","#00f769"],eighties:["#2d2d2d","#393939","#515151","#747369","#a09f93","#d3d0c8","#e8e6df","#f2f0ec","#f2777a","#f99157","#ffcc66","#99cc99","#66cccc","#6699cc","#cc99cc","#d27b53"],embers:["#16130f","#2c2620","#433b32","#5a5047","#8a8075","#a39a90","#beb6ae","#dbd6d1","#826d57","#828257","#6d8257","#57826d","#576d82","#6d5782","#82576d","#825757"],flat:["#2c3e50","#34495e","#7f8c8d","#95a5a6","#bdc3c7","#e0e0e0","#f5f5f5","#ecf0f1","#e74c3c","#e67e22","#f1c40f","#2ecc71","#1abc9c","#3498db","#9b59b6","#be643c"],"fruit-soda":["#f1ecf1","#e0dee0","#d8d5d5","#b5b4b6","#979598","#515151","#474545","#2d2c2c","#fe3e31","#fe6d08","#f7e203","#47f74c","#0f9cfd","#2931df","#611fce","#b16f40"],github:["#ffffff","#f5f5f5","#c8c8fa","#969896","#e8e8e8","#333333","#ffffff","#969896","#ed6a43","#0086b3","#795da3","#183691","#183691","#795da3","#a71d5d","#333333"],"google-dark":["#1d1f21","#282a2e","#373b41","#969896","#b4b7b4","#c5c8c6","#e0e0e0","#ffffff","#cc342b","#f96a38","#fba922","#198844","#3971ed","#3971ed","#a36ac7","#3971ed"],"google-light":["#ffffff","#e0e0e0","#c5c8c6","#b4b7b4","#969896","#373b41","#282a2e","#1d1f21","#cc342b","#f96a38","#fba922","#198844","#3971ed","#3971ed","#a36ac7","#3971ed"],"grayscale-dark":["#101010","#252525","#464646","#525252","#ababab","#b9b9b9","#e3e3e3","#f7f7f7","#7c7c7c","#999999","#a0a0a0","#8e8e8e","#868686","#686868","#747474","#5e5e5e"],"grayscale-light":["#f7f7f7","#e3e3e3","#b9b9b9","#ababab","#525252","#464646","#252525","#101010","#7c7c7c","#999999","#a0a0a0","#8e8e8e","#868686","#686868","#747474","#5e5e5e"],greenscreen:["#001100","#003300","#005500","#007700","#009900","#00bb00","#00dd00","#00ff00","#007700","#009900","#007700","#00bb00","#005500","#009900","#00bb00","#005500"],"gruvbox-dark-hard":["#1d2021","#3c3836","#504945","#665c54","#bdae93","#d5c4a1","#ebdbb2","#fbf1c7","#fb4934","#fe8019","#fabd2f","#b8bb26","#8ec07c","#83a598","#d3869b","#d65d0e"],"gruvbox-light-hard":["#f9f5d7","#ebdbb2","#d5c4a1","#bdae93","#665c54","#504945","#3c3836","#282828","#9d0006","#af3a03","#b57614","#79740e","#427b58","#076678","#8f3f71","#d65d0e"],"harmonic-dark":["#0b1c2c","#223b54","#405c79","#627e99","#aabcce","#cbd6e2","#e5ebf1","#f7f9fb","#bf8b56","#bfbf56","#8bbf56","#56bf8b","#568bbf","#8b56bf","#bf568b","#bf5656"],"harmonic-light":["#f7f9fb","#e5ebf1","#cbd6e2","#aabcce","#627e99","#405c79","#223b54","#0b1c2c","#bf8b56","#bfbf56","#8bbf56","#56bf8b","#568bbf","#8b56bf","#bf568b","#bf5656"],"heetch-light":["#feffff","#392551","#7b6d8b","#9c92a8","#ddd6e5","#5a496e","#470546","#190134","#27d9d5","#bdb6c5","#5ba2b6","#f80059","#c33678","#47f9f5","#bd0152","#dedae2"],heetch:["#190134","#392551","#5a496e","#7b6d8b","#9c92a8","#bdb6c5","#dedae2","#feffff","#27d9d5","#5ba2b6","#8f6c97","#c33678","#f80059","#bd0152","#82034c","#470546"],helios:["#1d2021","#383c3e","#53585b","#6f7579","#cdcdcd","#d5d5d5","#dddddd","#e5e5e5","#d72638","#eb8413","#f19d1a","#88b92d","#1ba595","#1e8bac","#be4264","#c85e0d"],hopscotch:["#322931","#433b42","#5c545b","#797379","#989498","#b9b5b8","#d5d3d5","#ffffff","#dd464c","#fd8b19","#fdcc59","#8fc13e","#149b93","#1290bf","#c85e7c","#b33508"],"horizon-dark":["#1c1e26","#232530","#2e303e","#676a8d","#ced1d0","#cbced0","#dcdfe4","#e3e6ee","#e93c58","#e58d7d","#efb993","#efaf8e","#24a8b4","#df5273","#b072d1","#e4a382"],"ia-dark":["#1a1a1a","#222222","#1d414d","#767676","#b8b8b8","#cccccc","#e8e8e8","#f8f8f8","#d88568","#d86868","#b99353","#83a471","#7c9cae","#8eccdd","#b98eb2","#8b6c37"],"ia-light":["#f6f6f6","#dedede","#bde5f2","#898989","#767676","#181818","#e8e8e8","#898989","#9c5a02","#c43e18","#c48218","#38781c","#2d6bb1","#48bac2","#a94598","#8b6c37"],icy:["#021012","#031619","#041f23","#052e34","#064048","#095b67","#0c7c8c","#109cb0","#16c1d9","#b3ebf2","#80deea","#4dd0e1","#26c6da","#00bcd4","#00acc1","#0097a7"],isotope:["#000000","#404040","#606060","#808080","#c0c0c0","#d0d0d0","#e0e0e0","#ffffff","#ff0000","#ff9900","#ff0099","#33ff00","#00ffff","#0066ff","#cc00ff","#3300ff"],macintosh:["#000000","#404040","#404040","#808080","#808080","#c0c0c0","#c0c0c0","#ffffff","#dd0907","#ff6403","#fbf305","#1fb714","#02abea","#0000d3","#4700a5","#90713a"],marrakesh:["#201602","#302e00","#5f5b17","#6c6823","#86813b","#948e48","#ccc37a","#faf0a5","#c35359","#b36144","#a88339","#18974e","#75a738","#477ca1","#8868b3","#b3588e"],materia:["#263238","#2c393f","#37474f","#707880","#c9ccd3","#cdd3de","#d5dbe5","#ffffff","#ec5f67","#ea9560","#ffcc00","#8bd649","#80cbc4","#89ddff","#82aaff","#ec5f67"],"material-lighter":["#fafafa","#e7eaec","#cceae7","#ccd7da","#8796b0","#80cbc4","#80cbc4","#666666","#ff5370","#f76d47","#ffb62c","#91b859","#39adb5","#6182b8","#7c4dff","#e53935"],material:["#263238","#2e3c43","#314549","#546e7a","#b2ccd6","#eeffff","#eeffff","#ffffff","#f07178","#f78c6c","#ffcb6b","#c3e88d","#89ddff","#82aaff","#c792ea","#ff5370"],"mellow-purple":["#1e0528","#1a092d","#331354","#320f55","#873582","#ffeeff","#ffeeff","#f8c0ff","#00d9e9","#aa00a3","#955ae7","#05cb0d","#b900b1","#550068","#8991bb","#4d6fff"],"mexico-light":["#f8f8f8","#e8e8e8","#d8d8d8","#b8b8b8","#585858","#383838","#282828","#181818","#ab4642","#dc9656","#f79a0e","#538947","#4b8093","#7cafc2","#96609e","#a16946"],mocha:["#3b3228","#534636","#645240","#7e705a","#b8afad","#d0c8c6","#e9e1dd","#f5eeeb","#cb6077","#d28b71","#f4bc87","#beb55b","#7bbda4","#8ab3b5","#a89bb9","#bb9584"],monokai:["#272822","#383830","#49483e","#75715e","#a59f85","#f8f8f2","#f5f4f1","#f9f8f5","#f92672","#fd971f","#f4bf75","#a6e22e","#a1efe4","#66d9ef","#ae81ff","#cc6633"],nord:["#2e3440","#3b4252","#434c5e","#4c566a","#d8dee9","#e5e9f0","#eceff4","#8fbcbb","#88c0d0","#81a1c1","#5e81ac","#bf616a","#d08770","#ebcb8b","#a3be8c","#b48ead"],ocean:["#2b303b","#343d46","#4f5b66","#65737e","#a7adba","#c0c5ce","#dfe1e8","#eff1f5","#bf616a","#d08770","#ebcb8b","#a3be8c","#96b5b4","#8fa1b3","#b48ead","#ab7967"],"one-light":["#fafafa","#f0f0f1","#e5e5e6","#a0a1a7","#696c77","#383a42","#202227","#090a0b","#ca1243","#d75f00","#c18401","#50a14f","#0184bc","#4078f2","#a626a4","#986801"],onedark:["#282c34","#353b45","#3e4451","#545862","#565c64","#abb2bf","#b6bdca","#c8ccd4","#e06c75","#d19a66","#e5c07b","#98c379","#56b6c2","#61afef","#c678dd","#be5046"],"papercolor-dark":["#1c1c1c","#af005f","#5faf00","#d7af5f","#5fafd7","#808080","#d7875f","#d0d0d0","#585858","#5faf5f","#afd700","#af87d7","#ffaf00","#ff5faf","#00afaf","#5f8787"],"papercolor-light":["#eeeeee","#af0000","#008700","#5f8700","#0087af","#878787","#005f87","#444444","#bcbcbc","#d70000","#d70087","#8700af","#d75f00","#d75f00","#005faf","#005f87"],paraiso:["#2f1e2e","#41323f","#4f424c","#776e71","#8d8687","#a39e9b","#b9b6b0","#e7e9db","#ef6155","#f99b15","#fec418","#48b685","#5bc4bf","#06b6ef","#815ba4","#e96ba8"],pico:["#000000","#1d2b53","#7e2553","#008751","#ab5236","#5f574f","#c2c3c7","#fff1e8","#ff004d","#ffa300","#fff024","#00e756","#29adff","#83769c","#ff77a8","#ffccaa"],pop:["#000000","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#ffffff","#eb008a","#f29333","#f8ca12","#37b349","#00aabb","#0e5a94","#b31e8d","#7a2d00"],railscasts:["#2b2b2b","#272935","#3a4055","#5a647e","#d4cfc9","#e6e1dc","#f4f1ed","#f9f7f3","#da4939","#cc7833","#ffc66d","#a5c261","#519f50","#6d9cbe","#b6b3eb","#bc9458"],seti:["#151718","#282a2b","#3b758c","#41535b","#43a5d5","#d6d6d6","#eeeeee","#ffffff","#cd3f45","#db7b55","#e6cd69","#9fca56","#55dbbe","#55b5db","#a074c4","#8a553f"],"solarized-dark":["#002b36","#073642","#586e75","#657b83","#839496","#93a1a1","#eee8d5","#fdf6e3","#dc322f","#cb4b16","#b58900","#859900","#2aa198","#268bd2","#6c71c4","#d33682"],"solarized-light":["#fdf6e3","#eee8d5","#93a1a1","#839496","#657b83","#586e75","#073642","#002b36","#dc322f","#cb4b16","#b58900","#859900","#2aa198","#268bd2","#6c71c4","#d33682"],spacemacs:["#1f2022","#282828","#444155","#585858","#b8b8b8","#a3a3a3","#e8e8e8","#f8f8f8","#f2241f","#ffa500","#b1951d","#67b11d","#2d9574","#4f97d7","#a31db1","#b03060"],"summerfruit-dark":["#151515","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#ffffff","#ff0086","#fd8900","#aba800","#00c918","#1faaaa","#3777e6","#ad00a1","#cc6633"],"summerfruit-light":["#ffffff","#e0e0e0","#d0d0d0","#b0b0b0","#000000","#101010","#151515","#202020","#ff0086","#fd8900","#aba800","#00c918","#1faaaa","#3777e6","#ad00a1","#cc6633"],"tomorrow-night":["#1d1f21","#282a2e","#373b41","#969896","#b4b7b4","#c5c8c6","#e0e0e0","#ffffff","#cc6666","#de935f","#f0c674","#b5bd68","#8abeb7","#81a2be","#b294bb","#a3685a"],tomorrow:["#ffffff","#e0e0e0","#d6d6d6","#8e908c","#969896","#4d4d4c","#282a2e","#1d1f21","#c82829","#f5871f","#eab700","#718c00","#3e999f","#4271ae","#8959a8","#a3685a"],tube:["#231f20","#1c3f95","#5a5758","#737171","#959ca1","#d9d8d8","#e7e7e8","#ffffff","#ee2e24","#f386a1","#ffd204","#00853e","#85cebc","#009ddc","#98005d","#b06110"],twilight:["#1e1e1e","#323537","#464b50","#5f5a60","#838184","#a7a7a7","#c3c3c3","#ffffff","#cf6a4c","#cda869","#f9ee98","#8f9d6a","#afc4db","#7587a6","#9b859d","#9b703f"],woodland:["#231e18","#302b25","#48413a","#9d8b70","#b4a490","#cabcb1","#d7c8bc","#e4d4c8","#d35c5c","#ca7f32","#e0ac16","#b7ba53","#6eb958","#88a4d3","#bb90e2","#b49368"],zenburn:["#383838","#404040","#606060","#6f6f6f","#808080","#dcdccc","#c0c0c0","#ffffff","#dca3a3","#dfaf8f","#e0cf9f","#5f7f5f","#93e0e3","#7cb8bb","#dc8cc3","#000000"]},be=Object.keys(T),W=e=>{let a;if(typeof e=="string"){if(T[e]===void 0)throw new Error(`${e} not found`);a=T[e].reduce((t,n,c)=>{let d=`base0${c.toString(16).toUpperCase()}`;return t[d]=n,t},{})}else a=e;return`.container{${Object.keys(a).map(t=>`--${t}: ${a[t]};`).join("")}}`};var O=e=>{try{return!!new URL(e)}catch{return!1}},B=e=>{if(Array.isArray(e))return"array";if(e===null)return"null";if(e instanceof RegExp)return"regexp";let a=typeof e;return a==="number"?isNaN(e)?"NaN":isFinite(e)?Number.isInteger(e)?"int":"float":"Infinity":a==="boolean"?"bool":a==="object"&&e instanceof Date?"date":a};var $=e=>{if(typeof e=="boolean")return e;if(e==="true")return!0;if(e==="false")return!1;throw new Error("should be a boolean!")},P=e=>{if(typeof e=="string")return e;throw new Error("should be a string!")},U=e=>{if(typeof e=="number"&&e>=0)return e;if(typeof e=="string"&&(e=parseFloat(e)),isNaN(e)||e<0)throw new Error("should be a positive number!");return e},M=e=>{if(typeof e=="boolean"||typeof e=="number")return e;if(e==="true")return!0;if(e==="false")return!1;if(typeof e=="string"&&(e=parseFloat(e),!isNaN(e)&&e>=0))return e;throw new Error("should be a boolean or a positive number!")},q=e=>{if(typeof e=="object")return e;if(typeof e=="string")try{return JSON.parse(e)}catch{return e}throw new Error("should be a string or JSON!")};var F=function({key:e,value:a,expanded:t,indent:n,onToggleExpand:c,level:d=0,parentRow:v}){let r=document.createElement("div");this.maxLevel=d;let i=B(a),m=i==="array"||i==="object",x=t===!0||t>d,p,g,b,h;r.className=`data-row ${x?"expanded":""}`,r.dataset.key=e,r.dataset.level=d,d>0&&(r.style.paddingLeft=`${n*5}px`);let f=document.createElement("span");f.className="key-value-wrapper",r.appendChild(f);let w=()=>{r.classList.toggle("expanded"),c&&(r.classList.contains("expanded")?c(d+1):c(d))};if(m){let o=document.createElement("span");o.className="icon-wrapper",f.appendChild(o),p=document.createElement("span"),p.className="expand icon clickable",p.setAttribute("title",x?"Collapse":"Expand"),o.appendChild(p),o.addEventListener("click",()=>w())}if(e!==null&&e!==""){let o=typeof e;b=document.createElement("span"),b.className=`key clickable ${o==="number"?"number":""}`,b.textContent=o==="number"?e:`${e}`,b.addEventListener("click",()=>w()),f.appendChild(b);let s=document.createElement("span");s.classList.add("colon"),s.textContent=":",f.appendChild(s)}if(m){let o=document.createElement("span");o.className="opening-parenthesis",o.textContent=i==="array"?"[":"{",f.appendChild(o);let s=document.createElement("span");s.className="ellipsis clickable",s.textContent="...",s.addEventListener("click",()=>w()),f.appendChild(s);let l=document.createElement("span");l.className="closing-parenthesis",l.textContent=i==="array"?"]":"}",f.appendChild(l);let E=document.createElement("span"),D=i==="array"?a.length:Object.keys(a).length;E.className="items-size",E.textContent=`${D} item${D===1?"":"s"}`,f.appendChild(E),g=[],(i==="array"?a.map((C,k)=>k):Object.keys(a)).forEach(C=>{let k=new F({key:C,value:a[C],expanded:t,indent:n,onToggleExpand:c,level:d+1,parentRow:r});g.push(k),r.appendChild(k.element),this.maxLevel=Math.max(this.maxLevel,k.maxLevel)});let S=document.createElement("span");S.className="closing-parenthesis",S.textContent=i==="array"?"]":"}",r.appendChild(S)}else{let o=null;["nan","NaN","undefined","null"].includes(i)||(o=document.createElement("span"),o.className="type",o.textContent=i.toLowerCase());let s=document.createElement("span");s.className=`value ${i.toLowerCase()}`,h=document.createElement("span"),h.className="value-data",h.textContent=i==="string"?`"${a}"`:a,o&&s.appendChild(o),s.appendChild(h),f.appendChild(s)}let u=document.createElement("span");u.className="copy icon",u.setAttribute("title","Copy to clipboard");let y=document.createElement("span");y.className="icon-wrapper",y.addEventListener("click",()=>{navigator.clipboard.writeText(JSON.stringify(a,null,n))}),y.appendChild(u),f.appendChild(y);let N=o=>{let s=new RegExp(o,"gi"),l=[];b&&l.push(b),h&&l.push(h);let E=!1;l.forEach(D=>{let L=D.textContent;if(D.innerHTML=L,!o||o==="")return;let S=[...L.matchAll(s)].map(I=>I.index),C=[],k=0;S.forEach(I=>{E=!0,C.push(L.slice(k,I)),C.push(`${o}`),k=I+o.length}),C.push(L.slice(k)),D.innerHTML=C.join("")}),E&&!r.classList.contains("expanded")&&(w(),v&&v.classList.add("expanded"))};this.update=({expanded:o,indent:s,searchTerm:l})=>{s!==void 0&&d>0&&(r.style.paddingLeft=`${s*5}px`),o!==void 0&&(x=o===!0||o>d,r.classList.toggle("expanded",x),p&&(p.title=x?"Collapse":"Expand")),l!=null&&N(l),g&&g.forEach(E=>E.update({expanded:o,indent:s,searchTerm:l}))},this.element=r},H=F;var ce=function({expanded:e,indent:a,onChange:t,onSearch:n,showDetails:c}){this.indent=a||2,this.expanded=typeof e=="number"?e:2,this.showDetails=c!==!1,this.maxExpandLevel=0;let d,v=document.createElement("div");v.className="toolbar";let r=document.createElement("div");r.className="options",v.appendChild(r);let i=document.createElement("div");i.className="search-wrapper",v.appendChild(i);let m=document.createElement("div");m.className="icon-wrapper clickable",r.appendChild(m);let x=document.createElement("span");x.className="icon refresh",m.onclick=()=>this.refresh(),m.appendChild(x);let p=document.createElement("div");p.className="icon-wrapper clickable",r.appendChild(p);let g=document.createElement("span");g.className="icon plus",p.appendChild(g),p.onclick=()=>{this.expanded{this.expanded>this.maxExpandLevel&&(this.expanded=this.maxExpandLevel),this.expanded>0&&(this.expanded-=1),t({expanded:this.expanded})};let f=document.createElement("div");f.className="icon-wrapper clickable",r.appendChild(f);let w=document.createElement("span");w.className="icon indent",f.onclick=()=>{this.indent+=1,t({indent:this.indent})},f.appendChild(w);let u=document.createElement("div");u.className="icon-wrapper clickable",r.appendChild(u);let y=document.createElement("span");y.className="icon outdent",u.onclick=()=>{this.indent-=1,t({indent:this.indent})},u.appendChild(y);let N=document.createElement("div");N.className="icon-wrapper clickable",r.appendChild(N);let o=document.createElement("span");o.className=`icon info ${this.showDetails?"active":""}`,N.onclick=()=>{o.classList.toggle("active"),this.showDetails=!this.showDetails,t({showDetails:this.showDetails})},N.appendChild(o);let s=document.createElement("span");s.className="icon search",i.appendChild(s),d=document.createElement("input"),d.className="search-input",d.placeholder="Search",d.oninput=l=>{n(l.target.value)},i.appendChild(d),this.refresh=()=>{this.expanded=1,this.indent=2,d&&(d.value=""),t({indent:2,expanded:1}),n("")},this.updateShowDetails=l=>{this.showDetails=l,this.showDetails?o.classList.add("active"):o.classList.remove("active")},this.element=v},V=ce;function oe(e,a={}){let t=document.createElement("div");t.className="container",e.appendChild(t);let n=null,c=null,d={};this.update=({data:v,expanded:r,indent:i,expandIconType:m,showDataTypes:x,showToolbar:p,showSize:g,showCopy:b})=>{if(v){let f=JSON.stringify(v);d.dataComapreString!==f&&(d.dataComapreString=f,n=new H({key:"",value:v,expanded:r,indent:i,onToggleExpand:w=>{c&&(c.expanded=w),d.expanded=w}}),t.replaceChildren(n.element),d.showToolbar&&c&&(t.prepend(c.element),c.maxExpandLevel=n.maxLevel,c.refresh()))}if(p!==void 0&&d.showToolbar!==p)if(d.showToolbar=p,p)c||(c=new V({expanded:d.expanded,indent:d.indent,onChange:({expanded:f,indent:w,showDetails:u})=>{let y={expanded:f,indent:w};u!==void 0&&(y.showCopy=u,y.showSize=u,y.showDataTypes=u),this.update(y)},onSearch:f=>{n&&n.update({searchTerm:f})}})),n&&(c.maxExpandLevel=n.maxLevel),t.prepend(c.element);else{let f=t.querySelector(".toolbar");f&&f.remove()}let h={};r!==void 0&&d.expanded!==r&&(d.expanded=r,h.expanded=r),i!==void 0&&d.indent!==i&&(d.indent=i,h.indent=i),Object.keys(h).length>0&&n&&n.update(h),b!==void 0&&d.showCopy!==b&&(d.showCopy=b,t.classList.toggle("show-copy",b)),g!==void 0&&d.showSize!==g&&(d.showSize=g,t.classList.toggle("show-size",g),c&&c.updateShowDetails(d.showSize||d.showDataTypes)),x!==void 0&&d.showDataTypes!==x&&(d.showDataTypes=x,t.classList.toggle("show-data-types",x),c&&c.updateShowDetails(d.showSize||d.showDataTypes)),m!==void 0&&d.expandIconType!==m&&(t.classList.add(`expand-icon-${m}`),t.classList.remove(`expand-icon-${d.expandIconType}`),d.expandIconType=m)},this.update(a)}var Z=oe;var G={indent:2,expanded:1,theme:"default-light",showDataTypes:!0,showToolbar:!1,expandIconType:"arrow",showCopy:!0,showSize:!0,data:null},R=class e extends HTMLElement{#t;#e;#c;#n;constructor(){super(),this.#e={...G},this.#t=document.createElement("style");let a=this.attachShadow({mode:"open"}),t=document.createElement("style");t.textContent=`${J}`,a.appendChild(t),a.appendChild(this.#t),this.theme=this.#e.theme,this.#n=new Z(a,this.#e)}static get observedAttributes(){return Object.keys(G).map(a=>a.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase())}static allowedAttributes=["id"].concat(e.observedAttributes);#d=(...a)=>{console.warn(`JsonViewer${this.id?` (${this.id})`:""}:`,...a)};#a=(a,t,n,c)=>{try{if(t=n(t),c&&!c.includes(t))throw new Error(`should be one of ${c.join(", ")}`);if(this.#e[a]===t)return;this.#e[a]=t,this.#o()}catch(d){this.#d(`Attribute ${a}: ${d.message}`)}};set showDataTypes(a){this.#a("showDataTypes",a,$)}set showToolbar(a){this.#a("showToolbar",a,$)}set indent(a){this.#a("indent",a,U)}set expandIconType(a){this.#a("expandIconType",a,P,["arrow","square","circle"])}set expanded(a){this.#a("expanded",a,M)}set showSize(a){this.#a("showSize",a,$)}set showCopy(a){this.#a("showCopy",a,$)}set theme(a){try{if(a=q(a),this.#e.theme===a&&this.#t.textContent!=="")return;this.#t.textContent=W(a),this.#e.theme=a}catch(t){this.#d(`Attribute theme: ${t.message}`)}}set data(a){try{a=q(a);let t=JSON.stringify(a);if(this.#e.data===t)return;this.#e.data=t,O(a)?fetch(a).then(n=>n.json()).then(n=>{this.#c=n,this.#o()}):(this.#c=a,this.#o())}catch(t){this.#d(`Attribute data: ${t.message}`)}}get options(){return this.#e}connectedCallback(){window.addEventListener("DOMContentLoaded",()=>{let a=this.textContent;this.textContent="",a&&(this.data=a)})}attributeChangedCallback(a,t,n){if(e.allowedAttributes.indexOf(a)>-1){let c=a.replace(/-([a-z])/g,d=>d[1].toUpperCase());this[c]=n}else this.#d(`Attribute ${a} is not supported and will be ignored!`),this.removeAttribute(a)}#o=()=>{this.#n.update({data:this.#c,expanded:this.#e.expanded,expandIconType:this.#e.expandIconType,indent:this.#e.indent,showDataTypes:this.#e.showDataTypes,showToolbar:this.#e.showToolbar,showSize:this.#e.showSize,showCopy:this.#e.showCopy})}};customElements.get("andypf-json-viewer")||customElements.define("andypf-json-viewer",R);var ne=({data:e,...a})=>{let t=z.default.useRef(null);return z.default.useEffect(()=>{t.current&&(t.current.data=e)},[e]),z.default.createElement("andypf-json-viewer",{ref:t,...a})},re=ne; diff --git a/dist/esm/index.js b/dist/esm/index.js deleted file mode 100644 index d1d5a5b..0000000 --- a/dist/esm/index.js +++ /dev/null @@ -1,28 +0,0 @@ - -/* -MIT License - -Copyright (c) 2025 Andreas Pfau - -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. - -*/ - -var q=`.container{background-color:var(--base00);color:var(--base05);padding:10px;letter-spacing:0.5px;font-family:monospace;border-radius:3px}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;padding-bottom:5px;border-bottom:solid 1px var(--base02)}.toolbar .options,.toolbar .search-wrapper{display:flex;align-items:center}.toolbar .icon-wrapper{height:15px;display:flex;align-items:center;padding:2px 5px}.toolbar .icon-wrapper:hover{background-color:var(--base02);border-radius:3px}.toolbar .icon-wrapper:first-child{margin-left:0px}.toolbar .search.icon{margin-right:5px}.toolbar .search-input{border:none;background:transparent;outline:none;flex:1;font-size:16px;color:var(--base0D)}.match{background-color:yellow;font-weight:bold;color:red}.data-row{padding:3px 0}.data-row .data-row{border-left:solid 1px var(--base02);padding-left:20px;margin-left:5px;display:none}.data-row.expanded>.data-row{display:block}.data-row .key-value-wrapper{display:flex;align-items:center}.data-row .key{color:var(--base07)}.data-row .key.number{color:var(--base0C)}.data-row .colon{color:var(--base07);margin:0 5px 0 0}.clickable{cursor:pointer}.data-row .opening-parenthesis,.data-row .closing-parenthesis{color:var(--base07)}.data-row .ellipsis{color:var(--base09)}.data-row.expanded>.key-value-wrapper .closing-parenthesis,.data-row.expanded>.key-value-wrapper .ellipsis{display:none}.data-row>.closing-parenthesis{display:none}.data-row.expanded>.closing-parenthesis{display:inline-block}.data-row .items-size{margin-left:10px;color:var(--base04);font-style:italic;display:none}.show-size .data-row .items-size{display:inline-block}.data-row .value.bool,.data-row .value.boolean{color:var(--base0E)}.data-row .value.function{color:var(--base0D)}.data-row .value.int,.data-row .value.integer{color:var(--base0F)}.data-row .value.float{color:var(--base0B)}.data-row .value.string{color:var(--base09)}.data-row .value.string .content{overflow-wrap:break-word}.data-row .value.string .content::before{content:open-quote}.data-row .value.string .content::after{content:close-quote}.data-row .value.regexp{color:var(--base0A)}.data-row .value.nan{color:var(--base08)}.data-row .value.null{color:var(--base0A)}.data-row .value.undefined{color:var(--base05)}.data-row .value.date{color:var(--base0D)}.data-row .value.nan,.data-row .value.null,.data-row .value.undefined{border-radius:3px;background-color:var(--base02);padding:1px 2px}.data-row .value .type{font-size:smaller;margin-right:4px;opacity:0.8;display:none}.data-row .value .value-data{word-break:break-all}.show-data-types .data-row .value .type{display:inline-block}.icon-wrapper,.copy-icon-wrapper{display:inline-block;cursor:pointer}.icon{display:block;position:relative}.icon:before,.icon:after{content:"";position:absolute;display:block}.expand.icon{margin-right:5px}.expand-icon-arrow .expand.icon{margin-left:3px;width:0;height:0;border-left:solid 6px var(--base0E);border-top:solid 6px transparent;border-bottom:solid 6px transparent}.expand-icon-arrow .expanded>.key-value-wrapper .expand.icon,.expand-icon-arrow .expanded.icon.expand{transform:rotate(90deg);border-left-color:var(--base0D)}.expand-icon-square .expand.icon,.expand-icon-circle .expand.icon{display:block;width:9px;height:9px;border-radius:2px;border:solid 1px var(--base0E)}.expand-icon-circle .expand.icon{border-radius:50%}.expand-icon-square .expand.icon:before,.expand-icon-circle .expand.icon:before,.expand-icon-square .expand.icon:after,.expand-icon-circle .expand.icon:after{width:5px;height:1px;background-color:var(--base0E);left:2px;top:4px}.expand-icon-square .expand.icon:after,.expand-icon-circle .expand.icon:after{transform:rotate(90deg)}.expand-icon-square .expanded>.key-value-wrapper .expand.icon:after,.expand-icon-circle .expanded>.key-value-wrapper .expand.icon:after,.expand-icon-square .expand.icon.expanded:after,.expand-icon-circle .expand.icon.expanded:after{display:none}.expand-icon-square .expanded>.key-value-wrapper .expand.icon,.expand-icon-circle .expanded>.key-value-wrapper .expand.icon,.expand-icon-square .expand.icon.expanded,.expand-icon-circle .expanded.expand.icon{border-color:var(--base0D)}.expand-icon-square .expanded>.key-value-wrapper .expand.icon:before,.expand-icon-circle .expanded>.key-value-wrapper .expand.icon:before,.expand-icon-square .expanded.expand.icon:before,.expand-icon-circle .expanded.expand.icon:before{background-color:var(--base0D)}.icon-wrapper{display:inline-block;cursor:pointer}.show-copy .key-value-wrapper:hover .icon.copy{display:block}.copy.icon{margin-left:10px;display:none;width:8px;height:10px;border:solid 1px var(--base0D);border-radius:1px;position:relative;top:4px;transition:0.2s all}.copy.icon:active{transform:scale(1.6);background-color:var(--base0B)}.copy.icon:before{content:"";display:block;left:-3px;top:-3px;width:8px;height:10px;border-top:solid 1px var(--base0D);border-left:solid 1px var(--base0D);border-radius:1px 0 0 0}.plus.icon{width:11px;height:1px;background-color:var(--base0D)}.plus.icon:after{content:"";width:11px;height:1px;background-color:var(--base0D);-webkit-transform:rotate(90deg);transform:rotate(90deg)}.minus.icon{width:11px;height:1px;background-color:var(--base0D)}.indent.icon{color:var(--base0D);width:17px;height:8px;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D)}.indent.icon:before{content:"";position:absolute;top:2px;right:0;width:11px;height:2px;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D)}.indent.icon:after{content:"";position:absolute;top:1px;width:0;height:0;border-top:solid 3px transparent;border-bottom:solid 3px transparent;border-left:solid 3px var(--base0D);border-right:solid 3px transparent}.outdent.icon{color:var(--base0D);margin-left:2px;width:17px;height:8px;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D)}.outdent.icon:before{content:"";top:2px;right:0;width:11px;height:2px;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D)}.outdent.icon:after{content:"";top:1px;left:-3px;width:0;height:0;border-top:solid 3px transparent;border-bottom:solid 3px transparent;border-left:solid 3px transparent;border-right:solid 3px var(--base0D)}.refresh.icon{color:var(--base0D);width:10px;height:10px;border-radius:50%;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D);border-left:solid 1px transparent;border-right:solid 1px var(--base0D)}.refresh.icon:before{content:"";left:1px;top:8px;width:3px;height:3px;border-top:solid 1px var(--base0D);border-left:solid 1px var(--base0D);-webkit-transform:rotate(-22.5deg);transform:rotate(-22.5deg)}.info.icon{width:12px;height:11px;border:solid 1px var(--base0D);border-radius:2px}.info.icon::before{top:5px;left:5px;width:2px;height:5px;background-color:var(--base0D)}.info.icon::after{top:2px;left:5px;width:2px;height:2px;background-color:var(--base0D)}.info.icon.active{background-color:var(--base0D)}.info.icon.active::before,.info.icon.active::after{background-color:var(--base02)}.search.icon{color:var(--base0D);width:11px;height:11px;border:solid 1px var(--base0D);border-radius:100%;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.search.icon:before{content:"";top:11px;left:5px;height:6px;width:1px;background-color:var(--base0D)} -`;var A={apathy:["#031a16","#0b342d","#184e45","#2b685e","#5f9c92","#81b5ac","#a7cec8","#d2e7e4","#3e9688","#3e7996","#3e4c96","#883e96","#963e4c","#96883e","#4c963e","#3e965b"],ashes:["#1c2023","#393f45","#565e65","#747c84","#adb3ba","#c7ccd1","#dfe2e5","#f3f4f5","#c7ae95","#c7c795","#aec795","#95c7ae","#95aec7","#ae95c7","#c795ae","#c79595"],"atelier-dune-light":["#fefbec","#e8e4cf","#a6a28c","#999580","#7d7a68","#6e6b5e","#292824","#20201d","#d73737","#b65611","#ae9513","#60ac39","#1fad83","#6684e1","#b854d4","#d43552"],"atelier-dune":["#20201d","#292824","#6e6b5e","#7d7a68","#999580","#a6a28c","#e8e4cf","#fefbec","#d73737","#b65611","#ae9513","#60ac39","#1fad83","#6684e1","#b854d4","#d43552"],atlas:["#002635","#00384d","#517f8d","#6c8b91","#869696","#a1a19a","#e6e6dc","#fafaf8","#ff5a67","#f08e48","#ffcc1b","#7fc06e","#14747e","#5dd7b9","#9a70a4","#c43060"],bespin:["#28211c","#36312e","#5e5d5c","#666666","#797977","#8a8986","#9d9b97","#baae9e","#cf6a4c","#cf7d34","#f9ee98","#54be0d","#afc4db","#5ea6ea","#9b859d","#937121"],"black-metal":["#000000","#121212","#222222","#333333","#999999","#c1c1c1","#999999","#c1c1c1","#5f8787","#aaaaaa","#a06666","#dd9999","#aaaaaa","#888888","#999999","#444444"],brewer:["#0c0d0e","#2e2f30","#515253","#737475","#959697","#b7b8b9","#dadbdc","#fcfdfe","#e31a1c","#e6550d","#dca060","#31a354","#80b1d3","#3182bd","#756bb1","#b15928"],bright:["#000000","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#f5f5f5","#ffffff","#fb0120","#fc6d24","#fda331","#a1c659","#76c7b7","#6fb3d2","#d381c3","#be643c"],brogrammer:["#1f1f1f","#f81118","#2dc55e","#ecba0f","#2a84d2","#4e5ab7","#1081d6","#d6dbe5","#d6dbe5","#de352e","#1dd361","#f3bd09","#1081d6","#5350b9","#0f7ddb","#ffffff"],"brushtrees-dark":["#485867","#5a6d7a","#6d828e","#8299a1","#98afb5","#b0c5c8","#c9dbdc","#e3efef","#b38686","#d8bba2","#aab386","#87b386","#86b3b3","#868cb3","#b386b2","#b39f9f"],brushtrees:["#e3efef","#c9dbdc","#b0c5c8","#98afb5","#8299a1","#6d828e","#5a6d7a","#485867","#b38686","#d8bba2","#aab386","#87b386","#86b3b3","#868cb3","#b386b2","#b39f9f"],chalk:["#151515","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#f5f5f5","#fb9fb1","#eda987","#ddb26f","#acc267","#12cfc0","#6fc2ef","#e1a3ee","#deaf8f"],circus:["#191919","#202020","#303030","#5f5a60","#505050","#a7a7a7","#808080","#ffffff","#dc657d","#4bb1a7","#c3ba63","#84b97c","#4bb1a7","#639ee4","#b888e2","#b888e2"],"classic-dark":["#151515","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#f5f5f5","#ac4142","#d28445","#f4bf75","#90a959","#75b5aa","#6a9fb5","#aa759f","#8f5536"],"classic-light":["#f5f5f5","#e0e0e0","#d0d0d0","#b0b0b0","#505050","#303030","#202020","#151515","#ac4142","#d28445","#f4bf75","#90a959","#75b5aa","#6a9fb5","#aa759f","#8f5536"],codeschool:["#232c31","#1c3657","#2a343a","#3f4944","#84898c","#9ea7a6","#a7cfa3","#b5d8f6","#2a5491","#43820d","#a03b1e","#237986","#b02f30","#484d79","#c59820","#c98344"],cupcake:["#fbf1f2","#f2f1f4","#d8d5dd","#bfb9c6","#a59daf","#8b8198","#72677e","#585062","#d57e85","#ebb790","#dcb16c","#a3b367","#69a9a7","#7297b9","#bb99b4","#baa58c"],cupertino:["#ffffff","#c0c0c0","#c0c0c0","#808080","#808080","#404040","#404040","#5e5e5e","#c41a15","#eb8500","#826b28","#007400","#318495","#0000ff","#a90d91","#826b28"],darcula:["#2b2b2b","#323232","#323232","#606366","#a4a3a3","#a9b7c6","#ffc66d","#ffffff","#4eade5","#689757","#bbb529","#6a8759","#629755","#9876aa","#cc7832","#808080"],darktooth:["#1d2021","#32302f","#504945","#665c54","#928374","#a89984","#d5c4a1","#fdf4c1","#fb543f","#fe8625","#fac03b","#95c085","#8ba59b","#0d6678","#8f4673","#a87322"],"default-dark":["#181818","#282828","#383838","#585858","#b8b8b8","#d8d8d8","#e8e8e8","#f8f8f8","#ab4642","#dc9656","#f7ca88","#a1b56c","#86c1b9","#7cafc2","#ba8baf","#a16946"],"default-light":["#ffffff","#e8e8e8","#d8d8d8","#b8b8b8","#585858","#383838","#282828","#181818","#ab4642","#dc9656","#ab4642","#a1b56c","#86c1b9","#7cafc2","#ba8baf","#a16946"],dracula:["#282936","#3a3c4e","#4d4f68","#626483","#62d6e8","#e9e9f4","#f1f2f8","#f7f7fb","#ea51b2","#b45bcf","#00f769","#ebff87","#a1efe4","#62d6e8","#b45bcf","#00f769"],eighties:["#2d2d2d","#393939","#515151","#747369","#a09f93","#d3d0c8","#e8e6df","#f2f0ec","#f2777a","#f99157","#ffcc66","#99cc99","#66cccc","#6699cc","#cc99cc","#d27b53"],embers:["#16130f","#2c2620","#433b32","#5a5047","#8a8075","#a39a90","#beb6ae","#dbd6d1","#826d57","#828257","#6d8257","#57826d","#576d82","#6d5782","#82576d","#825757"],flat:["#2c3e50","#34495e","#7f8c8d","#95a5a6","#bdc3c7","#e0e0e0","#f5f5f5","#ecf0f1","#e74c3c","#e67e22","#f1c40f","#2ecc71","#1abc9c","#3498db","#9b59b6","#be643c"],"fruit-soda":["#f1ecf1","#e0dee0","#d8d5d5","#b5b4b6","#979598","#515151","#474545","#2d2c2c","#fe3e31","#fe6d08","#f7e203","#47f74c","#0f9cfd","#2931df","#611fce","#b16f40"],github:["#ffffff","#f5f5f5","#c8c8fa","#969896","#e8e8e8","#333333","#ffffff","#969896","#ed6a43","#0086b3","#795da3","#183691","#183691","#795da3","#a71d5d","#333333"],"google-dark":["#1d1f21","#282a2e","#373b41","#969896","#b4b7b4","#c5c8c6","#e0e0e0","#ffffff","#cc342b","#f96a38","#fba922","#198844","#3971ed","#3971ed","#a36ac7","#3971ed"],"google-light":["#ffffff","#e0e0e0","#c5c8c6","#b4b7b4","#969896","#373b41","#282a2e","#1d1f21","#cc342b","#f96a38","#fba922","#198844","#3971ed","#3971ed","#a36ac7","#3971ed"],"grayscale-dark":["#101010","#252525","#464646","#525252","#ababab","#b9b9b9","#e3e3e3","#f7f7f7","#7c7c7c","#999999","#a0a0a0","#8e8e8e","#868686","#686868","#747474","#5e5e5e"],"grayscale-light":["#f7f7f7","#e3e3e3","#b9b9b9","#ababab","#525252","#464646","#252525","#101010","#7c7c7c","#999999","#a0a0a0","#8e8e8e","#868686","#686868","#747474","#5e5e5e"],greenscreen:["#001100","#003300","#005500","#007700","#009900","#00bb00","#00dd00","#00ff00","#007700","#009900","#007700","#00bb00","#005500","#009900","#00bb00","#005500"],"gruvbox-dark-hard":["#1d2021","#3c3836","#504945","#665c54","#bdae93","#d5c4a1","#ebdbb2","#fbf1c7","#fb4934","#fe8019","#fabd2f","#b8bb26","#8ec07c","#83a598","#d3869b","#d65d0e"],"gruvbox-light-hard":["#f9f5d7","#ebdbb2","#d5c4a1","#bdae93","#665c54","#504945","#3c3836","#282828","#9d0006","#af3a03","#b57614","#79740e","#427b58","#076678","#8f3f71","#d65d0e"],"harmonic-dark":["#0b1c2c","#223b54","#405c79","#627e99","#aabcce","#cbd6e2","#e5ebf1","#f7f9fb","#bf8b56","#bfbf56","#8bbf56","#56bf8b","#568bbf","#8b56bf","#bf568b","#bf5656"],"harmonic-light":["#f7f9fb","#e5ebf1","#cbd6e2","#aabcce","#627e99","#405c79","#223b54","#0b1c2c","#bf8b56","#bfbf56","#8bbf56","#56bf8b","#568bbf","#8b56bf","#bf568b","#bf5656"],"heetch-light":["#feffff","#392551","#7b6d8b","#9c92a8","#ddd6e5","#5a496e","#470546","#190134","#27d9d5","#bdb6c5","#5ba2b6","#f80059","#c33678","#47f9f5","#bd0152","#dedae2"],heetch:["#190134","#392551","#5a496e","#7b6d8b","#9c92a8","#bdb6c5","#dedae2","#feffff","#27d9d5","#5ba2b6","#8f6c97","#c33678","#f80059","#bd0152","#82034c","#470546"],helios:["#1d2021","#383c3e","#53585b","#6f7579","#cdcdcd","#d5d5d5","#dddddd","#e5e5e5","#d72638","#eb8413","#f19d1a","#88b92d","#1ba595","#1e8bac","#be4264","#c85e0d"],hopscotch:["#322931","#433b42","#5c545b","#797379","#989498","#b9b5b8","#d5d3d5","#ffffff","#dd464c","#fd8b19","#fdcc59","#8fc13e","#149b93","#1290bf","#c85e7c","#b33508"],"horizon-dark":["#1c1e26","#232530","#2e303e","#676a8d","#ced1d0","#cbced0","#dcdfe4","#e3e6ee","#e93c58","#e58d7d","#efb993","#efaf8e","#24a8b4","#df5273","#b072d1","#e4a382"],"ia-dark":["#1a1a1a","#222222","#1d414d","#767676","#b8b8b8","#cccccc","#e8e8e8","#f8f8f8","#d88568","#d86868","#b99353","#83a471","#7c9cae","#8eccdd","#b98eb2","#8b6c37"],"ia-light":["#f6f6f6","#dedede","#bde5f2","#898989","#767676","#181818","#e8e8e8","#898989","#9c5a02","#c43e18","#c48218","#38781c","#2d6bb1","#48bac2","#a94598","#8b6c37"],icy:["#021012","#031619","#041f23","#052e34","#064048","#095b67","#0c7c8c","#109cb0","#16c1d9","#b3ebf2","#80deea","#4dd0e1","#26c6da","#00bcd4","#00acc1","#0097a7"],isotope:["#000000","#404040","#606060","#808080","#c0c0c0","#d0d0d0","#e0e0e0","#ffffff","#ff0000","#ff9900","#ff0099","#33ff00","#00ffff","#0066ff","#cc00ff","#3300ff"],macintosh:["#000000","#404040","#404040","#808080","#808080","#c0c0c0","#c0c0c0","#ffffff","#dd0907","#ff6403","#fbf305","#1fb714","#02abea","#0000d3","#4700a5","#90713a"],marrakesh:["#201602","#302e00","#5f5b17","#6c6823","#86813b","#948e48","#ccc37a","#faf0a5","#c35359","#b36144","#a88339","#18974e","#75a738","#477ca1","#8868b3","#b3588e"],materia:["#263238","#2c393f","#37474f","#707880","#c9ccd3","#cdd3de","#d5dbe5","#ffffff","#ec5f67","#ea9560","#ffcc00","#8bd649","#80cbc4","#89ddff","#82aaff","#ec5f67"],"material-lighter":["#fafafa","#e7eaec","#cceae7","#ccd7da","#8796b0","#80cbc4","#80cbc4","#666666","#ff5370","#f76d47","#ffb62c","#91b859","#39adb5","#6182b8","#7c4dff","#e53935"],material:["#263238","#2e3c43","#314549","#546e7a","#b2ccd6","#eeffff","#eeffff","#ffffff","#f07178","#f78c6c","#ffcb6b","#c3e88d","#89ddff","#82aaff","#c792ea","#ff5370"],"mellow-purple":["#1e0528","#1a092d","#331354","#320f55","#873582","#ffeeff","#ffeeff","#f8c0ff","#00d9e9","#aa00a3","#955ae7","#05cb0d","#b900b1","#550068","#8991bb","#4d6fff"],"mexico-light":["#f8f8f8","#e8e8e8","#d8d8d8","#b8b8b8","#585858","#383838","#282828","#181818","#ab4642","#dc9656","#f79a0e","#538947","#4b8093","#7cafc2","#96609e","#a16946"],mocha:["#3b3228","#534636","#645240","#7e705a","#b8afad","#d0c8c6","#e9e1dd","#f5eeeb","#cb6077","#d28b71","#f4bc87","#beb55b","#7bbda4","#8ab3b5","#a89bb9","#bb9584"],monokai:["#272822","#383830","#49483e","#75715e","#a59f85","#f8f8f2","#f5f4f1","#f9f8f5","#f92672","#fd971f","#f4bf75","#a6e22e","#a1efe4","#66d9ef","#ae81ff","#cc6633"],nord:["#2e3440","#3b4252","#434c5e","#4c566a","#d8dee9","#e5e9f0","#eceff4","#8fbcbb","#88c0d0","#81a1c1","#5e81ac","#bf616a","#d08770","#ebcb8b","#a3be8c","#b48ead"],ocean:["#2b303b","#343d46","#4f5b66","#65737e","#a7adba","#c0c5ce","#dfe1e8","#eff1f5","#bf616a","#d08770","#ebcb8b","#a3be8c","#96b5b4","#8fa1b3","#b48ead","#ab7967"],"one-light":["#fafafa","#f0f0f1","#e5e5e6","#a0a1a7","#696c77","#383a42","#202227","#090a0b","#ca1243","#d75f00","#c18401","#50a14f","#0184bc","#4078f2","#a626a4","#986801"],onedark:["#282c34","#353b45","#3e4451","#545862","#565c64","#abb2bf","#b6bdca","#c8ccd4","#e06c75","#d19a66","#e5c07b","#98c379","#56b6c2","#61afef","#c678dd","#be5046"],"papercolor-dark":["#1c1c1c","#af005f","#5faf00","#d7af5f","#5fafd7","#808080","#d7875f","#d0d0d0","#585858","#5faf5f","#afd700","#af87d7","#ffaf00","#ff5faf","#00afaf","#5f8787"],"papercolor-light":["#eeeeee","#af0000","#008700","#5f8700","#0087af","#878787","#005f87","#444444","#bcbcbc","#d70000","#d70087","#8700af","#d75f00","#d75f00","#005faf","#005f87"],paraiso:["#2f1e2e","#41323f","#4f424c","#776e71","#8d8687","#a39e9b","#b9b6b0","#e7e9db","#ef6155","#f99b15","#fec418","#48b685","#5bc4bf","#06b6ef","#815ba4","#e96ba8"],pico:["#000000","#1d2b53","#7e2553","#008751","#ab5236","#5f574f","#c2c3c7","#fff1e8","#ff004d","#ffa300","#fff024","#00e756","#29adff","#83769c","#ff77a8","#ffccaa"],pop:["#000000","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#ffffff","#eb008a","#f29333","#f8ca12","#37b349","#00aabb","#0e5a94","#b31e8d","#7a2d00"],railscasts:["#2b2b2b","#272935","#3a4055","#5a647e","#d4cfc9","#e6e1dc","#f4f1ed","#f9f7f3","#da4939","#cc7833","#ffc66d","#a5c261","#519f50","#6d9cbe","#b6b3eb","#bc9458"],seti:["#151718","#282a2b","#3b758c","#41535b","#43a5d5","#d6d6d6","#eeeeee","#ffffff","#cd3f45","#db7b55","#e6cd69","#9fca56","#55dbbe","#55b5db","#a074c4","#8a553f"],"solarized-dark":["#002b36","#073642","#586e75","#657b83","#839496","#93a1a1","#eee8d5","#fdf6e3","#dc322f","#cb4b16","#b58900","#859900","#2aa198","#268bd2","#6c71c4","#d33682"],"solarized-light":["#fdf6e3","#eee8d5","#93a1a1","#839496","#657b83","#586e75","#073642","#002b36","#dc322f","#cb4b16","#b58900","#859900","#2aa198","#268bd2","#6c71c4","#d33682"],spacemacs:["#1f2022","#282828","#444155","#585858","#b8b8b8","#a3a3a3","#e8e8e8","#f8f8f8","#f2241f","#ffa500","#b1951d","#67b11d","#2d9574","#4f97d7","#a31db1","#b03060"],"summerfruit-dark":["#151515","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#ffffff","#ff0086","#fd8900","#aba800","#00c918","#1faaaa","#3777e6","#ad00a1","#cc6633"],"summerfruit-light":["#ffffff","#e0e0e0","#d0d0d0","#b0b0b0","#000000","#101010","#151515","#202020","#ff0086","#fd8900","#aba800","#00c918","#1faaaa","#3777e6","#ad00a1","#cc6633"],"tomorrow-night":["#1d1f21","#282a2e","#373b41","#969896","#b4b7b4","#c5c8c6","#e0e0e0","#ffffff","#cc6666","#de935f","#f0c674","#b5bd68","#8abeb7","#81a2be","#b294bb","#a3685a"],tomorrow:["#ffffff","#e0e0e0","#d6d6d6","#8e908c","#969896","#4d4d4c","#282a2e","#1d1f21","#c82829","#f5871f","#eab700","#718c00","#3e999f","#4271ae","#8959a8","#a3685a"],tube:["#231f20","#1c3f95","#5a5758","#737171","#959ca1","#d9d8d8","#e7e7e8","#ffffff","#ee2e24","#f386a1","#ffd204","#00853e","#85cebc","#009ddc","#98005d","#b06110"],twilight:["#1e1e1e","#323537","#464b50","#5f5a60","#838184","#a7a7a7","#c3c3c3","#ffffff","#cf6a4c","#cda869","#f9ee98","#8f9d6a","#afc4db","#7587a6","#9b859d","#9b703f"],woodland:["#231e18","#302b25","#48413a","#9d8b70","#b4a490","#cabcb1","#d7c8bc","#e4d4c8","#d35c5c","#ca7f32","#e0ac16","#b7ba53","#6eb958","#88a4d3","#bb90e2","#b49368"],zenburn:["#383838","#404040","#606060","#6f6f6f","#808080","#dcdccc","#c0c0c0","#ffffff","#dca3a3","#dfaf8f","#e0cf9f","#5f7f5f","#93e0e3","#7cb8bb","#dc8cc3","#000000"]},V=Object.keys(A),R=a=>{let e;if(typeof a=="string"){if(A[a]===void 0)throw new Error(`${a} not found`);e=A[a].reduce((d,r,o)=>{let t=`base0${o.toString(16).toUpperCase()}`;return d[t]=r,d},{})}else e=a;return`.container{${Object.keys(e).map(d=>`--${d}: ${e[d]};`).join("")}}`};var j=a=>{try{return!!new URL(a)}catch{return!1}},W=a=>{if(Array.isArray(a))return"array";if(a===null)return"null";if(a instanceof RegExp)return"regexp";let e=typeof a;return e==="number"?isNaN(a)?"NaN":isFinite(a)?Number.isInteger(a)?"int":"float":"Infinity":e==="boolean"?"bool":e==="object"&&a instanceof Date?"date":e};var $=a=>{if(typeof a=="boolean")return a;if(a==="true")return!0;if(a==="false")return!1;throw new Error("should be a boolean!")},J=a=>{if(typeof a=="string")return a;throw new Error("should be a string!")},O=a=>{if(typeof a=="number"&&a>=0)return a;if(typeof a=="string"&&(a=parseFloat(a)),isNaN(a)||a<0)throw new Error("should be a positive number!");return a},B=a=>{if(typeof a=="boolean"||typeof a=="number")return a;if(a==="true")return!0;if(a==="false")return!1;if(typeof a=="string"&&(a=parseFloat(a),!isNaN(a)&&a>=0))return a;throw new Error("should be a boolean or a positive number!")},z=a=>{if(typeof a=="object")return a;if(typeof a=="string")try{return JSON.parse(a)}catch{return a}throw new Error("should be a string or JSON!")};var P=function({key:a,value:e,expanded:d,indent:r,onToggleExpand:o,level:t=0,parentRow:v}){let n=document.createElement("div");this.maxLevel=t;let i=W(e),m=i==="array"||i==="object",x=d===!0||d>t,p,g,b,h;n.className=`data-row ${x?"expanded":""}`,n.dataset.key=a,n.dataset.level=t,t>0&&(n.style.paddingLeft=`${r*5}px`);let f=document.createElement("span");f.className="key-value-wrapper",n.appendChild(f);let w=()=>{n.classList.toggle("expanded"),o&&(n.classList.contains("expanded")?o(t+1):o(t))};if(m){let c=document.createElement("span");c.className="icon-wrapper",f.appendChild(c),p=document.createElement("span"),p.className="expand icon clickable",p.setAttribute("title",x?"Collapse":"Expand"),c.appendChild(p),c.addEventListener("click",()=>w())}if(a!==null&&a!==""){let c=typeof a;b=document.createElement("span"),b.className=`key clickable ${c==="number"?"number":""}`,b.textContent=c==="number"?a:`${a}`,b.addEventListener("click",()=>w()),f.appendChild(b);let s=document.createElement("span");s.classList.add("colon"),s.textContent=":",f.appendChild(s)}if(m){let c=document.createElement("span");c.className="opening-parenthesis",c.textContent=i==="array"?"[":"{",f.appendChild(c);let s=document.createElement("span");s.className="ellipsis clickable",s.textContent="...",s.addEventListener("click",()=>w()),f.appendChild(s);let l=document.createElement("span");l.className="closing-parenthesis",l.textContent=i==="array"?"]":"}",f.appendChild(l);let E=document.createElement("span"),D=i==="array"?e.length:Object.keys(e).length;E.className="items-size",E.textContent=`${D} item${D===1?"":"s"}`,f.appendChild(E),g=[],(i==="array"?e.map((C,k)=>k):Object.keys(e)).forEach(C=>{let k=new P({key:C,value:e[C],expanded:d,indent:r,onToggleExpand:o,level:t+1,parentRow:n});g.push(k),n.appendChild(k.element),this.maxLevel=Math.max(this.maxLevel,k.maxLevel)});let S=document.createElement("span");S.className="closing-parenthesis",S.textContent=i==="array"?"]":"}",n.appendChild(S)}else{let c=null;["nan","NaN","undefined","null"].includes(i)||(c=document.createElement("span"),c.className="type",c.textContent=i.toLowerCase());let s=document.createElement("span");s.className=`value ${i.toLowerCase()}`,h=document.createElement("span"),h.className="value-data",h.textContent=i==="string"?`"${e}"`:e,c&&s.appendChild(c),s.appendChild(h),f.appendChild(s)}let u=document.createElement("span");u.className="copy icon",u.setAttribute("title","Copy to clipboard");let y=document.createElement("span");y.className="icon-wrapper",y.addEventListener("click",()=>{navigator.clipboard.writeText(JSON.stringify(e,null,r))}),y.appendChild(u),f.appendChild(y);let N=c=>{let s=new RegExp(c,"gi"),l=[];b&&l.push(b),h&&l.push(h);let E=!1;l.forEach(D=>{let L=D.textContent;if(D.innerHTML=L,!c||c==="")return;let S=[...L.matchAll(s)].map(I=>I.index),C=[],k=0;S.forEach(I=>{E=!0,C.push(L.slice(k,I)),C.push(`${c}`),k=I+c.length}),C.push(L.slice(k)),D.innerHTML=C.join("")}),E&&!n.classList.contains("expanded")&&(w(),v&&v.classList.add("expanded"))};this.update=({expanded:c,indent:s,searchTerm:l})=>{s!==void 0&&t>0&&(n.style.paddingLeft=`${s*5}px`),c!==void 0&&(x=c===!0||c>t,n.classList.toggle("expanded",x),p&&(p.title=x?"Collapse":"Expand")),l!=null&&N(l),g&&g.forEach(E=>E.update({expanded:c,indent:s,searchTerm:l}))},this.element=n},U=P;var G=function({expanded:a,indent:e,onChange:d,onSearch:r,showDetails:o}){this.indent=e||2,this.expanded=typeof a=="number"?a:2,this.showDetails=o!==!1,this.maxExpandLevel=0;let t,v=document.createElement("div");v.className="toolbar";let n=document.createElement("div");n.className="options",v.appendChild(n);let i=document.createElement("div");i.className="search-wrapper",v.appendChild(i);let m=document.createElement("div");m.className="icon-wrapper clickable",n.appendChild(m);let x=document.createElement("span");x.className="icon refresh",m.onclick=()=>this.refresh(),m.appendChild(x);let p=document.createElement("div");p.className="icon-wrapper clickable",n.appendChild(p);let g=document.createElement("span");g.className="icon plus",p.appendChild(g),p.onclick=()=>{this.expanded{this.expanded>this.maxExpandLevel&&(this.expanded=this.maxExpandLevel),this.expanded>0&&(this.expanded-=1),d({expanded:this.expanded})};let f=document.createElement("div");f.className="icon-wrapper clickable",n.appendChild(f);let w=document.createElement("span");w.className="icon indent",f.onclick=()=>{this.indent+=1,d({indent:this.indent})},f.appendChild(w);let u=document.createElement("div");u.className="icon-wrapper clickable",n.appendChild(u);let y=document.createElement("span");y.className="icon outdent",u.onclick=()=>{this.indent-=1,d({indent:this.indent})},u.appendChild(y);let N=document.createElement("div");N.className="icon-wrapper clickable",n.appendChild(N);let c=document.createElement("span");c.className=`icon info ${this.showDetails?"active":""}`,N.onclick=()=>{c.classList.toggle("active"),this.showDetails=!this.showDetails,d({showDetails:this.showDetails})},N.appendChild(c);let s=document.createElement("span");s.className="icon search",i.appendChild(s),t=document.createElement("input"),t.className="search-input",t.placeholder="Search",t.oninput=l=>{r(l.target.value)},i.appendChild(t),this.refresh=()=>{this.expanded=1,this.indent=2,t&&(t.value=""),d({indent:2,expanded:1}),r("")},this.updateShowDetails=l=>{this.showDetails=l,this.showDetails?c.classList.add("active"):c.classList.remove("active")},this.element=v},M=G;function K(a,e={}){let d=document.createElement("div");d.className="container",a.appendChild(d);let r=null,o=null,t={};this.update=({data:v,expanded:n,indent:i,expandIconType:m,showDataTypes:x,showToolbar:p,showSize:g,showCopy:b})=>{if(v){let f=JSON.stringify(v);t.dataComapreString!==f&&(t.dataComapreString=f,r=new U({key:"",value:v,expanded:n,indent:i,onToggleExpand:w=>{o&&(o.expanded=w),t.expanded=w}}),d.replaceChildren(r.element),t.showToolbar&&o&&(d.prepend(o.element),o.maxExpandLevel=r.maxLevel,o.refresh()))}if(p!==void 0&&t.showToolbar!==p)if(t.showToolbar=p,p)o||(o=new M({expanded:t.expanded,indent:t.indent,onChange:({expanded:f,indent:w,showDetails:u})=>{let y={expanded:f,indent:w};u!==void 0&&(y.showCopy=u,y.showSize=u,y.showDataTypes=u),this.update(y)},onSearch:f=>{r&&r.update({searchTerm:f})}})),r&&(o.maxExpandLevel=r.maxLevel),d.prepend(o.element);else{let f=d.querySelector(".toolbar");f&&f.remove()}let h={};n!==void 0&&t.expanded!==n&&(t.expanded=n,h.expanded=n),i!==void 0&&t.indent!==i&&(t.indent=i,h.indent=i),Object.keys(h).length>0&&r&&r.update(h),b!==void 0&&t.showCopy!==b&&(t.showCopy=b,d.classList.toggle("show-copy",b)),g!==void 0&&t.showSize!==g&&(t.showSize=g,d.classList.toggle("show-size",g),o&&o.updateShowDetails(t.showSize||t.showDataTypes)),x!==void 0&&t.showDataTypes!==x&&(t.showDataTypes=x,d.classList.toggle("show-data-types",x),o&&o.updateShowDetails(t.showSize||t.showDataTypes)),m!==void 0&&t.expandIconType!==m&&(d.classList.add(`expand-icon-${m}`),d.classList.remove(`expand-icon-${t.expandIconType}`),t.expandIconType=m)},this.update(e)}var F=K;var H={indent:2,expanded:1,theme:"default-light",showDataTypes:!0,showToolbar:!1,expandIconType:"arrow",showCopy:!0,showSize:!0,data:null},T=class a extends HTMLElement{#t;#e;#c;#n;constructor(){super(),this.#e={...H},this.#t=document.createElement("style");let e=this.attachShadow({mode:"open"}),d=document.createElement("style");d.textContent=`${q}`,e.appendChild(d),e.appendChild(this.#t),this.theme=this.#e.theme,this.#n=new F(e,this.#e)}static get observedAttributes(){return Object.keys(H).map(e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase())}static allowedAttributes=["id"].concat(a.observedAttributes);#d=(...e)=>{console.warn(`JsonViewer${this.id?` (${this.id})`:""}:`,...e)};#a=(e,d,r,o)=>{try{if(d=r(d),o&&!o.includes(d))throw new Error(`should be one of ${o.join(", ")}`);if(this.#e[e]===d)return;this.#e[e]=d,this.#o()}catch(t){this.#d(`Attribute ${e}: ${t.message}`)}};set showDataTypes(e){this.#a("showDataTypes",e,$)}set showToolbar(e){this.#a("showToolbar",e,$)}set indent(e){this.#a("indent",e,O)}set expandIconType(e){this.#a("expandIconType",e,J,["arrow","square","circle"])}set expanded(e){this.#a("expanded",e,B)}set showSize(e){this.#a("showSize",e,$)}set showCopy(e){this.#a("showCopy",e,$)}set theme(e){try{if(e=z(e),this.#e.theme===e&&this.#t.textContent!=="")return;this.#t.textContent=R(e),this.#e.theme=e}catch(d){this.#d(`Attribute theme: ${d.message}`)}}set data(e){try{e=z(e);let d=JSON.stringify(e);if(this.#e.data===d)return;this.#e.data=d,j(e)?fetch(e).then(r=>r.json()).then(r=>{this.#c=r,this.#o()}):(this.#c=e,this.#o())}catch(d){this.#d(`Attribute data: ${d.message}`)}}get options(){return this.#e}connectedCallback(){window.addEventListener("DOMContentLoaded",()=>{let e=this.textContent;this.textContent="",e&&(this.data=e)})}attributeChangedCallback(e,d,r){if(a.allowedAttributes.indexOf(e)>-1){let o=e.replace(/-([a-z])/g,t=>t[1].toUpperCase());this[o]=r}else this.#d(`Attribute ${e} is not supported and will be ignored!`),this.removeAttribute(e)}#o=()=>{this.#n.update({data:this.#c,expanded:this.#e.expanded,expandIconType:this.#e.expandIconType,indent:this.#e.indent,showDataTypes:this.#e.showDataTypes,showToolbar:this.#e.showToolbar,showSize:this.#e.showSize,showCopy:this.#e.showCopy})}};customElements.get("andypf-json-viewer")||customElements.define("andypf-json-viewer",T); diff --git a/dist/esm/react/JsonViewer.js b/dist/esm/react/JsonViewer.js deleted file mode 100644 index 0aa30ce..0000000 --- a/dist/esm/react/JsonViewer.js +++ /dev/null @@ -1,28 +0,0 @@ - -/* -MIT License - -Copyright (c) 2025 Andreas Pfau - -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. - -*/ - -import q from"react";var R=`.container{background-color:var(--base00);color:var(--base05);padding:10px;letter-spacing:0.5px;font-family:monospace;border-radius:3px}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;padding-bottom:5px;border-bottom:solid 1px var(--base02)}.toolbar .options,.toolbar .search-wrapper{display:flex;align-items:center}.toolbar .icon-wrapper{height:15px;display:flex;align-items:center;padding:2px 5px}.toolbar .icon-wrapper:hover{background-color:var(--base02);border-radius:3px}.toolbar .icon-wrapper:first-child{margin-left:0px}.toolbar .search.icon{margin-right:5px}.toolbar .search-input{border:none;background:transparent;outline:none;flex:1;font-size:16px;color:var(--base0D)}.match{background-color:yellow;font-weight:bold;color:red}.data-row{padding:3px 0}.data-row .data-row{border-left:solid 1px var(--base02);padding-left:20px;margin-left:5px;display:none}.data-row.expanded>.data-row{display:block}.data-row .key-value-wrapper{display:flex;align-items:center}.data-row .key{color:var(--base07)}.data-row .key.number{color:var(--base0C)}.data-row .colon{color:var(--base07);margin:0 5px 0 0}.clickable{cursor:pointer}.data-row .opening-parenthesis,.data-row .closing-parenthesis{color:var(--base07)}.data-row .ellipsis{color:var(--base09)}.data-row.expanded>.key-value-wrapper .closing-parenthesis,.data-row.expanded>.key-value-wrapper .ellipsis{display:none}.data-row>.closing-parenthesis{display:none}.data-row.expanded>.closing-parenthesis{display:inline-block}.data-row .items-size{margin-left:10px;color:var(--base04);font-style:italic;display:none}.show-size .data-row .items-size{display:inline-block}.data-row .value.bool,.data-row .value.boolean{color:var(--base0E)}.data-row .value.function{color:var(--base0D)}.data-row .value.int,.data-row .value.integer{color:var(--base0F)}.data-row .value.float{color:var(--base0B)}.data-row .value.string{color:var(--base09)}.data-row .value.string .content{overflow-wrap:break-word}.data-row .value.string .content::before{content:open-quote}.data-row .value.string .content::after{content:close-quote}.data-row .value.regexp{color:var(--base0A)}.data-row .value.nan{color:var(--base08)}.data-row .value.null{color:var(--base0A)}.data-row .value.undefined{color:var(--base05)}.data-row .value.date{color:var(--base0D)}.data-row .value.nan,.data-row .value.null,.data-row .value.undefined{border-radius:3px;background-color:var(--base02);padding:1px 2px}.data-row .value .type{font-size:smaller;margin-right:4px;opacity:0.8;display:none}.data-row .value .value-data{word-break:break-all}.show-data-types .data-row .value .type{display:inline-block}.icon-wrapper,.copy-icon-wrapper{display:inline-block;cursor:pointer}.icon{display:block;position:relative}.icon:before,.icon:after{content:"";position:absolute;display:block}.expand.icon{margin-right:5px}.expand-icon-arrow .expand.icon{margin-left:3px;width:0;height:0;border-left:solid 6px var(--base0E);border-top:solid 6px transparent;border-bottom:solid 6px transparent}.expand-icon-arrow .expanded>.key-value-wrapper .expand.icon,.expand-icon-arrow .expanded.icon.expand{transform:rotate(90deg);border-left-color:var(--base0D)}.expand-icon-square .expand.icon,.expand-icon-circle .expand.icon{display:block;width:9px;height:9px;border-radius:2px;border:solid 1px var(--base0E)}.expand-icon-circle .expand.icon{border-radius:50%}.expand-icon-square .expand.icon:before,.expand-icon-circle .expand.icon:before,.expand-icon-square .expand.icon:after,.expand-icon-circle .expand.icon:after{width:5px;height:1px;background-color:var(--base0E);left:2px;top:4px}.expand-icon-square .expand.icon:after,.expand-icon-circle .expand.icon:after{transform:rotate(90deg)}.expand-icon-square .expanded>.key-value-wrapper .expand.icon:after,.expand-icon-circle .expanded>.key-value-wrapper .expand.icon:after,.expand-icon-square .expand.icon.expanded:after,.expand-icon-circle .expand.icon.expanded:after{display:none}.expand-icon-square .expanded>.key-value-wrapper .expand.icon,.expand-icon-circle .expanded>.key-value-wrapper .expand.icon,.expand-icon-square .expand.icon.expanded,.expand-icon-circle .expanded.expand.icon{border-color:var(--base0D)}.expand-icon-square .expanded>.key-value-wrapper .expand.icon:before,.expand-icon-circle .expanded>.key-value-wrapper .expand.icon:before,.expand-icon-square .expanded.expand.icon:before,.expand-icon-circle .expanded.expand.icon:before{background-color:var(--base0D)}.icon-wrapper{display:inline-block;cursor:pointer}.show-copy .key-value-wrapper:hover .icon.copy{display:block}.copy.icon{margin-left:10px;display:none;width:8px;height:10px;border:solid 1px var(--base0D);border-radius:1px;position:relative;top:4px;transition:0.2s all}.copy.icon:active{transform:scale(1.6);background-color:var(--base0B)}.copy.icon:before{content:"";display:block;left:-3px;top:-3px;width:8px;height:10px;border-top:solid 1px var(--base0D);border-left:solid 1px var(--base0D);border-radius:1px 0 0 0}.plus.icon{width:11px;height:1px;background-color:var(--base0D)}.plus.icon:after{content:"";width:11px;height:1px;background-color:var(--base0D);-webkit-transform:rotate(90deg);transform:rotate(90deg)}.minus.icon{width:11px;height:1px;background-color:var(--base0D)}.indent.icon{color:var(--base0D);width:17px;height:8px;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D)}.indent.icon:before{content:"";position:absolute;top:2px;right:0;width:11px;height:2px;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D)}.indent.icon:after{content:"";position:absolute;top:1px;width:0;height:0;border-top:solid 3px transparent;border-bottom:solid 3px transparent;border-left:solid 3px var(--base0D);border-right:solid 3px transparent}.outdent.icon{color:var(--base0D);margin-left:2px;width:17px;height:8px;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D)}.outdent.icon:before{content:"";top:2px;right:0;width:11px;height:2px;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D)}.outdent.icon:after{content:"";top:1px;left:-3px;width:0;height:0;border-top:solid 3px transparent;border-bottom:solid 3px transparent;border-left:solid 3px transparent;border-right:solid 3px var(--base0D)}.refresh.icon{color:var(--base0D);width:10px;height:10px;border-radius:50%;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D);border-left:solid 1px transparent;border-right:solid 1px var(--base0D)}.refresh.icon:before{content:"";left:1px;top:8px;width:3px;height:3px;border-top:solid 1px var(--base0D);border-left:solid 1px var(--base0D);-webkit-transform:rotate(-22.5deg);transform:rotate(-22.5deg)}.info.icon{width:12px;height:11px;border:solid 1px var(--base0D);border-radius:2px}.info.icon::before{top:5px;left:5px;width:2px;height:5px;background-color:var(--base0D)}.info.icon::after{top:2px;left:5px;width:2px;height:2px;background-color:var(--base0D)}.info.icon.active{background-color:var(--base0D)}.info.icon.active::before,.info.icon.active::after{background-color:var(--base02)}.search.icon{color:var(--base0D);width:11px;height:11px;border:solid 1px var(--base0D);border-radius:100%;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.search.icon:before{content:"";top:11px;left:5px;height:6px;width:1px;background-color:var(--base0D)} -`;var A={apathy:["#031a16","#0b342d","#184e45","#2b685e","#5f9c92","#81b5ac","#a7cec8","#d2e7e4","#3e9688","#3e7996","#3e4c96","#883e96","#963e4c","#96883e","#4c963e","#3e965b"],ashes:["#1c2023","#393f45","#565e65","#747c84","#adb3ba","#c7ccd1","#dfe2e5","#f3f4f5","#c7ae95","#c7c795","#aec795","#95c7ae","#95aec7","#ae95c7","#c795ae","#c79595"],"atelier-dune-light":["#fefbec","#e8e4cf","#a6a28c","#999580","#7d7a68","#6e6b5e","#292824","#20201d","#d73737","#b65611","#ae9513","#60ac39","#1fad83","#6684e1","#b854d4","#d43552"],"atelier-dune":["#20201d","#292824","#6e6b5e","#7d7a68","#999580","#a6a28c","#e8e4cf","#fefbec","#d73737","#b65611","#ae9513","#60ac39","#1fad83","#6684e1","#b854d4","#d43552"],atlas:["#002635","#00384d","#517f8d","#6c8b91","#869696","#a1a19a","#e6e6dc","#fafaf8","#ff5a67","#f08e48","#ffcc1b","#7fc06e","#14747e","#5dd7b9","#9a70a4","#c43060"],bespin:["#28211c","#36312e","#5e5d5c","#666666","#797977","#8a8986","#9d9b97","#baae9e","#cf6a4c","#cf7d34","#f9ee98","#54be0d","#afc4db","#5ea6ea","#9b859d","#937121"],"black-metal":["#000000","#121212","#222222","#333333","#999999","#c1c1c1","#999999","#c1c1c1","#5f8787","#aaaaaa","#a06666","#dd9999","#aaaaaa","#888888","#999999","#444444"],brewer:["#0c0d0e","#2e2f30","#515253","#737475","#959697","#b7b8b9","#dadbdc","#fcfdfe","#e31a1c","#e6550d","#dca060","#31a354","#80b1d3","#3182bd","#756bb1","#b15928"],bright:["#000000","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#f5f5f5","#ffffff","#fb0120","#fc6d24","#fda331","#a1c659","#76c7b7","#6fb3d2","#d381c3","#be643c"],brogrammer:["#1f1f1f","#f81118","#2dc55e","#ecba0f","#2a84d2","#4e5ab7","#1081d6","#d6dbe5","#d6dbe5","#de352e","#1dd361","#f3bd09","#1081d6","#5350b9","#0f7ddb","#ffffff"],"brushtrees-dark":["#485867","#5a6d7a","#6d828e","#8299a1","#98afb5","#b0c5c8","#c9dbdc","#e3efef","#b38686","#d8bba2","#aab386","#87b386","#86b3b3","#868cb3","#b386b2","#b39f9f"],brushtrees:["#e3efef","#c9dbdc","#b0c5c8","#98afb5","#8299a1","#6d828e","#5a6d7a","#485867","#b38686","#d8bba2","#aab386","#87b386","#86b3b3","#868cb3","#b386b2","#b39f9f"],chalk:["#151515","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#f5f5f5","#fb9fb1","#eda987","#ddb26f","#acc267","#12cfc0","#6fc2ef","#e1a3ee","#deaf8f"],circus:["#191919","#202020","#303030","#5f5a60","#505050","#a7a7a7","#808080","#ffffff","#dc657d","#4bb1a7","#c3ba63","#84b97c","#4bb1a7","#639ee4","#b888e2","#b888e2"],"classic-dark":["#151515","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#f5f5f5","#ac4142","#d28445","#f4bf75","#90a959","#75b5aa","#6a9fb5","#aa759f","#8f5536"],"classic-light":["#f5f5f5","#e0e0e0","#d0d0d0","#b0b0b0","#505050","#303030","#202020","#151515","#ac4142","#d28445","#f4bf75","#90a959","#75b5aa","#6a9fb5","#aa759f","#8f5536"],codeschool:["#232c31","#1c3657","#2a343a","#3f4944","#84898c","#9ea7a6","#a7cfa3","#b5d8f6","#2a5491","#43820d","#a03b1e","#237986","#b02f30","#484d79","#c59820","#c98344"],cupcake:["#fbf1f2","#f2f1f4","#d8d5dd","#bfb9c6","#a59daf","#8b8198","#72677e","#585062","#d57e85","#ebb790","#dcb16c","#a3b367","#69a9a7","#7297b9","#bb99b4","#baa58c"],cupertino:["#ffffff","#c0c0c0","#c0c0c0","#808080","#808080","#404040","#404040","#5e5e5e","#c41a15","#eb8500","#826b28","#007400","#318495","#0000ff","#a90d91","#826b28"],darcula:["#2b2b2b","#323232","#323232","#606366","#a4a3a3","#a9b7c6","#ffc66d","#ffffff","#4eade5","#689757","#bbb529","#6a8759","#629755","#9876aa","#cc7832","#808080"],darktooth:["#1d2021","#32302f","#504945","#665c54","#928374","#a89984","#d5c4a1","#fdf4c1","#fb543f","#fe8625","#fac03b","#95c085","#8ba59b","#0d6678","#8f4673","#a87322"],"default-dark":["#181818","#282828","#383838","#585858","#b8b8b8","#d8d8d8","#e8e8e8","#f8f8f8","#ab4642","#dc9656","#f7ca88","#a1b56c","#86c1b9","#7cafc2","#ba8baf","#a16946"],"default-light":["#ffffff","#e8e8e8","#d8d8d8","#b8b8b8","#585858","#383838","#282828","#181818","#ab4642","#dc9656","#ab4642","#a1b56c","#86c1b9","#7cafc2","#ba8baf","#a16946"],dracula:["#282936","#3a3c4e","#4d4f68","#626483","#62d6e8","#e9e9f4","#f1f2f8","#f7f7fb","#ea51b2","#b45bcf","#00f769","#ebff87","#a1efe4","#62d6e8","#b45bcf","#00f769"],eighties:["#2d2d2d","#393939","#515151","#747369","#a09f93","#d3d0c8","#e8e6df","#f2f0ec","#f2777a","#f99157","#ffcc66","#99cc99","#66cccc","#6699cc","#cc99cc","#d27b53"],embers:["#16130f","#2c2620","#433b32","#5a5047","#8a8075","#a39a90","#beb6ae","#dbd6d1","#826d57","#828257","#6d8257","#57826d","#576d82","#6d5782","#82576d","#825757"],flat:["#2c3e50","#34495e","#7f8c8d","#95a5a6","#bdc3c7","#e0e0e0","#f5f5f5","#ecf0f1","#e74c3c","#e67e22","#f1c40f","#2ecc71","#1abc9c","#3498db","#9b59b6","#be643c"],"fruit-soda":["#f1ecf1","#e0dee0","#d8d5d5","#b5b4b6","#979598","#515151","#474545","#2d2c2c","#fe3e31","#fe6d08","#f7e203","#47f74c","#0f9cfd","#2931df","#611fce","#b16f40"],github:["#ffffff","#f5f5f5","#c8c8fa","#969896","#e8e8e8","#333333","#ffffff","#969896","#ed6a43","#0086b3","#795da3","#183691","#183691","#795da3","#a71d5d","#333333"],"google-dark":["#1d1f21","#282a2e","#373b41","#969896","#b4b7b4","#c5c8c6","#e0e0e0","#ffffff","#cc342b","#f96a38","#fba922","#198844","#3971ed","#3971ed","#a36ac7","#3971ed"],"google-light":["#ffffff","#e0e0e0","#c5c8c6","#b4b7b4","#969896","#373b41","#282a2e","#1d1f21","#cc342b","#f96a38","#fba922","#198844","#3971ed","#3971ed","#a36ac7","#3971ed"],"grayscale-dark":["#101010","#252525","#464646","#525252","#ababab","#b9b9b9","#e3e3e3","#f7f7f7","#7c7c7c","#999999","#a0a0a0","#8e8e8e","#868686","#686868","#747474","#5e5e5e"],"grayscale-light":["#f7f7f7","#e3e3e3","#b9b9b9","#ababab","#525252","#464646","#252525","#101010","#7c7c7c","#999999","#a0a0a0","#8e8e8e","#868686","#686868","#747474","#5e5e5e"],greenscreen:["#001100","#003300","#005500","#007700","#009900","#00bb00","#00dd00","#00ff00","#007700","#009900","#007700","#00bb00","#005500","#009900","#00bb00","#005500"],"gruvbox-dark-hard":["#1d2021","#3c3836","#504945","#665c54","#bdae93","#d5c4a1","#ebdbb2","#fbf1c7","#fb4934","#fe8019","#fabd2f","#b8bb26","#8ec07c","#83a598","#d3869b","#d65d0e"],"gruvbox-light-hard":["#f9f5d7","#ebdbb2","#d5c4a1","#bdae93","#665c54","#504945","#3c3836","#282828","#9d0006","#af3a03","#b57614","#79740e","#427b58","#076678","#8f3f71","#d65d0e"],"harmonic-dark":["#0b1c2c","#223b54","#405c79","#627e99","#aabcce","#cbd6e2","#e5ebf1","#f7f9fb","#bf8b56","#bfbf56","#8bbf56","#56bf8b","#568bbf","#8b56bf","#bf568b","#bf5656"],"harmonic-light":["#f7f9fb","#e5ebf1","#cbd6e2","#aabcce","#627e99","#405c79","#223b54","#0b1c2c","#bf8b56","#bfbf56","#8bbf56","#56bf8b","#568bbf","#8b56bf","#bf568b","#bf5656"],"heetch-light":["#feffff","#392551","#7b6d8b","#9c92a8","#ddd6e5","#5a496e","#470546","#190134","#27d9d5","#bdb6c5","#5ba2b6","#f80059","#c33678","#47f9f5","#bd0152","#dedae2"],heetch:["#190134","#392551","#5a496e","#7b6d8b","#9c92a8","#bdb6c5","#dedae2","#feffff","#27d9d5","#5ba2b6","#8f6c97","#c33678","#f80059","#bd0152","#82034c","#470546"],helios:["#1d2021","#383c3e","#53585b","#6f7579","#cdcdcd","#d5d5d5","#dddddd","#e5e5e5","#d72638","#eb8413","#f19d1a","#88b92d","#1ba595","#1e8bac","#be4264","#c85e0d"],hopscotch:["#322931","#433b42","#5c545b","#797379","#989498","#b9b5b8","#d5d3d5","#ffffff","#dd464c","#fd8b19","#fdcc59","#8fc13e","#149b93","#1290bf","#c85e7c","#b33508"],"horizon-dark":["#1c1e26","#232530","#2e303e","#676a8d","#ced1d0","#cbced0","#dcdfe4","#e3e6ee","#e93c58","#e58d7d","#efb993","#efaf8e","#24a8b4","#df5273","#b072d1","#e4a382"],"ia-dark":["#1a1a1a","#222222","#1d414d","#767676","#b8b8b8","#cccccc","#e8e8e8","#f8f8f8","#d88568","#d86868","#b99353","#83a471","#7c9cae","#8eccdd","#b98eb2","#8b6c37"],"ia-light":["#f6f6f6","#dedede","#bde5f2","#898989","#767676","#181818","#e8e8e8","#898989","#9c5a02","#c43e18","#c48218","#38781c","#2d6bb1","#48bac2","#a94598","#8b6c37"],icy:["#021012","#031619","#041f23","#052e34","#064048","#095b67","#0c7c8c","#109cb0","#16c1d9","#b3ebf2","#80deea","#4dd0e1","#26c6da","#00bcd4","#00acc1","#0097a7"],isotope:["#000000","#404040","#606060","#808080","#c0c0c0","#d0d0d0","#e0e0e0","#ffffff","#ff0000","#ff9900","#ff0099","#33ff00","#00ffff","#0066ff","#cc00ff","#3300ff"],macintosh:["#000000","#404040","#404040","#808080","#808080","#c0c0c0","#c0c0c0","#ffffff","#dd0907","#ff6403","#fbf305","#1fb714","#02abea","#0000d3","#4700a5","#90713a"],marrakesh:["#201602","#302e00","#5f5b17","#6c6823","#86813b","#948e48","#ccc37a","#faf0a5","#c35359","#b36144","#a88339","#18974e","#75a738","#477ca1","#8868b3","#b3588e"],materia:["#263238","#2c393f","#37474f","#707880","#c9ccd3","#cdd3de","#d5dbe5","#ffffff","#ec5f67","#ea9560","#ffcc00","#8bd649","#80cbc4","#89ddff","#82aaff","#ec5f67"],"material-lighter":["#fafafa","#e7eaec","#cceae7","#ccd7da","#8796b0","#80cbc4","#80cbc4","#666666","#ff5370","#f76d47","#ffb62c","#91b859","#39adb5","#6182b8","#7c4dff","#e53935"],material:["#263238","#2e3c43","#314549","#546e7a","#b2ccd6","#eeffff","#eeffff","#ffffff","#f07178","#f78c6c","#ffcb6b","#c3e88d","#89ddff","#82aaff","#c792ea","#ff5370"],"mellow-purple":["#1e0528","#1a092d","#331354","#320f55","#873582","#ffeeff","#ffeeff","#f8c0ff","#00d9e9","#aa00a3","#955ae7","#05cb0d","#b900b1","#550068","#8991bb","#4d6fff"],"mexico-light":["#f8f8f8","#e8e8e8","#d8d8d8","#b8b8b8","#585858","#383838","#282828","#181818","#ab4642","#dc9656","#f79a0e","#538947","#4b8093","#7cafc2","#96609e","#a16946"],mocha:["#3b3228","#534636","#645240","#7e705a","#b8afad","#d0c8c6","#e9e1dd","#f5eeeb","#cb6077","#d28b71","#f4bc87","#beb55b","#7bbda4","#8ab3b5","#a89bb9","#bb9584"],monokai:["#272822","#383830","#49483e","#75715e","#a59f85","#f8f8f2","#f5f4f1","#f9f8f5","#f92672","#fd971f","#f4bf75","#a6e22e","#a1efe4","#66d9ef","#ae81ff","#cc6633"],nord:["#2e3440","#3b4252","#434c5e","#4c566a","#d8dee9","#e5e9f0","#eceff4","#8fbcbb","#88c0d0","#81a1c1","#5e81ac","#bf616a","#d08770","#ebcb8b","#a3be8c","#b48ead"],ocean:["#2b303b","#343d46","#4f5b66","#65737e","#a7adba","#c0c5ce","#dfe1e8","#eff1f5","#bf616a","#d08770","#ebcb8b","#a3be8c","#96b5b4","#8fa1b3","#b48ead","#ab7967"],"one-light":["#fafafa","#f0f0f1","#e5e5e6","#a0a1a7","#696c77","#383a42","#202227","#090a0b","#ca1243","#d75f00","#c18401","#50a14f","#0184bc","#4078f2","#a626a4","#986801"],onedark:["#282c34","#353b45","#3e4451","#545862","#565c64","#abb2bf","#b6bdca","#c8ccd4","#e06c75","#d19a66","#e5c07b","#98c379","#56b6c2","#61afef","#c678dd","#be5046"],"papercolor-dark":["#1c1c1c","#af005f","#5faf00","#d7af5f","#5fafd7","#808080","#d7875f","#d0d0d0","#585858","#5faf5f","#afd700","#af87d7","#ffaf00","#ff5faf","#00afaf","#5f8787"],"papercolor-light":["#eeeeee","#af0000","#008700","#5f8700","#0087af","#878787","#005f87","#444444","#bcbcbc","#d70000","#d70087","#8700af","#d75f00","#d75f00","#005faf","#005f87"],paraiso:["#2f1e2e","#41323f","#4f424c","#776e71","#8d8687","#a39e9b","#b9b6b0","#e7e9db","#ef6155","#f99b15","#fec418","#48b685","#5bc4bf","#06b6ef","#815ba4","#e96ba8"],pico:["#000000","#1d2b53","#7e2553","#008751","#ab5236","#5f574f","#c2c3c7","#fff1e8","#ff004d","#ffa300","#fff024","#00e756","#29adff","#83769c","#ff77a8","#ffccaa"],pop:["#000000","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#ffffff","#eb008a","#f29333","#f8ca12","#37b349","#00aabb","#0e5a94","#b31e8d","#7a2d00"],railscasts:["#2b2b2b","#272935","#3a4055","#5a647e","#d4cfc9","#e6e1dc","#f4f1ed","#f9f7f3","#da4939","#cc7833","#ffc66d","#a5c261","#519f50","#6d9cbe","#b6b3eb","#bc9458"],seti:["#151718","#282a2b","#3b758c","#41535b","#43a5d5","#d6d6d6","#eeeeee","#ffffff","#cd3f45","#db7b55","#e6cd69","#9fca56","#55dbbe","#55b5db","#a074c4","#8a553f"],"solarized-dark":["#002b36","#073642","#586e75","#657b83","#839496","#93a1a1","#eee8d5","#fdf6e3","#dc322f","#cb4b16","#b58900","#859900","#2aa198","#268bd2","#6c71c4","#d33682"],"solarized-light":["#fdf6e3","#eee8d5","#93a1a1","#839496","#657b83","#586e75","#073642","#002b36","#dc322f","#cb4b16","#b58900","#859900","#2aa198","#268bd2","#6c71c4","#d33682"],spacemacs:["#1f2022","#282828","#444155","#585858","#b8b8b8","#a3a3a3","#e8e8e8","#f8f8f8","#f2241f","#ffa500","#b1951d","#67b11d","#2d9574","#4f97d7","#a31db1","#b03060"],"summerfruit-dark":["#151515","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#ffffff","#ff0086","#fd8900","#aba800","#00c918","#1faaaa","#3777e6","#ad00a1","#cc6633"],"summerfruit-light":["#ffffff","#e0e0e0","#d0d0d0","#b0b0b0","#000000","#101010","#151515","#202020","#ff0086","#fd8900","#aba800","#00c918","#1faaaa","#3777e6","#ad00a1","#cc6633"],"tomorrow-night":["#1d1f21","#282a2e","#373b41","#969896","#b4b7b4","#c5c8c6","#e0e0e0","#ffffff","#cc6666","#de935f","#f0c674","#b5bd68","#8abeb7","#81a2be","#b294bb","#a3685a"],tomorrow:["#ffffff","#e0e0e0","#d6d6d6","#8e908c","#969896","#4d4d4c","#282a2e","#1d1f21","#c82829","#f5871f","#eab700","#718c00","#3e999f","#4271ae","#8959a8","#a3685a"],tube:["#231f20","#1c3f95","#5a5758","#737171","#959ca1","#d9d8d8","#e7e7e8","#ffffff","#ee2e24","#f386a1","#ffd204","#00853e","#85cebc","#009ddc","#98005d","#b06110"],twilight:["#1e1e1e","#323537","#464b50","#5f5a60","#838184","#a7a7a7","#c3c3c3","#ffffff","#cf6a4c","#cda869","#f9ee98","#8f9d6a","#afc4db","#7587a6","#9b859d","#9b703f"],woodland:["#231e18","#302b25","#48413a","#9d8b70","#b4a490","#cabcb1","#d7c8bc","#e4d4c8","#d35c5c","#ca7f32","#e0ac16","#b7ba53","#6eb958","#88a4d3","#bb90e2","#b49368"],zenburn:["#383838","#404040","#606060","#6f6f6f","#808080","#dcdccc","#c0c0c0","#ffffff","#dca3a3","#dfaf8f","#e0cf9f","#5f7f5f","#93e0e3","#7cb8bb","#dc8cc3","#000000"]},Y=Object.keys(A),j=a=>{let e;if(typeof a=="string"){if(A[a]===void 0)throw new Error(`${a} not found`);e=A[a].reduce((t,r,o)=>{let d=`base0${o.toString(16).toUpperCase()}`;return t[d]=r,t},{})}else e=a;return`.container{${Object.keys(e).map(t=>`--${t}: ${e[t]};`).join("")}}`};var J=a=>{try{return!!new URL(a)}catch{return!1}},W=a=>{if(Array.isArray(a))return"array";if(a===null)return"null";if(a instanceof RegExp)return"regexp";let e=typeof a;return e==="number"?isNaN(a)?"NaN":isFinite(a)?Number.isInteger(a)?"int":"float":"Infinity":e==="boolean"?"bool":e==="object"&&a instanceof Date?"date":e};var $=a=>{if(typeof a=="boolean")return a;if(a==="true")return!0;if(a==="false")return!1;throw new Error("should be a boolean!")},O=a=>{if(typeof a=="string")return a;throw new Error("should be a string!")},B=a=>{if(typeof a=="number"&&a>=0)return a;if(typeof a=="string"&&(a=parseFloat(a)),isNaN(a)||a<0)throw new Error("should be a positive number!");return a},P=a=>{if(typeof a=="boolean"||typeof a=="number")return a;if(a==="true")return!0;if(a==="false")return!1;if(typeof a=="string"&&(a=parseFloat(a),!isNaN(a)&&a>=0))return a;throw new Error("should be a boolean or a positive number!")},z=a=>{if(typeof a=="object")return a;if(typeof a=="string")try{return JSON.parse(a)}catch{return a}throw new Error("should be a string or JSON!")};var U=function({key:a,value:e,expanded:t,indent:r,onToggleExpand:o,level:d=0,parentRow:v}){let n=document.createElement("div");this.maxLevel=d;let i=W(e),m=i==="array"||i==="object",x=t===!0||t>d,p,g,b,h;n.className=`data-row ${x?"expanded":""}`,n.dataset.key=a,n.dataset.level=d,d>0&&(n.style.paddingLeft=`${r*5}px`);let f=document.createElement("span");f.className="key-value-wrapper",n.appendChild(f);let w=()=>{n.classList.toggle("expanded"),o&&(n.classList.contains("expanded")?o(d+1):o(d))};if(m){let c=document.createElement("span");c.className="icon-wrapper",f.appendChild(c),p=document.createElement("span"),p.className="expand icon clickable",p.setAttribute("title",x?"Collapse":"Expand"),c.appendChild(p),c.addEventListener("click",()=>w())}if(a!==null&&a!==""){let c=typeof a;b=document.createElement("span"),b.className=`key clickable ${c==="number"?"number":""}`,b.textContent=c==="number"?a:`${a}`,b.addEventListener("click",()=>w()),f.appendChild(b);let s=document.createElement("span");s.classList.add("colon"),s.textContent=":",f.appendChild(s)}if(m){let c=document.createElement("span");c.className="opening-parenthesis",c.textContent=i==="array"?"[":"{",f.appendChild(c);let s=document.createElement("span");s.className="ellipsis clickable",s.textContent="...",s.addEventListener("click",()=>w()),f.appendChild(s);let l=document.createElement("span");l.className="closing-parenthesis",l.textContent=i==="array"?"]":"}",f.appendChild(l);let E=document.createElement("span"),D=i==="array"?e.length:Object.keys(e).length;E.className="items-size",E.textContent=`${D} item${D===1?"":"s"}`,f.appendChild(E),g=[],(i==="array"?e.map((C,k)=>k):Object.keys(e)).forEach(C=>{let k=new U({key:C,value:e[C],expanded:t,indent:r,onToggleExpand:o,level:d+1,parentRow:n});g.push(k),n.appendChild(k.element),this.maxLevel=Math.max(this.maxLevel,k.maxLevel)});let S=document.createElement("span");S.className="closing-parenthesis",S.textContent=i==="array"?"]":"}",n.appendChild(S)}else{let c=null;["nan","NaN","undefined","null"].includes(i)||(c=document.createElement("span"),c.className="type",c.textContent=i.toLowerCase());let s=document.createElement("span");s.className=`value ${i.toLowerCase()}`,h=document.createElement("span"),h.className="value-data",h.textContent=i==="string"?`"${e}"`:e,c&&s.appendChild(c),s.appendChild(h),f.appendChild(s)}let u=document.createElement("span");u.className="copy icon",u.setAttribute("title","Copy to clipboard");let y=document.createElement("span");y.className="icon-wrapper",y.addEventListener("click",()=>{navigator.clipboard.writeText(JSON.stringify(e,null,r))}),y.appendChild(u),f.appendChild(y);let N=c=>{let s=new RegExp(c,"gi"),l=[];b&&l.push(b),h&&l.push(h);let E=!1;l.forEach(D=>{let L=D.textContent;if(D.innerHTML=L,!c||c==="")return;let S=[...L.matchAll(s)].map(I=>I.index),C=[],k=0;S.forEach(I=>{E=!0,C.push(L.slice(k,I)),C.push(`${c}`),k=I+c.length}),C.push(L.slice(k)),D.innerHTML=C.join("")}),E&&!n.classList.contains("expanded")&&(w(),v&&v.classList.add("expanded"))};this.update=({expanded:c,indent:s,searchTerm:l})=>{s!==void 0&&d>0&&(n.style.paddingLeft=`${s*5}px`),c!==void 0&&(x=c===!0||c>d,n.classList.toggle("expanded",x),p&&(p.title=x?"Collapse":"Expand")),l!=null&&N(l),g&&g.forEach(E=>E.update({expanded:c,indent:s,searchTerm:l}))},this.element=n},M=U;var G=function({expanded:a,indent:e,onChange:t,onSearch:r,showDetails:o}){this.indent=e||2,this.expanded=typeof a=="number"?a:2,this.showDetails=o!==!1,this.maxExpandLevel=0;let d,v=document.createElement("div");v.className="toolbar";let n=document.createElement("div");n.className="options",v.appendChild(n);let i=document.createElement("div");i.className="search-wrapper",v.appendChild(i);let m=document.createElement("div");m.className="icon-wrapper clickable",n.appendChild(m);let x=document.createElement("span");x.className="icon refresh",m.onclick=()=>this.refresh(),m.appendChild(x);let p=document.createElement("div");p.className="icon-wrapper clickable",n.appendChild(p);let g=document.createElement("span");g.className="icon plus",p.appendChild(g),p.onclick=()=>{this.expanded{this.expanded>this.maxExpandLevel&&(this.expanded=this.maxExpandLevel),this.expanded>0&&(this.expanded-=1),t({expanded:this.expanded})};let f=document.createElement("div");f.className="icon-wrapper clickable",n.appendChild(f);let w=document.createElement("span");w.className="icon indent",f.onclick=()=>{this.indent+=1,t({indent:this.indent})},f.appendChild(w);let u=document.createElement("div");u.className="icon-wrapper clickable",n.appendChild(u);let y=document.createElement("span");y.className="icon outdent",u.onclick=()=>{this.indent-=1,t({indent:this.indent})},u.appendChild(y);let N=document.createElement("div");N.className="icon-wrapper clickable",n.appendChild(N);let c=document.createElement("span");c.className=`icon info ${this.showDetails?"active":""}`,N.onclick=()=>{c.classList.toggle("active"),this.showDetails=!this.showDetails,t({showDetails:this.showDetails})},N.appendChild(c);let s=document.createElement("span");s.className="icon search",i.appendChild(s),d=document.createElement("input"),d.className="search-input",d.placeholder="Search",d.oninput=l=>{r(l.target.value)},i.appendChild(d),this.refresh=()=>{this.expanded=1,this.indent=2,d&&(d.value=""),t({indent:2,expanded:1}),r("")},this.updateShowDetails=l=>{this.showDetails=l,this.showDetails?c.classList.add("active"):c.classList.remove("active")},this.element=v},F=G;function K(a,e={}){let t=document.createElement("div");t.className="container",a.appendChild(t);let r=null,o=null,d={};this.update=({data:v,expanded:n,indent:i,expandIconType:m,showDataTypes:x,showToolbar:p,showSize:g,showCopy:b})=>{if(v){let f=JSON.stringify(v);d.dataComapreString!==f&&(d.dataComapreString=f,r=new M({key:"",value:v,expanded:n,indent:i,onToggleExpand:w=>{o&&(o.expanded=w),d.expanded=w}}),t.replaceChildren(r.element),d.showToolbar&&o&&(t.prepend(o.element),o.maxExpandLevel=r.maxLevel,o.refresh()))}if(p!==void 0&&d.showToolbar!==p)if(d.showToolbar=p,p)o||(o=new F({expanded:d.expanded,indent:d.indent,onChange:({expanded:f,indent:w,showDetails:u})=>{let y={expanded:f,indent:w};u!==void 0&&(y.showCopy=u,y.showSize=u,y.showDataTypes=u),this.update(y)},onSearch:f=>{r&&r.update({searchTerm:f})}})),r&&(o.maxExpandLevel=r.maxLevel),t.prepend(o.element);else{let f=t.querySelector(".toolbar");f&&f.remove()}let h={};n!==void 0&&d.expanded!==n&&(d.expanded=n,h.expanded=n),i!==void 0&&d.indent!==i&&(d.indent=i,h.indent=i),Object.keys(h).length>0&&r&&r.update(h),b!==void 0&&d.showCopy!==b&&(d.showCopy=b,t.classList.toggle("show-copy",b)),g!==void 0&&d.showSize!==g&&(d.showSize=g,t.classList.toggle("show-size",g),o&&o.updateShowDetails(d.showSize||d.showDataTypes)),x!==void 0&&d.showDataTypes!==x&&(d.showDataTypes=x,t.classList.toggle("show-data-types",x),o&&o.updateShowDetails(d.showSize||d.showDataTypes)),m!==void 0&&d.expandIconType!==m&&(t.classList.add(`expand-icon-${m}`),t.classList.remove(`expand-icon-${d.expandIconType}`),d.expandIconType=m)},this.update(e)}var H=K;var V={indent:2,expanded:1,theme:"default-light",showDataTypes:!0,showToolbar:!1,expandIconType:"arrow",showCopy:!0,showSize:!0,data:null},T=class a extends HTMLElement{#t;#e;#c;#n;constructor(){super(),this.#e={...V},this.#t=document.createElement("style");let e=this.attachShadow({mode:"open"}),t=document.createElement("style");t.textContent=`${R}`,e.appendChild(t),e.appendChild(this.#t),this.theme=this.#e.theme,this.#n=new H(e,this.#e)}static get observedAttributes(){return Object.keys(V).map(e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase())}static allowedAttributes=["id"].concat(a.observedAttributes);#d=(...e)=>{console.warn(`JsonViewer${this.id?` (${this.id})`:""}:`,...e)};#a=(e,t,r,o)=>{try{if(t=r(t),o&&!o.includes(t))throw new Error(`should be one of ${o.join(", ")}`);if(this.#e[e]===t)return;this.#e[e]=t,this.#o()}catch(d){this.#d(`Attribute ${e}: ${d.message}`)}};set showDataTypes(e){this.#a("showDataTypes",e,$)}set showToolbar(e){this.#a("showToolbar",e,$)}set indent(e){this.#a("indent",e,B)}set expandIconType(e){this.#a("expandIconType",e,O,["arrow","square","circle"])}set expanded(e){this.#a("expanded",e,P)}set showSize(e){this.#a("showSize",e,$)}set showCopy(e){this.#a("showCopy",e,$)}set theme(e){try{if(e=z(e),this.#e.theme===e&&this.#t.textContent!=="")return;this.#t.textContent=j(e),this.#e.theme=e}catch(t){this.#d(`Attribute theme: ${t.message}`)}}set data(e){try{e=z(e);let t=JSON.stringify(e);if(this.#e.data===t)return;this.#e.data=t,J(e)?fetch(e).then(r=>r.json()).then(r=>{this.#c=r,this.#o()}):(this.#c=e,this.#o())}catch(t){this.#d(`Attribute data: ${t.message}`)}}get options(){return this.#e}connectedCallback(){window.addEventListener("DOMContentLoaded",()=>{let e=this.textContent;this.textContent="",e&&(this.data=e)})}attributeChangedCallback(e,t,r){if(a.allowedAttributes.indexOf(e)>-1){let o=e.replace(/-([a-z])/g,d=>d[1].toUpperCase());this[o]=r}else this.#d(`Attribute ${e} is not supported and will be ignored!`),this.removeAttribute(e)}#o=()=>{this.#n.update({data:this.#c,expanded:this.#e.expanded,expandIconType:this.#e.expandIconType,indent:this.#e.indent,showDataTypes:this.#e.showDataTypes,showToolbar:this.#e.showToolbar,showSize:this.#e.showSize,showCopy:this.#e.showCopy})}};customElements.get("andypf-json-viewer")||customElements.define("andypf-json-viewer",T);var Q=({data:a,...e})=>{let t=q.useRef(null);return q.useEffect(()=>{t.current&&(t.current.data=a)},[a]),q.createElement("andypf-json-viewer",{ref:t,...e})},xe=Q;export{xe as default}; diff --git a/dist/iife/index.js b/dist/iife/index.js deleted file mode 100644 index e0d720e..0000000 --- a/dist/iife/index.js +++ /dev/null @@ -1,28 +0,0 @@ - -/* -MIT License - -Copyright (c) 2025 Andreas Pfau - -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. - -*/ - -(()=>{var q=`.container{background-color:var(--base00);color:var(--base05);padding:10px;letter-spacing:0.5px;font-family:monospace;border-radius:3px}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;padding-bottom:5px;border-bottom:solid 1px var(--base02)}.toolbar .options,.toolbar .search-wrapper{display:flex;align-items:center}.toolbar .icon-wrapper{height:15px;display:flex;align-items:center;padding:2px 5px}.toolbar .icon-wrapper:hover{background-color:var(--base02);border-radius:3px}.toolbar .icon-wrapper:first-child{margin-left:0px}.toolbar .search.icon{margin-right:5px}.toolbar .search-input{border:none;background:transparent;outline:none;flex:1;font-size:16px;color:var(--base0D)}.match{background-color:yellow;font-weight:bold;color:red}.data-row{padding:3px 0}.data-row .data-row{border-left:solid 1px var(--base02);padding-left:20px;margin-left:5px;display:none}.data-row.expanded>.data-row{display:block}.data-row .key-value-wrapper{display:flex;align-items:center}.data-row .key{color:var(--base07)}.data-row .key.number{color:var(--base0C)}.data-row .colon{color:var(--base07);margin:0 5px 0 0}.clickable{cursor:pointer}.data-row .opening-parenthesis,.data-row .closing-parenthesis{color:var(--base07)}.data-row .ellipsis{color:var(--base09)}.data-row.expanded>.key-value-wrapper .closing-parenthesis,.data-row.expanded>.key-value-wrapper .ellipsis{display:none}.data-row>.closing-parenthesis{display:none}.data-row.expanded>.closing-parenthesis{display:inline-block}.data-row .items-size{margin-left:10px;color:var(--base04);font-style:italic;display:none}.show-size .data-row .items-size{display:inline-block}.data-row .value.bool,.data-row .value.boolean{color:var(--base0E)}.data-row .value.function{color:var(--base0D)}.data-row .value.int,.data-row .value.integer{color:var(--base0F)}.data-row .value.float{color:var(--base0B)}.data-row .value.string{color:var(--base09)}.data-row .value.string .content{overflow-wrap:break-word}.data-row .value.string .content::before{content:open-quote}.data-row .value.string .content::after{content:close-quote}.data-row .value.regexp{color:var(--base0A)}.data-row .value.nan{color:var(--base08)}.data-row .value.null{color:var(--base0A)}.data-row .value.undefined{color:var(--base05)}.data-row .value.date{color:var(--base0D)}.data-row .value.nan,.data-row .value.null,.data-row .value.undefined{border-radius:3px;background-color:var(--base02);padding:1px 2px}.data-row .value .type{font-size:smaller;margin-right:4px;opacity:0.8;display:none}.data-row .value .value-data{word-break:break-all}.show-data-types .data-row .value .type{display:inline-block}.icon-wrapper,.copy-icon-wrapper{display:inline-block;cursor:pointer}.icon{display:block;position:relative}.icon:before,.icon:after{content:"";position:absolute;display:block}.expand.icon{margin-right:5px}.expand-icon-arrow .expand.icon{margin-left:3px;width:0;height:0;border-left:solid 6px var(--base0E);border-top:solid 6px transparent;border-bottom:solid 6px transparent}.expand-icon-arrow .expanded>.key-value-wrapper .expand.icon,.expand-icon-arrow .expanded.icon.expand{transform:rotate(90deg);border-left-color:var(--base0D)}.expand-icon-square .expand.icon,.expand-icon-circle .expand.icon{display:block;width:9px;height:9px;border-radius:2px;border:solid 1px var(--base0E)}.expand-icon-circle .expand.icon{border-radius:50%}.expand-icon-square .expand.icon:before,.expand-icon-circle .expand.icon:before,.expand-icon-square .expand.icon:after,.expand-icon-circle .expand.icon:after{width:5px;height:1px;background-color:var(--base0E);left:2px;top:4px}.expand-icon-square .expand.icon:after,.expand-icon-circle .expand.icon:after{transform:rotate(90deg)}.expand-icon-square .expanded>.key-value-wrapper .expand.icon:after,.expand-icon-circle .expanded>.key-value-wrapper .expand.icon:after,.expand-icon-square .expand.icon.expanded:after,.expand-icon-circle .expand.icon.expanded:after{display:none}.expand-icon-square .expanded>.key-value-wrapper .expand.icon,.expand-icon-circle .expanded>.key-value-wrapper .expand.icon,.expand-icon-square .expand.icon.expanded,.expand-icon-circle .expanded.expand.icon{border-color:var(--base0D)}.expand-icon-square .expanded>.key-value-wrapper .expand.icon:before,.expand-icon-circle .expanded>.key-value-wrapper .expand.icon:before,.expand-icon-square .expanded.expand.icon:before,.expand-icon-circle .expanded.expand.icon:before{background-color:var(--base0D)}.icon-wrapper{display:inline-block;cursor:pointer}.show-copy .key-value-wrapper:hover .icon.copy{display:block}.copy.icon{margin-left:10px;display:none;width:8px;height:10px;border:solid 1px var(--base0D);border-radius:1px;position:relative;top:4px;transition:0.2s all}.copy.icon:active{transform:scale(1.6);background-color:var(--base0B)}.copy.icon:before{content:"";display:block;left:-3px;top:-3px;width:8px;height:10px;border-top:solid 1px var(--base0D);border-left:solid 1px var(--base0D);border-radius:1px 0 0 0}.plus.icon{width:11px;height:1px;background-color:var(--base0D)}.plus.icon:after{content:"";width:11px;height:1px;background-color:var(--base0D);-webkit-transform:rotate(90deg);transform:rotate(90deg)}.minus.icon{width:11px;height:1px;background-color:var(--base0D)}.indent.icon{color:var(--base0D);width:17px;height:8px;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D)}.indent.icon:before{content:"";position:absolute;top:2px;right:0;width:11px;height:2px;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D)}.indent.icon:after{content:"";position:absolute;top:1px;width:0;height:0;border-top:solid 3px transparent;border-bottom:solid 3px transparent;border-left:solid 3px var(--base0D);border-right:solid 3px transparent}.outdent.icon{color:var(--base0D);margin-left:2px;width:17px;height:8px;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D)}.outdent.icon:before{content:"";top:2px;right:0;width:11px;height:2px;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D)}.outdent.icon:after{content:"";top:1px;left:-3px;width:0;height:0;border-top:solid 3px transparent;border-bottom:solid 3px transparent;border-left:solid 3px transparent;border-right:solid 3px var(--base0D)}.refresh.icon{color:var(--base0D);width:10px;height:10px;border-radius:50%;border-top:solid 1px var(--base0D);border-bottom:solid 1px var(--base0D);border-left:solid 1px transparent;border-right:solid 1px var(--base0D)}.refresh.icon:before{content:"";left:1px;top:8px;width:3px;height:3px;border-top:solid 1px var(--base0D);border-left:solid 1px var(--base0D);-webkit-transform:rotate(-22.5deg);transform:rotate(-22.5deg)}.info.icon{width:12px;height:11px;border:solid 1px var(--base0D);border-radius:2px}.info.icon::before{top:5px;left:5px;width:2px;height:5px;background-color:var(--base0D)}.info.icon::after{top:2px;left:5px;width:2px;height:2px;background-color:var(--base0D)}.info.icon.active{background-color:var(--base0D)}.info.icon.active::before,.info.icon.active::after{background-color:var(--base02)}.search.icon{color:var(--base0D);width:11px;height:11px;border:solid 1px var(--base0D);border-radius:100%;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.search.icon:before{content:"";top:11px;left:5px;height:6px;width:1px;background-color:var(--base0D)} -`;var A={apathy:["#031a16","#0b342d","#184e45","#2b685e","#5f9c92","#81b5ac","#a7cec8","#d2e7e4","#3e9688","#3e7996","#3e4c96","#883e96","#963e4c","#96883e","#4c963e","#3e965b"],ashes:["#1c2023","#393f45","#565e65","#747c84","#adb3ba","#c7ccd1","#dfe2e5","#f3f4f5","#c7ae95","#c7c795","#aec795","#95c7ae","#95aec7","#ae95c7","#c795ae","#c79595"],"atelier-dune-light":["#fefbec","#e8e4cf","#a6a28c","#999580","#7d7a68","#6e6b5e","#292824","#20201d","#d73737","#b65611","#ae9513","#60ac39","#1fad83","#6684e1","#b854d4","#d43552"],"atelier-dune":["#20201d","#292824","#6e6b5e","#7d7a68","#999580","#a6a28c","#e8e4cf","#fefbec","#d73737","#b65611","#ae9513","#60ac39","#1fad83","#6684e1","#b854d4","#d43552"],atlas:["#002635","#00384d","#517f8d","#6c8b91","#869696","#a1a19a","#e6e6dc","#fafaf8","#ff5a67","#f08e48","#ffcc1b","#7fc06e","#14747e","#5dd7b9","#9a70a4","#c43060"],bespin:["#28211c","#36312e","#5e5d5c","#666666","#797977","#8a8986","#9d9b97","#baae9e","#cf6a4c","#cf7d34","#f9ee98","#54be0d","#afc4db","#5ea6ea","#9b859d","#937121"],"black-metal":["#000000","#121212","#222222","#333333","#999999","#c1c1c1","#999999","#c1c1c1","#5f8787","#aaaaaa","#a06666","#dd9999","#aaaaaa","#888888","#999999","#444444"],brewer:["#0c0d0e","#2e2f30","#515253","#737475","#959697","#b7b8b9","#dadbdc","#fcfdfe","#e31a1c","#e6550d","#dca060","#31a354","#80b1d3","#3182bd","#756bb1","#b15928"],bright:["#000000","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#f5f5f5","#ffffff","#fb0120","#fc6d24","#fda331","#a1c659","#76c7b7","#6fb3d2","#d381c3","#be643c"],brogrammer:["#1f1f1f","#f81118","#2dc55e","#ecba0f","#2a84d2","#4e5ab7","#1081d6","#d6dbe5","#d6dbe5","#de352e","#1dd361","#f3bd09","#1081d6","#5350b9","#0f7ddb","#ffffff"],"brushtrees-dark":["#485867","#5a6d7a","#6d828e","#8299a1","#98afb5","#b0c5c8","#c9dbdc","#e3efef","#b38686","#d8bba2","#aab386","#87b386","#86b3b3","#868cb3","#b386b2","#b39f9f"],brushtrees:["#e3efef","#c9dbdc","#b0c5c8","#98afb5","#8299a1","#6d828e","#5a6d7a","#485867","#b38686","#d8bba2","#aab386","#87b386","#86b3b3","#868cb3","#b386b2","#b39f9f"],chalk:["#151515","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#f5f5f5","#fb9fb1","#eda987","#ddb26f","#acc267","#12cfc0","#6fc2ef","#e1a3ee","#deaf8f"],circus:["#191919","#202020","#303030","#5f5a60","#505050","#a7a7a7","#808080","#ffffff","#dc657d","#4bb1a7","#c3ba63","#84b97c","#4bb1a7","#639ee4","#b888e2","#b888e2"],"classic-dark":["#151515","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#f5f5f5","#ac4142","#d28445","#f4bf75","#90a959","#75b5aa","#6a9fb5","#aa759f","#8f5536"],"classic-light":["#f5f5f5","#e0e0e0","#d0d0d0","#b0b0b0","#505050","#303030","#202020","#151515","#ac4142","#d28445","#f4bf75","#90a959","#75b5aa","#6a9fb5","#aa759f","#8f5536"],codeschool:["#232c31","#1c3657","#2a343a","#3f4944","#84898c","#9ea7a6","#a7cfa3","#b5d8f6","#2a5491","#43820d","#a03b1e","#237986","#b02f30","#484d79","#c59820","#c98344"],cupcake:["#fbf1f2","#f2f1f4","#d8d5dd","#bfb9c6","#a59daf","#8b8198","#72677e","#585062","#d57e85","#ebb790","#dcb16c","#a3b367","#69a9a7","#7297b9","#bb99b4","#baa58c"],cupertino:["#ffffff","#c0c0c0","#c0c0c0","#808080","#808080","#404040","#404040","#5e5e5e","#c41a15","#eb8500","#826b28","#007400","#318495","#0000ff","#a90d91","#826b28"],darcula:["#2b2b2b","#323232","#323232","#606366","#a4a3a3","#a9b7c6","#ffc66d","#ffffff","#4eade5","#689757","#bbb529","#6a8759","#629755","#9876aa","#cc7832","#808080"],darktooth:["#1d2021","#32302f","#504945","#665c54","#928374","#a89984","#d5c4a1","#fdf4c1","#fb543f","#fe8625","#fac03b","#95c085","#8ba59b","#0d6678","#8f4673","#a87322"],"default-dark":["#181818","#282828","#383838","#585858","#b8b8b8","#d8d8d8","#e8e8e8","#f8f8f8","#ab4642","#dc9656","#f7ca88","#a1b56c","#86c1b9","#7cafc2","#ba8baf","#a16946"],"default-light":["#ffffff","#e8e8e8","#d8d8d8","#b8b8b8","#585858","#383838","#282828","#181818","#ab4642","#dc9656","#ab4642","#a1b56c","#86c1b9","#7cafc2","#ba8baf","#a16946"],dracula:["#282936","#3a3c4e","#4d4f68","#626483","#62d6e8","#e9e9f4","#f1f2f8","#f7f7fb","#ea51b2","#b45bcf","#00f769","#ebff87","#a1efe4","#62d6e8","#b45bcf","#00f769"],eighties:["#2d2d2d","#393939","#515151","#747369","#a09f93","#d3d0c8","#e8e6df","#f2f0ec","#f2777a","#f99157","#ffcc66","#99cc99","#66cccc","#6699cc","#cc99cc","#d27b53"],embers:["#16130f","#2c2620","#433b32","#5a5047","#8a8075","#a39a90","#beb6ae","#dbd6d1","#826d57","#828257","#6d8257","#57826d","#576d82","#6d5782","#82576d","#825757"],flat:["#2c3e50","#34495e","#7f8c8d","#95a5a6","#bdc3c7","#e0e0e0","#f5f5f5","#ecf0f1","#e74c3c","#e67e22","#f1c40f","#2ecc71","#1abc9c","#3498db","#9b59b6","#be643c"],"fruit-soda":["#f1ecf1","#e0dee0","#d8d5d5","#b5b4b6","#979598","#515151","#474545","#2d2c2c","#fe3e31","#fe6d08","#f7e203","#47f74c","#0f9cfd","#2931df","#611fce","#b16f40"],github:["#ffffff","#f5f5f5","#c8c8fa","#969896","#e8e8e8","#333333","#ffffff","#969896","#ed6a43","#0086b3","#795da3","#183691","#183691","#795da3","#a71d5d","#333333"],"google-dark":["#1d1f21","#282a2e","#373b41","#969896","#b4b7b4","#c5c8c6","#e0e0e0","#ffffff","#cc342b","#f96a38","#fba922","#198844","#3971ed","#3971ed","#a36ac7","#3971ed"],"google-light":["#ffffff","#e0e0e0","#c5c8c6","#b4b7b4","#969896","#373b41","#282a2e","#1d1f21","#cc342b","#f96a38","#fba922","#198844","#3971ed","#3971ed","#a36ac7","#3971ed"],"grayscale-dark":["#101010","#252525","#464646","#525252","#ababab","#b9b9b9","#e3e3e3","#f7f7f7","#7c7c7c","#999999","#a0a0a0","#8e8e8e","#868686","#686868","#747474","#5e5e5e"],"grayscale-light":["#f7f7f7","#e3e3e3","#b9b9b9","#ababab","#525252","#464646","#252525","#101010","#7c7c7c","#999999","#a0a0a0","#8e8e8e","#868686","#686868","#747474","#5e5e5e"],greenscreen:["#001100","#003300","#005500","#007700","#009900","#00bb00","#00dd00","#00ff00","#007700","#009900","#007700","#00bb00","#005500","#009900","#00bb00","#005500"],"gruvbox-dark-hard":["#1d2021","#3c3836","#504945","#665c54","#bdae93","#d5c4a1","#ebdbb2","#fbf1c7","#fb4934","#fe8019","#fabd2f","#b8bb26","#8ec07c","#83a598","#d3869b","#d65d0e"],"gruvbox-light-hard":["#f9f5d7","#ebdbb2","#d5c4a1","#bdae93","#665c54","#504945","#3c3836","#282828","#9d0006","#af3a03","#b57614","#79740e","#427b58","#076678","#8f3f71","#d65d0e"],"harmonic-dark":["#0b1c2c","#223b54","#405c79","#627e99","#aabcce","#cbd6e2","#e5ebf1","#f7f9fb","#bf8b56","#bfbf56","#8bbf56","#56bf8b","#568bbf","#8b56bf","#bf568b","#bf5656"],"harmonic-light":["#f7f9fb","#e5ebf1","#cbd6e2","#aabcce","#627e99","#405c79","#223b54","#0b1c2c","#bf8b56","#bfbf56","#8bbf56","#56bf8b","#568bbf","#8b56bf","#bf568b","#bf5656"],"heetch-light":["#feffff","#392551","#7b6d8b","#9c92a8","#ddd6e5","#5a496e","#470546","#190134","#27d9d5","#bdb6c5","#5ba2b6","#f80059","#c33678","#47f9f5","#bd0152","#dedae2"],heetch:["#190134","#392551","#5a496e","#7b6d8b","#9c92a8","#bdb6c5","#dedae2","#feffff","#27d9d5","#5ba2b6","#8f6c97","#c33678","#f80059","#bd0152","#82034c","#470546"],helios:["#1d2021","#383c3e","#53585b","#6f7579","#cdcdcd","#d5d5d5","#dddddd","#e5e5e5","#d72638","#eb8413","#f19d1a","#88b92d","#1ba595","#1e8bac","#be4264","#c85e0d"],hopscotch:["#322931","#433b42","#5c545b","#797379","#989498","#b9b5b8","#d5d3d5","#ffffff","#dd464c","#fd8b19","#fdcc59","#8fc13e","#149b93","#1290bf","#c85e7c","#b33508"],"horizon-dark":["#1c1e26","#232530","#2e303e","#676a8d","#ced1d0","#cbced0","#dcdfe4","#e3e6ee","#e93c58","#e58d7d","#efb993","#efaf8e","#24a8b4","#df5273","#b072d1","#e4a382"],"ia-dark":["#1a1a1a","#222222","#1d414d","#767676","#b8b8b8","#cccccc","#e8e8e8","#f8f8f8","#d88568","#d86868","#b99353","#83a471","#7c9cae","#8eccdd","#b98eb2","#8b6c37"],"ia-light":["#f6f6f6","#dedede","#bde5f2","#898989","#767676","#181818","#e8e8e8","#898989","#9c5a02","#c43e18","#c48218","#38781c","#2d6bb1","#48bac2","#a94598","#8b6c37"],icy:["#021012","#031619","#041f23","#052e34","#064048","#095b67","#0c7c8c","#109cb0","#16c1d9","#b3ebf2","#80deea","#4dd0e1","#26c6da","#00bcd4","#00acc1","#0097a7"],isotope:["#000000","#404040","#606060","#808080","#c0c0c0","#d0d0d0","#e0e0e0","#ffffff","#ff0000","#ff9900","#ff0099","#33ff00","#00ffff","#0066ff","#cc00ff","#3300ff"],macintosh:["#000000","#404040","#404040","#808080","#808080","#c0c0c0","#c0c0c0","#ffffff","#dd0907","#ff6403","#fbf305","#1fb714","#02abea","#0000d3","#4700a5","#90713a"],marrakesh:["#201602","#302e00","#5f5b17","#6c6823","#86813b","#948e48","#ccc37a","#faf0a5","#c35359","#b36144","#a88339","#18974e","#75a738","#477ca1","#8868b3","#b3588e"],materia:["#263238","#2c393f","#37474f","#707880","#c9ccd3","#cdd3de","#d5dbe5","#ffffff","#ec5f67","#ea9560","#ffcc00","#8bd649","#80cbc4","#89ddff","#82aaff","#ec5f67"],"material-lighter":["#fafafa","#e7eaec","#cceae7","#ccd7da","#8796b0","#80cbc4","#80cbc4","#666666","#ff5370","#f76d47","#ffb62c","#91b859","#39adb5","#6182b8","#7c4dff","#e53935"],material:["#263238","#2e3c43","#314549","#546e7a","#b2ccd6","#eeffff","#eeffff","#ffffff","#f07178","#f78c6c","#ffcb6b","#c3e88d","#89ddff","#82aaff","#c792ea","#ff5370"],"mellow-purple":["#1e0528","#1a092d","#331354","#320f55","#873582","#ffeeff","#ffeeff","#f8c0ff","#00d9e9","#aa00a3","#955ae7","#05cb0d","#b900b1","#550068","#8991bb","#4d6fff"],"mexico-light":["#f8f8f8","#e8e8e8","#d8d8d8","#b8b8b8","#585858","#383838","#282828","#181818","#ab4642","#dc9656","#f79a0e","#538947","#4b8093","#7cafc2","#96609e","#a16946"],mocha:["#3b3228","#534636","#645240","#7e705a","#b8afad","#d0c8c6","#e9e1dd","#f5eeeb","#cb6077","#d28b71","#f4bc87","#beb55b","#7bbda4","#8ab3b5","#a89bb9","#bb9584"],monokai:["#272822","#383830","#49483e","#75715e","#a59f85","#f8f8f2","#f5f4f1","#f9f8f5","#f92672","#fd971f","#f4bf75","#a6e22e","#a1efe4","#66d9ef","#ae81ff","#cc6633"],nord:["#2e3440","#3b4252","#434c5e","#4c566a","#d8dee9","#e5e9f0","#eceff4","#8fbcbb","#88c0d0","#81a1c1","#5e81ac","#bf616a","#d08770","#ebcb8b","#a3be8c","#b48ead"],ocean:["#2b303b","#343d46","#4f5b66","#65737e","#a7adba","#c0c5ce","#dfe1e8","#eff1f5","#bf616a","#d08770","#ebcb8b","#a3be8c","#96b5b4","#8fa1b3","#b48ead","#ab7967"],"one-light":["#fafafa","#f0f0f1","#e5e5e6","#a0a1a7","#696c77","#383a42","#202227","#090a0b","#ca1243","#d75f00","#c18401","#50a14f","#0184bc","#4078f2","#a626a4","#986801"],onedark:["#282c34","#353b45","#3e4451","#545862","#565c64","#abb2bf","#b6bdca","#c8ccd4","#e06c75","#d19a66","#e5c07b","#98c379","#56b6c2","#61afef","#c678dd","#be5046"],"papercolor-dark":["#1c1c1c","#af005f","#5faf00","#d7af5f","#5fafd7","#808080","#d7875f","#d0d0d0","#585858","#5faf5f","#afd700","#af87d7","#ffaf00","#ff5faf","#00afaf","#5f8787"],"papercolor-light":["#eeeeee","#af0000","#008700","#5f8700","#0087af","#878787","#005f87","#444444","#bcbcbc","#d70000","#d70087","#8700af","#d75f00","#d75f00","#005faf","#005f87"],paraiso:["#2f1e2e","#41323f","#4f424c","#776e71","#8d8687","#a39e9b","#b9b6b0","#e7e9db","#ef6155","#f99b15","#fec418","#48b685","#5bc4bf","#06b6ef","#815ba4","#e96ba8"],pico:["#000000","#1d2b53","#7e2553","#008751","#ab5236","#5f574f","#c2c3c7","#fff1e8","#ff004d","#ffa300","#fff024","#00e756","#29adff","#83769c","#ff77a8","#ffccaa"],pop:["#000000","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#ffffff","#eb008a","#f29333","#f8ca12","#37b349","#00aabb","#0e5a94","#b31e8d","#7a2d00"],railscasts:["#2b2b2b","#272935","#3a4055","#5a647e","#d4cfc9","#e6e1dc","#f4f1ed","#f9f7f3","#da4939","#cc7833","#ffc66d","#a5c261","#519f50","#6d9cbe","#b6b3eb","#bc9458"],seti:["#151718","#282a2b","#3b758c","#41535b","#43a5d5","#d6d6d6","#eeeeee","#ffffff","#cd3f45","#db7b55","#e6cd69","#9fca56","#55dbbe","#55b5db","#a074c4","#8a553f"],"solarized-dark":["#002b36","#073642","#586e75","#657b83","#839496","#93a1a1","#eee8d5","#fdf6e3","#dc322f","#cb4b16","#b58900","#859900","#2aa198","#268bd2","#6c71c4","#d33682"],"solarized-light":["#fdf6e3","#eee8d5","#93a1a1","#839496","#657b83","#586e75","#073642","#002b36","#dc322f","#cb4b16","#b58900","#859900","#2aa198","#268bd2","#6c71c4","#d33682"],spacemacs:["#1f2022","#282828","#444155","#585858","#b8b8b8","#a3a3a3","#e8e8e8","#f8f8f8","#f2241f","#ffa500","#b1951d","#67b11d","#2d9574","#4f97d7","#a31db1","#b03060"],"summerfruit-dark":["#151515","#202020","#303030","#505050","#b0b0b0","#d0d0d0","#e0e0e0","#ffffff","#ff0086","#fd8900","#aba800","#00c918","#1faaaa","#3777e6","#ad00a1","#cc6633"],"summerfruit-light":["#ffffff","#e0e0e0","#d0d0d0","#b0b0b0","#000000","#101010","#151515","#202020","#ff0086","#fd8900","#aba800","#00c918","#1faaaa","#3777e6","#ad00a1","#cc6633"],"tomorrow-night":["#1d1f21","#282a2e","#373b41","#969896","#b4b7b4","#c5c8c6","#e0e0e0","#ffffff","#cc6666","#de935f","#f0c674","#b5bd68","#8abeb7","#81a2be","#b294bb","#a3685a"],tomorrow:["#ffffff","#e0e0e0","#d6d6d6","#8e908c","#969896","#4d4d4c","#282a2e","#1d1f21","#c82829","#f5871f","#eab700","#718c00","#3e999f","#4271ae","#8959a8","#a3685a"],tube:["#231f20","#1c3f95","#5a5758","#737171","#959ca1","#d9d8d8","#e7e7e8","#ffffff","#ee2e24","#f386a1","#ffd204","#00853e","#85cebc","#009ddc","#98005d","#b06110"],twilight:["#1e1e1e","#323537","#464b50","#5f5a60","#838184","#a7a7a7","#c3c3c3","#ffffff","#cf6a4c","#cda869","#f9ee98","#8f9d6a","#afc4db","#7587a6","#9b859d","#9b703f"],woodland:["#231e18","#302b25","#48413a","#9d8b70","#b4a490","#cabcb1","#d7c8bc","#e4d4c8","#d35c5c","#ca7f32","#e0ac16","#b7ba53","#6eb958","#88a4d3","#bb90e2","#b49368"],zenburn:["#383838","#404040","#606060","#6f6f6f","#808080","#dcdccc","#c0c0c0","#ffffff","#dca3a3","#dfaf8f","#e0cf9f","#5f7f5f","#93e0e3","#7cb8bb","#dc8cc3","#000000"]},V=Object.keys(A),R=a=>{let e;if(typeof a=="string"){if(A[a]===void 0)throw new Error(`${a} not found`);e=A[a].reduce((d,r,o)=>{let t=`base0${o.toString(16).toUpperCase()}`;return d[t]=r,d},{})}else e=a;return`.container{${Object.keys(e).map(d=>`--${d}: ${e[d]};`).join("")}}`};var j=a=>{try{return!!new URL(a)}catch{return!1}},W=a=>{if(Array.isArray(a))return"array";if(a===null)return"null";if(a instanceof RegExp)return"regexp";let e=typeof a;return e==="number"?isNaN(a)?"NaN":isFinite(a)?Number.isInteger(a)?"int":"float":"Infinity":e==="boolean"?"bool":e==="object"&&a instanceof Date?"date":e};var $=a=>{if(typeof a=="boolean")return a;if(a==="true")return!0;if(a==="false")return!1;throw new Error("should be a boolean!")},J=a=>{if(typeof a=="string")return a;throw new Error("should be a string!")},O=a=>{if(typeof a=="number"&&a>=0)return a;if(typeof a=="string"&&(a=parseFloat(a)),isNaN(a)||a<0)throw new Error("should be a positive number!");return a},B=a=>{if(typeof a=="boolean"||typeof a=="number")return a;if(a==="true")return!0;if(a==="false")return!1;if(typeof a=="string"&&(a=parseFloat(a),!isNaN(a)&&a>=0))return a;throw new Error("should be a boolean or a positive number!")},z=a=>{if(typeof a=="object")return a;if(typeof a=="string")try{return JSON.parse(a)}catch{return a}throw new Error("should be a string or JSON!")};var P=function({key:a,value:e,expanded:d,indent:r,onToggleExpand:o,level:t=0,parentRow:v}){let n=document.createElement("div");this.maxLevel=t;let i=W(e),m=i==="array"||i==="object",x=d===!0||d>t,p,g,b,h;n.className=`data-row ${x?"expanded":""}`,n.dataset.key=a,n.dataset.level=t,t>0&&(n.style.paddingLeft=`${r*5}px`);let f=document.createElement("span");f.className="key-value-wrapper",n.appendChild(f);let w=()=>{n.classList.toggle("expanded"),o&&(n.classList.contains("expanded")?o(t+1):o(t))};if(m){let c=document.createElement("span");c.className="icon-wrapper",f.appendChild(c),p=document.createElement("span"),p.className="expand icon clickable",p.setAttribute("title",x?"Collapse":"Expand"),c.appendChild(p),c.addEventListener("click",()=>w())}if(a!==null&&a!==""){let c=typeof a;b=document.createElement("span"),b.className=`key clickable ${c==="number"?"number":""}`,b.textContent=c==="number"?a:`${a}`,b.addEventListener("click",()=>w()),f.appendChild(b);let s=document.createElement("span");s.classList.add("colon"),s.textContent=":",f.appendChild(s)}if(m){let c=document.createElement("span");c.className="opening-parenthesis",c.textContent=i==="array"?"[":"{",f.appendChild(c);let s=document.createElement("span");s.className="ellipsis clickable",s.textContent="...",s.addEventListener("click",()=>w()),f.appendChild(s);let l=document.createElement("span");l.className="closing-parenthesis",l.textContent=i==="array"?"]":"}",f.appendChild(l);let E=document.createElement("span"),D=i==="array"?e.length:Object.keys(e).length;E.className="items-size",E.textContent=`${D} item${D===1?"":"s"}`,f.appendChild(E),g=[],(i==="array"?e.map((C,k)=>k):Object.keys(e)).forEach(C=>{let k=new P({key:C,value:e[C],expanded:d,indent:r,onToggleExpand:o,level:t+1,parentRow:n});g.push(k),n.appendChild(k.element),this.maxLevel=Math.max(this.maxLevel,k.maxLevel)});let S=document.createElement("span");S.className="closing-parenthesis",S.textContent=i==="array"?"]":"}",n.appendChild(S)}else{let c=null;["nan","NaN","undefined","null"].includes(i)||(c=document.createElement("span"),c.className="type",c.textContent=i.toLowerCase());let s=document.createElement("span");s.className=`value ${i.toLowerCase()}`,h=document.createElement("span"),h.className="value-data",h.textContent=i==="string"?`"${e}"`:e,c&&s.appendChild(c),s.appendChild(h),f.appendChild(s)}let u=document.createElement("span");u.className="copy icon",u.setAttribute("title","Copy to clipboard");let y=document.createElement("span");y.className="icon-wrapper",y.addEventListener("click",()=>{navigator.clipboard.writeText(JSON.stringify(e,null,r))}),y.appendChild(u),f.appendChild(y);let N=c=>{let s=new RegExp(c,"gi"),l=[];b&&l.push(b),h&&l.push(h);let E=!1;l.forEach(D=>{let L=D.textContent;if(D.innerHTML=L,!c||c==="")return;let S=[...L.matchAll(s)].map(I=>I.index),C=[],k=0;S.forEach(I=>{E=!0,C.push(L.slice(k,I)),C.push(`${c}`),k=I+c.length}),C.push(L.slice(k)),D.innerHTML=C.join("")}),E&&!n.classList.contains("expanded")&&(w(),v&&v.classList.add("expanded"))};this.update=({expanded:c,indent:s,searchTerm:l})=>{s!==void 0&&t>0&&(n.style.paddingLeft=`${s*5}px`),c!==void 0&&(x=c===!0||c>t,n.classList.toggle("expanded",x),p&&(p.title=x?"Collapse":"Expand")),l!=null&&N(l),g&&g.forEach(E=>E.update({expanded:c,indent:s,searchTerm:l}))},this.element=n},U=P;var G=function({expanded:a,indent:e,onChange:d,onSearch:r,showDetails:o}){this.indent=e||2,this.expanded=typeof a=="number"?a:2,this.showDetails=o!==!1,this.maxExpandLevel=0;let t,v=document.createElement("div");v.className="toolbar";let n=document.createElement("div");n.className="options",v.appendChild(n);let i=document.createElement("div");i.className="search-wrapper",v.appendChild(i);let m=document.createElement("div");m.className="icon-wrapper clickable",n.appendChild(m);let x=document.createElement("span");x.className="icon refresh",m.onclick=()=>this.refresh(),m.appendChild(x);let p=document.createElement("div");p.className="icon-wrapper clickable",n.appendChild(p);let g=document.createElement("span");g.className="icon plus",p.appendChild(g),p.onclick=()=>{this.expanded{this.expanded>this.maxExpandLevel&&(this.expanded=this.maxExpandLevel),this.expanded>0&&(this.expanded-=1),d({expanded:this.expanded})};let f=document.createElement("div");f.className="icon-wrapper clickable",n.appendChild(f);let w=document.createElement("span");w.className="icon indent",f.onclick=()=>{this.indent+=1,d({indent:this.indent})},f.appendChild(w);let u=document.createElement("div");u.className="icon-wrapper clickable",n.appendChild(u);let y=document.createElement("span");y.className="icon outdent",u.onclick=()=>{this.indent-=1,d({indent:this.indent})},u.appendChild(y);let N=document.createElement("div");N.className="icon-wrapper clickable",n.appendChild(N);let c=document.createElement("span");c.className=`icon info ${this.showDetails?"active":""}`,N.onclick=()=>{c.classList.toggle("active"),this.showDetails=!this.showDetails,d({showDetails:this.showDetails})},N.appendChild(c);let s=document.createElement("span");s.className="icon search",i.appendChild(s),t=document.createElement("input"),t.className="search-input",t.placeholder="Search",t.oninput=l=>{r(l.target.value)},i.appendChild(t),this.refresh=()=>{this.expanded=1,this.indent=2,t&&(t.value=""),d({indent:2,expanded:1}),r("")},this.updateShowDetails=l=>{this.showDetails=l,this.showDetails?c.classList.add("active"):c.classList.remove("active")},this.element=v},M=G;function K(a,e={}){let d=document.createElement("div");d.className="container",a.appendChild(d);let r=null,o=null,t={};this.update=({data:v,expanded:n,indent:i,expandIconType:m,showDataTypes:x,showToolbar:p,showSize:g,showCopy:b})=>{if(v){let f=JSON.stringify(v);t.dataComapreString!==f&&(t.dataComapreString=f,r=new U({key:"",value:v,expanded:n,indent:i,onToggleExpand:w=>{o&&(o.expanded=w),t.expanded=w}}),d.replaceChildren(r.element),t.showToolbar&&o&&(d.prepend(o.element),o.maxExpandLevel=r.maxLevel,o.refresh()))}if(p!==void 0&&t.showToolbar!==p)if(t.showToolbar=p,p)o||(o=new M({expanded:t.expanded,indent:t.indent,onChange:({expanded:f,indent:w,showDetails:u})=>{let y={expanded:f,indent:w};u!==void 0&&(y.showCopy=u,y.showSize=u,y.showDataTypes=u),this.update(y)},onSearch:f=>{r&&r.update({searchTerm:f})}})),r&&(o.maxExpandLevel=r.maxLevel),d.prepend(o.element);else{let f=d.querySelector(".toolbar");f&&f.remove()}let h={};n!==void 0&&t.expanded!==n&&(t.expanded=n,h.expanded=n),i!==void 0&&t.indent!==i&&(t.indent=i,h.indent=i),Object.keys(h).length>0&&r&&r.update(h),b!==void 0&&t.showCopy!==b&&(t.showCopy=b,d.classList.toggle("show-copy",b)),g!==void 0&&t.showSize!==g&&(t.showSize=g,d.classList.toggle("show-size",g),o&&o.updateShowDetails(t.showSize||t.showDataTypes)),x!==void 0&&t.showDataTypes!==x&&(t.showDataTypes=x,d.classList.toggle("show-data-types",x),o&&o.updateShowDetails(t.showSize||t.showDataTypes)),m!==void 0&&t.expandIconType!==m&&(d.classList.add(`expand-icon-${m}`),d.classList.remove(`expand-icon-${t.expandIconType}`),t.expandIconType=m)},this.update(e)}var F=K;var H={indent:2,expanded:1,theme:"default-light",showDataTypes:!0,showToolbar:!1,expandIconType:"arrow",showCopy:!0,showSize:!0,data:null},T=class a extends HTMLElement{#t;#e;#c;#n;constructor(){super(),this.#e={...H},this.#t=document.createElement("style");let e=this.attachShadow({mode:"open"}),d=document.createElement("style");d.textContent=`${q}`,e.appendChild(d),e.appendChild(this.#t),this.theme=this.#e.theme,this.#n=new F(e,this.#e)}static get observedAttributes(){return Object.keys(H).map(e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase())}static allowedAttributes=["id"].concat(a.observedAttributes);#d=(...e)=>{console.warn(`JsonViewer${this.id?` (${this.id})`:""}:`,...e)};#a=(e,d,r,o)=>{try{if(d=r(d),o&&!o.includes(d))throw new Error(`should be one of ${o.join(", ")}`);if(this.#e[e]===d)return;this.#e[e]=d,this.#o()}catch(t){this.#d(`Attribute ${e}: ${t.message}`)}};set showDataTypes(e){this.#a("showDataTypes",e,$)}set showToolbar(e){this.#a("showToolbar",e,$)}set indent(e){this.#a("indent",e,O)}set expandIconType(e){this.#a("expandIconType",e,J,["arrow","square","circle"])}set expanded(e){this.#a("expanded",e,B)}set showSize(e){this.#a("showSize",e,$)}set showCopy(e){this.#a("showCopy",e,$)}set theme(e){try{if(e=z(e),this.#e.theme===e&&this.#t.textContent!=="")return;this.#t.textContent=R(e),this.#e.theme=e}catch(d){this.#d(`Attribute theme: ${d.message}`)}}set data(e){try{e=z(e);let d=JSON.stringify(e);if(this.#e.data===d)return;this.#e.data=d,j(e)?fetch(e).then(r=>r.json()).then(r=>{this.#c=r,this.#o()}):(this.#c=e,this.#o())}catch(d){this.#d(`Attribute data: ${d.message}`)}}get options(){return this.#e}connectedCallback(){window.addEventListener("DOMContentLoaded",()=>{let e=this.textContent;this.textContent="",e&&(this.data=e)})}attributeChangedCallback(e,d,r){if(a.allowedAttributes.indexOf(e)>-1){let o=e.replace(/-([a-z])/g,t=>t[1].toUpperCase());this[o]=r}else this.#d(`Attribute ${e} is not supported and will be ignored!`),this.removeAttribute(e)}#o=()=>{this.#n.update({data:this.#c,expanded:this.#e.expanded,expandIconType:this.#e.expandIconType,indent:this.#e.indent,showDataTypes:this.#e.showDataTypes,showToolbar:this.#e.showToolbar,showSize:this.#e.showSize,showCopy:this.#e.showCopy})}};customElements.get("andypf-json-viewer")||customElements.define("andypf-json-viewer",T);})(); diff --git a/docker/Dockerfile.dev b/docker/Dockerfile.dev deleted file mode 100644 index 86f4c08..0000000 --- a/docker/Dockerfile.dev +++ /dev/null @@ -1 +0,0 @@ -FROM node:18-alpine \ No newline at end of file diff --git a/esbuild.config.mjs b/esbuild.config.mjs deleted file mode 100644 index 768dd72..0000000 --- a/esbuild.config.mjs +++ /dev/null @@ -1,142 +0,0 @@ -import * as esbuild from "esbuild" -import { rmSync, readFileSync } from "node:fs" -import { resolve } from "node:path" -import postcss from "postcss" -import postcssMinify from "postcss-minify" -import fs from "fs" - -const licenseText = fs.readFileSync("LICENSE.md", "utf-8") - -// helpers for console log -const green = "\x1b[32m%s\x1b[0m" -const yellow = "\x1b[33m%s\x1b[0m" -const clear = "\x1B[2J" - -const isProduction = process.env.NODE_ENV === "production" -const args = process.argv.slice(2).reduce((map, item) => { - if (item.startsWith("--")) { - let [name, value] = item.replace(/^-+/, "").split("=") - if (value === "true") value = true - else if (value === "false") value = false - map[name] = value || true - } - return map -}, {}) - -await rmSync("demo/build", { recursive: true, force: true }) - -let cssPlugin = { - name: "minify-css", - setup(build) { - build.onResolve({ filter: /^.*\.css$/ }, (args) => { - return { - path: resolve(args.resolveDir, args.path), - namespace: "minify-css", - } - }) - - build.onLoad({ filter: /.*/, namespace: "minify-css" }, async (args) => { - const source = readFileSync(args.path, "utf-8") - const css = await postcss(postcssMinify()) - .process(source, { from: undefined }) - .then((result) => result.css) - - return { - contents: css, - loader: "text", - } - }) - }, -} -// default options -const options = { - external: isProduction ? ["react"] : [], - bundle: true, - minify: isProduction, - loader: { - ".css": "text", - }, - plugins: [cssPlugin], - banner: { - js: ` -/* -${licenseText} -*/ - `, - }, -} - -if (isProduction) { - await rmSync("dist", { recursive: true, force: true }) - const prodOptions = { - ...options, - entryPoints: { - index: "src/index.js", - "react/JsonViewer": "src/react/JsonViewer.jsx", - }, - } - // ESM - await esbuild.build({ - ...prodOptions, - outdir: `dist/esm/`, - format: "esm", - }) - - // CommonJS - await esbuild.build({ - ...prodOptions, - outdir: `dist/cjs/`, - format: "cjs", - }) - - // IIFE - await esbuild.build({ - ...prodOptions, - entryPoints: { - index: "src/index.js", - }, - outdir: `dist/iife/`, - format: "iife", - }) -} - -// Themse -await esbuild.build({ - ...options, - entryPoints: ["src/themes.js"], - outfile: `demo/build/themes.js`, - format: "esm", -}) - -let ctx = await esbuild.context({ - ...options, - entryPoints: ["src/index.js"], - outfile: `demo/build/index.js`, - format: "iife", - plugins: [ - cssPlugin, - { - name: "start/end", - setup(build) { - build.onStart(() => { - console.log(clear) - console.log(yellow, "Compiling...") - }) - build.onEnd(() => console.log(green, "Done!")) - }, - }, - ], -}) - -if (args.watch) { - let { host, port } = await ctx.serve({ - servedir: "./demo", - host: "0.0.0.0", - port: parseInt(process.env.PORT || 3000), - }) - - console.log("server on " + host + ":" + port) -} else { - await ctx.rebuild() - await ctx.dispose() -} diff --git a/eslint.config.mjs b/eslint.config.mjs index 113fa4c..cab3985 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,41 +1,32 @@ +import js from "@eslint/js" +import typescript from "@typescript-eslint/eslint-plugin" +import typescriptParser from "@typescript-eslint/parser" import globals from "globals" -import pluginJs from "@eslint/js" -import pluginReact from "eslint-plugin-react" -import jest from "eslint-plugin-jest" export default [ - { files: ["**/*.{js,mjs,cjs,jsx}"] }, + js.configs.recommended, { - settings: { - react: { - version: "detect", - }, - }, + files: ["**/*.{ts,js}"], languageOptions: { + parser: typescriptParser, + parserOptions: { + ecmaVersion: "latest", + sourceType: "module", + }, globals: { + // Web Components globals ...globals.browser, - ...globals.node, + customElements: "readonly", + HTMLElement: "readonly", + CustomEvent: "readonly", + ShadowRoot: "readonly", }, - parserOptions: { ecmaFeatures: { jsx: true } }, }, - }, - pluginJs.configs.recommended, - pluginReact.configs.flat.recommended, - // ######### JEST ########## - // { - // files: ["**/*.test.js", "**/*.config.js", "__tests__/**", "test/__mocks__/**"], - // languageOptions: { sourceType: "commonjs" }, - // }, - { - files: ["__tests__/**", "**/*.test.js", "__mocks__/**"], - ...jest.configs["flat/recommended"], - rules: { - ...jest.configs["flat/recommended"].rules, - "jest/prefer-expect-assertions": "off", - "jest/no-disabled-tests": "off", + plugins: { + "@typescript-eslint": typescript, }, }, { - ignores: ["**/dist/*", "demo/build/*", "coverage/*"], + ignores: ["**/dist/*"], }, ] diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index b048364..0000000 --- a/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -const config = { - verbose: true, - testEnvironment: "jsdom", - transform: { - ".[jt]sx?$": "babel-jest", - }, - moduleNameMapper: { - ".(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": - "/tests/__mocks__/fileMock.js", - ".(css|less)$": "/tests/__mocks__/styleMock.js", - }, -} - -module.exports = config diff --git a/package.json b/package.json index 6db775a..a10b761 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,8 @@ { "name": "@andypf/json-viewer", - "version": "2.2.0", - "description": "A javascript library to visualize json nicely", - "main": "dist/cjs/index.js", - "module": "dist/esm/index.js", + "private": false, + "version": "3.0.0", + "type": "module", "keywords": [ "react-json", "react-json-tree", @@ -24,44 +23,43 @@ "small", "32KB" ], + "files": [ + "dist", + "demo", + "README.md", + "LICENSE" + ], + "main": "./dist/es/index.js", + "module": "./dist/es/index.js", + "types": "./dist/types/index.d.ts", "scripts": { - "test": "jest", - "build": "NODE_ENV=production node esbuild.config.mjs", - "start": "NODE_ENV=development node esbuild.config.mjs --watch", - "check-format": "prettier --check {src,tests,doc}**/*.{js,json,css,md,html}", - "format": "prettier --write {src,tests,doc}**/*.{js,json,css,md,html}", - "lint": "eslint" + "dev": "vite", + "build:lib": "vite build --mode=lib", + "build:demo": "vite build --mode=demo", + "build:types": "tsc --project tsconfig.types.json", + "build": "npm run build:lib && npm run build:demo && npm run build:types", + "test": "vitest", + "test:watch": "vitest --watch", + "lint:check": "eslint --ext .ts,.js,.vue src", + "lint:fix": "eslint --ext .ts,.js,.vue src --fix", + "format": "prettier --write .", + "format:check": "prettier --check .", + "type:check": "tsc --noEmit" }, - "author": "Andreas Pfau", - "license": "MIT", - "packedSize": 32.3, "devDependencies": { - "@babel/core": "^7.23.2", - "@babel/preset-env": "^7.23.2", - "@eslint/js": "^9.9.1", - "babel-jest": "^29.7.0", - "esbuild": "^0.25.0", - "eslint": "^9.9.1", - "eslint-plugin-jest": "^28.8.0", - "eslint-plugin-react": "^7.35.0", - "globals": "^15.9.0", - "jest": "^29.7.0", - "jest-environment-jsdom": "^29.7.0", - "postcss": "^8.4.31", - "postcss-minify": "^1.1.0", - "prettier": "^3.3.3", - "react": "^18.2.0" - }, - "directories": { - "doc": "doc", - "test": "tests" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/andypf/json-viewer.git" - }, - "bugs": { - "url": "https://github.com/andypf/json-viewer/issues" + "@eslint/js": "^9.32.0", + "@testing-library/jest-dom": "^6.6.4", + "@types/node": "^22.14.1", + "@typescript-eslint/eslint-plugin": "^8.38.0", + "@typescript-eslint/parser": "^8.38.0", + "globals": "^16.3.0", + "jsdom": "^26.1.0", + "prettier": "^3.6.2", + "typescript": "~5.7.2", + "vite": "^6.3.1", + "vitest": "^3.1.1" }, - "homepage": "https://github.com/andypf/json-viewer#readme" + "dependencies": { + "eslint": "^9.32.0" + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8310c11..b35e5b1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,5418 +1,2237 @@ -lockfileVersion: '9.0' +lockfileVersion: "9.0" settings: autoInstallPeers: true excludeLinksFromLockfile: false importers: - .: - devDependencies: - '@babel/core': - specifier: ^7.23.2 - version: 7.26.10 - '@babel/preset-env': - specifier: ^7.23.2 - version: 7.26.9(@babel/core@7.26.10) - '@eslint/js': - specifier: ^9.9.1 - version: 9.24.0 - babel-jest: - specifier: ^29.7.0 - version: 29.7.0(@babel/core@7.26.10) - esbuild: - specifier: ^0.25.0 - version: 0.25.2 + dependencies: eslint: - specifier: ^9.9.1 - version: 9.24.0 - eslint-plugin-jest: - specifier: ^28.8.0 - version: 28.11.0(eslint@9.24.0)(jest@29.7.0(@types/node@22.14.1))(typescript@5.8.3) - eslint-plugin-react: - specifier: ^7.35.0 - version: 7.37.5(eslint@9.24.0) + specifier: ^9.32.0 + version: 9.32.0 + devDependencies: + "@eslint/js": + specifier: ^9.32.0 + version: 9.32.0 + "@testing-library/jest-dom": + specifier: ^6.6.4 + version: 6.6.4 + "@types/node": + specifier: ^22.14.1 + version: 22.14.1 + "@typescript-eslint/eslint-plugin": + specifier: ^8.38.0 + version: 8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0)(typescript@5.7.3))(eslint@9.32.0)(typescript@5.7.3) + "@typescript-eslint/parser": + specifier: ^8.38.0 + version: 8.38.0(eslint@9.32.0)(typescript@5.7.3) globals: - specifier: ^15.9.0 - version: 15.15.0 - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@22.14.1) - jest-environment-jsdom: - specifier: ^29.7.0 - version: 29.7.0 - postcss: - specifier: ^8.4.31 - version: 8.5.3 - postcss-minify: - specifier: ^1.1.0 - version: 1.1.0(postcss@8.5.3) + specifier: ^16.3.0 + version: 16.3.0 + jsdom: + specifier: ^26.1.0 + version: 26.1.0 prettier: - specifier: ^3.3.3 - version: 3.5.3 - react: - specifier: ^18.2.0 - version: 18.3.1 + specifier: ^3.6.2 + version: 3.6.2 + typescript: + specifier: ~5.7.2 + version: 5.7.3 + vite: + specifier: ^6.3.1 + version: 6.3.2(@types/node@22.14.1) + vitest: + specifier: ^3.1.1 + version: 3.1.1(@types/node@22.14.1)(jsdom@26.1.0) packages: + "@adobe/css-tools@4.4.3": + resolution: + { integrity: sha512-VQKMkwriZbaOgVCby1UDY/LDk5fIjhQicCvVPFqfe+69fWaPWydbWJ3wRt59/YzIwda1I81loas3oCoHxnqvdA== } + + "@asamuzakjp/css-color@3.1.4": + resolution: + { integrity: sha512-SeuBV4rnjpFNjI8HSgKUwteuFdkHwkboq31HWzznuqgySQir+jSTczoWVVL4jvOjKjuH80fMDG0Fvg1Sb+OJsA== } + + "@csstools/color-helpers@5.0.2": + resolution: + { integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA== } + engines: { node: ">=18" } + + "@csstools/css-calc@2.1.3": + resolution: + { integrity: sha512-XBG3talrhid44BY1x3MHzUx/aTG8+x/Zi57M4aTKK9RFB4aLlF3TTSzfzn8nWVHWL3FgAXAxmupmDd6VWww+pw== } + engines: { node: ">=18" } + peerDependencies: + "@csstools/css-parser-algorithms": ^3.0.4 + "@csstools/css-tokenizer": ^3.0.3 + + "@csstools/css-color-parser@3.0.9": + resolution: + { integrity: sha512-wILs5Zk7BU86UArYBJTPy/FMPPKVKHMj1ycCEyf3VUptol0JNRLFU/BZsJ4aiIHJEbSLiizzRrw8Pc1uAEDrXw== } + engines: { node: ">=18" } + peerDependencies: + "@csstools/css-parser-algorithms": ^3.0.4 + "@csstools/css-tokenizer": ^3.0.3 + + "@csstools/css-parser-algorithms@3.0.4": + resolution: + { integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A== } + engines: { node: ">=18" } + peerDependencies: + "@csstools/css-tokenizer": ^3.0.3 + + "@csstools/css-tokenizer@3.0.3": + resolution: + { integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw== } + engines: { node: ">=18" } + + "@esbuild/aix-ppc64@0.25.2": + resolution: + { integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag== } + engines: { node: ">=18" } + cpu: [ppc64] + os: [aix] - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} + "@esbuild/android-arm64@0.25.2": + resolution: + { integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w== } + engines: { node: ">=18" } + cpu: [arm64] + os: [android] - '@babel/code-frame@7.26.2': - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} - engines: {node: '>=6.9.0'} + "@esbuild/android-arm@0.25.2": + resolution: + { integrity: sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA== } + engines: { node: ">=18" } + cpu: [arm] + os: [android] - '@babel/compat-data@7.26.8': - resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} - engines: {node: '>=6.9.0'} + "@esbuild/android-x64@0.25.2": + resolution: + { integrity: sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg== } + engines: { node: ">=18" } + cpu: [x64] + os: [android] - '@babel/core@7.26.10': - resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} - engines: {node: '>=6.9.0'} + "@esbuild/darwin-arm64@0.25.2": + resolution: + { integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA== } + engines: { node: ">=18" } + cpu: [arm64] + os: [darwin] - '@babel/generator@7.27.0': - resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} - engines: {node: '>=6.9.0'} + "@esbuild/darwin-x64@0.25.2": + resolution: + { integrity: sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA== } + engines: { node: ">=18" } + cpu: [x64] + os: [darwin] - '@babel/helper-annotate-as-pure@7.25.9': - resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} - engines: {node: '>=6.9.0'} + "@esbuild/freebsd-arm64@0.25.2": + resolution: + { integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w== } + engines: { node: ">=18" } + cpu: [arm64] + os: [freebsd] - '@babel/helper-compilation-targets@7.27.0': - resolution: {integrity: sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==} - engines: {node: '>=6.9.0'} + "@esbuild/freebsd-x64@0.25.2": + resolution: + { integrity: sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ== } + engines: { node: ">=18" } + cpu: [x64] + os: [freebsd] - '@babel/helper-create-class-features-plugin@7.27.0': - resolution: {integrity: sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + "@esbuild/linux-arm64@0.25.2": + resolution: + { integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g== } + engines: { node: ">=18" } + cpu: [arm64] + os: [linux] - '@babel/helper-create-regexp-features-plugin@7.27.0': - resolution: {integrity: sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + "@esbuild/linux-arm@0.25.2": + resolution: + { integrity: sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g== } + engines: { node: ">=18" } + cpu: [arm] + os: [linux] - '@babel/helper-define-polyfill-provider@0.6.4': - resolution: {integrity: sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + "@esbuild/linux-ia32@0.25.2": + resolution: + { integrity: sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ== } + engines: { node: ">=18" } + cpu: [ia32] + os: [linux] - '@babel/helper-member-expression-to-functions@7.25.9': - resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} - engines: {node: '>=6.9.0'} + "@esbuild/linux-loong64@0.25.2": + resolution: + { integrity: sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w== } + engines: { node: ">=18" } + cpu: [loong64] + os: [linux] - '@babel/helper-module-imports@7.25.9': - resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} - engines: {node: '>=6.9.0'} + "@esbuild/linux-mips64el@0.25.2": + resolution: + { integrity: sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q== } + engines: { node: ">=18" } + cpu: [mips64el] + os: [linux] - '@babel/helper-module-transforms@7.26.0': - resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + "@esbuild/linux-ppc64@0.25.2": + resolution: + { integrity: sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g== } + engines: { node: ">=18" } + cpu: [ppc64] + os: [linux] - '@babel/helper-optimise-call-expression@7.25.9': - resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} - engines: {node: '>=6.9.0'} + "@esbuild/linux-riscv64@0.25.2": + resolution: + { integrity: sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw== } + engines: { node: ">=18" } + cpu: [riscv64] + os: [linux] - '@babel/helper-plugin-utils@7.26.5': - resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} - engines: {node: '>=6.9.0'} + "@esbuild/linux-s390x@0.25.2": + resolution: + { integrity: sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q== } + engines: { node: ">=18" } + cpu: [s390x] + os: [linux] - '@babel/helper-remap-async-to-generator@7.25.9': - resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + "@esbuild/linux-x64@0.25.2": + resolution: + { integrity: sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg== } + engines: { node: ">=18" } + cpu: [x64] + os: [linux] - '@babel/helper-replace-supers@7.26.5': - resolution: {integrity: sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + "@esbuild/netbsd-arm64@0.25.2": + resolution: + { integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw== } + engines: { node: ">=18" } + cpu: [arm64] + os: [netbsd] - '@babel/helper-skip-transparent-expression-wrappers@7.25.9': - resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} - engines: {node: '>=6.9.0'} + "@esbuild/netbsd-x64@0.25.2": + resolution: + { integrity: sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg== } + engines: { node: ">=18" } + cpu: [x64] + os: [netbsd] - '@babel/helper-string-parser@7.25.9': - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} - engines: {node: '>=6.9.0'} + "@esbuild/openbsd-arm64@0.25.2": + resolution: + { integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg== } + engines: { node: ">=18" } + cpu: [arm64] + os: [openbsd] - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} - engines: {node: '>=6.9.0'} + "@esbuild/openbsd-x64@0.25.2": + resolution: + { integrity: sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw== } + engines: { node: ">=18" } + cpu: [x64] + os: [openbsd] - '@babel/helper-validator-option@7.25.9': - resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} - engines: {node: '>=6.9.0'} + "@esbuild/sunos-x64@0.25.2": + resolution: + { integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA== } + engines: { node: ">=18" } + cpu: [x64] + os: [sunos] - '@babel/helper-wrap-function@7.25.9': - resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} - engines: {node: '>=6.9.0'} + "@esbuild/win32-arm64@0.25.2": + resolution: + { integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q== } + engines: { node: ">=18" } + cpu: [arm64] + os: [win32] - '@babel/helpers@7.27.0': - resolution: {integrity: sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==} - engines: {node: '>=6.9.0'} + "@esbuild/win32-ia32@0.25.2": + resolution: + { integrity: sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg== } + engines: { node: ">=18" } + cpu: [ia32] + os: [win32] - '@babel/parser@7.27.0': - resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} - engines: {node: '>=6.0.0'} - hasBin: true + "@esbuild/win32-x64@0.25.2": + resolution: + { integrity: sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA== } + engines: { node: ">=18" } + cpu: [x64] + os: [win32] - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': - resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} - engines: {node: '>=6.9.0'} + "@eslint-community/eslint-utils@4.7.0": + resolution: + { integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } peerDependencies: - '@babel/core': ^7.0.0 + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9': - resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + "@eslint-community/regexpp@4.12.1": + resolution: + { integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== } + engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } + + "@eslint/config-array@0.21.0": + resolution: + { integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@eslint/config-helpers@0.3.0": + resolution: + { integrity: sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@eslint/core@0.15.1": + resolution: + { integrity: sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@eslint/eslintrc@3.3.1": + resolution: + { integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@eslint/js@9.32.0": + resolution: + { integrity: sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@eslint/object-schema@2.1.6": + resolution: + { integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@eslint/plugin-kit@0.3.4": + resolution: + { integrity: sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@humanfs/core@0.19.1": + resolution: + { integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== } + engines: { node: ">=18.18.0" } + + "@humanfs/node@0.16.6": + resolution: + { integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== } + engines: { node: ">=18.18.0" } + + "@humanwhocodes/module-importer@1.0.1": + resolution: + { integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== } + engines: { node: ">=12.22" } + + "@humanwhocodes/retry@0.3.1": + resolution: + { integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== } + engines: { node: ">=18.18" } + + "@humanwhocodes/retry@0.4.3": + resolution: + { integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== } + engines: { node: ">=18.18" } + + "@jridgewell/sourcemap-codec@1.5.0": + resolution: + { integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== } + + "@nodelib/fs.scandir@2.1.5": + resolution: + { integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== } + engines: { node: ">= 8" } + + "@nodelib/fs.stat@2.0.5": + resolution: + { integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== } + engines: { node: ">= 8" } + + "@nodelib/fs.walk@1.2.8": + resolution: + { integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== } + engines: { node: ">= 8" } + + "@rollup/rollup-android-arm-eabi@4.40.0": + resolution: + { integrity: sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg== } + cpu: [arm] + os: [android] - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9': - resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + "@rollup/rollup-android-arm64@4.40.0": + resolution: + { integrity: sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w== } + cpu: [arm64] + os: [android] - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9': - resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 + "@rollup/rollup-darwin-arm64@4.40.0": + resolution: + { integrity: sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ== } + cpu: [arm64] + os: [darwin] - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9': - resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + "@rollup/rollup-darwin-x64@4.40.0": + resolution: + { integrity: sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA== } + cpu: [x64] + os: [darwin] - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@rollup/rollup-freebsd-arm64@4.40.0": + resolution: + { integrity: sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg== } + cpu: [arm64] + os: [freebsd] - '@babel/plugin-syntax-async-generators@7.8.4': - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@rollup/rollup-freebsd-x64@4.40.0": + resolution: + { integrity: sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw== } + cpu: [x64] + os: [freebsd] - '@babel/plugin-syntax-bigint@7.8.3': - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@rollup/rollup-linux-arm-gnueabihf@4.40.0": + resolution: + { integrity: sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA== } + cpu: [arm] + os: [linux] - '@babel/plugin-syntax-class-properties@7.12.13': - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@rollup/rollup-linux-arm-musleabihf@4.40.0": + resolution: + { integrity: sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg== } + cpu: [arm] + os: [linux] - '@babel/plugin-syntax-class-static-block@7.14.5': - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@rollup/rollup-linux-arm64-gnu@4.40.0": + resolution: + { integrity: sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg== } + cpu: [arm64] + os: [linux] - '@babel/plugin-syntax-import-assertions@7.26.0': - resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@rollup/rollup-linux-arm64-musl@4.40.0": + resolution: + { integrity: sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ== } + cpu: [arm64] + os: [linux] - '@babel/plugin-syntax-import-attributes@7.26.0': - resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@rollup/rollup-linux-loongarch64-gnu@4.40.0": + resolution: + { integrity: sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg== } + cpu: [loong64] + os: [linux] - '@babel/plugin-syntax-import-meta@7.10.4': - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@rollup/rollup-linux-powerpc64le-gnu@4.40.0": + resolution: + { integrity: sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw== } + cpu: [ppc64] + os: [linux] - '@babel/plugin-syntax-json-strings@7.8.3': - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@rollup/rollup-linux-riscv64-gnu@4.40.0": + resolution: + { integrity: sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA== } + cpu: [riscv64] + os: [linux] - '@babel/plugin-syntax-jsx@7.25.9': - resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@rollup/rollup-linux-riscv64-musl@4.40.0": + resolution: + { integrity: sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ== } + cpu: [riscv64] + os: [linux] - '@babel/plugin-syntax-logical-assignment-operators@7.10.4': - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@rollup/rollup-linux-s390x-gnu@4.40.0": + resolution: + { integrity: sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw== } + cpu: [s390x] + os: [linux] - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@rollup/rollup-linux-x64-gnu@4.40.0": + resolution: + { integrity: sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ== } + cpu: [x64] + os: [linux] - '@babel/plugin-syntax-numeric-separator@7.10.4': - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@rollup/rollup-linux-x64-musl@4.40.0": + resolution: + { integrity: sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw== } + cpu: [x64] + os: [linux] - '@babel/plugin-syntax-object-rest-spread@7.8.3': - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@rollup/rollup-win32-arm64-msvc@4.40.0": + resolution: + { integrity: sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ== } + cpu: [arm64] + os: [win32] - '@babel/plugin-syntax-optional-catch-binding@7.8.3': - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@rollup/rollup-win32-ia32-msvc@4.40.0": + resolution: + { integrity: sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA== } + cpu: [ia32] + os: [win32] - '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@rollup/rollup-win32-x64-msvc@4.40.0": + resolution: + { integrity: sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ== } + cpu: [x64] + os: [win32] - '@babel/plugin-syntax-private-property-in-object@7.14.5': - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@testing-library/jest-dom@6.6.4": + resolution: + { integrity: sha512-xDXgLjVunjHqczScfkCJ9iyjdNOVHvvCdqHSSxwM9L0l/wHkTRum67SDc020uAlCoqktJplgO2AAQeLP1wgqDQ== } + engines: { node: ">=14", npm: ">=6", yarn: ">=1" } - '@babel/plugin-syntax-top-level-await@7.14.5': - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@types/estree@1.0.7": + resolution: + { integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ== } - '@babel/plugin-syntax-typescript@7.25.9': - resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@types/json-schema@7.0.15": + resolution: + { integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== } - '@babel/plugin-syntax-unicode-sets-regex@7.18.6': - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + "@types/node@22.14.1": + resolution: + { integrity: sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw== } - '@babel/plugin-transform-arrow-functions@7.25.9': - resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} - engines: {node: '>=6.9.0'} + "@typescript-eslint/eslint-plugin@8.38.0": + resolution: + { integrity: sha512-CPoznzpuAnIOl4nhj4tRr4gIPj5AfKgkiJmGQDaq+fQnRJTYlcBjbX3wbciGmpoPf8DREufuPRe1tNMZnGdanA== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - '@babel/core': ^7.0.0-0 + "@typescript-eslint/parser": ^8.38.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" - '@babel/plugin-transform-async-generator-functions@7.26.8': - resolution: {integrity: sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==} - engines: {node: '>=6.9.0'} + "@typescript-eslint/parser@8.38.0": + resolution: + { integrity: sha512-Zhy8HCvBUEfBECzIl1PKqF4p11+d0aUJS1GeUiuqK9WmOug8YCmC4h4bjyBvMyAMI9sbRczmrYL5lKg/YMbrcQ== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - '@babel/core': ^7.0.0-0 + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" - '@babel/plugin-transform-async-to-generator@7.25.9': - resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} - engines: {node: '>=6.9.0'} + "@typescript-eslint/project-service@8.38.0": + resolution: + { integrity: sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - '@babel/core': ^7.0.0-0 + typescript: ">=4.8.4 <5.9.0" - '@babel/plugin-transform-block-scoped-functions@7.26.5': - resolution: {integrity: sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@typescript-eslint/scope-manager@8.38.0": + resolution: + { integrity: sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - '@babel/plugin-transform-block-scoping@7.27.0': - resolution: {integrity: sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ==} - engines: {node: '>=6.9.0'} + "@typescript-eslint/tsconfig-utils@8.38.0": + resolution: + { integrity: sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - '@babel/core': ^7.0.0-0 + typescript: ">=4.8.4 <5.9.0" - '@babel/plugin-transform-class-properties@7.25.9': - resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} - engines: {node: '>=6.9.0'} + "@typescript-eslint/type-utils@8.38.0": + resolution: + { integrity: sha512-c7jAvGEZVf0ao2z+nnz8BUaHZD09Agbh+DY7qvBQqLiz8uJzRgVPj5YvOh8I8uEiH8oIUGIfHzMwUcGVco/SJg== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - '@babel/core': ^7.0.0-0 + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" - '@babel/plugin-transform-class-static-block@7.26.0': - resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 + "@typescript-eslint/types@8.38.0": + resolution: + { integrity: sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - '@babel/plugin-transform-classes@7.25.9': - resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} - engines: {node: '>=6.9.0'} + "@typescript-eslint/typescript-estree@8.38.0": + resolution: + { integrity: sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - '@babel/core': ^7.0.0-0 + typescript: ">=4.8.4 <5.9.0" - '@babel/plugin-transform-computed-properties@7.25.9': - resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} - engines: {node: '>=6.9.0'} + "@typescript-eslint/utils@8.38.0": + resolution: + { integrity: sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - '@babel/core': ^7.0.0-0 + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" - '@babel/plugin-transform-destructuring@7.25.9': - resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@typescript-eslint/visitor-keys@8.38.0": + resolution: + { integrity: sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - '@babel/plugin-transform-dotall-regex@7.25.9': - resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@vitest/expect@3.1.1": + resolution: + { integrity: sha512-q/zjrW9lgynctNbwvFtQkGK9+vvHA5UzVi2V8APrp1C6fG6/MuYYkmlx4FubuqLycCeSdHD5aadWfua/Vr0EUA== } - '@babel/plugin-transform-duplicate-keys@7.25.9': - resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} - engines: {node: '>=6.9.0'} + "@vitest/mocker@3.1.1": + resolution: + { integrity: sha512-bmpJJm7Y7i9BBELlLuuM1J1Q6EQ6K5Ye4wcyOpOMXMcePYKSIYlpcrCm4l/O6ja4VJA5G2aMJiuZkZdnxlC3SA== } peerDependencies: - '@babel/core': ^7.0.0-0 + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9': - resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + "@vitest/pretty-format@3.1.1": + resolution: + { integrity: sha512-dg0CIzNx+hMMYfNmSqJlLSXEmnNhMswcn3sXO7Tpldr0LiGmg3eXdLLhwkv2ZqgHb/d5xg5F7ezNFRA1fA13yA== } - '@babel/plugin-transform-dynamic-import@7.25.9': - resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@vitest/runner@3.1.1": + resolution: + { integrity: sha512-X/d46qzJuEDO8ueyjtKfxffiXraPRfmYasoC4i5+mlLEJ10UvPb0XH5M9C3gWuxd7BAQhpK42cJgJtq53YnWVA== } - '@babel/plugin-transform-exponentiation-operator@7.26.3': - resolution: {integrity: sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@vitest/snapshot@3.1.1": + resolution: + { integrity: sha512-bByMwaVWe/+1WDf9exFxWWgAixelSdiwo2p33tpqIlM14vW7PRV5ppayVXtfycqze4Qhtwag5sVhX400MLBOOw== } - '@babel/plugin-transform-export-namespace-from@7.25.9': - resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@vitest/spy@3.1.1": + resolution: + { integrity: sha512-+EmrUOOXbKzLkTDwlsc/xrwOlPDXyVk3Z6P6K4oiCndxz7YLpp/0R0UsWVOKT0IXWjjBJuSMk6D27qipaupcvQ== } - '@babel/plugin-transform-for-of@7.26.9': - resolution: {integrity: sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + "@vitest/utils@3.1.1": + resolution: + { integrity: sha512-1XIjflyaU2k3HMArJ50bwSh3wKWPD6Q47wz/NUSmRV0zNywPc4w79ARjg/i/aNINHwA+mIALhUVqD9/aUvZNgg== } - '@babel/plugin-transform-function-name@7.25.9': - resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} - engines: {node: '>=6.9.0'} + acorn-jsx@5.3.2: + resolution: + { integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== } peerDependencies: - '@babel/core': ^7.0.0-0 + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - '@babel/plugin-transform-json-strings@7.25.9': - resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + acorn@8.15.0: + resolution: + { integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== } + engines: { node: ">=0.4.0" } + hasBin: true - '@babel/plugin-transform-literals@7.25.9': - resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + agent-base@7.1.3: + resolution: + { integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw== } + engines: { node: ">= 14" } - '@babel/plugin-transform-logical-assignment-operators@7.25.9': - resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + ajv@6.12.6: + resolution: + { integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== } - '@babel/plugin-transform-member-expression-literals@7.25.9': - resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + ansi-styles@4.3.0: + resolution: + { integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== } + engines: { node: ">=8" } - '@babel/plugin-transform-modules-amd@7.25.9': - resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + argparse@2.0.1: + resolution: + { integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== } - '@babel/plugin-transform-modules-commonjs@7.26.3': - resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + aria-query@5.3.2: + resolution: + { integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw== } + engines: { node: ">= 0.4" } - '@babel/plugin-transform-modules-systemjs@7.25.9': - resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + assertion-error@2.0.1: + resolution: + { integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== } + engines: { node: ">=12" } - '@babel/plugin-transform-modules-umd@7.25.9': - resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + balanced-match@1.0.2: + resolution: + { integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== } - '@babel/plugin-transform-named-capturing-groups-regex@7.25.9': - resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + brace-expansion@1.1.12: + resolution: + { integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== } - '@babel/plugin-transform-new-target@7.25.9': - resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + brace-expansion@2.0.2: + resolution: + { integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== } - '@babel/plugin-transform-nullish-coalescing-operator@7.26.6': - resolution: {integrity: sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + braces@3.0.3: + resolution: + { integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== } + engines: { node: ">=8" } - '@babel/plugin-transform-numeric-separator@7.25.9': - resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + cac@6.7.14: + resolution: + { integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== } + engines: { node: ">=8" } - '@babel/plugin-transform-object-rest-spread@7.25.9': - resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + callsites@3.1.0: + resolution: + { integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== } + engines: { node: ">=6" } - '@babel/plugin-transform-object-super@7.25.9': - resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + chai@5.2.0: + resolution: + { integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw== } + engines: { node: ">=12" } - '@babel/plugin-transform-optional-catch-binding@7.25.9': - resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + chalk@4.1.2: + resolution: + { integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== } + engines: { node: ">=10" } - '@babel/plugin-transform-optional-chaining@7.25.9': - resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + check-error@2.1.1: + resolution: + { integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw== } + engines: { node: ">= 16" } - '@babel/plugin-transform-parameters@7.25.9': - resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + color-convert@2.0.1: + resolution: + { integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== } + engines: { node: ">=7.0.0" } - '@babel/plugin-transform-private-methods@7.25.9': - resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + color-name@1.1.4: + resolution: + { integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== } - '@babel/plugin-transform-private-property-in-object@7.25.9': - resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + concat-map@0.0.1: + resolution: + { integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== } - '@babel/plugin-transform-property-literals@7.25.9': - resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + cross-spawn@7.0.6: + resolution: + { integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== } + engines: { node: ">= 8" } - '@babel/plugin-transform-regenerator@7.27.0': - resolution: {integrity: sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + css.escape@1.5.1: + resolution: + { integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== } - '@babel/plugin-transform-regexp-modifiers@7.26.0': - resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + cssstyle@4.3.1: + resolution: + { integrity: sha512-ZgW+Jgdd7i52AaLYCriF8Mxqft0gD/R9i9wi6RWBhs1pqdPEzPjym7rvRKi397WmQFf3SlyUsszhw+VVCbx79Q== } + engines: { node: ">=18" } - '@babel/plugin-transform-reserved-words@7.25.9': - resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + data-urls@5.0.0: + resolution: + { integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg== } + engines: { node: ">=18" } - '@babel/plugin-transform-shorthand-properties@7.25.9': - resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} - engines: {node: '>=6.9.0'} + debug@4.4.0: + resolution: + { integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== } + engines: { node: ">=6.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true - '@babel/plugin-transform-spread@7.25.9': - resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + decimal.js@10.5.0: + resolution: + { integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw== } - '@babel/plugin-transform-sticky-regex@7.25.9': - resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + deep-eql@5.0.2: + resolution: + { integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q== } + engines: { node: ">=6" } - '@babel/plugin-transform-template-literals@7.26.8': - resolution: {integrity: sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + deep-is@0.1.4: + resolution: + { integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== } - '@babel/plugin-transform-typeof-symbol@7.27.0': - resolution: {integrity: sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + dom-accessibility-api@0.6.3: + resolution: + { integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w== } - '@babel/plugin-transform-unicode-escapes@7.25.9': - resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + entities@4.5.0: + resolution: + { integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== } + engines: { node: ">=0.12" } - '@babel/plugin-transform-unicode-property-regex@7.25.9': - resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + es-module-lexer@1.6.0: + resolution: + { integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ== } - '@babel/plugin-transform-unicode-regex@7.25.9': - resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + esbuild@0.25.2: + resolution: + { integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ== } + engines: { node: ">=18" } + hasBin: true - '@babel/plugin-transform-unicode-sets-regex@7.25.9': - resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + escape-string-regexp@4.0.0: + resolution: + { integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== } + engines: { node: ">=10" } - '@babel/preset-env@7.26.9': - resolution: {integrity: sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + eslint-scope@8.4.0: + resolution: + { integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - '@babel/preset-modules@0.1.6-no-external-plugins': - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + eslint-visitor-keys@3.4.3: + resolution: + { integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + + eslint-visitor-keys@4.2.1: + resolution: + { integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + eslint@9.32.0: + resolution: + { integrity: sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + hasBin: true peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true - '@babel/runtime@7.27.0': - resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==} - engines: {node: '>=6.9.0'} + espree@10.4.0: + resolution: + { integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - '@babel/template@7.27.0': - resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==} - engines: {node: '>=6.9.0'} + esquery@1.6.0: + resolution: + { integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== } + engines: { node: ">=0.10" } - '@babel/traverse@7.27.0': - resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} - engines: {node: '>=6.9.0'} + esrecurse@4.3.0: + resolution: + { integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== } + engines: { node: ">=4.0" } - '@babel/types@7.27.0': - resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} - engines: {node: '>=6.9.0'} + estraverse@5.3.0: + resolution: + { integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== } + engines: { node: ">=4.0" } - '@bcoe/v8-coverage@0.2.3': - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + estree-walker@3.0.3: + resolution: + { integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== } - '@esbuild/aix-ppc64@0.25.2': - resolution: {integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] + esutils@2.0.3: + resolution: + { integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== } + engines: { node: ">=0.10.0" } - '@esbuild/android-arm64@0.25.2': - resolution: {integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] + expect-type@1.2.1: + resolution: + { integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw== } + engines: { node: ">=12.0.0" } - '@esbuild/android-arm@0.25.2': - resolution: {integrity: sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] + fast-deep-equal@3.1.3: + resolution: + { integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== } - '@esbuild/android-x64@0.25.2': - resolution: {integrity: sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] + fast-glob@3.3.3: + resolution: + { integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== } + engines: { node: ">=8.6.0" } - '@esbuild/darwin-arm64@0.25.2': - resolution: {integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] + fast-json-stable-stringify@2.1.0: + resolution: + { integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== } - '@esbuild/darwin-x64@0.25.2': - resolution: {integrity: sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] + fast-levenshtein@2.0.6: + resolution: + { integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== } - '@esbuild/freebsd-arm64@0.25.2': - resolution: {integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] + fastq@1.19.1: + resolution: + { integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== } - '@esbuild/freebsd-x64@0.25.2': - resolution: {integrity: sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] + fdir@6.4.3: + resolution: + { integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw== } + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true - '@esbuild/linux-arm64@0.25.2': - resolution: {integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] + file-entry-cache@8.0.0: + resolution: + { integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== } + engines: { node: ">=16.0.0" } - '@esbuild/linux-arm@0.25.2': - resolution: {integrity: sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] + fill-range@7.1.1: + resolution: + { integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== } + engines: { node: ">=8" } - '@esbuild/linux-ia32@0.25.2': - resolution: {integrity: sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] + find-up@5.0.0: + resolution: + { integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== } + engines: { node: ">=10" } - '@esbuild/linux-loong64@0.25.2': - resolution: {integrity: sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] + flat-cache@4.0.1: + resolution: + { integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== } + engines: { node: ">=16" } - '@esbuild/linux-mips64el@0.25.2': - resolution: {integrity: sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] + flatted@3.3.3: + resolution: + { integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== } - '@esbuild/linux-ppc64@0.25.2': - resolution: {integrity: sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] + fsevents@2.3.3: + resolution: + { integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + os: [darwin] - '@esbuild/linux-riscv64@0.25.2': - resolution: {integrity: sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] + glob-parent@5.1.2: + resolution: + { integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== } + engines: { node: ">= 6" } - '@esbuild/linux-s390x@0.25.2': - resolution: {integrity: sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] + glob-parent@6.0.2: + resolution: + { integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== } + engines: { node: ">=10.13.0" } - '@esbuild/linux-x64@0.25.2': - resolution: {integrity: sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.25.2': - resolution: {integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.25.2': - resolution: {integrity: sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.25.2': - resolution: {integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.25.2': - resolution: {integrity: sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.25.2': - resolution: {integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.25.2': - resolution: {integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.25.2': - resolution: {integrity: sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.25.2': - resolution: {integrity: sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-utils@4.6.1': - resolution: {integrity: sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.12.1': - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/config-array@0.20.0': - resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/config-helpers@0.2.1': - resolution: {integrity: sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.12.0': - resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.13.0': - resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + globals@14.0.0: + resolution: + { integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== } + engines: { node: ">=18" } - '@eslint/eslintrc@3.3.1': - resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + globals@16.3.0: + resolution: + { integrity: sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ== } + engines: { node: ">=18" } - '@eslint/js@9.24.0': - resolution: {integrity: sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + graphemer@1.4.0: + resolution: + { integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== } - '@eslint/object-schema@2.1.6': - resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + has-flag@4.0.0: + resolution: + { integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== } + engines: { node: ">=8" } - '@eslint/plugin-kit@0.2.8': - resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + html-encoding-sniffer@4.0.0: + resolution: + { integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ== } + engines: { node: ">=18" } - '@humanfs/core@0.19.1': - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} - engines: {node: '>=18.18.0'} + http-proxy-agent@7.0.2: + resolution: + { integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== } + engines: { node: ">= 14" } - '@humanfs/node@0.16.6': - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} - engines: {node: '>=18.18.0'} + https-proxy-agent@7.0.6: + resolution: + { integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== } + engines: { node: ">= 14" } - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} + iconv-lite@0.6.3: + resolution: + { integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== } + engines: { node: ">=0.10.0" } - '@humanwhocodes/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} + ignore@5.3.2: + resolution: + { integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== } + engines: { node: ">= 4" } - '@humanwhocodes/retry@0.4.2': - resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} - engines: {node: '>=18.18'} + ignore@7.0.5: + resolution: + { integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== } + engines: { node: ">= 4" } - '@istanbuljs/load-nyc-config@1.1.0': - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} + import-fresh@3.3.1: + resolution: + { integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== } + engines: { node: ">=6" } - '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} + imurmurhash@0.1.4: + resolution: + { integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== } + engines: { node: ">=0.8.19" } - '@jest/console@29.7.0': - resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + indent-string@4.0.0: + resolution: + { integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== } + engines: { node: ">=8" } - '@jest/core@29.7.0': - resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + is-extglob@2.1.1: + resolution: + { integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== } + engines: { node: ">=0.10.0" } - '@jest/environment@29.7.0': - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + is-glob@4.0.3: + resolution: + { integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== } + engines: { node: ">=0.10.0" } - '@jest/expect-utils@29.7.0': - resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + is-number@7.0.0: + resolution: + { integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== } + engines: { node: ">=0.12.0" } - '@jest/expect@29.7.0': - resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + is-potential-custom-element-name@1.0.1: + resolution: + { integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== } - '@jest/fake-timers@29.7.0': - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + isexe@2.0.0: + resolution: + { integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== } - '@jest/globals@29.7.0': - resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + js-yaml@4.1.0: + resolution: + { integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== } + hasBin: true - '@jest/reporters@29.7.0': - resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jsdom@26.1.0: + resolution: + { integrity: sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg== } + engines: { node: ">=18" } peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + canvas: ^3.0.0 peerDependenciesMeta: - node-notifier: + canvas: optional: true - '@jest/schemas@29.6.3': - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/source-map@29.6.3': - resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/test-result@29.7.0': - resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/test-sequencer@29.7.0': - resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/transform@29.7.0': - resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/types@29.6.3': - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jridgewell/gen-mapping@0.3.8': - resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + json-buffer@3.0.1: + resolution: + { integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== } - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} + json-schema-traverse@0.4.1: + resolution: + { integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== } - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} + json-stable-stringify-without-jsonify@1.0.1: + resolution: + { integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== } - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} + keyv@4.5.4: + resolution: + { integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== } - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + levn@0.4.1: + resolution: + { integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== } + engines: { node: ">= 0.8.0" } - '@sinonjs/commons@3.0.1': - resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + locate-path@6.0.0: + resolution: + { integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== } + engines: { node: ">=10" } - '@sinonjs/fake-timers@10.3.0': - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + lodash.merge@4.6.2: + resolution: + { integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== } - '@tootallnate/once@2.0.0': - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} + lodash@4.17.21: + resolution: + { integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== } - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + loupe@3.1.3: + resolution: + { integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug== } - '@types/babel__generator@7.27.0': - resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + lru-cache@10.4.3: + resolution: + { integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== } - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + magic-string@0.30.17: + resolution: + { integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA== } - '@types/babel__traverse@7.20.7': - resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} + merge2@1.4.1: + resolution: + { integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== } + engines: { node: ">= 8" } - '@types/estree@1.0.7': - resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + micromatch@4.0.8: + resolution: + { integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== } + engines: { node: ">=8.6" } - '@types/graceful-fs@4.1.9': - resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + min-indent@1.0.1: + resolution: + { integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== } + engines: { node: ">=4" } - '@types/istanbul-lib-coverage@2.0.6': - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + minimatch@3.1.2: + resolution: + { integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== } - '@types/istanbul-lib-report@3.0.3': - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + minimatch@9.0.5: + resolution: + { integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== } + engines: { node: ">=16 || 14 >=14.17" } - '@types/istanbul-reports@3.0.4': - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + ms@2.1.3: + resolution: + { integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== } - '@types/jsdom@20.0.1': - resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} + nanoid@3.3.11: + resolution: + { integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + hasBin: true - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + natural-compare@1.4.0: + resolution: + { integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== } - '@types/node@22.14.1': - resolution: {integrity: sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==} + nwsapi@2.2.20: + resolution: + { integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA== } - '@types/stack-utils@2.0.3': - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + optionator@0.9.4: + resolution: + { integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== } + engines: { node: ">= 0.8.0" } - '@types/tough-cookie@4.0.5': - resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + p-limit@3.1.0: + resolution: + { integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== } + engines: { node: ">=10" } - '@types/yargs-parser@21.0.3': - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + p-locate@5.0.0: + resolution: + { integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== } + engines: { node: ">=10" } - '@types/yargs@17.0.33': - resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + parent-module@1.0.1: + resolution: + { integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== } + engines: { node: ">=6" } - '@typescript-eslint/scope-manager@8.30.1': - resolution: {integrity: sha512-+C0B6ChFXZkuaNDl73FJxRYT0G7ufVPOSQkqkpM/U198wUwUFOtgo1k/QzFh1KjpBitaK7R1tgjVz6o9HmsRPg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + parse5@7.2.1: + resolution: + { integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ== } - '@typescript-eslint/types@8.30.1': - resolution: {integrity: sha512-81KawPfkuulyWo5QdyG/LOKbspyyiW+p4vpn4bYO7DM/hZImlVnFwrpCTnmNMOt8CvLRr5ojI9nU1Ekpw4RcEw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + path-exists@4.0.0: + resolution: + { integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== } + engines: { node: ">=8" } - '@typescript-eslint/typescript-estree@8.30.1': - resolution: {integrity: sha512-kQQnxymiUy9tTb1F2uep9W6aBiYODgq5EMSk6Nxh4Z+BDUoYUSa029ISs5zTzKBFnexQEh71KqwjKnRz58lusQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' + path-key@3.1.1: + resolution: + { integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== } + engines: { node: ">=8" } - '@typescript-eslint/utils@8.30.1': - resolution: {integrity: sha512-T/8q4R9En2tcEsWPQgB5BQ0XJVOtfARcUvOa8yJP3fh9M/mXraLxZrkCfGb6ChrO/V3W+Xbd04RacUEqk1CFEQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + pathe@2.0.3: + resolution: + { integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w== } - '@typescript-eslint/visitor-keys@8.30.1': - resolution: {integrity: sha512-aEhgas7aJ6vZnNFC7K4/vMGDGyOiqWcYZPpIWrTKuTAlsvDNKy2GFDqh9smL+iq069ZvR0YzEeq0B8NJlLzjFA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + pathval@2.0.0: + resolution: + { integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA== } + engines: { node: ">= 14.16" } - abab@2.0.6: - resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} - deprecated: Use your platform's native atob() and btoa() methods instead + picocolors@1.1.1: + resolution: + { integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== } - acorn-globals@7.0.1: - resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} + picomatch@2.3.1: + resolution: + { integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== } + engines: { node: ">=8.6" } - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + picomatch@4.0.2: + resolution: + { integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== } + engines: { node: ">=12" } - acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} + postcss@8.5.3: + resolution: + { integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A== } + engines: { node: ^10 || ^12 || >=14 } - acorn@8.14.1: - resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} - engines: {node: '>=0.4.0'} + prelude-ls@1.2.1: + resolution: + { integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== } + engines: { node: ">= 0.8.0" } + + prettier@3.6.2: + resolution: + { integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ== } + engines: { node: ">=14" } hasBin: true - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + punycode@2.3.1: + resolution: + { integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== } + engines: { node: ">=6" } - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} + queue-microtask@1.2.3: + resolution: + { integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== } - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} + redent@3.0.0: + resolution: + { integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== } + engines: { node: ">=8" } - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + resolve-from@4.0.0: + resolution: + { integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== } + engines: { node: ">=4" } - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + reusify@1.1.0: + resolution: + { integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== } + engines: { iojs: ">=1.0.0", node: ">=0.10.0" } + + rollup@4.40.0: + resolution: + { integrity: sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w== } + engines: { node: ">=18.0.0", npm: ">=8.0.0" } + hasBin: true - array-buffer-byte-length@1.0.2: - resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} - engines: {node: '>= 0.4'} + rrweb-cssom@0.8.0: + resolution: + { integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw== } - array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} - engines: {node: '>= 0.4'} + run-parallel@1.2.0: + resolution: + { integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== } - array.prototype.findlast@1.2.5: - resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} - engines: {node: '>= 0.4'} + safer-buffer@2.1.2: + resolution: + { integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== } - array.prototype.flat@1.3.3: - resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} - engines: {node: '>= 0.4'} + saxes@6.0.0: + resolution: + { integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== } + engines: { node: ">=v12.22.7" } + + semver@7.7.2: + resolution: + { integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== } + engines: { node: ">=10" } + hasBin: true - array.prototype.flatmap@1.3.3: - resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} - engines: {node: '>= 0.4'} + shebang-command@2.0.0: + resolution: + { integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== } + engines: { node: ">=8" } - array.prototype.tosorted@1.1.4: - resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} - engines: {node: '>= 0.4'} + shebang-regex@3.0.0: + resolution: + { integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== } + engines: { node: ">=8" } - arraybuffer.prototype.slice@1.0.4: - resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} - engines: {node: '>= 0.4'} + siginfo@2.0.0: + resolution: + { integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== } - async-function@1.0.0: - resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} - engines: {node: '>= 0.4'} + source-map-js@1.2.1: + resolution: + { integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== } + engines: { node: ">=0.10.0" } - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + stackback@0.0.2: + resolution: + { integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== } - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} + std-env@3.9.0: + resolution: + { integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw== } - babel-jest@29.7.0: - resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.8.0 + strip-indent@3.0.0: + resolution: + { integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== } + engines: { node: ">=8" } - babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} + strip-json-comments@3.1.1: + resolution: + { integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== } + engines: { node: ">=8" } - babel-plugin-jest-hoist@29.6.3: - resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + supports-color@7.2.0: + resolution: + { integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== } + engines: { node: ">=8" } - babel-plugin-polyfill-corejs2@0.4.13: - resolution: {integrity: sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + symbol-tree@3.2.4: + resolution: + { integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== } + + tinybench@2.9.0: + resolution: + { integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg== } + + tinyexec@0.3.2: + resolution: + { integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA== } + + tinyglobby@0.2.12: + resolution: + { integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww== } + engines: { node: ">=12.0.0" } + + tinypool@1.0.2: + resolution: + { integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA== } + engines: { node: ^18.0.0 || >=20.0.0 } + + tinyrainbow@2.0.0: + resolution: + { integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw== } + engines: { node: ">=14.0.0" } + + tinyspy@3.0.2: + resolution: + { integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q== } + engines: { node: ">=14.0.0" } + + tldts-core@6.1.86: + resolution: + { integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA== } + + tldts@6.1.86: + resolution: + { integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ== } + hasBin: true - babel-plugin-polyfill-corejs3@0.11.1: - resolution: {integrity: sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + to-regex-range@5.0.1: + resolution: + { integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== } + engines: { node: ">=8.0" } - babel-plugin-polyfill-regenerator@0.6.4: - resolution: {integrity: sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + tough-cookie@5.1.2: + resolution: + { integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A== } + engines: { node: ">=16" } - babel-preset-current-node-syntax@1.1.0: - resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} - peerDependencies: - '@babel/core': ^7.0.0 + tr46@5.1.1: + resolution: + { integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw== } + engines: { node: ">=18" } - babel-preset-jest@29.6.3: - resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + ts-api-utils@2.1.0: + resolution: + { integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ== } + engines: { node: ">=18.12" } peerDependencies: - '@babel/core': ^7.0.0 - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + typescript: ">=4.8.4" - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browserslist@4.24.4: - resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + type-check@0.4.0: + resolution: + { integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== } + engines: { node: ">= 0.8.0" } + + typescript@5.7.3: + resolution: + { integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw== } + engines: { node: ">=14.17" } hasBin: true - bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - call-bind-apply-helpers@1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} - engines: {node: '>= 0.4'} - - call-bind@1.0.8: - resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} - engines: {node: '>= 0.4'} - - call-bound@1.0.4: - resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} - engines: {node: '>= 0.4'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - caniuse-lite@1.0.30001714: - resolution: {integrity: sha512-mtgapdwDLSSBnCI3JokHM7oEQBLxiJKVRtg10AxM1AyeiKcM96f0Mkbqeq+1AbiCtvMcHRulAAEMu693JrSWqg==} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - - ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - - cjs-module-lexer@1.4.3: - resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - - collect-v8-coverage@1.0.2: - resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + undici-types@6.21.0: + resolution: + { integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== } - core-js-compat@3.41.0: - resolution: {integrity: sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==} + uri-js@4.4.1: + resolution: + { integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== } - create-jest@29.7.0: - resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + vite-node@3.1.1: + resolution: + { integrity: sha512-V+IxPAE2FvXpTCHXyNem0M+gWm6J7eRyWPR6vYoG/Gl+IscNOjXzztUhimQgTxaAoUoj40Qqimaa0NLIOOAH4w== } + engines: { node: ^18.0.0 || ^20.0.0 || >=22.0.0 } hasBin: true - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} + vite@6.3.2: + resolution: + { integrity: sha512-ZSvGOXKGceizRQIZSz7TGJ0pS3QLlVY/9hwxVh17W3re67je1RKYzFHivZ/t0tubU78Vkyb9WnHPENSBCzbckg== } + engines: { node: ^18.0.0 || ^20.0.0 || >=22.0.0 } hasBin: true - - cssom@0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - - cssom@0.5.0: - resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} - - cssstyle@2.3.0: - resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} - engines: {node: '>=8'} - - data-urls@3.0.2: - resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} - engines: {node: '>=12'} - - data-view-buffer@1.0.2: - resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} - engines: {node: '>= 0.4'} - - data-view-byte-length@1.0.2: - resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} - engines: {node: '>= 0.4'} - - data-view-byte-offset@1.0.1: - resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} - engines: {node: '>= 0.4'} - - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} - engines: {node: '>=6.0'} peerDependencies: - supports-color: '*' + "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: ">=1.21.0" + less: "*" + lightningcss: ^1.21.0 + sass: "*" + sass-embedded: "*" + stylus: "*" + sugarss: "*" + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 peerDependenciesMeta: - supports-color: + "@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 - decimal.js@10.5.0: - resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} - - dedent@1.5.3: - resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + vitest@3.1.1: + resolution: + { integrity: sha512-kiZc/IYmKICeBAZr9DQ5rT7/6bD9G7uqQEki4fxazi1jdVl2mWGzedtBs5s6llz59yQhVb7FFY2MbHzHCnT79Q== } + engines: { node: ^18.0.0 || ^20.0.0 || >=22.0.0 } + hasBin: true peerDependencies: - babel-plugin-macros: ^3.1.0 + "@edge-runtime/vm": "*" + "@types/debug": ^4.1.12 + "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 + "@vitest/browser": 3.1.1 + "@vitest/ui": 3.1.1 + happy-dom: "*" + jsdom: "*" peerDependenciesMeta: - babel-plugin-macros: + "@edge-runtime/vm": + optional: true + "@types/debug": + optional: true + "@types/node": + optional: true + "@vitest/browser": + optional: true + "@vitest/ui": + optional: true + happy-dom: + optional: true + jsdom: optional: true - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - - define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} + w3c-xmlserializer@5.0.0: + resolution: + { integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA== } + engines: { node: ">=18" } - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + webidl-conversions@7.0.0: + resolution: + { integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== } + engines: { node: ">=12" } - doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} + whatwg-encoding@3.1.1: + resolution: + { integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ== } + engines: { node: ">=18" } - domexception@4.0.0: - resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} - engines: {node: '>=12'} - deprecated: Use your platform's native DOMException instead + whatwg-mimetype@4.0.0: + resolution: + { integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg== } + engines: { node: ">=18" } - dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} + whatwg-url@14.2.0: + resolution: + { integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw== } + engines: { node: ">=18" } - electron-to-chromium@1.5.138: - resolution: {integrity: sha512-FWlQc52z1dXqm+9cCJ2uyFgJkESd+16j6dBEjsgDNuHjBpuIzL8/lRc0uvh1k8RNI6waGo6tcy2DvwkTBJOLDg==} + which@2.0.2: + resolution: + { integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== } + engines: { node: ">= 8" } + hasBin: true - emittery@0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} + why-is-node-running@2.3.0: + resolution: + { integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w== } + engines: { node: ">=8" } + hasBin: true - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + word-wrap@1.2.5: + resolution: + { integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== } + engines: { node: ">=0.10.0" } - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} + ws@8.18.1: + resolution: + { integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w== } + engines: { node: ">=10.0.0" } + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + xml-name-validator@5.0.0: + resolution: + { integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg== } + engines: { node: ">=18" } - es-abstract@1.23.9: - resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} - engines: {node: '>= 0.4'} + xmlchars@2.2.0: + resolution: + { integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== } - es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} + yocto-queue@0.1.0: + resolution: + { integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== } + engines: { node: ">=10" } - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} +snapshots: + "@adobe/css-tools@4.4.3": {} - es-iterator-helpers@1.2.1: - resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} - engines: {node: '>= 0.4'} + "@asamuzakjp/css-color@3.1.4": + dependencies: + "@csstools/css-calc": 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) + "@csstools/css-tokenizer": 3.0.3 + lru-cache: 10.4.3 - es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} - engines: {node: '>= 0.4'} + "@csstools/color-helpers@5.0.2": {} - es-set-tostringtag@2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} - engines: {node: '>= 0.4'} + "@csstools/css-calc@2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)": + dependencies: + "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) + "@csstools/css-tokenizer": 3.0.3 - es-shim-unscopables@1.1.0: - resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} - engines: {node: '>= 0.4'} + "@csstools/css-color-parser@3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)": + dependencies: + "@csstools/color-helpers": 5.0.2 + "@csstools/css-calc": 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) + "@csstools/css-tokenizer": 3.0.3 - es-to-primitive@1.3.0: - resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} - engines: {node: '>= 0.4'} + "@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)": + dependencies: + "@csstools/css-tokenizer": 3.0.3 - esbuild@0.25.2: - resolution: {integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==} - engines: {node: '>=18'} - hasBin: true + "@csstools/css-tokenizer@3.0.3": {} - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} + "@esbuild/aix-ppc64@0.25.2": + optional: true - escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} + "@esbuild/android-arm64@0.25.2": + optional: true - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} + "@esbuild/android-arm@0.25.2": + optional: true - escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true + "@esbuild/android-x64@0.25.2": + optional: true - eslint-plugin-jest@28.11.0: - resolution: {integrity: sha512-QAfipLcNCWLVocVbZW8GimKn5p5iiMcgGbRzz8z/P5q7xw+cNEpYqyzFMtIF/ZgF2HLOyy+dYBut+DoYolvqig==} - engines: {node: ^16.10.0 || ^18.12.0 || >=20.0.0} - peerDependencies: - '@typescript-eslint/eslint-plugin': ^6.0.0 || ^7.0.0 || ^8.0.0 - eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - jest: '*' - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true - jest: - optional: true + "@esbuild/darwin-arm64@0.25.2": + optional: true - eslint-plugin-react@7.37.5: - resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + "@esbuild/darwin-x64@0.25.2": + optional: true - eslint-scope@8.3.0: - resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@esbuild/freebsd-arm64@0.25.2": + optional: true - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + "@esbuild/freebsd-x64@0.25.2": + optional: true - eslint-visitor-keys@4.2.0: - resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@esbuild/linux-arm64@0.25.2": + optional: true - eslint@9.24.0: - resolution: {integrity: sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true + "@esbuild/linux-arm@0.25.2": + optional: true - espree@10.3.0: - resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@esbuild/linux-ia32@0.25.2": + optional: true - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true + "@esbuild/linux-loong64@0.25.2": + optional: true - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} - engines: {node: '>=0.10'} + "@esbuild/linux-mips64el@0.25.2": + optional: true - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} + "@esbuild/linux-ppc64@0.25.2": + optional: true - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} + "@esbuild/linux-riscv64@0.25.2": + optional: true - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} + "@esbuild/linux-s390x@0.25.2": + optional: true - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} + "@esbuild/linux-x64@0.25.2": + optional: true - exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} + "@esbuild/netbsd-arm64@0.25.2": + optional: true - expect@29.7.0: - resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + "@esbuild/netbsd-x64@0.25.2": + optional: true - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fastq@1.19.1: - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} - - fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - - for-each@0.3.5: - resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} - engines: {node: '>= 0.4'} - - form-data@4.0.2: - resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} - engines: {node: '>= 6'} - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - function.prototype.name@1.1.8: - resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} - engines: {node: '>= 0.4'} - - functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-intrinsic@1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} - engines: {node: '>= 0.4'} - - get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - - get-proto@1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} - engines: {node: '>= 0.4'} - - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - - get-symbol-description@1.1.0: - resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} - engines: {node: '>= 0.4'} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - - globals@15.15.0: - resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} - engines: {node: '>=18'} - - globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} - - gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - has-bigints@1.1.0: - resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} - engines: {node: '>= 0.4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-proto@1.2.0: - resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} - engines: {node: '>= 0.4'} - - has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - html-encoding-sniffer@3.0.0: - resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} - engines: {node: '>=12'} - - html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - - http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} - - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - - ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - - import-fresh@3.3.1: - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} - engines: {node: '>=6'} - - import-local@3.2.0: - resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} - engines: {node: '>=8'} - hasBin: true - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - internal-slot@1.1.0: - resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} - engines: {node: '>= 0.4'} - - is-array-buffer@3.0.5: - resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} - engines: {node: '>= 0.4'} - - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-async-function@2.1.1: - resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} - engines: {node: '>= 0.4'} - - is-bigint@1.1.0: - resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} - engines: {node: '>= 0.4'} - - is-boolean-object@1.2.2: - resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} - engines: {node: '>= 0.4'} - - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} - engines: {node: '>= 0.4'} - - is-data-view@1.0.2: - resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} - engines: {node: '>= 0.4'} - - is-date-object@1.1.0: - resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} - engines: {node: '>= 0.4'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-finalizationregistry@1.1.1: - resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} - engines: {node: '>= 0.4'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - - is-generator-function@1.1.0: - resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} - engines: {node: '>= 0.4'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} - - is-number-object@1.1.1: - resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} - engines: {node: '>= 0.4'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - - is-regex@1.2.1: - resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} - engines: {node: '>= 0.4'} - - is-set@2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} - - is-shared-array-buffer@1.0.4: - resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} - engines: {node: '>= 0.4'} - - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - - is-string@1.1.1: - resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} - engines: {node: '>= 0.4'} - - is-symbol@1.1.1: - resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} - engines: {node: '>= 0.4'} - - is-typed-array@1.1.15: - resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} - engines: {node: '>= 0.4'} - - is-weakmap@2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} - - is-weakref@1.1.1: - resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} - engines: {node: '>= 0.4'} - - is-weakset@2.0.4: - resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} - engines: {node: '>= 0.4'} - - isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - - istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - - istanbul-lib-instrument@6.0.3: - resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} - engines: {node: '>=10'} - - istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} - - istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} - - istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} - engines: {node: '>=8'} - - iterator.prototype@1.1.5: - resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} - engines: {node: '>= 0.4'} - - jest-changed-files@29.7.0: - resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-circus@29.7.0: - resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-cli@29.7.0: - resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - jest-config@29.7.0: - resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - - jest-diff@29.7.0: - resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-docblock@29.7.0: - resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-each@29.7.0: - resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-environment-jsdom@29.7.0: - resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - - jest-environment-node@29.7.0: - resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-haste-map@29.7.0: - resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-leak-detector@29.7.0: - resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-matcher-utils@29.7.0: - resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-mock@29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-pnp-resolver@1.2.3: - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - - jest-regex-util@29.6.3: - resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-resolve-dependencies@29.7.0: - resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-resolve@29.7.0: - resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-runner@29.7.0: - resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-runtime@29.7.0: - resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-snapshot@29.7.0: - resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-watcher@29.7.0: - resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest@29.7.0: - resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - jsdom@20.0.3: - resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} - engines: {node: '>=14'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - - jsesc@3.0.2: - resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} - engines: {node: '>=6'} - hasBin: true - - jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} - hasBin: true - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - - leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} - - makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - - math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - - nwsapi@2.2.20: - resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-inspect@1.13.4: - resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} - engines: {node: '>= 0.4'} - - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - object.assign@4.1.7: - resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} - engines: {node: '>= 0.4'} - - object.entries@1.1.9: - resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} - engines: {node: '>= 0.4'} - - object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} - - object.values@1.2.1: - resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} - engines: {node: '>= 0.4'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - - own-keys@1.0.1: - resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} - engines: {node: '>= 0.4'} - - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - - parse5@7.2.1: - resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - pirates@4.0.7: - resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} - engines: {node: '>= 6'} - - pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - - possible-typed-array-names@1.1.0: - resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} - engines: {node: '>= 0.4'} - - postcss-minify@1.1.0: - resolution: {integrity: sha512-9D64ueIW0DL2FdLajQTlXrnTN8Ox9NjuXqigKMmB819RhdClNPYx5Zp3i5x0ghjjy3vGrLBBYEYvJjY/1eMNbw==} - peerDependencies: - postcss: ^8.0 - - postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} - engines: {node: '>=4'} - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.5.3: - resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} - engines: {node: ^10 || ^12 || >=14} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prettier@3.5.3: - resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} - engines: {node: '>=14'} - hasBin: true - - pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - - psl@1.15.0: - resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - pure-rand@6.1.0: - resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} - - querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - - react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} - - reflect.getprototypeof@1.0.10: - resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} - engines: {node: '>= 0.4'} - - regenerate-unicode-properties@10.2.0: - resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} - engines: {node: '>=4'} - - regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - regenerator-transform@0.15.2: - resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} - - regexp.prototype.flags@1.5.4: - resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} - engines: {node: '>= 0.4'} - - regexpu-core@6.2.0: - resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} - engines: {node: '>=4'} - - regjsgen@0.8.0: - resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} - - regjsparser@0.12.0: - resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} - hasBin: true - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - - resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - - resolve.exports@2.0.3: - resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} - engines: {node: '>=10'} - - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} - engines: {node: '>= 0.4'} - hasBin: true - - resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} - hasBin: true - - reusify@1.1.0: - resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - safe-array-concat@1.1.3: - resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} - engines: {node: '>=0.4'} - - safe-push-apply@1.0.0: - resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} - engines: {node: '>= 0.4'} - - safe-regex-test@1.1.0: - resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} - engines: {node: '>= 0.4'} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - saxes@6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} - engines: {node: '>=v12.22.7'} - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.7.1: - resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} - engines: {node: '>=10'} - hasBin: true - - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - - set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} - - set-proto@1.0.0: - resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} - engines: {node: '>= 0.4'} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - side-channel-list@1.0.0: - resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} - engines: {node: '>= 0.4'} - - side-channel-map@1.0.1: - resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} - engines: {node: '>= 0.4'} - - side-channel-weakmap@1.0.2: - resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} - engines: {node: '>= 0.4'} - - side-channel@1.1.0: - resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} - engines: {node: '>= 0.4'} - - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - source-map-support@0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - - stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - - string-length@4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string.prototype.matchall@4.0.12: - resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} - engines: {node: '>= 0.4'} - - string.prototype.repeat@1.0.0: - resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} - - string.prototype.trim@1.2.10: - resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} - engines: {node: '>= 0.4'} - - string.prototype.trimend@1.0.9: - resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} - engines: {node: '>= 0.4'} - - string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - symbol-tree@3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - - test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - - tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - tough-cookie@4.1.4: - resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} - engines: {node: '>=6'} - - tr46@3.0.0: - resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} - engines: {node: '>=12'} - - ts-api-utils@2.1.0: - resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} - engines: {node: '>=18.12'} - peerDependencies: - typescript: '>=4.8.4' - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - - type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - - typed-array-buffer@1.0.3: - resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} - engines: {node: '>= 0.4'} - - typed-array-byte-length@1.0.3: - resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} - engines: {node: '>= 0.4'} - - typed-array-byte-offset@1.0.4: - resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} - engines: {node: '>= 0.4'} - - typed-array-length@1.0.7: - resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} - engines: {node: '>= 0.4'} - - typescript@5.8.3: - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} - engines: {node: '>=14.17'} - hasBin: true - - unbox-primitive@1.1.0: - resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} - engines: {node: '>= 0.4'} - - undici-types@6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - - unicode-canonical-property-names-ecmascript@2.0.1: - resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} - engines: {node: '>=4'} - - unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - - unicode-match-property-value-ecmascript@2.2.0: - resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} - engines: {node: '>=4'} - - unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} - - universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - - update-browserslist-db@1.1.3: - resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - v8-to-istanbul@9.3.0: - resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} - engines: {node: '>=10.12.0'} - - w3c-xmlserializer@4.0.0: - resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} - engines: {node: '>=14'} - - walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - - webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - - whatwg-encoding@2.0.0: - resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} - engines: {node: '>=12'} - - whatwg-mimetype@3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} - engines: {node: '>=12'} - - whatwg-url@11.0.0: - resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} - engines: {node: '>=12'} - - which-boxed-primitive@1.1.1: - resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} - engines: {node: '>= 0.4'} - - which-builtin-type@1.2.1: - resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} - engines: {node: '>= 0.4'} - - which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} - - which-typed-array@1.1.19: - resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} - engines: {node: '>= 0.4'} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - ws@8.18.1: - resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} - - xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - -snapshots: - - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - - '@babel/code-frame@7.26.2': - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/compat-data@7.26.8': {} - - '@babel/core@7.26.10': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.27.0 - '@babel/helper-compilation-targets': 7.27.0 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helpers': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/template': 7.27.0 - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 - convert-source-map: 2.0.0 - debug: 4.4.0 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.27.0': - dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.1.0 - - '@babel/helper-annotate-as-pure@7.25.9': - dependencies: - '@babel/types': 7.27.0 - - '@babel/helper-compilation-targets@7.27.0': - dependencies: - '@babel/compat-data': 7.26.8 - '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.4 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-create-class-features-plugin@7.27.0(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-member-expression-to-functions': 7.25.9 - '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/traverse': 7.27.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-create-regexp-features-plugin@7.27.0(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-annotate-as-pure': 7.25.9 - regexpu-core: 6.2.0 - semver: 6.3.1 - - '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-compilation-targets': 7.27.0 - '@babel/helper-plugin-utils': 7.26.5 - debug: 4.4.0 - lodash.debounce: 4.0.8 - resolve: 1.22.10 - transitivePeerDependencies: - - supports-color - - '@babel/helper-member-expression-to-functions@7.25.9': - dependencies: - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-imports@7.25.9': - dependencies: - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.27.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-optimise-call-expression@7.25.9': - dependencies: - '@babel/types': 7.27.0 - - '@babel/helper-plugin-utils@7.26.5': {} - - '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-wrap-function': 7.25.9 - '@babel/traverse': 7.27.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-replace-supers@7.26.5(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-member-expression-to-functions': 7.25.9 - '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/traverse': 7.27.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-skip-transparent-expression-wrappers@7.25.9': - dependencies: - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-string-parser@7.25.9': {} - - '@babel/helper-validator-identifier@7.25.9': {} - - '@babel/helper-validator-option@7.25.9': {} - - '@babel/helper-wrap-function@7.25.9': - dependencies: - '@babel/template': 7.27.0 - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 - transitivePeerDependencies: - - supports-color - - '@babel/helpers@7.27.0': - dependencies: - '@babel/template': 7.27.0 - '@babel/types': 7.27.0 - - '@babel/parser@7.27.0': - dependencies: - '@babel/types': 7.27.0 - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/traverse': 7.27.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.10) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/traverse': 7.27.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-async-generator-functions@7.26.8(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.10) - '@babel/traverse': 7.27.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.10) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-block-scoped-functions@7.26.5(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-block-scoping@7.27.0(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-compilation-targets': 7.27.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) - '@babel/traverse': 7.27.0 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/template': 7.27.0 - - '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-exponentiation-operator@7.26.3(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-for-of@7.26.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-compilation-targets': 7.27.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/traverse': 7.27.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.27.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-nullish-coalescing-operator@7.26.6(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-compilation-targets': 7.27.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.10) - - '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-regenerator@7.27.0(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - regenerator-transform: 0.15.2 - - '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-template-literals@7.26.8(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-typeof-symbol@7.27.0(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/preset-env@7.26.9(@babel/core@7.26.10)': - dependencies: - '@babel/compat-data': 7.26.8 - '@babel/core': 7.26.10 - '@babel/helper-compilation-targets': 7.27.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.10) - '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.10) - '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.10) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.10) - '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-async-generator-functions': 7.26.8(@babel/core@7.26.10) - '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-block-scoped-functions': 7.26.5(@babel/core@7.26.10) - '@babel/plugin-transform-block-scoping': 7.27.0(@babel/core@7.26.10) - '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.10) - '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-exponentiation-operator': 7.26.3(@babel/core@7.26.10) - '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-for-of': 7.26.9(@babel/core@7.26.10) - '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.10) - '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-nullish-coalescing-operator': 7.26.6(@babel/core@7.26.10) - '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-regenerator': 7.27.0(@babel/core@7.26.10) - '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.26.10) - '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-template-literals': 7.26.8(@babel/core@7.26.10) - '@babel/plugin-transform-typeof-symbol': 7.27.0(@babel/core@7.26.10) - '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.10) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.10) - babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.26.10) - babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.26.10) - babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.26.10) - core-js-compat: 3.41.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/types': 7.27.0 - esutils: 2.0.3 - - '@babel/runtime@7.27.0': - dependencies: - regenerator-runtime: 0.14.1 - - '@babel/template@7.27.0': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - - '@babel/traverse@7.27.0': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/template': 7.27.0 - '@babel/types': 7.27.0 - debug: 4.4.0 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.27.0': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - - '@bcoe/v8-coverage@0.2.3': {} - - '@esbuild/aix-ppc64@0.25.2': - optional: true - - '@esbuild/android-arm64@0.25.2': - optional: true - - '@esbuild/android-arm@0.25.2': - optional: true - - '@esbuild/android-x64@0.25.2': - optional: true - - '@esbuild/darwin-arm64@0.25.2': - optional: true - - '@esbuild/darwin-x64@0.25.2': - optional: true - - '@esbuild/freebsd-arm64@0.25.2': - optional: true - - '@esbuild/freebsd-x64@0.25.2': - optional: true - - '@esbuild/linux-arm64@0.25.2': - optional: true - - '@esbuild/linux-arm@0.25.2': - optional: true - - '@esbuild/linux-ia32@0.25.2': - optional: true - - '@esbuild/linux-loong64@0.25.2': - optional: true - - '@esbuild/linux-mips64el@0.25.2': - optional: true - - '@esbuild/linux-ppc64@0.25.2': - optional: true - - '@esbuild/linux-riscv64@0.25.2': - optional: true - - '@esbuild/linux-s390x@0.25.2': - optional: true - - '@esbuild/linux-x64@0.25.2': - optional: true - - '@esbuild/netbsd-arm64@0.25.2': - optional: true - - '@esbuild/netbsd-x64@0.25.2': - optional: true - - '@esbuild/openbsd-arm64@0.25.2': - optional: true - - '@esbuild/openbsd-x64@0.25.2': - optional: true - - '@esbuild/sunos-x64@0.25.2': - optional: true - - '@esbuild/win32-arm64@0.25.2': - optional: true - - '@esbuild/win32-ia32@0.25.2': - optional: true - - '@esbuild/win32-x64@0.25.2': - optional: true - - '@eslint-community/eslint-utils@4.6.1(eslint@9.24.0)': - dependencies: - eslint: 9.24.0 - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.12.1': {} - - '@eslint/config-array@0.20.0': - dependencies: - '@eslint/object-schema': 2.1.6 - debug: 4.4.0 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@eslint/config-helpers@0.2.1': {} - - '@eslint/core@0.12.0': - dependencies: - '@types/json-schema': 7.0.15 - - '@eslint/core@0.13.0': - dependencies: - '@types/json-schema': 7.0.15 - - '@eslint/eslintrc@3.3.1': - dependencies: - ajv: 6.12.6 - debug: 4.4.0 - espree: 10.3.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@9.24.0': {} - - '@eslint/object-schema@2.1.6': {} - - '@eslint/plugin-kit@0.2.8': - dependencies: - '@eslint/core': 0.13.0 - levn: 0.4.1 - - '@humanfs/core@0.19.1': {} - - '@humanfs/node@0.16.6': - dependencies: - '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/retry@0.3.1': {} - - '@humanwhocodes/retry@0.4.2': {} - - '@istanbuljs/load-nyc-config@1.1.0': - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - - '@istanbuljs/schema@0.1.3': {} - - '@jest/console@29.7.0': - dependencies: - '@jest/types': 29.6.3 - '@types/node': 22.14.1 - chalk: 4.1.2 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 - - '@jest/core@29.7.0': - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.14.1 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.14.1) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - - '@jest/environment@29.7.0': - dependencies: - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.14.1 - jest-mock: 29.7.0 - - '@jest/expect-utils@29.7.0': - dependencies: - jest-get-type: 29.6.3 - - '@jest/expect@29.7.0': - dependencies: - expect: 29.7.0 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color - - '@jest/fake-timers@29.7.0': - dependencies: - '@jest/types': 29.6.3 - '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.14.1 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-util: 29.7.0 - - '@jest/globals@29.7.0': - dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/types': 29.6.3 - jest-mock: 29.7.0 - transitivePeerDependencies: - - supports-color - - '@jest/reporters@29.7.0': - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 22.14.1 - chalk: 4.1.2 - collect-v8-coverage: 1.0.2 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 6.0.3 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - jest-worker: 29.7.0 - slash: 3.0.0 - string-length: 4.0.2 - strip-ansi: 6.0.1 - v8-to-istanbul: 9.3.0 - transitivePeerDependencies: - - supports-color - - '@jest/schemas@29.6.3': - dependencies: - '@sinclair/typebox': 0.27.8 - - '@jest/source-map@29.6.3': - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - callsites: 3.1.0 - graceful-fs: 4.2.11 - - '@jest/test-result@29.7.0': - dependencies: - '@jest/console': 29.7.0 - '@jest/types': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 - - '@jest/test-sequencer@29.7.0': - dependencies: - '@jest/test-result': 29.7.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - slash: 3.0.0 - - '@jest/transform@29.7.0': - dependencies: - '@babel/core': 7.26.10 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - micromatch: 4.0.8 - pirates: 4.0.7 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - - '@jest/types@29.6.3': - dependencies: - '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 22.14.1 - '@types/yargs': 17.0.33 - chalk: 4.1.2 - - '@jridgewell/gen-mapping@0.3.8': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/sourcemap-codec@1.5.0': {} - - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.1 - - '@sinclair/typebox@0.27.8': {} - - '@sinonjs/commons@3.0.1': - dependencies: - type-detect: 4.0.8 - - '@sinonjs/fake-timers@10.3.0': - dependencies: - '@sinonjs/commons': 3.0.1 - - '@tootallnate/once@2.0.0': {} - - '@types/babel__core@7.20.5': - dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - '@types/babel__generator': 7.27.0 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.7 - - '@types/babel__generator@7.27.0': - dependencies: - '@babel/types': 7.27.0 - - '@types/babel__template@7.4.4': - dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - - '@types/babel__traverse@7.20.7': - dependencies: - '@babel/types': 7.27.0 - - '@types/estree@1.0.7': {} - - '@types/graceful-fs@4.1.9': - dependencies: - '@types/node': 22.14.1 - - '@types/istanbul-lib-coverage@2.0.6': {} - - '@types/istanbul-lib-report@3.0.3': - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - - '@types/istanbul-reports@3.0.4': - dependencies: - '@types/istanbul-lib-report': 3.0.3 - - '@types/jsdom@20.0.1': - dependencies: - '@types/node': 22.14.1 - '@types/tough-cookie': 4.0.5 - parse5: 7.2.1 - - '@types/json-schema@7.0.15': {} - - '@types/node@22.14.1': - dependencies: - undici-types: 6.21.0 - - '@types/stack-utils@2.0.3': {} - - '@types/tough-cookie@4.0.5': {} - - '@types/yargs-parser@21.0.3': {} - - '@types/yargs@17.0.33': - dependencies: - '@types/yargs-parser': 21.0.3 - - '@typescript-eslint/scope-manager@8.30.1': - dependencies: - '@typescript-eslint/types': 8.30.1 - '@typescript-eslint/visitor-keys': 8.30.1 - - '@typescript-eslint/types@8.30.1': {} - - '@typescript-eslint/typescript-estree@8.30.1(typescript@5.8.3)': - dependencies: - '@typescript-eslint/types': 8.30.1 - '@typescript-eslint/visitor-keys': 8.30.1 - debug: 4.4.0 - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.1 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.30.1(eslint@9.24.0)(typescript@5.8.3)': - dependencies: - '@eslint-community/eslint-utils': 4.6.1(eslint@9.24.0) - '@typescript-eslint/scope-manager': 8.30.1 - '@typescript-eslint/types': 8.30.1 - '@typescript-eslint/typescript-estree': 8.30.1(typescript@5.8.3) - eslint: 9.24.0 - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/visitor-keys@8.30.1': - dependencies: - '@typescript-eslint/types': 8.30.1 - eslint-visitor-keys: 4.2.0 - - abab@2.0.6: {} - - acorn-globals@7.0.1: - dependencies: - acorn: 8.14.1 - acorn-walk: 8.3.4 - - acorn-jsx@5.3.2(acorn@8.14.1): - dependencies: - acorn: 8.14.1 - - acorn-walk@8.3.4: - dependencies: - acorn: 8.14.1 - - acorn@8.14.1: {} - - agent-base@6.0.2: - dependencies: - debug: 4.4.0 - transitivePeerDependencies: - - supports-color - - ajv@6.12.6: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - ansi-escapes@4.3.2: - dependencies: - type-fest: 0.21.3 - - ansi-regex@5.0.1: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@5.2.0: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 - - argparse@2.0.1: {} - - array-buffer-byte-length@1.0.2: - dependencies: - call-bound: 1.0.4 - is-array-buffer: 3.0.5 - - array-includes@3.1.8: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - is-string: 1.1.1 - - array.prototype.findlast@1.2.5: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - es-shim-unscopables: 1.1.0 - - array.prototype.flat@1.3.3: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-shim-unscopables: 1.1.0 - - array.prototype.flatmap@1.3.3: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-shim-unscopables: 1.1.0 - - array.prototype.tosorted@1.1.4: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-errors: 1.3.0 - es-shim-unscopables: 1.1.0 - - arraybuffer.prototype.slice@1.0.4: - dependencies: - array-buffer-byte-length: 1.0.2 - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - is-array-buffer: 3.0.5 - - async-function@1.0.0: {} - - asynckit@0.4.0: {} - - available-typed-arrays@1.0.7: - dependencies: - possible-typed-array-names: 1.1.0 - - babel-jest@29.7.0(@babel/core@7.26.10): - dependencies: - '@babel/core': 7.26.10 - '@jest/transform': 29.7.0 - '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.26.10) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-istanbul@6.1.1: - dependencies: - '@babel/helper-plugin-utils': 7.26.5 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.1 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-jest-hoist@29.6.3: - dependencies: - '@babel/template': 7.27.0 - '@babel/types': 7.27.0 - '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.7 - - babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.26.10): - dependencies: - '@babel/compat-data': 7.26.8 - '@babel/core': 7.26.10 - '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.26.10) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.26.10): - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.26.10) - core-js-compat: 3.41.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-regenerator@0.6.4(@babel/core@7.26.10): - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.26.10) - transitivePeerDependencies: - - supports-color - - babel-preset-current-node-syntax@1.1.0(@babel/core@7.26.10): - dependencies: - '@babel/core': 7.26.10 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.10) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.10) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.10) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.10) - '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.10) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.10) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.10) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.10) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.10) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.10) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.10) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.10) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.10) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.10) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.10) - - babel-preset-jest@29.6.3(@babel/core@7.26.10): - dependencies: - '@babel/core': 7.26.10 - babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.10) - - balanced-match@1.0.2: {} - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browserslist@4.24.4: - dependencies: - caniuse-lite: 1.0.30001714 - electron-to-chromium: 1.5.138 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.24.4) - - bser@2.1.1: - dependencies: - node-int64: 0.4.0 - - buffer-from@1.1.2: {} - - call-bind-apply-helpers@1.0.2: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - - call-bind@1.0.8: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - get-intrinsic: 1.3.0 - set-function-length: 1.2.2 - - call-bound@1.0.4: - dependencies: - call-bind-apply-helpers: 1.0.2 - get-intrinsic: 1.3.0 - - callsites@3.1.0: {} - - camelcase@5.3.1: {} - - camelcase@6.3.0: {} - - caniuse-lite@1.0.30001714: {} - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - char-regex@1.0.2: {} - - ci-info@3.9.0: {} - - cjs-module-lexer@1.4.3: {} - - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - co@4.6.0: {} - - collect-v8-coverage@1.0.2: {} - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - - concat-map@0.0.1: {} - - convert-source-map@2.0.0: {} - - core-js-compat@3.41.0: - dependencies: - browserslist: 4.24.4 - - create-jest@29.7.0(@types/node@22.14.1): - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.14.1) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - cssesc@3.0.0: {} - - cssom@0.3.8: {} - - cssom@0.5.0: {} - - cssstyle@2.3.0: - dependencies: - cssom: 0.3.8 - - data-urls@3.0.2: - dependencies: - abab: 2.0.6 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - - data-view-buffer@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - data-view-byte-length@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - data-view-byte-offset@1.0.1: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - debug@4.4.0: - dependencies: - ms: 2.1.3 - - decimal.js@10.5.0: {} - - dedent@1.5.3: {} - - deep-is@0.1.4: {} - - deepmerge@4.3.1: {} - - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.1 - es-errors: 1.3.0 - gopd: 1.2.0 - - define-properties@1.2.1: - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - - delayed-stream@1.0.0: {} - - detect-newline@3.1.0: {} - - diff-sequences@29.6.3: {} - - doctrine@2.1.0: - dependencies: - esutils: 2.0.3 - - domexception@4.0.0: - dependencies: - webidl-conversions: 7.0.0 - - dunder-proto@1.0.1: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-errors: 1.3.0 - gopd: 1.2.0 - - electron-to-chromium@1.5.138: {} - - emittery@0.13.1: {} - - emoji-regex@8.0.0: {} - - entities@4.5.0: {} - - error-ex@1.3.2: - dependencies: - is-arrayish: 0.2.1 - - es-abstract@1.23.9: - dependencies: - array-buffer-byte-length: 1.0.2 - arraybuffer.prototype.slice: 1.0.4 - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - call-bound: 1.0.4 - data-view-buffer: 1.0.2 - data-view-byte-length: 1.0.2 - data-view-byte-offset: 1.0.1 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - es-set-tostringtag: 2.1.0 - es-to-primitive: 1.3.0 - function.prototype.name: 1.1.8 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - get-symbol-description: 1.1.0 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - internal-slot: 1.1.0 - is-array-buffer: 3.0.5 - is-callable: 1.2.7 - is-data-view: 1.0.2 - is-regex: 1.2.1 - is-shared-array-buffer: 1.0.4 - is-string: 1.1.1 - is-typed-array: 1.1.15 - is-weakref: 1.1.1 - math-intrinsics: 1.1.0 - object-inspect: 1.13.4 - object-keys: 1.1.1 - object.assign: 4.1.7 - own-keys: 1.0.1 - regexp.prototype.flags: 1.5.4 - safe-array-concat: 1.1.3 - safe-push-apply: 1.0.0 - safe-regex-test: 1.1.0 - set-proto: 1.0.0 - string.prototype.trim: 1.2.10 - string.prototype.trimend: 1.0.9 - string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.3 - typed-array-byte-length: 1.0.3 - typed-array-byte-offset: 1.0.4 - typed-array-length: 1.0.7 - unbox-primitive: 1.1.0 - which-typed-array: 1.1.19 - - es-define-property@1.0.1: {} - - es-errors@1.3.0: {} - - es-iterator-helpers@1.2.1: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-errors: 1.3.0 - es-set-tostringtag: 2.1.0 - function-bind: 1.1.2 - get-intrinsic: 1.3.0 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - internal-slot: 1.1.0 - iterator.prototype: 1.1.5 - safe-array-concat: 1.1.3 - - es-object-atoms@1.1.1: - dependencies: - es-errors: 1.3.0 - - es-set-tostringtag@2.1.0: - dependencies: - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - es-shim-unscopables@1.1.0: - dependencies: - hasown: 2.0.2 - - es-to-primitive@1.3.0: - dependencies: - is-callable: 1.2.7 - is-date-object: 1.1.0 - is-symbol: 1.1.1 - - esbuild@0.25.2: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.2 - '@esbuild/android-arm': 0.25.2 - '@esbuild/android-arm64': 0.25.2 - '@esbuild/android-x64': 0.25.2 - '@esbuild/darwin-arm64': 0.25.2 - '@esbuild/darwin-x64': 0.25.2 - '@esbuild/freebsd-arm64': 0.25.2 - '@esbuild/freebsd-x64': 0.25.2 - '@esbuild/linux-arm': 0.25.2 - '@esbuild/linux-arm64': 0.25.2 - '@esbuild/linux-ia32': 0.25.2 - '@esbuild/linux-loong64': 0.25.2 - '@esbuild/linux-mips64el': 0.25.2 - '@esbuild/linux-ppc64': 0.25.2 - '@esbuild/linux-riscv64': 0.25.2 - '@esbuild/linux-s390x': 0.25.2 - '@esbuild/linux-x64': 0.25.2 - '@esbuild/netbsd-arm64': 0.25.2 - '@esbuild/netbsd-x64': 0.25.2 - '@esbuild/openbsd-arm64': 0.25.2 - '@esbuild/openbsd-x64': 0.25.2 - '@esbuild/sunos-x64': 0.25.2 - '@esbuild/win32-arm64': 0.25.2 - '@esbuild/win32-ia32': 0.25.2 - '@esbuild/win32-x64': 0.25.2 - - escalade@3.2.0: {} - - escape-string-regexp@2.0.0: {} - - escape-string-regexp@4.0.0: {} - - escodegen@2.1.0: - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 - - eslint-plugin-jest@28.11.0(eslint@9.24.0)(jest@29.7.0(@types/node@22.14.1))(typescript@5.8.3): - dependencies: - '@typescript-eslint/utils': 8.30.1(eslint@9.24.0)(typescript@5.8.3) - eslint: 9.24.0 - optionalDependencies: - jest: 29.7.0(@types/node@22.14.1) - transitivePeerDependencies: - - supports-color - - typescript - - eslint-plugin-react@7.37.5(eslint@9.24.0): - dependencies: - array-includes: 3.1.8 - array.prototype.findlast: 1.2.5 - array.prototype.flatmap: 1.3.3 - array.prototype.tosorted: 1.1.4 - doctrine: 2.1.0 - es-iterator-helpers: 1.2.1 - eslint: 9.24.0 - estraverse: 5.3.0 - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.9 - object.fromentries: 2.0.8 - object.values: 1.2.1 - prop-types: 15.8.1 - resolve: 2.0.0-next.5 - semver: 6.3.1 - string.prototype.matchall: 4.0.12 - string.prototype.repeat: 1.0.0 - - eslint-scope@8.3.0: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-visitor-keys@3.4.3: {} - - eslint-visitor-keys@4.2.0: {} - - eslint@9.24.0: - dependencies: - '@eslint-community/eslint-utils': 4.6.1(eslint@9.24.0) - '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.20.0 - '@eslint/config-helpers': 0.2.1 - '@eslint/core': 0.12.0 - '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.24.0 - '@eslint/plugin-kit': 0.2.8 - '@humanfs/node': 0.16.6 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.2 - '@types/estree': 1.0.7 - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.0 - escape-string-regexp: 4.0.0 - eslint-scope: 8.3.0 - eslint-visitor-keys: 4.2.0 - espree: 10.3.0 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - transitivePeerDependencies: - - supports-color - - espree@10.3.0: - dependencies: - acorn: 8.14.1 - acorn-jsx: 5.3.2(acorn@8.14.1) - eslint-visitor-keys: 4.2.0 + "@esbuild/openbsd-arm64@0.25.2": + optional: true - esprima@4.0.1: {} + "@esbuild/openbsd-x64@0.25.2": + optional: true - esquery@1.6.0: - dependencies: - estraverse: 5.3.0 + "@esbuild/sunos-x64@0.25.2": + optional: true - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 + "@esbuild/win32-arm64@0.25.2": + optional: true - estraverse@5.3.0: {} + "@esbuild/win32-ia32@0.25.2": + optional: true - esutils@2.0.3: {} + "@esbuild/win32-x64@0.25.2": + optional: true - execa@5.1.1: - dependencies: - cross-spawn: 7.0.6 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - - exit@0.1.2: {} - - expect@29.7.0: + "@eslint-community/eslint-utils@4.7.0(eslint@9.32.0)": dependencies: - '@jest/expect-utils': 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 + eslint: 9.32.0 + eslint-visitor-keys: 3.4.3 - fast-deep-equal@3.1.3: {} + "@eslint-community/regexpp@4.12.1": {} - fast-glob@3.3.3: + "@eslint/config-array@0.21.0": dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - - fast-json-stable-stringify@2.1.0: {} + "@eslint/object-schema": 2.1.6 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color - fast-levenshtein@2.0.6: {} + "@eslint/config-helpers@0.3.0": {} - fastq@1.19.1: + "@eslint/core@0.15.1": dependencies: - reusify: 1.1.0 + "@types/json-schema": 7.0.15 - fb-watchman@2.0.2: + "@eslint/eslintrc@3.3.1": dependencies: - bser: 2.1.1 + ajv: 6.12.6 + debug: 4.4.0 + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color - file-entry-cache@8.0.0: - dependencies: - flat-cache: 4.0.1 + "@eslint/js@9.32.0": {} - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 + "@eslint/object-schema@2.1.6": {} - find-up@4.1.0: + "@eslint/plugin-kit@0.3.4": dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 + "@eslint/core": 0.15.1 + levn: 0.4.1 - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 + "@humanfs/core@0.19.1": {} - flat-cache@4.0.1: + "@humanfs/node@0.16.6": dependencies: - flatted: 3.3.3 - keyv: 4.5.4 + "@humanfs/core": 0.19.1 + "@humanwhocodes/retry": 0.3.1 - flatted@3.3.3: {} + "@humanwhocodes/module-importer@1.0.1": {} - for-each@0.3.5: - dependencies: - is-callable: 1.2.7 + "@humanwhocodes/retry@0.3.1": {} + + "@humanwhocodes/retry@0.4.3": {} - form-data@4.0.2: + "@jridgewell/sourcemap-codec@1.5.0": {} + + "@nodelib/fs.scandir@2.1.5": dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - mime-types: 2.1.35 + "@nodelib/fs.stat": 2.0.5 + run-parallel: 1.2.0 - fs.realpath@1.0.0: {} + "@nodelib/fs.stat@2.0.5": {} - fsevents@2.3.3: + "@nodelib/fs.walk@1.2.8": + dependencies: + "@nodelib/fs.scandir": 2.1.5 + fastq: 1.19.1 + + "@rollup/rollup-android-arm-eabi@4.40.0": optional: true - function-bind@1.1.2: {} + "@rollup/rollup-android-arm64@4.40.0": + optional: true - function.prototype.name@1.1.8: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - functions-have-names: 1.2.3 - hasown: 2.0.2 - is-callable: 1.2.7 + "@rollup/rollup-darwin-arm64@4.40.0": + optional: true - functions-have-names@1.2.3: {} + "@rollup/rollup-darwin-x64@4.40.0": + optional: true - gensync@1.0.0-beta.2: {} + "@rollup/rollup-freebsd-arm64@4.40.0": + optional: true - get-caller-file@2.0.5: {} + "@rollup/rollup-freebsd-x64@4.40.0": + optional: true - get-intrinsic@1.3.0: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - function-bind: 1.1.2 - get-proto: 1.0.1 - gopd: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - math-intrinsics: 1.1.0 - - get-package-type@0.1.0: {} - - get-proto@1.0.1: - dependencies: - dunder-proto: 1.0.1 - es-object-atoms: 1.1.1 + "@rollup/rollup-linux-arm-gnueabihf@4.40.0": + optional: true - get-stream@6.0.1: {} + "@rollup/rollup-linux-arm-musleabihf@4.40.0": + optional: true - get-symbol-description@1.1.0: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 + "@rollup/rollup-linux-arm64-gnu@4.40.0": + optional: true - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 + "@rollup/rollup-linux-arm64-musl@4.40.0": + optional: true - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 + "@rollup/rollup-linux-loongarch64-gnu@4.40.0": + optional: true - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 + "@rollup/rollup-linux-powerpc64le-gnu@4.40.0": + optional: true - globals@11.12.0: {} + "@rollup/rollup-linux-riscv64-gnu@4.40.0": + optional: true - globals@14.0.0: {} + "@rollup/rollup-linux-riscv64-musl@4.40.0": + optional: true - globals@15.15.0: {} + "@rollup/rollup-linux-s390x-gnu@4.40.0": + optional: true - globalthis@1.0.4: - dependencies: - define-properties: 1.2.1 - gopd: 1.2.0 + "@rollup/rollup-linux-x64-gnu@4.40.0": + optional: true - gopd@1.2.0: {} + "@rollup/rollup-linux-x64-musl@4.40.0": + optional: true - graceful-fs@4.2.11: {} + "@rollup/rollup-win32-arm64-msvc@4.40.0": + optional: true - has-bigints@1.1.0: {} + "@rollup/rollup-win32-ia32-msvc@4.40.0": + optional: true - has-flag@4.0.0: {} + "@rollup/rollup-win32-x64-msvc@4.40.0": + optional: true - has-property-descriptors@1.0.2: + "@testing-library/jest-dom@6.6.4": dependencies: - es-define-property: 1.0.1 + "@adobe/css-tools": 4.4.3 + aria-query: 5.3.2 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + lodash: 4.17.21 + picocolors: 1.1.1 + redent: 3.0.0 + + "@types/estree@1.0.7": {} - has-proto@1.2.0: + "@types/json-schema@7.0.15": {} + + "@types/node@22.14.1": dependencies: - dunder-proto: 1.0.1 + undici-types: 6.21.0 - has-symbols@1.1.0: {} + "@typescript-eslint/eslint-plugin@8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0)(typescript@5.7.3))(eslint@9.32.0)(typescript@5.7.3)": + dependencies: + "@eslint-community/regexpp": 4.12.1 + "@typescript-eslint/parser": 8.38.0(eslint@9.32.0)(typescript@5.7.3) + "@typescript-eslint/scope-manager": 8.38.0 + "@typescript-eslint/type-utils": 8.38.0(eslint@9.32.0)(typescript@5.7.3) + "@typescript-eslint/utils": 8.38.0(eslint@9.32.0)(typescript@5.7.3) + "@typescript-eslint/visitor-keys": 8.38.0 + eslint: 9.32.0 + graphemer: 1.4.0 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color - has-tostringtag@1.0.2: + "@typescript-eslint/parser@8.38.0(eslint@9.32.0)(typescript@5.7.3)": dependencies: - has-symbols: 1.1.0 + "@typescript-eslint/scope-manager": 8.38.0 + "@typescript-eslint/types": 8.38.0 + "@typescript-eslint/typescript-estree": 8.38.0(typescript@5.7.3) + "@typescript-eslint/visitor-keys": 8.38.0 + debug: 4.4.0 + eslint: 9.32.0 + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color - hasown@2.0.2: + "@typescript-eslint/project-service@8.38.0(typescript@5.7.3)": dependencies: - function-bind: 1.1.2 + "@typescript-eslint/tsconfig-utils": 8.38.0(typescript@5.7.3) + "@typescript-eslint/types": 8.38.0 + debug: 4.4.0 + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color - html-encoding-sniffer@3.0.0: + "@typescript-eslint/scope-manager@8.38.0": dependencies: - whatwg-encoding: 2.0.0 + "@typescript-eslint/types": 8.38.0 + "@typescript-eslint/visitor-keys": 8.38.0 - html-escaper@2.0.2: {} + "@typescript-eslint/tsconfig-utils@8.38.0(typescript@5.7.3)": + dependencies: + typescript: 5.7.3 - http-proxy-agent@5.0.0: + "@typescript-eslint/type-utils@8.38.0(eslint@9.32.0)(typescript@5.7.3)": dependencies: - '@tootallnate/once': 2.0.0 - agent-base: 6.0.2 + "@typescript-eslint/types": 8.38.0 + "@typescript-eslint/typescript-estree": 8.38.0(typescript@5.7.3) + "@typescript-eslint/utils": 8.38.0(eslint@9.32.0)(typescript@5.7.3) debug: 4.4.0 + eslint: 9.32.0 + ts-api-utils: 2.1.0(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - supports-color - https-proxy-agent@5.0.1: + "@typescript-eslint/types@8.38.0": {} + + "@typescript-eslint/typescript-estree@8.38.0(typescript@5.7.3)": dependencies: - agent-base: 6.0.2 + "@typescript-eslint/project-service": 8.38.0(typescript@5.7.3) + "@typescript-eslint/tsconfig-utils": 8.38.0(typescript@5.7.3) + "@typescript-eslint/types": 8.38.0 + "@typescript-eslint/visitor-keys": 8.38.0 debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.2 + ts-api-utils: 2.1.0(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - supports-color - human-signals@2.1.0: {} + "@typescript-eslint/utils@8.38.0(eslint@9.32.0)(typescript@5.7.3)": + dependencies: + "@eslint-community/eslint-utils": 4.7.0(eslint@9.32.0) + "@typescript-eslint/scope-manager": 8.38.0 + "@typescript-eslint/types": 8.38.0 + "@typescript-eslint/typescript-estree": 8.38.0(typescript@5.7.3) + eslint: 9.32.0 + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color - iconv-lite@0.6.3: + "@typescript-eslint/visitor-keys@8.38.0": dependencies: - safer-buffer: 2.1.2 + "@typescript-eslint/types": 8.38.0 + eslint-visitor-keys: 4.2.1 - ignore@5.3.2: {} + "@vitest/expect@3.1.1": + dependencies: + "@vitest/spy": 3.1.1 + "@vitest/utils": 3.1.1 + chai: 5.2.0 + tinyrainbow: 2.0.0 - import-fresh@3.3.1: + "@vitest/mocker@3.1.1(vite@6.3.2(@types/node@22.14.1))": dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 + "@vitest/spy": 3.1.1 + estree-walker: 3.0.3 + magic-string: 0.30.17 + optionalDependencies: + vite: 6.3.2(@types/node@22.14.1) - import-local@3.2.0: + "@vitest/pretty-format@3.1.1": dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 + tinyrainbow: 2.0.0 - imurmurhash@0.1.4: {} + "@vitest/runner@3.1.1": + dependencies: + "@vitest/utils": 3.1.1 + pathe: 2.0.3 - inflight@1.0.6: + "@vitest/snapshot@3.1.1": dependencies: - once: 1.4.0 - wrappy: 1.0.2 + "@vitest/pretty-format": 3.1.1 + magic-string: 0.30.17 + pathe: 2.0.3 - inherits@2.0.4: {} + "@vitest/spy@3.1.1": + dependencies: + tinyspy: 3.0.2 - internal-slot@1.1.0: + "@vitest/utils@3.1.1": dependencies: - es-errors: 1.3.0 - hasown: 2.0.2 - side-channel: 1.1.0 + "@vitest/pretty-format": 3.1.1 + loupe: 3.1.3 + tinyrainbow: 2.0.0 - is-array-buffer@3.0.5: + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - get-intrinsic: 1.3.0 + acorn: 8.15.0 - is-arrayish@0.2.1: {} + acorn@8.15.0: {} - is-async-function@2.1.1: - dependencies: - async-function: 1.0.0 - call-bound: 1.0.4 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 + agent-base@7.1.3: {} - is-bigint@1.1.0: + ajv@6.12.6: dependencies: - has-bigints: 1.1.0 + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 - is-boolean-object@1.2.2: + ansi-styles@4.3.0: dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 + color-convert: 2.0.1 - is-callable@1.2.7: {} + argparse@2.0.1: {} - is-core-module@2.16.1: - dependencies: - hasown: 2.0.2 + aria-query@5.3.2: {} - is-data-view@1.0.2: - dependencies: - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - is-typed-array: 1.1.15 + assertion-error@2.0.1: {} + + balanced-match@1.0.2: {} - is-date-object@1.1.0: + brace-expansion@1.1.12: dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 + balanced-match: 1.0.2 + concat-map: 0.0.1 - is-extglob@2.1.1: {} + brace-expansion@2.0.2: + dependencies: + balanced-match: 1.0.2 - is-finalizationregistry@1.1.1: + braces@3.0.3: dependencies: - call-bound: 1.0.4 + fill-range: 7.1.1 - is-fullwidth-code-point@3.0.0: {} + cac@6.7.14: {} - is-generator-fn@2.1.0: {} + callsites@3.1.0: {} - is-generator-function@1.1.0: + chai@5.2.0: dependencies: - call-bound: 1.0.4 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.3 + pathval: 2.0.0 - is-glob@4.0.3: + chalk@4.1.2: dependencies: - is-extglob: 2.1.1 + ansi-styles: 4.3.0 + supports-color: 7.2.0 - is-map@2.0.3: {} + check-error@2.1.1: {} - is-number-object@1.1.1: + color-convert@2.0.1: dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 + color-name: 1.1.4 - is-number@7.0.0: {} + color-name@1.1.4: {} - is-potential-custom-element-name@1.0.1: {} + concat-map@0.0.1: {} - is-regex@1.2.1: + cross-spawn@7.0.6: dependencies: - call-bound: 1.0.4 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 - is-set@2.0.3: {} + css.escape@1.5.1: {} - is-shared-array-buffer@1.0.4: + cssstyle@4.3.1: dependencies: - call-bound: 1.0.4 + "@asamuzakjp/css-color": 3.1.4 + rrweb-cssom: 0.8.0 - is-stream@2.0.1: {} - - is-string@1.1.1: + data-urls@5.0.0: dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 - is-symbol@1.1.1: + debug@4.4.0: dependencies: - call-bound: 1.0.4 - has-symbols: 1.1.0 - safe-regex-test: 1.1.0 + ms: 2.1.3 - is-typed-array@1.1.15: - dependencies: - which-typed-array: 1.1.19 + decimal.js@10.5.0: {} - is-weakmap@2.0.2: {} + deep-eql@5.0.2: {} - is-weakref@1.1.1: - dependencies: - call-bound: 1.0.4 + deep-is@0.1.4: {} - is-weakset@2.0.4: - dependencies: - call-bound: 1.0.4 - get-intrinsic: 1.3.0 + dom-accessibility-api@0.6.3: {} - isarray@2.0.5: {} + entities@4.5.0: {} - isexe@2.0.0: {} + es-module-lexer@1.6.0: {} - istanbul-lib-coverage@3.2.2: {} + esbuild@0.25.2: + optionalDependencies: + "@esbuild/aix-ppc64": 0.25.2 + "@esbuild/android-arm": 0.25.2 + "@esbuild/android-arm64": 0.25.2 + "@esbuild/android-x64": 0.25.2 + "@esbuild/darwin-arm64": 0.25.2 + "@esbuild/darwin-x64": 0.25.2 + "@esbuild/freebsd-arm64": 0.25.2 + "@esbuild/freebsd-x64": 0.25.2 + "@esbuild/linux-arm": 0.25.2 + "@esbuild/linux-arm64": 0.25.2 + "@esbuild/linux-ia32": 0.25.2 + "@esbuild/linux-loong64": 0.25.2 + "@esbuild/linux-mips64el": 0.25.2 + "@esbuild/linux-ppc64": 0.25.2 + "@esbuild/linux-riscv64": 0.25.2 + "@esbuild/linux-s390x": 0.25.2 + "@esbuild/linux-x64": 0.25.2 + "@esbuild/netbsd-arm64": 0.25.2 + "@esbuild/netbsd-x64": 0.25.2 + "@esbuild/openbsd-arm64": 0.25.2 + "@esbuild/openbsd-x64": 0.25.2 + "@esbuild/sunos-x64": 0.25.2 + "@esbuild/win32-arm64": 0.25.2 + "@esbuild/win32-ia32": 0.25.2 + "@esbuild/win32-x64": 0.25.2 - istanbul-lib-instrument@5.2.1: - dependencies: - '@babel/core': 7.26.10 - '@babel/parser': 7.27.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color + escape-string-regexp@4.0.0: {} - istanbul-lib-instrument@6.0.3: + eslint-scope@8.4.0: dependencies: - '@babel/core': 7.26.10 - '@babel/parser': 7.27.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 7.7.1 - transitivePeerDependencies: - - supports-color + esrecurse: 4.3.0 + estraverse: 5.3.0 - istanbul-lib-report@3.0.1: - dependencies: - istanbul-lib-coverage: 3.2.2 - make-dir: 4.0.0 - supports-color: 7.2.0 + eslint-visitor-keys@3.4.3: {} - istanbul-lib-source-maps@4.0.1: - dependencies: + eslint-visitor-keys@4.2.1: {} + + eslint@9.32.0: + dependencies: + "@eslint-community/eslint-utils": 4.7.0(eslint@9.32.0) + "@eslint-community/regexpp": 4.12.1 + "@eslint/config-array": 0.21.0 + "@eslint/config-helpers": 0.3.0 + "@eslint/core": 0.15.1 + "@eslint/eslintrc": 3.3.1 + "@eslint/js": 9.32.0 + "@eslint/plugin-kit": 0.3.4 + "@humanfs/node": 0.16.6 + "@humanwhocodes/module-importer": 1.0.1 + "@humanwhocodes/retry": 0.4.3 + "@types/estree": 1.0.7 + "@types/json-schema": 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 debug: 4.4.0 - istanbul-lib-coverage: 3.2.2 - source-map: 0.6.1 + escape-string-regexp: 4.0.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 transitivePeerDependencies: - supports-color - istanbul-reports@3.1.7: + espree@10.4.0: dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 4.2.1 - iterator.prototype@1.1.5: - dependencies: - define-data-property: 1.1.4 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - has-symbols: 1.1.0 - set-function-name: 2.0.2 - - jest-changed-files@29.7.0: + esquery@1.6.0: dependencies: - execa: 5.1.1 - jest-util: 29.7.0 - p-limit: 3.1.0 + estraverse: 5.3.0 - jest-circus@29.7.0: + esrecurse@4.3.0: dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.14.1 - chalk: 4.1.2 - co: 4.6.0 - dedent: 1.5.3 - is-generator-fn: 2.1.0 - jest-each: 29.7.0 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - p-limit: 3.1.0 - pretty-format: 29.7.0 - pure-rand: 6.1.0 - slash: 3.0.0 - stack-utils: 2.0.6 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color + estraverse: 5.3.0 + + estraverse@5.3.0: {} - jest-cli@29.7.0(@types/node@22.14.1): + estree-walker@3.0.3: dependencies: - '@jest/core': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.14.1) - exit: 0.1.2 - import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.14.1) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node + "@types/estree": 1.0.7 + + esutils@2.0.3: {} + + expect-type@1.2.1: {} + + fast-deep-equal@3.1.3: {} - jest-config@29.7.0(@types/node@22.14.1): + fast-glob@3.3.3: dependencies: - '@babel/core': 7.26.10 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.10) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 + "@nodelib/fs.stat": 2.0.5 + "@nodelib/fs.walk": 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 22.14.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - jest-diff@29.7.0: + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.19.1: dependencies: - chalk: 4.1.2 - diff-sequences: 29.6.3 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 + reusify: 1.1.0 + + fdir@6.4.3(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 - jest-docblock@29.7.0: + file-entry-cache@8.0.0: dependencies: - detect-newline: 3.1.0 + flat-cache: 4.0.1 - jest-each@29.7.0: + fill-range@7.1.1: dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - jest-get-type: 29.6.3 - jest-util: 29.7.0 - pretty-format: 29.7.0 + to-regex-range: 5.0.1 - jest-environment-jsdom@29.7.0: + find-up@5.0.0: dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/jsdom': 20.0.1 - '@types/node': 22.14.1 - jest-mock: 29.7.0 - jest-util: 29.7.0 - jsdom: 20.0.3 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate + locate-path: 6.0.0 + path-exists: 4.0.0 - jest-environment-node@29.7.0: + flat-cache@4.0.1: dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.14.1 - jest-mock: 29.7.0 - jest-util: 29.7.0 + flatted: 3.3.3 + keyv: 4.5.4 - jest-get-type@29.6.3: {} + flatted@3.3.3: {} - jest-haste-map@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/graceful-fs': 4.1.9 - '@types/node': 22.14.1 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - jest-worker: 29.7.0 - micromatch: 4.0.8 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 + fsevents@2.3.3: + optional: true - jest-leak-detector@29.7.0: + glob-parent@5.1.2: dependencies: - jest-get-type: 29.6.3 - pretty-format: 29.7.0 + is-glob: 4.0.3 - jest-matcher-utils@29.7.0: + glob-parent@6.0.2: dependencies: - chalk: 4.1.2 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 + is-glob: 4.0.3 - jest-message-util@29.7.0: - dependencies: - '@babel/code-frame': 7.26.2 - '@jest/types': 29.6.3 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - stack-utils: 2.0.6 + globals@14.0.0: {} - jest-mock@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/node': 22.14.1 - jest-util: 29.7.0 + globals@16.3.0: {} - jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - optionalDependencies: - jest-resolve: 29.7.0 + graphemer@1.4.0: {} - jest-regex-util@29.6.3: {} + has-flag@4.0.0: {} - jest-resolve-dependencies@29.7.0: + html-encoding-sniffer@4.0.0: dependencies: - jest-regex-util: 29.6.3 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color + whatwg-encoding: 3.1.1 - jest-resolve@29.7.0: - dependencies: - chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) - jest-util: 29.7.0 - jest-validate: 29.7.0 - resolve: 1.22.10 - resolve.exports: 2.0.3 - slash: 3.0.0 - - jest-runner@29.7.0: + http-proxy-agent@7.0.2: dependencies: - '@jest/console': 29.7.0 - '@jest/environment': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.14.1 - chalk: 4.1.2 - emittery: 0.13.1 - graceful-fs: 4.2.11 - jest-docblock: 29.7.0 - jest-environment-node: 29.7.0 - jest-haste-map: 29.7.0 - jest-leak-detector: 29.7.0 - jest-message-util: 29.7.0 - jest-resolve: 29.7.0 - jest-runtime: 29.7.0 - jest-util: 29.7.0 - jest-watcher: 29.7.0 - jest-worker: 29.7.0 - p-limit: 3.1.0 - source-map-support: 0.5.13 + agent-base: 7.1.3 + debug: 4.4.0 transitivePeerDependencies: - supports-color - jest-runtime@29.7.0: + https-proxy-agent@7.0.6: dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/globals': 29.7.0 - '@jest/source-map': 29.6.3 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.14.1 - chalk: 4.1.2 - cjs-module-lexer: 1.4.3 - collect-v8-coverage: 1.0.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 - strip-bom: 4.0.0 + agent-base: 7.1.3 + debug: 4.4.0 transitivePeerDependencies: - supports-color - jest-snapshot@29.7.0: + iconv-lite@0.6.3: dependencies: - '@babel/core': 7.26.10 - '@babel/generator': 7.27.0 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10) - '@babel/types': 7.27.0 - '@jest/expect-utils': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.10) - chalk: 4.1.2 - expect: 29.7.0 - graceful-fs: 4.2.11 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - natural-compare: 1.4.0 - pretty-format: 29.7.0 - semver: 7.7.1 - transitivePeerDependencies: - - supports-color + safer-buffer: 2.1.2 - jest-util@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/node': 22.14.1 - chalk: 4.1.2 - ci-info: 3.9.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 + ignore@5.3.2: {} - jest-validate@29.7.0: - dependencies: - '@jest/types': 29.6.3 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 29.6.3 - leven: 3.1.0 - pretty-format: 29.7.0 + ignore@7.0.5: {} - jest-watcher@29.7.0: + import-fresh@3.3.1: dependencies: - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.14.1 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.13.1 - jest-util: 29.7.0 - string-length: 4.0.2 + parent-module: 1.0.1 + resolve-from: 4.0.0 - jest-worker@29.7.0: - dependencies: - '@types/node': 22.14.1 - jest-util: 29.7.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 + imurmurhash@0.1.4: {} - jest@29.7.0(@types/node@22.14.1): - dependencies: - '@jest/core': 29.7.0 - '@jest/types': 29.6.3 - import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.14.1) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node + indent-string@4.0.0: {} - js-tokens@4.0.0: {} + is-extglob@2.1.1: {} - js-yaml@3.14.1: + is-glob@4.0.3: dependencies: - argparse: 1.0.10 - esprima: 4.0.1 + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + is-potential-custom-element-name@1.0.1: {} + + isexe@2.0.0: {} js-yaml@4.1.0: dependencies: argparse: 2.0.1 - jsdom@20.0.3: + jsdom@26.1.0: dependencies: - abab: 2.0.6 - acorn: 8.14.1 - acorn-globals: 7.0.1 - cssom: 0.5.0 - cssstyle: 2.3.0 - data-urls: 3.0.2 + cssstyle: 4.3.1 + data-urls: 5.0.0 decimal.js: 10.5.0 - domexception: 4.0.0 - escodegen: 2.1.0 - form-data: 4.0.2 - html-encoding-sniffer: 3.0.0 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 nwsapi: 2.2.20 parse5: 7.2.1 + rrweb-cssom: 0.8.0 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 4.1.4 - w3c-xmlserializer: 4.0.0 + tough-cookie: 5.1.2 + w3c-xmlserializer: 5.0.0 webidl-conversions: 7.0.0 - whatwg-encoding: 2.0.0 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 ws: 8.18.1 - xml-name-validator: 4.0.0 + xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - jsesc@3.0.2: {} - - jsesc@3.1.0: {} - json-buffer@3.0.1: {} - json-parse-even-better-errors@2.3.1: {} - json-schema-traverse@0.4.1: {} json-stable-stringify-without-jsonify@1.0.1: {} - json5@2.2.3: {} - - jsx-ast-utils@3.3.5: - dependencies: - array-includes: 3.1.8 - array.prototype.flat: 1.3.3 - object.assign: 4.1.7 - object.values: 1.2.1 - keyv@4.5.4: dependencies: json-buffer: 3.0.1 - kleur@3.0.3: {} - - leven@3.1.0: {} - levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - lines-and-columns@1.2.4: {} - - locate-path@5.0.0: - dependencies: - p-locate: 4.1.0 - locate-path@6.0.0: dependencies: p-locate: 5.0.0 - lodash.debounce@4.0.8: {} - lodash.merge@4.6.2: {} - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 + lodash@4.17.21: {} - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 + loupe@3.1.3: {} - make-dir@4.0.0: - dependencies: - semver: 7.7.1 + lru-cache@10.4.3: {} - makeerror@1.0.12: + magic-string@0.30.17: dependencies: - tmpl: 1.0.5 - - math-intrinsics@1.1.0: {} - - merge-stream@2.0.0: {} + "@jridgewell/sourcemap-codec": 1.5.0 merge2@1.4.1: {} @@ -5421,21 +2240,15 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 - mime-db@1.52.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - - mimic-fn@2.1.0: {} + min-indent@1.0.1: {} minimatch@3.1.2: dependencies: - brace-expansion: 1.1.11 + brace-expansion: 1.1.12 minimatch@9.0.5: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 ms@2.1.3: {} @@ -5443,62 +2256,8 @@ snapshots: natural-compare@1.4.0: {} - node-int64@0.4.0: {} - - node-releases@2.0.19: {} - - normalize-path@3.0.0: {} - - npm-run-path@4.0.1: - dependencies: - path-key: 3.1.1 - nwsapi@2.2.20: {} - object-assign@4.1.1: {} - - object-inspect@1.13.4: {} - - object-keys@1.1.1: {} - - object.assign@4.1.7: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - has-symbols: 1.1.0 - object-keys: 1.1.1 - - object.entries@1.1.9: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - - object.fromentries@2.0.8: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-object-atoms: 1.1.1 - - object.values@1.2.1: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - onetime@5.1.2: - dependencies: - mimic-fn: 2.1.0 - optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -5508,77 +2267,35 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - own-keys@1.0.1: - dependencies: - get-intrinsic: 1.3.0 - object-keys: 1.1.1 - safe-push-apply: 1.0.0 - - p-limit@2.3.0: - dependencies: - p-try: 2.2.0 - p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 - p-locate@4.1.0: - dependencies: - p-limit: 2.3.0 - p-locate@5.0.0: dependencies: p-limit: 3.1.0 - p-try@2.2.0: {} - parent-module@1.0.1: dependencies: callsites: 3.1.0 - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.26.2 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - parse5@7.2.1: dependencies: entities: 4.5.0 path-exists@4.0.0: {} - path-is-absolute@1.0.1: {} - path-key@3.1.1: {} - path-parse@1.0.7: {} + pathe@2.0.3: {} + + pathval@2.0.0: {} picocolors@1.1.1: {} picomatch@2.3.1: {} - pirates@4.0.7: {} - - pkg-dir@4.2.0: - dependencies: - find-up: 4.1.0 - - possible-typed-array-names@1.1.0: {} - - postcss-minify@1.1.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 - postcss-value-parser: 4.2.0 - - postcss-selector-parser@6.1.2: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-value-parser@4.2.0: {} + picomatch@4.0.2: {} postcss@8.5.3: dependencies: @@ -5588,174 +2305,60 @@ snapshots: prelude-ls@1.2.1: {} - prettier@3.5.3: {} - - pretty-format@29.7.0: - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.3.1 - - prompts@2.4.2: - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - - prop-types@15.8.1: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - - psl@1.15.0: - dependencies: - punycode: 2.3.1 + prettier@3.6.2: {} punycode@2.3.1: {} - pure-rand@6.1.0: {} - - querystringify@2.2.0: {} - queue-microtask@1.2.3: {} - react-is@16.13.1: {} - - react-is@18.3.1: {} - - react@18.3.1: - dependencies: - loose-envify: 1.4.0 - - reflect.getprototypeof@1.0.10: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - which-builtin-type: 1.2.1 - - regenerate-unicode-properties@10.2.0: - dependencies: - regenerate: 1.4.2 - - regenerate@1.4.2: {} - - regenerator-runtime@0.14.1: {} - - regenerator-transform@0.15.2: - dependencies: - '@babel/runtime': 7.27.0 - - regexp.prototype.flags@1.5.4: + redent@3.0.0: dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-errors: 1.3.0 - get-proto: 1.0.1 - gopd: 1.2.0 - set-function-name: 2.0.2 - - regexpu-core@6.2.0: - dependencies: - regenerate: 1.4.2 - regenerate-unicode-properties: 10.2.0 - regjsgen: 0.8.0 - regjsparser: 0.12.0 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.2.0 - - regjsgen@0.8.0: {} - - regjsparser@0.12.0: - dependencies: - jsesc: 3.0.2 - - require-directory@2.1.1: {} - - requires-port@1.0.0: {} - - resolve-cwd@3.0.0: - dependencies: - resolve-from: 5.0.0 + indent-string: 4.0.0 + strip-indent: 3.0.0 resolve-from@4.0.0: {} - resolve-from@5.0.0: {} - - resolve.exports@2.0.3: {} - - resolve@1.22.10: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 + reusify@1.1.0: {} - resolve@2.0.0-next.5: + rollup@4.40.0: dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 + "@types/estree": 1.0.7 + optionalDependencies: + "@rollup/rollup-android-arm-eabi": 4.40.0 + "@rollup/rollup-android-arm64": 4.40.0 + "@rollup/rollup-darwin-arm64": 4.40.0 + "@rollup/rollup-darwin-x64": 4.40.0 + "@rollup/rollup-freebsd-arm64": 4.40.0 + "@rollup/rollup-freebsd-x64": 4.40.0 + "@rollup/rollup-linux-arm-gnueabihf": 4.40.0 + "@rollup/rollup-linux-arm-musleabihf": 4.40.0 + "@rollup/rollup-linux-arm64-gnu": 4.40.0 + "@rollup/rollup-linux-arm64-musl": 4.40.0 + "@rollup/rollup-linux-loongarch64-gnu": 4.40.0 + "@rollup/rollup-linux-powerpc64le-gnu": 4.40.0 + "@rollup/rollup-linux-riscv64-gnu": 4.40.0 + "@rollup/rollup-linux-riscv64-musl": 4.40.0 + "@rollup/rollup-linux-s390x-gnu": 4.40.0 + "@rollup/rollup-linux-x64-gnu": 4.40.0 + "@rollup/rollup-linux-x64-musl": 4.40.0 + "@rollup/rollup-win32-arm64-msvc": 4.40.0 + "@rollup/rollup-win32-ia32-msvc": 4.40.0 + "@rollup/rollup-win32-x64-msvc": 4.40.0 + fsevents: 2.3.3 - reusify@1.1.0: {} + rrweb-cssom@0.8.0: {} run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 - safe-array-concat@1.1.3: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - has-symbols: 1.1.0 - isarray: 2.0.5 - - safe-push-apply@1.0.0: - dependencies: - es-errors: 1.3.0 - isarray: 2.0.5 - - safe-regex-test@1.1.0: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-regex: 1.2.1 - safer-buffer@2.1.2: {} saxes@6.0.0: dependencies: xmlchars: 2.2.0 - semver@6.3.1: {} - - semver@7.7.1: {} - - set-function-length@1.2.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.3.0 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - - set-function-name@2.0.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.2 - - set-proto@1.0.0: - dependencies: - dunder-proto: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 + semver@7.7.2: {} shebang-command@2.0.0: dependencies: @@ -5763,348 +2366,179 @@ snapshots: shebang-regex@3.0.0: {} - side-channel-list@1.0.0: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - - side-channel-map@1.0.1: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - - side-channel-weakmap@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - side-channel-map: 1.0.1 - - side-channel@1.1.0: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - side-channel-list: 1.0.0 - side-channel-map: 1.0.1 - side-channel-weakmap: 1.0.2 - - signal-exit@3.0.7: {} - - sisteransi@1.0.5: {} - - slash@3.0.0: {} + siginfo@2.0.0: {} source-map-js@1.2.1: {} - source-map-support@0.5.13: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} + stackback@0.0.2: {} - sprintf-js@1.0.3: {} + std-env@3.9.0: {} - stack-utils@2.0.6: + strip-indent@3.0.0: dependencies: - escape-string-regexp: 2.0.0 + min-indent: 1.0.1 - string-length@4.0.2: - dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 + strip-json-comments@3.1.1: {} - string-width@4.2.3: + supports-color@7.2.0: dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 + has-flag: 4.0.0 - string.prototype.matchall@4.0.12: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - gopd: 1.2.0 - has-symbols: 1.1.0 - internal-slot: 1.1.0 - regexp.prototype.flags: 1.5.4 - set-function-name: 2.0.2 - side-channel: 1.1.0 - - string.prototype.repeat@1.0.0: - dependencies: - define-properties: 1.2.1 - es-abstract: 1.23.9 + symbol-tree@3.2.4: {} - string.prototype.trim@1.2.10: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-data-property: 1.1.4 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-object-atoms: 1.1.1 - has-property-descriptors: 1.0.2 - - string.prototype.trimend@1.0.9: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 + tinybench@2.9.0: {} - string.prototype.trimstart@1.0.8: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 + tinyexec@0.3.2: {} - strip-ansi@6.0.1: + tinyglobby@0.2.12: dependencies: - ansi-regex: 5.0.1 - - strip-bom@4.0.0: {} - - strip-final-newline@2.0.0: {} - - strip-json-comments@3.1.1: {} + fdir: 6.4.3(picomatch@4.0.2) + picomatch: 4.0.2 - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 + tinypool@1.0.2: {} - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 + tinyrainbow@2.0.0: {} - supports-preserve-symlinks-flag@1.0.0: {} + tinyspy@3.0.2: {} - symbol-tree@3.2.4: {} + tldts-core@6.1.86: {} - test-exclude@6.0.0: + tldts@6.1.86: dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 - - tmpl@1.0.5: {} + tldts-core: 6.1.86 to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - tough-cookie@4.1.4: + tough-cookie@5.1.2: dependencies: - psl: 1.15.0 - punycode: 2.3.1 - universalify: 0.2.0 - url-parse: 1.5.10 + tldts: 6.1.86 - tr46@3.0.0: + tr46@5.1.1: dependencies: punycode: 2.3.1 - ts-api-utils@2.1.0(typescript@5.8.3): + ts-api-utils@2.1.0(typescript@5.7.3): dependencies: - typescript: 5.8.3 + typescript: 5.7.3 type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - type-detect@4.0.8: {} - - type-fest@0.21.3: {} - - typed-array-buffer@1.0.3: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-typed-array: 1.1.15 - - typed-array-byte-length@1.0.3: - dependencies: - call-bind: 1.0.8 - for-each: 0.3.5 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - - typed-array-byte-offset@1.0.4: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - for-each: 0.3.5 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - reflect.getprototypeof: 1.0.10 - - typed-array-length@1.0.7: - dependencies: - call-bind: 1.0.8 - for-each: 0.3.5 - gopd: 1.2.0 - is-typed-array: 1.1.15 - possible-typed-array-names: 1.1.0 - reflect.getprototypeof: 1.0.10 - - typescript@5.8.3: {} - - unbox-primitive@1.1.0: - dependencies: - call-bound: 1.0.4 - has-bigints: 1.1.0 - has-symbols: 1.1.0 - which-boxed-primitive: 1.1.1 + typescript@5.7.3: {} undici-types@6.21.0: {} - unicode-canonical-property-names-ecmascript@2.0.1: {} - - unicode-match-property-ecmascript@2.0.0: - dependencies: - unicode-canonical-property-names-ecmascript: 2.0.1 - unicode-property-aliases-ecmascript: 2.1.0 - - unicode-match-property-value-ecmascript@2.2.0: {} - - unicode-property-aliases-ecmascript@2.1.0: {} - - universalify@0.2.0: {} - - update-browserslist-db@1.1.3(browserslist@4.24.4): - dependencies: - browserslist: 4.24.4 - escalade: 3.2.0 - picocolors: 1.1.1 - uri-js@4.4.1: dependencies: punycode: 2.3.1 - url-parse@1.5.10: - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - - util-deprecate@1.0.2: {} - - v8-to-istanbul@9.3.0: + vite-node@3.1.1(@types/node@22.14.1): dependencies: - '@jridgewell/trace-mapping': 0.3.25 - '@types/istanbul-lib-coverage': 2.0.6 - convert-source-map: 2.0.0 + cac: 6.7.14 + debug: 4.4.0 + es-module-lexer: 1.6.0 + pathe: 2.0.3 + vite: 6.3.2(@types/node@22.14.1) + transitivePeerDependencies: + - "@types/node" + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite@6.3.2(@types/node@22.14.1): + dependencies: + esbuild: 0.25.2 + fdir: 6.4.3(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.3 + rollup: 4.40.0 + tinyglobby: 0.2.12 + optionalDependencies: + "@types/node": 22.14.1 + fsevents: 2.3.3 - w3c-xmlserializer@4.0.0: + vitest@3.1.1(@types/node@22.14.1)(jsdom@26.1.0): dependencies: - xml-name-validator: 4.0.0 + "@vitest/expect": 3.1.1 + "@vitest/mocker": 3.1.1(vite@6.3.2(@types/node@22.14.1)) + "@vitest/pretty-format": 3.1.1 + "@vitest/runner": 3.1.1 + "@vitest/snapshot": 3.1.1 + "@vitest/spy": 3.1.1 + "@vitest/utils": 3.1.1 + chai: 5.2.0 + debug: 4.4.0 + expect-type: 1.2.1 + magic-string: 0.30.17 + pathe: 2.0.3 + std-env: 3.9.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinypool: 1.0.2 + tinyrainbow: 2.0.0 + vite: 6.3.2(@types/node@22.14.1) + vite-node: 3.1.1(@types/node@22.14.1) + why-is-node-running: 2.3.0 + optionalDependencies: + "@types/node": 22.14.1 + jsdom: 26.1.0 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml - walker@1.0.8: + w3c-xmlserializer@5.0.0: dependencies: - makeerror: 1.0.12 + xml-name-validator: 5.0.0 webidl-conversions@7.0.0: {} - whatwg-encoding@2.0.0: + whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3 - whatwg-mimetype@3.0.0: {} + whatwg-mimetype@4.0.0: {} - whatwg-url@11.0.0: + whatwg-url@14.2.0: dependencies: - tr46: 3.0.0 + tr46: 5.1.1 webidl-conversions: 7.0.0 - which-boxed-primitive@1.1.1: - dependencies: - is-bigint: 1.1.0 - is-boolean-object: 1.2.2 - is-number-object: 1.1.1 - is-string: 1.1.1 - is-symbol: 1.1.1 - - which-builtin-type@1.2.1: - dependencies: - call-bound: 1.0.4 - function.prototype.name: 1.1.8 - has-tostringtag: 1.0.2 - is-async-function: 2.1.1 - is-date-object: 1.1.0 - is-finalizationregistry: 1.1.1 - is-generator-function: 1.1.0 - is-regex: 1.2.1 - is-weakref: 1.1.1 - isarray: 2.0.5 - which-boxed-primitive: 1.1.1 - which-collection: 1.0.2 - which-typed-array: 1.1.19 - - which-collection@1.0.2: - dependencies: - is-map: 2.0.3 - is-set: 2.0.3 - is-weakmap: 2.0.2 - is-weakset: 2.0.4 - - which-typed-array@1.1.19: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - call-bound: 1.0.4 - for-each: 0.3.5 - get-proto: 1.0.1 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - which@2.0.2: dependencies: isexe: 2.0.0 - word-wrap@1.2.5: {} - - wrap-ansi@7.0.0: + why-is-node-running@2.3.0: dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrappy@1.0.2: {} + siginfo: 2.0.0 + stackback: 0.0.2 - write-file-atomic@4.0.2: - dependencies: - imurmurhash: 0.1.4 - signal-exit: 3.0.7 + word-wrap@1.2.5: {} ws@8.18.1: {} - xml-name-validator@4.0.0: {} + xml-name-validator@5.0.0: {} xmlchars@2.2.0: {} - y18n@5.0.8: {} - - yallist@3.1.1: {} - - yargs-parser@21.1.1: {} - - yargs@17.7.2: - dependencies: - cliui: 8.0.1 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - yocto-queue@0.1.0: {} diff --git a/prettier.config.cjs b/prettier.config.cjs new file mode 100644 index 0000000..a43ab29 --- /dev/null +++ b/prettier.config.cjs @@ -0,0 +1,3 @@ +module.exports = { + semi: false, +} diff --git a/src/component.js b/src/component.js deleted file mode 100644 index 67c96d1..0000000 --- a/src/component.js +++ /dev/null @@ -1,207 +0,0 @@ -// /** -// * This component supports three ways to pass the source JSON: -// * 1. via the "json" attribute, -// * -// * 2. via the "json" property, -// * const jsonViewer = document.createElement("json-viewer"); -// * jsonViewer.json = {name: "test"} -// * 3. via content, -// * {"name": "test"} -// **/ - -//#########################################NEW -import styles from "./styles.css" -import { themeStyles } from "./themes" -import { isUrl } from "./data-helpers" -import { - validateBoolean, - validateBooleanOrPositiveNumber, - validatePositiveNumber, - validateStringOrJson, - validateString, -} from "./validator" -import Renderer from "./renderer/container" - -const DEFAULT_PARAMS = { - indent: 2, - expanded: 1, - theme: "default-light", - showDataTypes: true, - showToolbar: false, - expandIconType: "arrow", - showCopy: true, - showSize: true, - data: null, -} - -class JsonViewer extends HTMLElement { - #themeStylesContainer - #options - #contentData - #renderer - - constructor() { - super() - - this.#options = { ...DEFAULT_PARAMS } - - this.#themeStylesContainer = document.createElement("style") - - // Attach a shadow DOM to encapsulate the component - const shadowRoot = this.attachShadow({ mode: "open" }) - const basicStyles = document.createElement("style") - basicStyles.textContent = `${styles}` - - shadowRoot.appendChild(basicStyles) - shadowRoot.appendChild(this.#themeStylesContainer) - - // set default theme - this.theme = this.#options.theme - // initialize renderer - this.#renderer = new Renderer(shadowRoot, this.#options) - } - - // component attributes - static get observedAttributes() { - // convert camelCase to kebab-case - return Object.keys(DEFAULT_PARAMS).map((k) => k.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase()) - } - - static allowedAttributes = ["id"].concat(JsonViewer.observedAttributes) - - #warn = (...args) => { - console.warn(`JsonViewer${this.id ? ` (${this.id})` : ""}:`, ...args) - } - - #validateAndUpdate = (propName, value, validatorFunc, allowedValues) => { - try { - value = validatorFunc(value) - if (allowedValues && !allowedValues.includes(value)) { - throw new Error(`should be one of ${allowedValues.join(", ")}`) - } - if (this.#options[propName] === value) return - - this.#options[propName] = value - this.#render() - } catch (e) { - this.#warn(`Attribute ${propName}: ${e.message}`) - } - } - - set showDataTypes(value) { - this.#validateAndUpdate("showDataTypes", value, validateBoolean) - } - - set showToolbar(value) { - this.#validateAndUpdate("showToolbar", value, validateBoolean) - } - - set indent(newIndent) { - this.#validateAndUpdate("indent", newIndent, validatePositiveNumber) - } - - set expandIconType(name) { - this.#validateAndUpdate("expandIconType", name, validateString, ["arrow", "square", "circle"]) - } - - set expanded(newExpanded) { - this.#validateAndUpdate("expanded", newExpanded, validateBooleanOrPositiveNumber) - } - - set showSize(newShowSize) { - this.#validateAndUpdate("showSize", newShowSize, validateBoolean) - } - - set showCopy(showCopy) { - this.#validateAndUpdate("showCopy", showCopy, validateBoolean) - } - - // validate and set theme - // theme can be a string or an object - // validationg theme is more complex than other attributes - set theme(newTheme) { - try { - newTheme = validateStringOrJson(newTheme) - // do nothing if the theme is the same or theme container is empty - if (this.#options.theme === newTheme && this.#themeStylesContainer.textContent !== "") return - - this.#themeStylesContainer.textContent = themeStyles(newTheme) - this.#options.theme = newTheme - } catch (e) { - this.#warn(`Attribute theme: ${e.message}`) - } - } - - // validate and set data - // data can be a string or an object - // validating data is more complex than other attributes - set data(newData) { - try { - newData = validateStringOrJson(newData) - // build a string from the value to compare with the current data - const newDataString = JSON.stringify(newData) - // do nothing if the data is the same - if (this.#options.data === newDataString) return - this.#options.data = newDataString - - if (isUrl(newData)) { - fetch(newData) - .then((r) => r.json()) - .then((data) => { - this.#contentData = data - this.#render() - }) - } else { - this.#contentData = newData - this.#render() - } - } catch (e) { - this.#warn(`Attribute data: ${e.message}`) - } - } - - get options() { - return this.#options - } - - connectedCallback() { - window.addEventListener("DOMContentLoaded", () => { - const data = this.textContent - this.textContent = "" - if (data) this.data = data - }) - } - - attributeChangedCallback(name, oldValue, newValue) { - // console.log("=====Changed=====") - // console.log(name, oldValue, newValue) - // filter out not allowed attributes - if (JsonViewer.allowedAttributes.indexOf(name) > -1) { - // convert kebab-case to camelCase - const propName = name.replace(/-([a-z])/g, (g) => g[1].toUpperCase()) - this[propName] = newValue - } else { - this.#warn(`Attribute ${name} is not supported and will be ignored!`) - this.removeAttribute(name) - } - } - - #render = () => { - // console.log("====================RENDER"); - - this.#renderer.update({ - data: this.#contentData, - expanded: this.#options.expanded, - expandIconType: this.#options.expandIconType, - indent: this.#options.indent, - showDataTypes: this.#options.showDataTypes, - showToolbar: this.#options.showToolbar, - showSize: this.#options.showSize, - showCopy: this.#options.showCopy, - }) - } -} - -if (!customElements.get("andypf-json-viewer")) { - customElements.define("andypf-json-viewer", JsonViewer) -} diff --git a/src/data-helpers.js b/src/data-helpers.js deleted file mode 100644 index f79b913..0000000 --- a/src/data-helpers.js +++ /dev/null @@ -1,71 +0,0 @@ -// This function checks if a string is a valid URL. -export const isUrl = (string) => { - try { - // Attempt to create a URL object from the input string - return Boolean(new URL(string)) // Return true if successful - // eslint-disable-next-line no-unused-vars - } catch (error) { - // console.debug(error) - // If an error occurs (invalid URL), return false - return false - } -} - -// This function determines the type of data. -export const dataType = (data) => { - if (Array.isArray(data)) return "array" // Check if data is an array - if (data === null) return "null" // Check if data is null - if (data instanceof RegExp) return "regexp" // Check if data is a regular expression - - const type = typeof data // Get the JavaScript type of data - if (type === "number") { - if (isNaN(data)) return "NaN" // Check if data is NaN - if (!isFinite(data)) return "Infinity" // Check if data is Infinity - return Number.isInteger(data) ? "int" : "float" // Check if data is integer or float - } - if (type === "boolean") return "bool" // Check if data is a boolean - - if (type === "object" && data instanceof Date) { - return "date" - } - return type // Return the type of data as a string (e.g., "string", "object") -} - -// This function parses a JSON string with custom handling for "NaN" and "undefined" strings. -export const parseJson = (jsonString) => { - // Replace ": NaN" and ": undefined" with ": "NaN"" and ": "undefined"" for valid JSON syntax - const fixedJsonString = jsonString - // replace new lines - .replace(/\n/gi, " ") - // replace all NaN values with "NaN" - .replace(/:\s*NaN/gi, ': "NaN"') - // replace all undefined values with "undefined" - .replace(/:\s*undefined/gi, ': "undefined"') - // replace all NaN in arrays with "NaN" - .replace(/\[(.*)NaN(.*)\]/gi, '[$1"NaN"$2]') - // replace undefined in arrays with "undefined" - .replace(/\[(.*)undefined(.*)\]/gi, '[$1"undefined"$2]') - - // Define a custom reviver function for JSON parsing - const customReviver = (key, value) => { - if (value === "NaN") { - return NaN // Convert "NaN" to the actual NaN value - } else if (Array.isArray(value)) { - return value.map((v) => { - if (v === "NaN") { - return NaN // Convert "NaN" to the actual NaN value - } else if (v === "undefined") { - return undefined // Convert "undefined" to the undefined value - } - return v - }) - } else if (value === "undefined") { - return undefined // Convert "undefined" to the undefined value - } - - return value - } - - // Parse the modified JSON string using the custom reviver function - return JSON.parse(fixedJsonString, customReviver) -} diff --git a/demo/assets/Logo_JV1.png b/src/demo/assets/Logo_JV1.png similarity index 100% rename from demo/assets/Logo_JV1.png rename to src/demo/assets/Logo_JV1.png diff --git a/demo/assets/android-chrome-192x192.png b/src/demo/assets/android-chrome-192x192.png similarity index 100% rename from demo/assets/android-chrome-192x192.png rename to src/demo/assets/android-chrome-192x192.png diff --git a/demo/assets/android-chrome-512x512.png b/src/demo/assets/android-chrome-512x512.png similarity index 100% rename from demo/assets/android-chrome-512x512.png rename to src/demo/assets/android-chrome-512x512.png diff --git a/demo/assets/apple-touch-icon.png b/src/demo/assets/apple-touch-icon.png similarity index 100% rename from demo/assets/apple-touch-icon.png rename to src/demo/assets/apple-touch-icon.png diff --git a/demo/assets/favicon-16x16.png b/src/demo/assets/favicon-16x16.png similarity index 100% rename from demo/assets/favicon-16x16.png rename to src/demo/assets/favicon-16x16.png diff --git a/demo/assets/favicon-32x32.png b/src/demo/assets/favicon-32x32.png similarity index 100% rename from demo/assets/favicon-32x32.png rename to src/demo/assets/favicon-32x32.png diff --git a/demo/assets/favicon.ico b/src/demo/assets/favicon.ico similarity index 100% rename from demo/assets/favicon.ico rename to src/demo/assets/favicon.ico diff --git a/demo/assets/mstile-150x150.png b/src/demo/assets/mstile-150x150.png similarity index 100% rename from demo/assets/mstile-150x150.png rename to src/demo/assets/mstile-150x150.png diff --git a/src/demo/index.html b/src/demo/index.html new file mode 100644 index 0000000..5e7012f --- /dev/null +++ b/src/demo/index.html @@ -0,0 +1,137 @@ + + + + + + + JSON Viewer Demo + + + + + + + + +

JSON Viewer Web Component Demo

+ +
+

Interactive Example

+
+ + + +
+ + + + { + "string": "this is a test", + "integer": 42, + "array": [ + 1, + 2, + 3, + "test", + null + ], + "float": 3.14159, + "object": { + "first-child": true, + "second-child": false, + "last-child": null, + "strings": { + "veryLong": "The 'json-viewer' is a powerful tool designed specifically for displaying and analyzing JSON data. JSON (JavaScript Object Notation) is a widely used data format for transmission and storage. It's easy to understand and write, but when it comes to visualizing extensive or complex JSON data, it can be a challenge." + } + }, + "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c", + "string_number": "1234", + "date": "2025-10-24T10:16:59.631Z" + } + +
+ + + diff --git a/src/demo/index.ts b/src/demo/index.ts new file mode 100644 index 0000000..ee8ceb5 --- /dev/null +++ b/src/demo/index.ts @@ -0,0 +1 @@ +import "../package" diff --git a/src/index.js b/src/index.js deleted file mode 100644 index 1af909c..0000000 --- a/src/index.js +++ /dev/null @@ -1 +0,0 @@ -import "./component" diff --git a/src/styles.css b/src/package/assets/styles.css similarity index 87% rename from src/styles.css rename to src/package/assets/styles.css index b6e4348..3c73668 100644 --- a/src/styles.css +++ b/src/package/assets/styles.css @@ -21,13 +21,38 @@ display: flex; align-items: center; } + .toolbar .icon-wrapper { height: 15px; display: flex; align-items: center; - padding: 2px 5px; } + + +.toolbar select.theme-select { + background: transparent; + display: flex; + align-items: center; + color: var(--base0D); + padding: 0; + border: none; + box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--base0D) 30%, transparent); + border-radius: 5px; +} + +.toolbar .icon.copy { + display: block; + margin-bottom: 6px; +} + +.toolbar .display-value { + margin-left: 5px; + color: var(--base0D); + font-size: smaller; + /* font-weight: bold; */ +} + .toolbar .icon-wrapper:hover { background-color: var(--base02); border-radius: 3px; @@ -44,10 +69,13 @@ background: transparent; /* Transparent background */ outline: none; flex: 1; /* Input expands to fill remaining space */ - font-size: 16px; color: var(--base0D); /* Input text color */ } +.toolbar .hidden { + display: none; +} + .match { background-color: yellow; /* Hervorhebungsfarbe */ font-weight: bold; /* Fettschrift, um den Treffer hervorzuheben */ @@ -478,3 +506,53 @@ width: 1px; background-color: var(--base0D); } + +/* Error Container */ +.error-container { + color: red; + padding: 8px; +} +.error-container details { + margin-top: 8px; +} +.error-container pre { + background: #f5f5f5; + padding: 8px; + margin-top: 4px; +} + +/* + * Three Dots Spinner + * A container with three dots that pulse in sequence. + */ +.spinner { + display: flex; + gap: 5px; +} +.spinner > div { + width: 8px; + height: 8px; + background-color: var(--base05, #007acc); /* Use a prominent theme color */ + border-radius: 50%; + animation: spinner-pulse 1.4s ease-in-out infinite both; +} +/* Add delays to make the dots pulse in sequence */ +.spinner .dot-1 { + animation-delay: -0.32s; +} +.spinner .dot-2 { + animation-delay: -0.16s; +} +.spinner .dot-3 { + animation-delay: 0s; +} +@keyframes spinner-pulse { + 0%, + 80%, + 100% { + transform: scale(0); + } + 40% { + transform: scale(1); + } +} diff --git a/src/themes.js b/src/package/assets/themes.ts similarity index 97% rename from src/themes.js rename to src/package/assets/themes.ts index f9a8a94..2c30732 100644 --- a/src/themes.js +++ b/src/package/assets/themes.ts @@ -18,7 +18,7 @@ */ /* source: https://github.com/gammons/base16-obsidian */ -const themes = { +const themes: Record = { apathy: [ "#031a16", "#0b342d", @@ -1425,24 +1425,29 @@ const themes = { ], } -export const availableThemes = Object.keys(themes) +export const availableThemes: string[] = Object.keys(themes) -export const themeStyles = (nameOrObject) => { +export const themeStyles = (nameOrObject: string | Record): string => { let theme if (typeof nameOrObject === "string") { - if (themes[nameOrObject] === undefined) { - throw new Error(`${nameOrObject} not found`) + if (availableThemes.indexOf(nameOrObject) === -1) { + console.warn(`${nameOrObject} not found, falling back to default theme`) + nameOrObject = "default-light" } - theme = themes[nameOrObject].reduce((map, v, i) => { - const key = `base0${i.toString(16).toUpperCase()}` - map[key] = v - return map - }, {}) + + theme = themes[nameOrObject].reduce( + (map: Record, v, i) => { + const key = `base0${i.toString(16).toUpperCase()}` + map[key] = v + return map + }, + {} as Record + ) } else { theme = nameOrObject } - return `.container{${Object.keys(theme) + return `:host{${Object.keys(theme) .map((key) => `--${key}: ${theme[key]};`) .join("")}}` } diff --git a/src/package/components/json-viewer.ts b/src/package/components/json-viewer.ts new file mode 100644 index 0000000..ad04050 --- /dev/null +++ b/src/package/components/json-viewer.ts @@ -0,0 +1,703 @@ +import { DataParser } from "../utils/data-parser" +import styles from "../assets/styles.css?inline" +import { themeStyles, availableThemes } from "../assets/themes" +import { Toolbar } from "./toolbar" +import { Container } from "../renderer/container" + +const ICON_TYPES = ["arrow", "square", "circle"] as const +const MAX_EXPAND_LEVEL = 12 +const MAX_INDENT_LEVEL = 10 + +type IconType = (typeof ICON_TYPES)[number] + +export class JsonViewer extends HTMLElement { + static get observedAttributes(): string[] { + return [ + "toolbar-show-copy", + "toolbar-show-size", + "toolbar-show-search", + "toolbar-show-expand-controls", + "toolbar-show-indent-controls", + "toolbar-show-theme-select", + "toolbar-show-infos", + "show-toolbar", + "show-data-types", + "expand-icon-type", + "show-copy", + "show-size", + "show-loading-status", + "show-errors", + "show-infos", + "indent", + "expanded", + "theme", + "search-term", + "data", + ] + } + + // Private properties + private dataParser: DataParser | null = null + private stylesContainer: HTMLStyleElement | null = null + private themeStyles: HTMLStyleElement | null = null + private dataContainer: HTMLDivElement | null = null + private toolbarContainer: HTMLDivElement | null = null + private jsonDataContainer: HTMLDivElement | null = null + private cachedThemeStyles: string | null = null + private cachedData: string | null = null + private toolbar: Toolbar | null = null + private observer?: MutationObserver + private isUpdatingFromToolbar = false + private renderTimeout?: number + private isInitialized = false + + private static readonly defaultTheme = "default-light" + private static readonly defaultIconType: IconType = "arrow" + + private rendererContainer: Container | null = null + + constructor() { + super() + this.attachShadow({ mode: "open" }) + } + + // All your getters and setters (keeping them as-is) + get indent(): number { + if (!this.hasAttribute("indent") || this.getAttribute("indent") === "false") return 0 + if (this.getAttribute("indent") === "true" || this.getAttribute("indent") === "") return MAX_INDENT_LEVEL + let value = parseInt(this.getAttribute("indent") || "0") + value = isNaN(value) ? 0 : value + if (value < 0) return 0 + if (value > MAX_INDENT_LEVEL) return MAX_INDENT_LEVEL + return value + } + + set indent(value: number | boolean) { + if (typeof value === "boolean") { + this.setAttribute("indent", value ? MAX_INDENT_LEVEL.toString() : "0") + return + } + if (typeof value === "number") { + if (value < 0) value = 0 + if (value > MAX_INDENT_LEVEL) value = MAX_INDENT_LEVEL + this.setAttribute("indent", value.toString()) + return + } + this.removeAttribute("indent") + } + + get expanded(): number { + if (!this.hasAttribute("expanded") || this.getAttribute("expanded") === "false") return 0 + if (this.getAttribute("expanded") === "true" || this.getAttribute("expanded") === "") return MAX_EXPAND_LEVEL + let value = parseInt(this.getAttribute("expanded") || "0") + value = isNaN(value) ? 0 : value + if (value < 0) return 0 + if (value > MAX_EXPAND_LEVEL) return MAX_EXPAND_LEVEL + return value + } + + set expanded(value: number | boolean) { + if (typeof value === "boolean") { + this.setAttribute("expanded", value.toString()) + return + } + + if (typeof value === "number") { + if (value < 0) value = 0 + if (value > MAX_EXPAND_LEVEL) value = MAX_EXPAND_LEVEL + this.setAttribute("expanded", value.toString()) + return + } + this.removeAttribute("expanded") + } + + // ... (all your other getters/setters remain the same) ... + get showDataTypes(): boolean { + return this.hasAttribute("show-data-types") && this.getAttribute("show-data-types") !== "false" + } + set showDataTypes(value: boolean) { + this.setAttribute("show-data-types", value.toString()) + } + get showLoadingStatus(): boolean { + return this.hasAttribute("show-loading-status") && this.getAttribute("show-loading-status") !== "false" + } + set showLoadingStatus(value: boolean) { + this.setAttribute("show-loading-status", value.toString()) + } + get showErrors(): boolean { + return this.hasAttribute("show-errors") && this.getAttribute("show-errors") !== "false" + } + set showErrors(value: boolean) { + this.setAttribute("show-errors", value.toString()) + } + get showInfos(): boolean { + return this.hasAttribute("show-infos") && this.getAttribute("show-infos") !== "false" + } + set showInfos(value: boolean) { + this.setAttribute("show-infos", value.toString()) + } + get showToolbar(): boolean { + return this.hasAttribute("show-toolbar") && this.getAttribute("show-toolbar") !== "false" + } + set showToolbar(value: boolean) { + this.setAttribute("show-toolbar", value.toString()) + } + get showCopy(): boolean { + return this.hasAttribute("show-copy") && this.getAttribute("show-copy") !== "false" + } + set showCopy(value: boolean) { + this.setAttribute("show-copy", value.toString()) + } + get showSize(): boolean { + return this.hasAttribute("show-size") && this.getAttribute("show-size") !== "false" + } + set showSize(value: boolean) { + this.setAttribute("show-size", value.toString()) + } + // Toolbar attributes + get toolbarShowCopy(): boolean { + return this.getAttribute("toolbar-show-copy") !== "false" + } + set toolbarShowCopy(value: boolean) { + this.setAttribute("toolbar-show-copy", value.toString()) + } + get toolbarShowSize(): boolean { + return this.getAttribute("toolbar-show-size") !== "false" + } + set toolbarShowSize(value: boolean) { + this.setAttribute("toolbar-show-size", value.toString()) + } + get toolbarShowSearch(): boolean { + return this.getAttribute("toolbar-show-search") !== "false" + } + set toolbarShowSearch(value: boolean) { + this.setAttribute("toolbar-show-search", value.toString()) + } + get toolbarShowExpandControls(): boolean { + return this.getAttribute("toolbar-show-expand-controls") !== "false" + } + set toolbarShowExpandControls(value: boolean) { + this.setAttribute("toolbar-show-expand-controls", value.toString()) + } + get toolbarShowIndentControls(): boolean { + return this.getAttribute("toolbar-show-indent-controls") !== "false" + } + set toolbarShowIndentControls(value: boolean) { + this.setAttribute("toolbar-show-indent-controls", value.toString()) + } + get toolbarShowThemeSelect(): boolean { + return this.getAttribute("toolbar-show-theme-select") !== "false" + } + set toolbarShowThemeSelect(value: boolean) { + this.setAttribute("toolbar-show-theme-select", value.toString()) + } + get toolbarShowInfos(): boolean { + return this.getAttribute("toolbar-show-infos") !== "false" + } + set toolbarShowInfos(value: boolean) { + this.setAttribute("toolbar-show-infos", value.toString()) + } + // String attributes + get theme(): string { + return this.getAttribute("theme") ?? JsonViewer.defaultTheme + } + set theme(value: string) { + this.setAttribute("theme", value) + } + get expandIconType(): IconType { + const value = this.getAttribute("expand-icon-type") + return (ICON_TYPES.includes(value as IconType) ? value : JsonViewer.defaultIconType) as IconType + } + set expandIconType(value: IconType) { + if (!ICON_TYPES.includes(value)) { + console.warn(`Invalid expand-icon-type: ${value}. Defaulting to "arrow".`) + value = JsonViewer.defaultIconType + this.removeAttribute("expand-icon-type") + return + } + this.setAttribute("expand-icon-type", value) + } + get searchTerm(): string { + return this.getAttribute("search-term") ?? "" + } + set searchTerm(value: string) { + if (this.searchTerm === value) return + this.setAttribute("search-term", value) + } + // Data attribute + get data(): string { + const attrData = this.getAttribute("data") + if (attrData) { + return attrData + } + + // Get content data and validate it + const contentData = this.getContentData() + if (contentData) { + try { + // Test if it's valid JSON + JSON.parse(contentData) + // If valid, clear content and set as attribute + this.clearContent() + this.setAttribute("data", contentData) + return contentData + } catch (error) { + console.warn("Invalid JSON in element content:", error) + // Return the content anyway, let the parser handle the error + return contentData + } + } + + return "{}" + } + set data(value: string | object) { + if (this.data === value) return + if (typeof value === "string") { + this.setAttribute("data", value) + } else { + this.setAttribute("data", JSON.stringify(value)) + } + this.textContent = "" + } + + // Private methods + private getContentData(): string { + // Get all text content, including from child text nodes + const content = this.textContent?.trim() || "" + + // Remove any extra whitespace and normalize + if (content) { + try { + // Try to parse and re-stringify to normalize the JSON + const parsed = JSON.parse(content) + return JSON.stringify(parsed) + } catch { + // If parsing fails, return the raw content + return content + } + } + + return "" + } + + private clearContent(): void { + this.textContent = "" + } + + // Lifecycle methods + attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void { + if (!this.isInitialized) return + + if (this.isUpdatingFromToolbar) { + // Even when updating from toolbar, we need to re-render for some changes + if (["indent", "expanded", "theme", "search-term"].includes(name)) { + // Force re-render for these critical attributes + this.isUpdatingFromToolbar = false + this.debouncedRender() + return + } + return + } + + if (oldValue !== newValue) { + this.debouncedRender() + } + } + + private debouncedRender(): void { + if (this.renderTimeout) { + clearTimeout(this.renderTimeout) + } + this.renderTimeout = window.setTimeout(() => { + this.render() + }, 10) + } + + connectedCallback(): void { + this.render().then(() => { + this.isInitialized = true + }) + + this.observer = new MutationObserver(() => { + if (!this.hasAttribute("data") && this.isInitialized) { + this.debouncedRender() + } + }) + + this.observer.observe(this, { + childList: true, + characterData: true, + subtree: true, + }) + } + + disconnectedCallback(): void { + this.isInitialized = false + + if (this.renderTimeout) { + clearTimeout(this.renderTimeout) + this.renderTimeout = undefined + } + + if (this.observer) { + this.observer.disconnect() + } + + if (this.toolbar) { + this.toolbar.remove() + this.toolbar = null + } + } + + private renderToolbar(): void { + if (!this.toolbarContainer) return + + if (!this.toolbar) { + this.toolbar = new Toolbar({ + parent: this.toolbarContainer, + onCopyAll: () => { + try { + // Get the original data and stringify it cleanly + const dataParser = this.dataParser + if (dataParser) { + dataParser.getParsedData().then((result) => { + if (result.data) { + const cleanJson = JSON.stringify(result.data, null, this.indent || 2) + navigator.clipboard + .writeText(cleanJson) + .then(() => { + console.log("Copied clean JSON to clipboard:", cleanJson.length) + }) + .catch((err) => { + console.error("Failed to copy to clipboard:", err) + }) + } + }) + } else { + // Fallback: try to parse the original data attribute + const rawData = this.data + const parsedData = JSON.parse(rawData) + const cleanJson = JSON.stringify(parsedData, null, this.indent || 2) + navigator.clipboard.writeText(cleanJson) + } + } catch (error) { + console.error("Failed to copy JSON:", error) + // Ultimate fallback + navigator.clipboard.writeText(this.data) + } + }, + onStateChange: (changes) => { + console.log("Toolbar state changed:", changes) + + this.isUpdatingFromToolbar = true + + try { + Object.entries(changes).forEach(([key, value]) => { + switch (key) { + case "searchTerm": + if (this.searchTerm !== value) { + this.setAttribute("search-term", value as string) + } + break + case "expandLevel": + if (this.expanded !== value) { + this.setAttribute("expanded", (value || 0).toString()) + } + break + case "indent": + if (this.indent !== value) { + this.setAttribute("indent", (value || 0).toString()) + } + break + case "infosEnabled": + if (this.showInfos !== value) { + this.setAttribute("show-infos", (value || false).toString()) + // Also update the individual show flags + this.setAttribute("show-data-types", (value || false).toString()) + this.setAttribute("show-copy", (value || false).toString()) + this.setAttribute("show-size", (value || false).toString()) + } + break + case "theme": + if (this.theme !== value) { + this.setAttribute("theme", (value as string) || JsonViewer.defaultTheme) + } + break + } + }) + } finally { + // Clear the flag and force a render for toolbar changes + setTimeout(() => { + this.isUpdatingFromToolbar = false + + // Force immediate update for info changes + if (changes.infosEnabled !== undefined) { + console.log("Info state changed, updating renderer") + if (this.rendererContainer) { + this.rendererContainer.update({ + expanded: this.expanded, + indent: this.indent, + showDataTypes: this.showInfos, // Use showInfos for all info displays + showCopy: this.showInfos, + showSize: this.showInfos, + expandIconType: this.expandIconType, + searchTerm: this.searchTerm, + }) + } + // Also update container classes immediately + if (this.dataContainer) { + this.dataContainer.classList.toggle("show-data-types", this.showInfos) + this.dataContainer.classList.toggle("show-copy", this.showInfos) + this.dataContainer.classList.toggle("show-size", this.showInfos) + } + } + + // Force render for other changes + this.forceRender() + }, 0) + } + }, + config: { + showCopy: this.toolbarShowCopy, + showSize: this.toolbarShowSize, + showSearch: this.toolbarShowSearch, + showExpandControls: this.toolbarShowExpandControls, + showIndentControls: this.toolbarShowIndentControls, + showThemeSelect: this.toolbarShowThemeSelect, + showInfos: this.toolbarShowInfos, + maxExpandLevel: MAX_EXPAND_LEVEL, + maxIndentLevel: MAX_INDENT_LEVEL, + availableThemes: availableThemes, + }, + initialState: { + expandLevel: this.expanded, + indent: this.indent, + theme: this.theme, + searchTerm: this.searchTerm, + dataSize: new TextEncoder().encode(this.data).length, + infosEnabled: this.showInfos, + }, + }) + } else { + this.toolbar.updateConfig({ + showCopy: this.toolbarShowCopy, + showSize: this.toolbarShowSize, + showSearch: this.toolbarShowSearch, + showExpandControls: this.toolbarShowExpandControls, + showIndentControls: this.toolbarShowIndentControls, + showThemeSelect: this.toolbarShowThemeSelect, + showInfos: this.toolbarShowInfos, + }) + + this.toolbar.updateState({ + searchTerm: this.searchTerm, + expandLevel: this.expanded, + indent: this.indent, + theme: this.theme, + infosEnabled: this.showInfos, + dataSize: new TextEncoder().encode(this.data).length, + }) + } + } + + // Add method to force re-render (bypasses cache) + private forceRender(): void { + this.cachedData = null + this.rendererContainer = null // Clear renderer cache + this.render() + } + + private async render(): Promise { + if (!this.shadowRoot) return + + // Initialize styles + if (!this.stylesContainer) { + this.stylesContainer = document.createElement("style") + this.shadowRoot.appendChild(this.stylesContainer) + this.stylesContainer.textContent = styles + } + + if (!this.themeStyles) { + this.themeStyles = document.createElement("style") + this.shadowRoot.appendChild(this.themeStyles) + } + + // Update theme styles + if (this.cachedThemeStyles !== this.theme) { + this.cachedThemeStyles = this.theme + this.themeStyles.textContent = themeStyles(this.theme) + } + + // Initialize main container + if (!this.dataContainer) { + this.dataContainer = document.createElement("div") + this.dataContainer.className = "container" + this.shadowRoot.appendChild(this.dataContainer) + } + + // Initialize toolbar container + if (!this.toolbarContainer) { + this.toolbarContainer = document.createElement("div") + this.toolbarContainer.className = "toolbar-container" + this.dataContainer.appendChild(this.toolbarContainer) + } + + // Initialize JSON data container + if (!this.jsonDataContainer) { + this.jsonDataContainer = document.createElement("div") + this.jsonDataContainer.className = "json-container" + this.dataContainer.appendChild(this.jsonDataContainer) + } + + // Update container classes + this.dataContainer.classList.toggle("show-data-types", this.showDataTypes) + this.dataContainer.classList.toggle("show-size", this.showSize) + this.dataContainer.classList.toggle("show-copy", this.showCopy) + this.dataContainer.classList.toggle("show-loading-status", this.showLoadingStatus) + this.dataContainer.classList.toggle("show-errors", this.showErrors) + + // Handle toolbar visibility + if (this.showToolbar) { + this.toolbarContainer.style.display = "block" + this.renderToolbar() + } else { + this.toolbarContainer.style.display = "none" + if (this.toolbar) { + this.toolbar.remove() + this.toolbar = null + } + } + + // Always update toolbar state if it exists + if (this.showToolbar && this.toolbar) { + this.toolbar.updateState({ + searchTerm: this.searchTerm, + expandLevel: this.expanded, + indent: this.indent, + theme: this.theme, + infosEnabled: this.showInfos, + dataSize: new TextEncoder().encode(this.data).length, + }) + } + + // Check if we need to re-render JSON (either data changed OR toolbar actions) + const needsJsonRerender = this.cachedData !== this.data || this.isUpdatingFromToolbar + + if (!needsJsonRerender) { + // Even if we don't re-render, update the existing renderer with new settings + if (this.rendererContainer) { + this.rendererContainer.update({ + expanded: this.expanded, + indent: this.indent, + showDataTypes: this.showDataTypes, + showCopy: this.showCopy, + showSize: this.showSize, + expandIconType: this.expandIconType, + searchTerm: this.searchTerm, + }) + } + return + } + + // Render JSON data + let jsonData = this.jsonDataContainer.querySelector(".json-data") + if (!jsonData) { + jsonData = document.createElement("div") + jsonData.className = "json-data" + this.jsonDataContainer.appendChild(jsonData) + } + + // Create or update parser + if (!this.dataParser) { + this.dataParser = new DataParser(this.data) + } else { + this.dataParser.updateData(this.data) + } + + if (this.dataParser.isUrlData && this.showLoadingStatus) { + jsonData.innerHTML = ` +
+
+
+
+
+ ` + } + + try { + const result = await this.dataParser.getParsedData() + + if (this.showErrors && (result.error || !result.data)) { + jsonData.innerHTML = ` +
+ Invalid JSON data +
+ Raw data: +
${this.escapeHtml(this.data)}
+

Error: ${result.error || "Unknown error"}

+
+
+ ` + this.cachedData = this.data + this.rendererContainer = null // Clear renderer on error + return + } + + const parsedData = result.data + jsonData.innerHTML = "" + + // Use the new renderer + const renderedElement = this.renderJson(parsedData) + jsonData.appendChild(renderedElement) + + this.cachedData = this.data + } catch (error) { + console.error("Error rendering JSON:", error) + this.rendererContainer = null // Clear renderer on error + + if (this.showErrors) { + jsonData.innerHTML = ` +
+ Error rendering JSON data +

Error: ${error instanceof Error ? error.message : "Unknown error"}

+
+ ` + } + this.cachedData = this.data + } + } + + private renderJson(data: any): HTMLElement { + const container = document.createElement("div") + container.className = "json-data" + try { + this.rendererContainer = new Container(container, { + data: data, + expanded: this.expanded, + indent: this.indent, + showDataTypes: this.showDataTypes, + showCopy: this.showCopy, + showSize: this.showSize, + expandIconType: this.expandIconType, + searchTerm: this.searchTerm, + }) + return container + } catch (error) { + console.error("Error creating renderer:", error) + this.rendererContainer = null + // Fallback to simple pre element + const pre = document.createElement("pre") + pre.className = "json-data" + pre.textContent = "Error: Unable to render JSON data" + return pre + } + } + + private escapeHtml(text: string): string { + const div = document.createElement("div") + div.textContent = text + return div.innerHTML + } +} + +export default JsonViewer diff --git a/src/package/components/toolbar.ts b/src/package/components/toolbar.ts new file mode 100644 index 0000000..6f9e1a8 --- /dev/null +++ b/src/package/components/toolbar.ts @@ -0,0 +1,373 @@ +export interface ToolbarConfig { + showCopy: boolean + showSize: boolean + showSearch: boolean + showExpandControls: boolean + showIndentControls: boolean + showThemeSelect: boolean + showInfos?: boolean // Optional, for backward compatibility + maxExpandLevel?: number + maxIndentLevel?: number + availableThemes?: string[] +} + +export interface ToolbarState { + searchTerm: string + expandLevel: number + indent: number + dataSize: number + infosEnabled: boolean + theme: string +} + +// eslint-disable-next-line no-unused-vars +export type OnStateChangeCallback = (changes: Partial) => void +export type OnCopyAllCallback = () => void + +export class Toolbar { + private config: ToolbarConfig = { + showCopy: true, + showSize: true, + showSearch: true, + showExpandControls: true, + showIndentControls: true, + showThemeSelect: true, + maxExpandLevel: 12, // Default max expand level + maxIndentLevel: 12, // Default max indent level + } + private state: ToolbarState = { + searchTerm: "", + expandLevel: 0, + indent: 2, + infosEnabled: true, + dataSize: 0, + theme: "default-ligth", + } + + private onStateChange: OnStateChangeCallback + private onCopyAll?: OnCopyAllCallback + private container: HTMLDivElement + private leftGroup: HTMLDivElement + private rightGroup: HTMLDivElement + private actions: Map = new Map() + private searchTimeout?: number + + constructor({ + parent, + config, + initialState, + onStateChange, + onCopyAll, + }: { + parent: HTMLElement + config: Partial + initialState: Partial + onStateChange: OnStateChangeCallback + onCopyAll?: OnCopyAllCallback + }) { + this.onStateChange = onStateChange + this.onCopyAll = onCopyAll + this.state = { + ...this.state, + ...initialState, + } + this.config = { + ...this.config, + ...config, + } + this.container = document.createElement("div") + this.container.className = "toolbar" + parent.appendChild(this.container) + + this.leftGroup = document.createElement("div") + this.leftGroup.className = "options" + this.container.appendChild(this.leftGroup) + + this.rightGroup = document.createElement("div") + this.rightGroup.className = "search-wrapper" + this.container.appendChild(this.rightGroup) + + this.createActions() + } + + private createActions(): void { + // Create all groups + this.createExpandElements() + this.createIndentElements() + this.createThemeElements() + this.createInfosElements() + this.createCopyElement() + this.createSearchElement() + this.createSizeElement() + } + + // Create individual action elements + // Highly efficient element creation - only create if not already present + + // Create expand and collapse buttons + private createExpandElements(): void { + const isVisibleCss = this.config.showExpandControls ? "" : "hidden" + const expandButton = this.createElement("div", `icon-wrapper clickable ${isVisibleCss}`) + const currentValue = this.createElement("span", `display-value ${isVisibleCss}`) + const collapseButton = this.createElement("div", `icon-wrapper clickable ${isVisibleCss}`) + + const expandIcon = this.createElement("span", "icon plus") + expandButton.addEventListener("click", () => { + const newExpandLevel = Math.min(this.config.maxExpandLevel!, this.state.expandLevel + 1) + this.onStateChange({ expandLevel: newExpandLevel }) + }) + expandButton.appendChild(expandIcon) + + currentValue.innerText = this.state.expandLevel.toString() + + const collapseIcon = this.createElement("span", "icon minus") + collapseButton.addEventListener("click", () => { + const newExpandLevel = Math.max(0, this.state.expandLevel - 1) + this.onStateChange({ expandLevel: newExpandLevel }) + }) + collapseButton.appendChild(collapseIcon) + + this.actions.set("collapseButton", collapseButton) + this.actions.set("expandButton", expandButton) + this.actions.set("expandLevelDisplay", currentValue) + this.leftGroup.appendChild(expandButton) + this.leftGroup.appendChild(currentValue) + this.leftGroup.appendChild(collapseButton) + } + + // Create indent and outdent buttons + private createIndentElements(): void { + const isVisibleCss = this.config.showIndentControls ? "" : "hidden" + + const indentButton = this.createElement("div", `icon-wrapper clickable ${isVisibleCss}`) + const indentIcon = this.createElement("span", "icon indent") + + indentButton.addEventListener("click", () => { + const newIndent = Math.min(this.config.maxIndentLevel || 12, this.state.indent + 1) + this.onStateChange({ indent: newIndent }) + }) + + const currentValue = this.createElement("span", `display-value ${isVisibleCss}`) + currentValue.textContent = this.state.indent.toString() + + const outdentButton = this.createElement("div", `icon-wrapper clickable ${isVisibleCss}`) + const outdentIcon = this.createElement("span", "icon outdent") + outdentButton.addEventListener("click", () => { + const newIndent = Math.max(0, this.state.indent - 1) + this.onStateChange({ indent: newIndent }) + }) + + indentButton.appendChild(indentIcon) + this.actions.set("indentButton", indentButton) + outdentButton.appendChild(outdentIcon) + this.actions.set("outdentButton", outdentButton) + this.actions.set("indentDisplay", currentValue) + + this.leftGroup.appendChild(indentButton) + this.leftGroup.appendChild(currentValue) + this.leftGroup.appendChild(outdentButton) + } + + // Create theme selection dropdown + private createThemeElements(): void { + const isVisibleCss = this.config.showThemeSelect && this.config.availableThemes ? "" : "hidden" + const themeButton = this.createElement("select", `theme-select clickable ${isVisibleCss}`) + const themeIcon = this.createElement("span", "icon theme") + + this.config.availableThemes?.forEach((theme) => { + const option = this.createElement("option") as HTMLOptionElement + option.value = theme + option.textContent = theme.charAt(0).toUpperCase() + theme.slice(1) + themeButton.appendChild(option) + }) + + themeButton.addEventListener("change", (event: Event) => { + const selectElement = event.target as HTMLSelectElement + const selectedTheme = selectElement.value + this.onStateChange({ theme: selectedTheme }) + }) + + themeButton.appendChild(themeIcon) + this.actions.set("themeButton", themeButton) + this.leftGroup.appendChild(themeButton) + } + + // Create info button to toggle additional information + private createInfosElements(): void { + const isVisibleCss = this.config.showInfos ? "" : "hidden" + const infosButton = this.createElement("div", `icon-wrapper clickable ${isVisibleCss}`) + const infosIcon = this.createElement("span", `icon info ${this.state.infosEnabled ? "active" : ""}`) + + infosButton.addEventListener("click", () => { + const newState = !this.state.infosEnabled + this.onStateChange({ infosEnabled: newState }) + }) + + infosButton.appendChild(infosIcon) + this.actions.set("infosButton", infosButton) + this.leftGroup.appendChild(infosButton) + } + + private createCopyElement(): void { + const isVisibleCss = this.config.showCopy && this.onCopyAll ? "" : "hidden" + + const copyButton = this.createElement("div", `clickable copy-icon-wrapper ${isVisibleCss}`) + const copyIcon = this.createElement("span", "icon copy") + copyButton.addEventListener("click", () => { + this.onCopyAll?.() + }) + copyButton.appendChild(copyIcon) + this.actions.set("copyButton", copyButton) + this.leftGroup.appendChild(copyButton) + } + + private createSizeElement(): void { + const isVisibleCss = this.config.showSize ? "" : "hidden" + + const sizeDisplay = this.createElement("span", `display-value ${isVisibleCss}`) + sizeDisplay.textContent = this.formatSize(this.state.dataSize) + + this.actions.set("sizeDisplay", sizeDisplay) + this.rightGroup.appendChild(sizeDisplay) + } + + private createSearchElement(): void { + const isVisibleCss = this.config.showSearch ? "" : "hidden" + // Search input + const searchIcon = document.createElement("span") + searchIcon.className = "icon search " + isVisibleCss + const searchInput = this.createElement("input", `search-input ${isVisibleCss}`) as HTMLInputElement + searchInput.type = "text" + searchInput.setAttribute("placeholder", "...") + + // searchInput.placeholder = "Search JSON..." + searchInput.value = this.state.searchTerm || "" + + // Debounced input handler - more efficient than before + searchInput.addEventListener("input", (e: Event) => { + clearTimeout(this.searchTimeout) + if (e.target instanceof HTMLInputElement) { + const searchTerm = e.target.value + this.searchTimeout = window.setTimeout(() => { + if (this.state.searchTerm !== searchTerm) { + this.state.searchTerm = searchTerm + this.onStateChange({ searchTerm }) + } + }, 300) + } + }) + + this.actions.set("searchIcon", searchIcon) + this.actions.set("searchInput", searchInput) + this.rightGroup.appendChild(searchIcon) + this.rightGroup.appendChild(searchInput) + } + + public remove(): void { + this.container.remove() + this.actions.clear() + } + + // Update functions + // Highly efficient updates - only change what's needed + public updateConfig(newConfig: Partial): void { + const changed = Object.keys(newConfig).some( + (key) => this.config[key as keyof ToolbarConfig] !== newConfig[key as keyof ToolbarConfig] + ) + + if (!changed) return + this.actions.get("searchInput")?.classList.toggle("hidden", !newConfig.showSearch) + this.actions.get("sizeDisplay")?.classList.toggle("hidden", !newConfig.showSize) + this.actions.get("copyButton")?.classList.toggle("hidden", !newConfig.showCopy) + this.actions.get("collapseButton")?.classList.toggle("hidden", !newConfig.showExpandControls) + this.actions.get("expandButton")?.classList.toggle("hidden", !newConfig.showExpandControls) + this.actions.get("indentButton")?.classList.toggle("hidden", !newConfig.showIndentControls) + this.actions.get("themeButton")?.classList.toggle("hidden", !newConfig.showThemeSelect) + this.actions.get("infosButton")?.classList.toggle("hidden", !newConfig.showInfos) + + // Update all elements + this.updateState(this.state) + } + + // Highly efficient element updates - only change what's needed + public updateState(changes: Partial): void { + if ("searchTerm" in changes) { + const searchInput = this.actions.get("searchInput") as HTMLInputElement + if (searchInput && searchInput.value !== changes.searchTerm) { + searchInput.value = changes.searchTerm || "" + } + } + + if ("expandLevel" in changes) { + const expandButton = this.actions.get("expandButton") + if (expandButton) { + let newValue = Math.max(0, changes.expandLevel || 0) + if (newValue > this.config.maxExpandLevel!) { + newValue = this.config.maxExpandLevel! + } + this.state.expandLevel = newValue + const expandLevelDisplay = this.actions.get("expandLevelDisplay") + if (expandLevelDisplay) { + expandLevelDisplay.innerHTML = `${changes.expandLevel}` + } + } + } + + if ("indent" in changes) { + const indentDisplay = this.actions.get("indentDisplay") + let newIndent = Math.max(0, changes.indent || 0) + if (newIndent > (this.config.maxIndentLevel || 12)) { + newIndent = this.config.maxIndentLevel || 12 + } + this.state.indent = newIndent + if (indentDisplay) { + indentDisplay.textContent = this.state.indent.toString() + } + } + + if ("theme" in changes) { + const newTheme = changes.theme || "default-light" + this.state.theme = newTheme + const themeButton = this.actions.get("themeButton") as HTMLSelectElement + if (themeButton) { + themeButton.value = newTheme + } + } + + if ("dataSize" in changes) { + const newSize = changes.dataSize || 0 + this.state.dataSize = newSize + const sizeDisplay = this.actions.get("sizeDisplay") + if (sizeDisplay) { + sizeDisplay.textContent = this.formatSize(newSize) + } + } + + if ("infosEnabled" in changes) { + const newValue = changes.infosEnabled === true + this.state.infosEnabled = newValue + const infosButton = this.actions.get("infosButton") + if (infosButton) { + const infosIcon = infosButton.querySelector(".icon") as HTMLElement + if (infosIcon) { + infosIcon.classList.toggle("active", newValue) + } + } + } + } + + // Helper methods + private createElement(tag: string, className?: string): HTMLElement { + const element = document.createElement(tag) + if (className) element.className = className + return element + } + + private formatSize(bytes: number): string { + if (bytes === 0) return "0B" + const k = 1024 + const sizes = ["B", "KB", "MB"] + const i = Math.floor(Math.log(bytes) / Math.log(k)) + return parseFloat((bytes / Math.pow(k, i)).toFixed(1)) + "" + sizes[i] + } +} diff --git a/src/package/index.ts b/src/package/index.ts new file mode 100644 index 0000000..2e3b165 --- /dev/null +++ b/src/package/index.ts @@ -0,0 +1,6 @@ +import { JsonViewer } from "./components/json-viewer" + +// Register the custom element +if (!customElements.get("andypf-json-viewer")) { + customElements.define("andypf-json-viewer", JsonViewer) +} diff --git a/src/package/renderer/container.ts b/src/package/renderer/container.ts new file mode 100644 index 0000000..e756b11 --- /dev/null +++ b/src/package/renderer/container.ts @@ -0,0 +1,131 @@ +import { RendererOptions } from "./types" +import { DataRow } from "./data-row" + +interface ContainerCache { + dataCompareString?: string + expanded?: number | boolean + indent?: number + showCopy?: boolean + showSize?: boolean + showDataTypes?: boolean + expandIconType?: string + searchTerm?: string +} + +export class Container { + private containerElem: HTMLDivElement + private dataRow: DataRow | null = null + private cache: ContainerCache = {} + private onExpandLevelChange?: (level: number) => void + + constructor(root: HTMLElement, options: RendererOptions = {}) { + this.containerElem = document.createElement("div") + this.containerElem.className = "json-renderer" + root.appendChild(this.containerElem) + + this.onExpandLevelChange = options.onExpandLevelChange + + this.update(options) + } + + public update(options: RendererOptions): void { + const { + data, + expanded, + indent, + expandIconType, + showDataTypes, + showSize, + showCopy, + searchTerm, + onExpandLevelChange, + } = options + + // Update callback if provided + if (onExpandLevelChange) { + this.onExpandLevelChange = onExpandLevelChange + } + + // Handle data updates + if (data !== undefined) { + const newDataCompareString = JSON.stringify(data) + + if (this.cache.dataCompareString !== newDataCompareString) { + this.cache.dataCompareString = newDataCompareString + + this.dataRow = new DataRow({ + key: "", + value: data, + expanded: expanded ?? 0, + indent: indent ?? 2, + onToggleExpand: (level) => { + this.cache.expanded = level + // You might want to trigger an event here to update the toolbar + }, + }) + + this.containerElem.replaceChildren(this.dataRow.element) + } + } + + // Collect props that need to be updated on dataRow + const propsToUpdate: any = {} + + // Handle expanded updates + if (expanded !== undefined && this.cache.expanded !== expanded) { + this.cache.expanded = expanded + propsToUpdate.expanded = expanded + } + + // Handle indent updates + if (indent !== undefined && this.cache.indent !== indent) { + this.cache.indent = indent + propsToUpdate.indent = indent + } + + // Handle search term updates + if (searchTerm !== undefined && this.cache.searchTerm !== searchTerm) { + this.cache.searchTerm = searchTerm + propsToUpdate.searchTerm = searchTerm + } + + // Update dataRow if there are changes + if (Object.keys(propsToUpdate).length > 0 && this.dataRow) { + this.dataRow.update(propsToUpdate) + } + + // Handle CSS class updates + if (showCopy !== undefined && this.cache.showCopy !== showCopy) { + this.cache.showCopy = showCopy + this.containerElem.classList.toggle("show-copy", showCopy) + } + + if (showSize !== undefined && this.cache.showSize !== showSize) { + this.cache.showSize = showSize + this.containerElem.classList.toggle("show-size", showSize) + } + + if (showDataTypes !== undefined && this.cache.showDataTypes !== showDataTypes) { + this.cache.showDataTypes = showDataTypes + this.containerElem.classList.toggle("show-data-types", showDataTypes) + } + + if (expandIconType !== undefined && this.cache.expandIconType !== expandIconType) { + if (this.cache.expandIconType) { + this.containerElem.classList.remove(`expand-icon-${this.cache.expandIconType}`) + } + this.containerElem.classList.add(`expand-icon-${expandIconType}`) + this.cache.expandIconType = expandIconType + } + } + + public getElement(): HTMLElement { + return this.containerElem + } + + public getMaxLevel(): number { + return this.dataRow?.maxLevel ?? 0 + } +} + +export default Container diff --git a/src/package/renderer/data-helpers.ts b/src/package/renderer/data-helpers.ts new file mode 100644 index 0000000..a1365f8 --- /dev/null +++ b/src/package/renderer/data-helpers.ts @@ -0,0 +1,94 @@ +import { DataType } from "./types" + +export function dataType(value: any): DataType { + if (value === null) return "null" + if (value === undefined) return "undefined" + if (Array.isArray(value)) return "array" + + if (typeof value === "number") { + if (isNaN(value)) return "nan" + // int vs. float + if (Number.isInteger(value)) return "integer" + return "float" + } + + if (typeof value === "string") { + // Check if string looks like a date + if (isDateString(value)) return "date" + return "string" + } + + if (typeof value === "object") return "object" + return typeof value as DataType +} + +export function formatValue(value: any, type: DataType): string { + switch (type) { + case "string": + return `"${value}"` + case "date": + return `"${value}"` // Keep original string format but will show as date type + case "integer": + return String(value) + case "float": + return String(value) + case "null": + return "null" + case "undefined": + return "undefined" + case "nan": + return "NaN" + case "boolean": + return String(value) + default: + return String(value) + } +} + +export function getItemCount(value: any, type: DataType): number { + if (type === "array") return value.length + if (type === "object") return Object.keys(value).length + return 0 +} + +export function getItems(value: any, type: DataType): Array { + if (type === "array") return value.map((_: any, i: number) => i) + if (type === "object") return Object.keys(value) + return [] +} + +// Helper function to detect date strings +function isDateString(value: string): boolean { + // ISO 8601 date format (most common) + const iso8601Regex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z?$/ + + // Additional date patterns you might want to detect + const datePatterns = [ + iso8601Regex, + /^\d{4}-\d{2}-\d{2}$/, // YYYY-MM-DD + /^\d{2}\/\d{2}\/\d{4}$/, // MM/DD/YYYY + /^\d{2}-\d{2}-\d{4}$/, // MM-DD-YYYY + ] + + // Check if it matches any date pattern + if (datePatterns.some((pattern) => pattern.test(value))) { + // Additional validation: try to parse as date + const date = new Date(value) + return !isNaN(date.getTime()) + } + + return false +} + +// Optional: Helper function to get formatted date for display +export function getFormattedDate(dateString: string): string { + try { + const date = new Date(dateString) + if (isNaN(date.getTime())) return dateString + + // You can customize the format here + return date.toLocaleString() // or date.toISOString(), etc. + } catch { + return dateString + } +} diff --git a/src/package/renderer/data-row.ts b/src/package/renderer/data-row.ts new file mode 100644 index 0000000..8ca9e61 --- /dev/null +++ b/src/package/renderer/data-row.ts @@ -0,0 +1,293 @@ +import { DataRowOptions, UpdateOptions, DataType } from "./types" +import { dataType, formatValue, getItemCount, getItems } from "./data-helpers" + +export class DataRow { + public element: HTMLElement + public maxLevel: number + private row: HTMLDivElement + private isExpanded: boolean + private hasChildren: boolean + private thisDataType: DataType + private childrenRows: DataRow[] = [] + private expandIcon?: HTMLElement + private keyEl?: HTMLElement + private valueEl?: HTMLElement + private level: number + private onToggleExpand?: (level: number) => void + private parentRow?: HTMLElement | null + + constructor(options: DataRowOptions) { + const { key, value, expanded, indent, onToggleExpand, level = 0, parentRow = null } = options + + this.level = level + this.maxLevel = level + this.onToggleExpand = onToggleExpand + this.parentRow = parentRow + this.thisDataType = dataType(value) + this.hasChildren = this.thisDataType === "array" || this.thisDataType === "object" + this.isExpanded = expanded === true || (typeof expanded === "number" && expanded > level) + + // Create main row element + this.row = document.createElement("div") + this.row.className = `data-row ${this.isExpanded ? "expanded" : ""}` + this.row.dataset.key = String(key) + this.row.dataset.level = String(level) + + if (level > 0) { + this.row.style.paddingLeft = `${indent * 5}px` + } + + // Create key-value wrapper + const keyValueWrapper = document.createElement("span") + keyValueWrapper.className = "key-value-wrapper" + this.row.appendChild(keyValueWrapper) + + this.createExpandIcon(keyValueWrapper) + this.createKey(keyValueWrapper, key) + this.createValue(keyValueWrapper, value, expanded, indent) + this.createCopyIcon(keyValueWrapper, value, indent) + + this.element = this.row + } + + private toggleExpand = (): void => { + this.row.classList.toggle("expanded") + if (this.onToggleExpand) { + if (this.row.classList.contains("expanded")) { + this.onToggleExpand(this.level + 1) + } else { + this.onToggleExpand(this.level) + } + } + } + + private createExpandIcon(parent: HTMLElement): void { + if (!this.hasChildren) return + + const expandIconWrapper = document.createElement("span") + expandIconWrapper.className = "icon-wrapper" + parent.appendChild(expandIconWrapper) + + this.expandIcon = document.createElement("span") + this.expandIcon.className = "expand icon clickable" + this.expandIcon.setAttribute("title", this.isExpanded ? "Collapse" : "Expand") + expandIconWrapper.appendChild(this.expandIcon) + expandIconWrapper.addEventListener("click", this.toggleExpand) + } + private createKey(parent: HTMLElement, key: string | number): void { + // Explizite Prüfung für Fälle, wo kein Key angezeigt werden soll + // Für Root-Elemente (key === '') oder null/undefined + if (key === null || key === undefined || (typeof key === "string" && key === "")) { + return + } + + const keyDataType = typeof key + this.keyEl = document.createElement("span") + this.keyEl.className = `key clickable ${keyDataType === "number" ? "number" : ""}` + + // Array-Indizes und Objekt-Keys richtig anzeigen + this.keyEl.textContent = String(key) + + this.keyEl.addEventListener("click", this.toggleExpand) + parent.appendChild(this.keyEl) + + // Add colon + const colonEl = document.createElement("span") + colonEl.classList.add("colon") + colonEl.textContent = ":" + parent.appendChild(colonEl) + } + + private createValue(parent: HTMLElement, value: any, expanded: number | boolean, indent: number): void { + if (this.hasChildren) { + this.createComplexValue(parent, value, expanded, indent) + } else { + this.createSimpleValue(parent, value) + } + } + + private createComplexValue(parent: HTMLElement, value: any, expanded: number | boolean, indent: number): void { + // Opening parenthesis + const openingParenthesis = document.createElement("span") + openingParenthesis.className = "opening-parenthesis" + openingParenthesis.textContent = this.thisDataType === "array" ? "[" : "{" + parent.appendChild(openingParenthesis) + + // Ellipsis + const ellipsis = document.createElement("span") + ellipsis.className = "ellipsis clickable" + ellipsis.textContent = "..." + ellipsis.addEventListener("click", this.toggleExpand) + parent.appendChild(ellipsis) + + // Closing parenthesis + const closingParenthesis = document.createElement("span") + closingParenthesis.className = "closing-parenthesis" + closingParenthesis.textContent = this.thisDataType === "array" ? "]" : "}" + parent.appendChild(closingParenthesis) + + // Items size + const itemsSize = document.createElement("span") + const length = getItemCount(value, this.thisDataType) + itemsSize.className = "items-size" + itemsSize.textContent = `${length} item${length === 1 ? "" : "s"}` + parent.appendChild(itemsSize) + + // Create children rows + this.createChildrenRows(value, expanded, indent) + + // Expanded closing parenthesis + const expandedClosingParenthesis = document.createElement("span") + expandedClosingParenthesis.className = "closing-parenthesis" + expandedClosingParenthesis.textContent = this.thisDataType === "array" ? "]" : "}" + this.row.appendChild(expandedClosingParenthesis) + } + + private createSimpleValue(parent: HTMLElement, value: any): void { + let valueType: HTMLElement | null = null + + if (!["nan", "undefined", "null"].includes(this.thisDataType)) { + valueType = document.createElement("span") + valueType.className = "type" + valueType.textContent = this.thisDataType.toLowerCase() + } + + const valueWrapper = document.createElement("span") + valueWrapper.className = `value ${this.thisDataType.toLowerCase()}` + + this.valueEl = document.createElement("span") + this.valueEl.className = "value-data" + this.valueEl.textContent = formatValue(value, this.thisDataType) + + if (valueType) valueWrapper.appendChild(valueType) + valueWrapper.appendChild(this.valueEl) + parent.appendChild(valueWrapper) + } + + private createChildrenRows(value: any, expanded: number | boolean, indent: number): void { + const items = getItems(value, this.thisDataType) + + items.forEach((key) => { + const subRow = new DataRow({ + key, + value: value[key], + expanded, + indent, + onToggleExpand: this.onToggleExpand, + level: this.level + 1, + parentRow: this.row, + }) + + this.childrenRows.push(subRow) + this.row.appendChild(subRow.element) + this.maxLevel = Math.max(this.maxLevel, subRow.maxLevel) + }) + } + + private createCopyIcon(parent: HTMLElement, value: any, indent: number): void { + const copyIcon = document.createElement("span") + copyIcon.className = "copy icon" + copyIcon.setAttribute("title", "Copy to clipboard") + + const copyIconWrapper = document.createElement("span") + copyIconWrapper.className = "icon-wrapper" + copyIconWrapper.addEventListener("click", () => { + navigator.clipboard + .writeText(JSON.stringify(value, null, indent)) + .then(() => console.log("Copied to clipboard")) + .catch((err) => console.error("Failed to copy:", err)) + }) + + copyIconWrapper.appendChild(copyIcon) + parent.appendChild(copyIconWrapper) + } + + private search(searchTerm: string): void { + const searchElements = [this.keyEl, this.valueEl].filter(Boolean) as HTMLElement[] + let found = false + + searchElements.forEach((el) => { + const originalText = el.dataset.originalText || el.textContent || "" + + // Store original text if not already stored + if (!el.dataset.originalText) { + el.dataset.originalText = originalText + } + + // Always reset to original text first + el.innerHTML = this.escapeHtml(originalText) + + // If no search term, just return after clearing + if (!searchTerm || searchTerm.trim() === "") { + return + } + + // Perform search + const regex = new RegExp(this.escapeRegExp(searchTerm), "gi") + const matches = [...originalText.matchAll(regex)] + + if (matches.length > 0) { + found = true + let highlightedText = originalText + + // Replace matches with highlighted version (reverse order to maintain indices) + matches.reverse().forEach((match) => { + const start = match.index! + const end = start + match[0].length + highlightedText = + highlightedText.substring(0, start) + + `${this.escapeHtml(match[0])}` + + highlightedText.substring(end) + }) + + el.innerHTML = highlightedText + } + }) + + // If found, expand this row and parent + if (found && !this.row.classList.contains("expanded")) { + this.toggleExpand() + if (this.parentRow) { + this.parentRow.classList.add("expanded") + } + } + + // Always update children with search term + this.childrenRows.forEach((row) => row.update({ searchTerm })) + } + + private escapeRegExp(string: string): string { + return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + } + + private escapeHtml(text: string): string { + const div = document.createElement("div") + div.textContent = text + return div.innerHTML + } + + public update(options: UpdateOptions): void { + const { expanded, indent, searchTerm } = options + + if (indent !== undefined && this.level > 0) { + this.row.style.paddingLeft = `${indent * 5}px` + } + + if (expanded !== undefined) { + this.isExpanded = expanded === true || (typeof expanded === "number" && expanded > this.level) + this.row.classList.toggle("expanded", this.isExpanded) + if (this.expandIcon) { + this.expandIcon.title = this.isExpanded ? "Collapse" : "Expand" + } + } + + if (searchTerm !== undefined) { + this.search(searchTerm) + } + + // Update children + this.childrenRows.forEach((row) => row.update(options)) + } +} + +export default DataRow diff --git a/src/package/renderer/types.d.ts b/src/package/renderer/types.d.ts new file mode 100644 index 0000000..ac78e0f --- /dev/null +++ b/src/package/renderer/types.d.ts @@ -0,0 +1,39 @@ +export interface RendererOptions { + data?: any + expanded?: number | boolean + indent?: number + expandIconType?: "arrow" | "square" | "circle" + showDataTypes?: boolean + showCopy?: boolean + showSize?: boolean + searchTerm?: string + onExpandLevelChange?: (level: number) => void +} + +export interface DataRowOptions { + key: string | number + value: any + expanded: number | boolean + indent: number + onToggleExpand?: (level: number) => void + level?: number + parentRow?: HTMLElement | null +} + +export interface UpdateOptions { + expanded?: number | boolean + indent?: number + searchTerm?: string +} + +export type DataType = + | "string" + | "integer" + | "float" + | "boolean" + | "null" + | "undefined" + | "object" + | "array" + | "nan" + | "date" diff --git a/src/package/utils/data-parser.ts b/src/package/utils/data-parser.ts new file mode 100644 index 0000000..41cfaca --- /dev/null +++ b/src/package/utils/data-parser.ts @@ -0,0 +1,96 @@ +export class DataParser { + private isUrl = false + private cachedData: any = null + private lastUrl: string | null = null + private data: string | null = null + + constructor(data: string) { + this.updateData(data) + } + + private async fetchJson(url: string): Promise { + const response = await fetch(url) + if (!response.ok) { + throw new Error(`HTTP ${response.status}`) + } + return response.json() + } + + public updateData(newData: string): void { + if (this.data !== newData) { + this.data = newData + this.isUrl = this.isValidUrl(newData) + // Clear cache if URL changed + if (this.lastUrl !== newData) { + this.cachedData = null + this.lastUrl = null + } + } + } + + private isValidUrl(str: string): boolean { + try { + const url = new URL(str) + return url.protocol === "http:" || url.protocol === "https:" + } catch { + return false + } + } + + public async getParsedData(): Promise<{ + data: any + source: string + error?: string + }> { + if (!this.data) { + return { data: null, source: "none", error: "No data provided" } + } + + // Handle URL + if (this.isUrl) { + // Use cache if available + if (this.cachedData && this.lastUrl === this.data) { + return { data: this.cachedData, source: "url" } + } + + try { + const data = await this.fetchJson(this.data) + this.cachedData = data + this.lastUrl = this.data + return { data, source: "url" } + } catch (error) { + return { + data: null, + source: "url", + error: error instanceof Error ? error.message : "Fetch failed", + } + } + } + + // Handle JSON string + try { + const data = JSON.parse(this.data) + return { data, source: "json" } + } catch (error) { + console.log("JSON parsing error:", error) + return { + data: null, + source: "json", + error: "Invalid JSON", + } + } + } + + public clearCache(): void { + this.cachedData = null + this.lastUrl = null + } + + public get size(): number { + return JSON.stringify(this.cachedData || {}).length + } + + public get isUrlData(): boolean { + return this.isUrl + } +} diff --git a/src/react/JsonViewer.jsx b/src/react/JsonViewer.jsx deleted file mode 100644 index 88940c6..0000000 --- a/src/react/JsonViewer.jsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from "react" -import "../component" - -// eslint-disable-next-line react/prop-types -const JsonViewer = ({ data, ...props }) => { - const ref = React.useRef(null) - - React.useEffect(() => { - if (ref.current) { - ref.current.data = data - } - }, [data]) - return -} - -export default JsonViewer diff --git a/src/renderer/container.js b/src/renderer/container.js deleted file mode 100644 index b010ce8..0000000 --- a/src/renderer/container.js +++ /dev/null @@ -1,115 +0,0 @@ -import DataRow from "./data-row" -import Toolbar from "./toolbar" - -function Container(root, options = {}) { - const containerElem = document.createElement("div") - containerElem.className = "container" - root.appendChild(containerElem) - let dataRow = null - let toolbar = null - - const cache = {} - - this.update = ({ data, expanded, indent, expandIconType, showDataTypes, showToolbar, showSize, showCopy }) => { - // DATA - if (data) { - const newDataCompareString = JSON.stringify(data) - // if data has not changed, do nothing - if (cache.dataComapreString !== newDataCompareString) { - cache.dataComapreString = newDataCompareString - - dataRow = new DataRow({ - key: "", - value: data, - expanded, - indent, - onToggleExpand: (level) => { - if (toolbar) toolbar.expanded = level - cache.expanded = level - }, - }) - containerElem.replaceChildren(dataRow.element) - if (cache.showToolbar && toolbar) { - containerElem.prepend(toolbar.element) - toolbar.maxExpandLevel = dataRow.maxLevel - toolbar.refresh() - } - } - } - if (showToolbar !== undefined && cache.showToolbar !== showToolbar) { - cache.showToolbar = showToolbar - if (showToolbar) { - if (!toolbar) - toolbar = new Toolbar({ - expanded: cache.expanded, - indent: cache.indent, - onChange: ({ expanded, indent, showDetails }) => { - const options = { expanded, indent } - if (showDetails !== undefined) { - options.showCopy = showDetails - options.showSize = showDetails - options.showDataTypes = showDetails - } - - this.update(options) - }, - onSearch: (searchTerm) => { - if (dataRow) dataRow.update({ searchTerm }) - }, - }) - if (dataRow) toolbar.maxExpandLevel = dataRow.maxLevel - containerElem.prepend(toolbar.element) - } else { - const element = containerElem.querySelector(".toolbar") - if (element) element.remove() - } - } - - const propsToBeUpdated = {} - // EXPANDED - if (expanded !== undefined && cache.expanded !== expanded) { - cache.expanded = expanded - propsToBeUpdated.expanded = expanded - } - // INDENT - if (indent !== undefined && cache.indent !== indent) { - cache.indent = indent - propsToBeUpdated.indent = indent - } - if (Object.keys(propsToBeUpdated).length > 0 && dataRow) { - dataRow.update(propsToBeUpdated) - } - - // SHOW COPY - if (showCopy !== undefined && cache.showCopy !== showCopy) { - cache.showCopy = showCopy - containerElem.classList.toggle("show-copy", showCopy) - } - // SHOW SIZE - if (showSize !== undefined && cache.showSize !== showSize) { - cache.showSize = showSize - containerElem.classList.toggle("show-size", showSize) - if (toolbar) { - toolbar.updateShowDetails(cache.showSize || cache.showDataTypes) - } - } - // SHOW DATA TYPES - if (showDataTypes !== undefined && cache.showDataTypes !== showDataTypes) { - cache.showDataTypes = showDataTypes - containerElem.classList.toggle("show-data-types", showDataTypes) - if (toolbar) { - toolbar.updateShowDetails(cache.showSize || cache.showDataTypes) - } - } - // EXPAND ICON TYPE - if (expandIconType !== undefined && cache.expandIconType !== expandIconType) { - containerElem.classList.add(`expand-icon-${expandIconType}`) - containerElem.classList.remove(`expand-icon-${cache.expandIconType}`) - cache.expandIconType = expandIconType - } - } - - this.update(options) -} - -export default Container diff --git a/src/renderer/data-row.js b/src/renderer/data-row.js deleted file mode 100644 index 9dc0d7b..0000000 --- a/src/renderer/data-row.js +++ /dev/null @@ -1,212 +0,0 @@ -import { dataType } from "../data-helpers" - -const DataRow = function ({ key, value, expanded, indent, onToggleExpand, level = 0, parentRow }) { - const row = document.createElement("div") - this.maxLevel = level - - const thisDataType = dataType(value) - const hasChildren = thisDataType === "array" || thisDataType === "object" - let isExpanded = expanded === true || expanded > level - let expandIcon, childrenRows, keyEl, valueEl - - // ROW CONTAINER - row.className = `data-row ${isExpanded ? "expanded" : ""}` - row.dataset.key = key - row.dataset.level = level - if (level > 0) row.style.paddingLeft = `${indent * 5}px` - - const keyValueWrapper = document.createElement("span") - keyValueWrapper.className = "key-value-wrapper" - row.appendChild(keyValueWrapper) - - const toggleExpand = () => { - row.classList.toggle("expanded") - - if (onToggleExpand) { - if (row.classList.contains("expanded")) { - onToggleExpand(level + 1) - } else { - onToggleExpand(level) - } - } - } - - // EXPAND ICON - if (hasChildren) { - const expandIconWrapper = document.createElement("span") - expandIconWrapper.className = "icon-wrapper" - keyValueWrapper.appendChild(expandIconWrapper) - - // create the icon (i tag) using the DOM API - expandIcon = document.createElement("span") - expandIcon.className = `expand icon clickable` - expandIcon.setAttribute("title", isExpanded ? "Collapse" : "Expand") - expandIconWrapper.appendChild(expandIcon) - - expandIconWrapper.addEventListener("click", () => toggleExpand()) - } - - // KEY VALUE WRAPPER - if (key !== null && key !== "") { - // KEY - const keyDataType = typeof key - keyEl = document.createElement("span") - keyEl.className = `key clickable ${keyDataType === "number" ? "number" : ""}` - keyEl.textContent = keyDataType === "number" ? key : `${key}` - keyEl.addEventListener("click", () => toggleExpand()) - keyValueWrapper.appendChild(keyEl) - - // COLON - const colonEl = document.createElement("span") - colonEl.classList.add("colon") - colonEl.textContent = ":" - keyValueWrapper.appendChild(colonEl) - } - - if (hasChildren) { - // OPENING PARENTHESIS - const openingParenthesis = document.createElement("span") - openingParenthesis.className = "opening-parenthesis" - openingParenthesis.textContent = thisDataType === "array" ? "[" : "{" - keyValueWrapper.appendChild(openingParenthesis) - - // ELLIPSIS - const ellipsis = document.createElement("span") - ellipsis.className = "ellipsis clickable" - ellipsis.textContent = "..." - ellipsis.addEventListener("click", () => toggleExpand()) - keyValueWrapper.appendChild(ellipsis) - - // CLOSING PARENTHESIS - const closingParenthesis = document.createElement("span") - closingParenthesis.className = "closing-parenthesis" - closingParenthesis.textContent = thisDataType === "array" ? "]" : "}" - keyValueWrapper.appendChild(closingParenthesis) - - // ITEMS SIZE - const itemsSize = document.createElement("span") - const length = thisDataType === "array" ? value.length : Object.keys(value).length - itemsSize.className = "items-size" - itemsSize.textContent = `${length} item${length === 1 ? "" : "s"}` - keyValueWrapper.appendChild(itemsSize) - - // CHILDREN ROWS - childrenRows = [] - - const items = thisDataType === "array" ? value.map((v, i) => i) : Object.keys(value) - items.forEach((key) => { - const subRow = new DataRow({ - key, - value: value[key], - expanded, - indent, - onToggleExpand, - level: level + 1, - parentRow: row, - }) - childrenRows.push(subRow) - row.appendChild(subRow.element) - this.maxLevel = Math.max(this.maxLevel, subRow.maxLevel) - }) - - // EXPANDED CLOSING PARENTHESIS - const expandedClosingParenthesis = document.createElement("span") - expandedClosingParenthesis.className = "closing-parenthesis" - expandedClosingParenthesis.textContent = thisDataType === "array" ? "]" : "}" - row.appendChild(expandedClosingParenthesis) - } else { - // VALUE - let valueType = null - if (!["nan", "NaN", "undefined", "null"].includes(thisDataType)) { - valueType = document.createElement("span") - valueType.className = `type` - valueType.textContent = thisDataType.toLowerCase() - } - - const valueWrapper = document.createElement("span") - valueWrapper.className = `value ${thisDataType.toLowerCase()}` - valueEl = document.createElement("span") - valueEl.className = "value-data" - valueEl.textContent = thisDataType === "string" ? `"${value}"` : value - if (valueType) valueWrapper.appendChild(valueType) - valueWrapper.appendChild(valueEl) - keyValueWrapper.appendChild(valueWrapper) - } - - // COPY ICON - const copyIcon = document.createElement("span") - copyIcon.className = "copy icon" - copyIcon.setAttribute("title", "Copy to clipboard") - - const copyIconWrapper = document.createElement("span") - copyIconWrapper.className = "icon-wrapper" - copyIconWrapper.addEventListener("click", () => { - navigator.clipboard.writeText(JSON.stringify(value, null, indent)) - }) - copyIconWrapper.appendChild(copyIcon) - keyValueWrapper.appendChild(copyIconWrapper) - - // this function highlights the search term - const search = (searchTerm) => { - // create a regular expression from the search term - const regex = new RegExp(searchTerm, "gi") - // initialize an array of elements to search - const searchElements = [] - // add the key and value elements to the array if they exist - if (keyEl) searchElements.push(keyEl) - if (valueEl) searchElements.push(valueEl) - - let found = false - // loop through the elements and highlight the matches - searchElements.forEach((el) => { - const string = el.textContent - // remove any existing matches (RESETTING THE OLD SEARCH) - el.innerHTML = string - - // if the search term is empty, return - if (!searchTerm || searchTerm === "") return - // find all the indexes of the search term in the string - const indexes = [...string.matchAll(regex)].map((m) => m.index) - // if there are matches, expand the row - const newHtml = [] - let lastIndex = 0 - indexes.forEach((index) => { - found = true - newHtml.push(string.slice(lastIndex, index)) - newHtml.push(`${searchTerm}`) - lastIndex = index + searchTerm.length - }) - newHtml.push(string.slice(lastIndex)) - el.innerHTML = newHtml.join("") - }) - - // if the search term was found, expand the row - if (found && !row.classList.contains("expanded")) { - toggleExpand() - // if the row has a parent, expand it too - if (parentRow) parentRow.classList.add("expanded") - } - } - - // this function updates the icon based on the expanded state - this.update = ({ expanded, indent, searchTerm }) => { - if (indent !== undefined && level > 0) { - row.style.paddingLeft = `${indent * 5}px` - } - - if (expanded !== undefined) { - isExpanded = expanded === true || expanded > level - row.classList.toggle("expanded", isExpanded) - if (expandIcon) expandIcon.title = isExpanded ? "Collapse" : "Expand" - } - if (searchTerm !== undefined && searchTerm !== null) { - search(searchTerm) - } - - if (childrenRows) childrenRows.forEach((r) => r.update({ expanded, indent, searchTerm })) - } - - this.element = row -} - -export default DataRow diff --git a/src/renderer/toolbar.js b/src/renderer/toolbar.js deleted file mode 100644 index 5e9a1ed..0000000 --- a/src/renderer/toolbar.js +++ /dev/null @@ -1,127 +0,0 @@ -const Toolbar = function ({ expanded, indent, onChange, onSearch, showDetails }) { - this.indent = indent || 2 - this.expanded = typeof expanded === "number" ? expanded : 2 - this.showDetails = showDetails !== false - this.maxExpandLevel = 0 - - let searchInput - - const toolbar = document.createElement("div") - toolbar.className = "toolbar" - - // OPTIONS - const options = document.createElement("div") - options.className = "options" - toolbar.appendChild(options) - - // SEARCH WRAPPER - const searchWrapper = document.createElement("div") - searchWrapper.className = "search-wrapper" - toolbar.appendChild(searchWrapper) - - // REFRESH ICON - const refreshIconWrapper = document.createElement("div") - refreshIconWrapper.className = "icon-wrapper clickable" - options.appendChild(refreshIconWrapper) - const refreshIcon = document.createElement("span") - refreshIcon.className = "icon refresh" - refreshIconWrapper.onclick = () => this.refresh() - refreshIconWrapper.appendChild(refreshIcon) - - // EXPAND ICON - const expandIconWrapper = document.createElement("div") - expandIconWrapper.className = "icon-wrapper clickable" - options.appendChild(expandIconWrapper) - const expandIcon = document.createElement("span") - expandIcon.className = "icon plus" - expandIconWrapper.appendChild(expandIcon) - expandIconWrapper.onclick = () => { - if (this.expanded < this.maxExpandLevel) this.expanded += 1 - onChange({ expanded: this.expanded }) - } - - // COLLAPSE ICON - const collapseIconWrapper = document.createElement("div") - collapseIconWrapper.className = "icon-wrapper clickable" - options.appendChild(collapseIconWrapper) - - const collapseIcon = document.createElement("span") - collapseIcon.className = "icon minus" - collapseIconWrapper.appendChild(collapseIcon) - collapseIconWrapper.onclick = () => { - if (this.expanded > this.maxExpandLevel) this.expanded = this.maxExpandLevel - if (this.expanded > 0) this.expanded -= 1 - onChange({ expanded: this.expanded }) - } - - // INDENT ICON - const indentIconWrapper = document.createElement("div") - indentIconWrapper.className = "icon-wrapper clickable" - options.appendChild(indentIconWrapper) - const indentIcon = document.createElement("span") - indentIcon.className = "icon indent" - indentIconWrapper.onclick = () => { - this.indent += 1 - onChange({ indent: this.indent }) - } - indentIconWrapper.appendChild(indentIcon) - - // OUTDENT ICON - const outdentIconWrapper = document.createElement("div") - outdentIconWrapper.className = "icon-wrapper clickable" - options.appendChild(outdentIconWrapper) - const outdentIcon = document.createElement("span") - outdentIcon.className = "icon outdent" - outdentIconWrapper.onclick = () => { - this.indent -= 1 - onChange({ indent: this.indent }) - } - outdentIconWrapper.appendChild(outdentIcon) - - // INFO ICON - const infoIconWrapper = document.createElement("div") - infoIconWrapper.className = "icon-wrapper clickable" - options.appendChild(infoIconWrapper) - const infoIcon = document.createElement("span") - infoIcon.className = `icon info ${this.showDetails ? "active" : ""}` - infoIconWrapper.onclick = () => { - infoIcon.classList.toggle("active") - this.showDetails = !this.showDetails - onChange({ - showDetails: this.showDetails, - }) - } - infoIconWrapper.appendChild(infoIcon) - - // SEARCH INPUT - const searchIcon = document.createElement("span") - searchIcon.className = "icon search" - searchWrapper.appendChild(searchIcon) - searchInput = document.createElement("input") - searchInput.className = "search-input" - searchInput.placeholder = "Search" - searchInput.oninput = (e) => { - onSearch(e.target.value) - } - searchWrapper.appendChild(searchInput) - - this.refresh = () => { - this.expanded = 1 - this.indent = 2 - if (searchInput) searchInput.value = "" - onChange({ indent: 2, expanded: 1 }) - onSearch("") - } - - this.updateShowDetails = (value) => { - this.showDetails = value - if (this.showDetails) { - infoIcon.classList.add("active") - } else { - infoIcon.classList.remove("active") - } - } - this.element = toolbar -} - -export default Toolbar diff --git a/src/validator.js b/src/validator.js deleted file mode 100644 index 0da5f80..0000000 --- a/src/validator.js +++ /dev/null @@ -1,52 +0,0 @@ -export const validateBoolean = (value) => { - if (typeof value === "boolean") return value - if (value === "true") return true - else if (value === "false") return false - - throw new Error(`should be a boolean!`) -} - -export const validateString = (value) => { - if (typeof value === "string") return value - - throw new Error(`should be a string!`) -} - -export const validatePositiveNumber = (value) => { - if (typeof value === "number" && value >= 0) return value - if (typeof value === "string") { - value = parseFloat(value) - } - if (isNaN(value) || value < 0) { - throw new Error(`should be a positive number!`) - } - return value -} - -export const validateBooleanOrPositiveNumber = (value) => { - if (typeof value === "boolean") return value - if (typeof value === "number") return value - if (value === "true") return true - else if (value === "false") return false - else if (typeof value === "string") { - value = parseFloat(value) - if (!isNaN(value) && value >= 0) return value - } - - throw new Error(`should be a boolean or a positive number!`) -} - -export const validateStringOrJson = (value) => { - if (typeof value === "object") return value - if (typeof value === "string") { - try { - return JSON.parse(value) - // eslint-disable-next-line no-unused-vars - } catch (error) { - // console.debug(error) - return value - } - } - - throw new Error(`should be a string or JSON!`) -} diff --git a/tests/__mocks__/fileMock.js b/tests/__mocks__/fileMock.js deleted file mode 100644 index 5eaf89e..0000000 --- a/tests/__mocks__/fileMock.js +++ /dev/null @@ -1 +0,0 @@ -export default "test-file-stub" diff --git a/tests/__mocks__/styleMock.js b/tests/__mocks__/styleMock.js deleted file mode 100644 index 1efb337..0000000 --- a/tests/__mocks__/styleMock.js +++ /dev/null @@ -1,6 +0,0 @@ -import { readFileSync } from "fs" -import { resolve } from "path" - -const cssText = readFileSync(resolve(__dirname, "../../src/styles.css"), "utf8") - -export default cssText diff --git a/tests/component.test.js b/tests/component.test.js deleted file mode 100644 index 97672de..0000000 --- a/tests/component.test.js +++ /dev/null @@ -1,161 +0,0 @@ -import "../src/component.js" - -globalThis.console.warn = jest.fn() - -describe("JsonViewer", () => { - it("should be defined", () => { - const jsonViewer = document.createElement("andypf-json-viewer") - expect(jsonViewer).toBeDefined() - }) - - it("should contain shadow root", () => { - const jsonViewer = document.createElement("andypf-json-viewer") - expect(jsonViewer.shadowRoot).toBeDefined() - }) - - it("should contain styles", () => { - const jsonViewer = document.createElement("andypf-json-viewer") - expect(jsonViewer.shadowRoot.querySelector("style")).toBeDefined() - }) - - it("should set theme", () => { - const jsonViewer = document.createElement("andypf-json-viewer") - jsonViewer.theme = "default-light" - expect(jsonViewer.options.theme).toEqual("default-light") - }) - - it("should log warning for invalid theme", () => { - const jsonViewer = document.createElement("andypf-json-viewer") - jsonViewer.theme = "test" - expect(jsonViewer.options.theme).not.toEqual("test") - expect(console.warn).toHaveBeenCalledWith(expect.anything(), expect.stringContaining("test not found")) - }) - - it("should set indent", () => { - const jsonViewer = document.createElement("andypf-json-viewer") - jsonViewer.indent = 4 - expect(jsonViewer.options.indent).toEqual(4) - }) - it("should set indent as string", () => { - const jsonViewer = document.createElement("andypf-json-viewer") - jsonViewer.indent = "4" - expect(jsonViewer.options.indent).toEqual(4) - }) - it("should warn for invalid indent", () => { - const jsonViewer = document.createElement("andypf-json-viewer") - jsonViewer.indent = "test" - expect(jsonViewer.options.indent).not.toEqual("test") - expect(console.warn).toHaveBeenCalledWith(expect.anything(), expect.stringContaining("should be a positive number")) - }) - - it("should set expanded as number", () => { - const jsonViewer = document.createElement("andypf-json-viewer") - jsonViewer.expanded = 2 - expect(jsonViewer.options.expanded).toEqual(2) - }) - - it("should set expanded as boolean", () => { - const jsonViewer = document.createElement("andypf-json-viewer") - jsonViewer.expanded = true - expect(jsonViewer.options.expanded).toEqual(true) - }) - it("should set expanded number as string", () => { - const jsonViewer = document.createElement("andypf-json-viewer") - jsonViewer.expanded = "2" - expect(jsonViewer.options.expanded).toEqual(2) - }) - it("should set expanded boolean as string", () => { - const jsonViewer = document.createElement("andypf-json-viewer") - jsonViewer.expanded = "true" - expect(jsonViewer.options.expanded).toEqual(true) - }) - - it("should warn for invalid expanded", () => { - const jsonViewer = document.createElement("andypf-json-viewer") - jsonViewer.expanded = "test" - expect(jsonViewer.options.expanded).not.toEqual("test") - expect(console.warn).toHaveBeenCalledWith( - expect.anything(), - expect.stringContaining("should be a boolean or a positive number") - ) - }) - - it("should set showDataTypes", () => { - const jsonViewer = document.createElement("andypf-json-viewer") - jsonViewer.showDataTypes = false - expect(jsonViewer.options.showDataTypes).toEqual(false) - }) - it("should set showDataTypes as string", () => { - const jsonViewer = document.createElement("andypf-json-viewer") - jsonViewer.showDataTypes = "false" - expect(jsonViewer.options.showDataTypes).toEqual(false) - }) - it("should warn for invalid showDataTypes", () => { - const jsonViewer = document.createElement("andypf-json-viewer") - jsonViewer.showDataTypes = "test" - expect(jsonViewer.options.showDataTypes).not.toEqual("test") - expect(console.warn).toHaveBeenCalledWith(expect.anything(), expect.stringContaining("should be a boolean")) - }) - - it("should set expandIconType", () => { - const jsonViewer = document.createElement("andypf-json-viewer") - jsonViewer.expandIconType = "arrow" - expect(jsonViewer.options.expandIconType).toEqual("arrow") - }) - it("should warn for invalid expandIconType", () => { - const jsonViewer = document.createElement("andypf-json-viewer") - jsonViewer.expandIconType = "test" - expect(jsonViewer.options.expandIconType).not.toEqual("test") - expect(console.warn).toHaveBeenCalledWith( - expect.anything(), - expect.stringContaining("should be one of arrow, square, circle") - ) - }) - - it("should set showCopy", () => { - const jsonViewer = document.createElement("andypf-json-viewer") - jsonViewer.showCopy = false - expect(jsonViewer.options.showCopy).toEqual(false) - }) - - it("should set showCopy as string", () => { - const jsonViewer = document.createElement("andypf-json-viewer") - jsonViewer.showCopy = "false" - expect(jsonViewer.options.showCopy).toEqual(false) - }) - - it("should warn for invalid showCopy", () => { - const jsonViewer = document.createElement("andypf-json-viewer") - jsonViewer.showCopy = "test" - expect(jsonViewer.options.showCopy).not.toEqual("test") - expect(console.warn).toHaveBeenCalledWith(expect.anything(), expect.stringContaining("should be a boolean")) - }) - - // It seems that the showDetails button is always in the active state by default, - // even when json-viewer is initialized with show-data-types="false" and - // show-size="false". In that scenario the button then requires two clicks - // before it has the expected toggling effect. - it("should not show details if show-data-types and show.size are false", () => { - const jsonViewer = document.createElement("andypf-json-viewer") - jsonViewer.setAttribute("show-toolbar", "true") - jsonViewer.setAttribute("show-data-types", "false") - jsonViewer.setAttribute("show-size", "false") - expect(jsonViewer.shadowRoot.querySelector(".icon.info").classList).not.toContain("active") - }) - - it("should show details if show-data-types is true and show.size is false", () => { - const jsonViewer = document.createElement("andypf-json-viewer") - jsonViewer.setAttribute("show-toolbar", "true") - jsonViewer.setAttribute("show-data-types", "true") - jsonViewer.setAttribute("show-size", "false") - expect(jsonViewer.shadowRoot.querySelector(".icon.info").classList).toContain("active") - }) - - it("should show details if show-data-types is false and show.size is true", () => { - const jsonViewer = document.createElement("andypf-json-viewer") - jsonViewer.setAttribute("show-toolbar", "true") - jsonViewer.setAttribute("show-data-types", "false") - jsonViewer.setAttribute("show-size", "true") - expect(jsonViewer.shadowRoot.querySelector(".icon.info").classList).toContain("active") - }) -}) diff --git a/tests/data-helpers.test.js b/tests/data-helpers.test.js deleted file mode 100644 index d3dfc66..0000000 --- a/tests/data-helpers.test.js +++ /dev/null @@ -1,140 +0,0 @@ -import { isUrl, parseJson, dataType } from "../src/data-helpers" - -describe("data-helper", () => { - describe("isUrl", () => { - it("should return true if the string starts with http:// or https://", () => { - expect(isUrl("http://example.com")).toBe(true) - expect(isUrl("https://example.com")).toBe(true) - }) - - it("should return false if the string does not start with http:// or https://", () => { - expect(isUrl("example.com")).toBe(false) - }) - - it("should return false if the string is not a valid URL", () => { - expect(isUrl("http://")).toBe(false) - }) - - it("should return false if the string is not a string", () => { - expect(isUrl(123)).toBe(false) - }) - - it("should return false if the string is an empty string", () => { - expect(isUrl("")).toBe(false) - }) - - it("should return false if the string is null", () => { - expect(isUrl(null)).toBe(false) - }) - it("should return false if the string is undefined", () => { - expect(isUrl(undefined)).toBe(false) - }) - it("should return false if the string is NaN", () => { - expect(isUrl(NaN)).toBe(false) - }) - it("should return false if the string is Infinity", () => { - expect(isUrl(Infinity)).toBe(false) - }) - it("should return false if the string is an object", () => { - expect(isUrl({})).toBe(false) - }) - }) - - describe("dataType", () => { - it("should return 'string' if the value is a string", () => { - expect(dataType("")).toBe("string") - }) - it("should return 'number' if the value is a number", () => { - expect(dataType(123)).toBe("int") - }) - it("should return 'number' if the value is a float", () => { - expect(dataType(123.45)).toBe("float") - }) - it("should return 'boolean' if the value is a boolean", () => { - expect(dataType(true)).toBe("bool") - }) - it("should return 'null' if the value is null", () => { - expect(dataType(null)).toBe("null") - }) - it("should return 'undefined' if the value is undefined", () => { - expect(dataType(undefined)).toBe("undefined") - }) - it("should return 'object' if the value is an object", () => { - expect(dataType({})).toBe("object") - }) - it("should return 'array' if the value is an array", () => { - expect(dataType([])).toBe("array") - }) - it("should return 'function' if the value is a function", () => { - expect(dataType(() => {})).toBe("function") - }) - it("should return 'NaN' if the value is NaN", () => { - expect(dataType(NaN)).toBe("NaN") - }) - it("should return 'Infinity' if the value is Infinity", () => { - expect(dataType(Infinity)).toBe("Infinity") - }) - }) - describe("parseJson", () => { - it("should parse a JSON string", () => { - expect(parseJson("{}")).toEqual({}) - }) - - it("should parse a JSON string with NaN", () => { - expect(parseJson('{ "a": NaN }')).toEqual({ a: NaN }) - }) - - it("should parse a JSON string including array with NaN", () => { - expect(parseJson('{ "array": [1,2,"test",NaN,4] }')).toEqual({ - array: [1, 2, "test", NaN, 4], - }) - }) - it("should parse a JSON string including array with NaN and undefined", () => { - expect(parseJson('{ "array": [1,2,"test",NaN,undefined,4], "b": "b" }')).toEqual({ - array: [1, 2, "test", NaN, undefined, 4], - b: "b", - }) - }) - - it("should not repace NaN in strings", () => { - expect(parseJson('{ "a": "NaNometer" }')).toEqual({ a: "NaNometer" }) - }) - it("should not repace undefined in strings", () => { - expect(parseJson('{ "a": "undefined: a is undefined" }')).toEqual({ - a: "undefined: a is undefined", - }) - }) - - it("should parse a JSON string with undefined", () => { - expect(parseJson('{ "a": undefined }')).toEqual({ a: undefined }) - }) - - it("should parse a JSON string with NaN and undefined", () => { - expect(parseJson('{ "a": NaN, "b": undefined }')).toEqual({ - a: NaN, - b: undefined, - }) - }) - - it("should parse a JSON string including NaN, undefined", () => { - expect( - parseJson( - '{ "string": "this is a test ...", "integer":42, "array":[ 1, 2, 3, "test", NaN], "float":3.14159, "undefined":undefined, "object":{"first-child":true, "second-child":false, "last-child":null },"string_number":"1234", "date": "Tue, Oct 17, 2023, 08:58 AM" }' - ) - ).toEqual({ - string: "this is a test ...", - integer: 42, - array: [1, 2, 3, "test", NaN], - float: 3.14159, - undefined: undefined, - object: { - "first-child": true, - "second-child": false, - "last-child": null, - }, - string_number: "1234", - date: "Tue, Oct 17, 2023, 08:58 AM", - }) - }) - }) -}) diff --git a/tests/renderer/container.test.js b/tests/renderer/container.test.js deleted file mode 100644 index 3c66f37..0000000 --- a/tests/renderer/container.test.js +++ /dev/null @@ -1,189 +0,0 @@ -import Container from "../../src/renderer/container" - -describe("Container", () => { - it("should be defined", () => { - const renderer = new Container(document.createElement("div")) - expect(renderer).toBeDefined() - }) - it("should render the container node", () => { - let root = document.createElement("div") - const spy = jest.spyOn(root, "appendChild") - new Container(root) - expect(spy).toHaveBeenCalled() - }) - - it("should re-render the container node if data has changes", () => { - let root = document.createElement("div") - const renderer = new Container(root) - const container = root.children[0] - const spy = jest.spyOn(container, "replaceChildren") - - renderer.update({ data: { name: "John" } }) - expect(spy).toHaveBeenCalled() - }) - - it("should not re-render the container node if data has not changed", () => { - let root = document.createElement("div") - const renderer = new Container(root) - const container = root.children[0] - const spy = jest.spyOn(container, "replaceChildren") - - renderer.update({ data: { name: "Johny" } }) - renderer.update({ data: { name: "Johny" } }) - expect(spy).toHaveBeenCalledTimes(1) - }) - - it("should not re-render the container node if only expanded has changed", () => { - let root = document.createElement("div") - const renderer = new Container(root) - const container = root.children[0] - const spy = jest.spyOn(container, "replaceChildren") - - renderer.update({ data: { name: "Johny" } }) - renderer.update({ expanded: true }) - expect(spy).toHaveBeenCalledTimes(1) - }) - it("should not re-render the container node if only indent has changed", () => { - let root = document.createElement("div") - const renderer = new Container(root) - const container = root.children[0] - const spy = jest.spyOn(container, "replaceChildren") - - renderer.update({ data: { name: "Johny" } }) - renderer.update({ indent: 2 }) - expect(spy).toHaveBeenCalledTimes(1) - }) - - it("should not re-render the container node if only expandIconType has changed", () => { - let root = document.createElement("div") - const renderer = new Container(root) - const container = root.children[0] - const spy = jest.spyOn(container, "replaceChildren") - renderer.update({ data: { name: "Johny" } }) - renderer.update({ expandIconType: "square" }) - expect(spy).toHaveBeenCalledTimes(1) - }) - - it("should not re-render the container node if only showDataTypes has changed", () => { - let root = document.createElement("div") - const renderer = new Container(root) - const container = root.children[0] - const spy = jest.spyOn(container, "replaceChildren") - - renderer.update({ data: { name: "Johny" } }) - renderer.update({ showDataTypes: true }) - expect(spy).toHaveBeenCalledTimes(1) - }) - - it("should not re-render the container node if only showCopy has changed", () => { - let root = document.createElement("div") - const renderer = new Container(root) - const container = root.children[0] - const spy = jest.spyOn(container, "replaceChildren") - - renderer.update({ data: { name: "Johny" } }) - renderer.update({ showCopy: true }) - expect(spy).toHaveBeenCalledTimes(1) - }) - - it("should not re-render the container node if only showSize has changed", () => { - let root = document.createElement("div") - const renderer = new Container(root) - const container = root.children[0] - const spy = jest.spyOn(container, "replaceChildren") - - renderer.update({ data: { name: "Johny" } }) - renderer.update({ showSize: true }) - expect(spy).toHaveBeenCalledTimes(1) - }) - - it("should add the class 'show-copy'", () => { - let root = document.createElement("div") - const renderer = new Container(root) - renderer.update({ showCopy: true }) - expect(root.children[0].classList.contains("show-copy")).toBe(true) - }) - it("should remove the class 'show-copy'", () => { - let root = document.createElement("div") - const renderer = new Container(root) - root.children[0].classList.add("show-copy") - renderer.update({ showCopy: false }) - expect(root.children[0].classList.contains("show-copy")).toBe(false) - }) - it("should add the class 'show-data-types'", () => { - let root = document.createElement("div") - const renderer = new Container(root) - renderer.update({ showDataTypes: true }) - expect(root.children[0].classList.contains("show-data-types")).toBe(true) - }) - it("should remove the class 'show-data-types'", () => { - let root = document.createElement("div") - const renderer = new Container(root) - root.children[0].classList.add("show-data-types") - renderer.update({ showDataTypes: false }) - expect(root.children[0].classList.contains("show-data-types")).toBe(false) - }) - it("should add the class 'show-size'", () => { - let root = document.createElement("div") - const renderer = new Container(root) - renderer.update({ showSize: true }) - expect(root.children[0].classList.contains("show-size")).toBe(true) - }) - it("should remove the class 'show-size'", () => { - let root = document.createElement("div") - const renderer = new Container(root) - root.children[0].classList.add("show-size") - renderer.update({ showSize: false }) - expect(root.children[0].classList.contains("show-size")).toBe(false) - }) - it("should set the expand icon type to 'square'", () => { - let root = document.createElement("div") - const renderer = new Container(root) - renderer.update({ expandIconType: "square" }) - expect(root.children[0].classList.contains("expand-icon-square")).toBe(true) - }) - it("should toggle the expand icon type from square to 'circle'", () => { - let root = document.createElement("div") - const renderer = new Container(root) - root.children[0].classList.add("expand-icon-square") - - renderer.update({ expandIconType: "circle" }) - expect(root.children[0].classList.contains("expand-icon-circle")).toBe(true) - expect(root.children[0].classList.contains("expand-icon-csquare")).toBe(false) - }) - it("should render the toolbar node", () => { - let root = document.createElement("div") - const renderer = new Container(root) - renderer.update({ showToolbar: true }) - expect(root.querySelector(".toolbar")).not.toBe(null) - }) - it("should toggle the toolbar node", () => { - let root = document.createElement("div") - const renderer = new Container(root) - renderer.update({ showToolbar: true }) - renderer.update({ showToolbar: false }) - expect(root.querySelector(".toolbar")).toBe(null) - }) - it("should toggle showCopy, showDataTypes, showSize when clicking on show details icon in toolbar", () => { - let root = document.createElement("div") - const renderer = new Container(root) - renderer.update({ - showToolbar: true, - }) - const toolbar = root.querySelector(".toolbar") - const showDetails = toolbar.querySelector(".icon.info") - const spy = jest.spyOn(renderer, "update") - showDetails.click() - expect(spy).toHaveBeenCalledWith({ - showCopy: false, - showDataTypes: false, - showSize: false, - }) - showDetails.click() - expect(spy).toHaveBeenCalledWith({ - showCopy: true, - showDataTypes: true, - showSize: true, - }) - }) -}) diff --git a/tests/renderer/data-row.test.js b/tests/renderer/data-row.test.js deleted file mode 100644 index 094205f..0000000 --- a/tests/renderer/data-row.test.js +++ /dev/null @@ -1,178 +0,0 @@ -import DataRow from "../../src/renderer/data-row.js" - -describe("DataRow", () => { - it("should be defined", () => { - const renderer = new DataRow({}) - expect(renderer).toBeDefined() - }) - it("should render the data-row node", () => { - const row = new DataRow({}) - expect(row.element).toBeDefined() - }) - it("should render the key node", () => { - const row = new DataRow({ key: "name" }) - expect(row.element.querySelector(".key")).toBeDefined() - }) - it("should render the value node", () => { - const row = new DataRow({ value: "John" }) - expect(row.element.querySelector(".value")).toBeDefined() - }) - it("should render the expand node", () => { - const row = new DataRow({ expanded: true }) - expect(row.element.querySelector(".expand")).toBeDefined() - }) - it("should render same number of row nodes as the data object", () => { - const row = new DataRow({ - value: { name: "John", subProp: { test: "test" } }, - }) - const root = document.createElement("div") - root.appendChild(row.element) - expect(root.querySelectorAll(".data-row").length).toBe(4) - }) - it("should render the correct number of row nodes if the data object is an array", () => { - const root = document.createElement("div") - const row = new DataRow({ - key: "", - value: [{ name: "John" }, { name: "Jane" }], - }) - root.appendChild(row.element) - expect(root.querySelectorAll(".data-row").length).toBe(5) - }) - it("should add the class expanded to the row node if expanded is true", () => { - const row = new DataRow({ expanded: true }) - expect(row.element.classList.contains("expanded")).toBe(true) - }) - it("should remove the class expanded from the row node if expanded is false", () => { - const row = new DataRow({ expanded: false }) - expect(row.element.classList.contains("expanded")).toBe(false) - }) - it("should add the class expanded to one row node if expanded is 1", () => { - const row = new DataRow({ value: { key1: { key2: "test" } }, expanded: 1 }) - const root = document.createElement("div") - root.appendChild(row.element) - expect(root.querySelectorAll(".data-row").length).toBe(3) - expect(root.querySelectorAll(".data-row.expanded").length).toBe(1) - }) - it("should add the class expanded to two row nodes if expanded is 2", () => { - const row = new DataRow({ - value: { key1: { key2: { key3: "test" } } }, - expanded: 2, - }) - const root = document.createElement("div") - root.appendChild(row.element) - expect(root.querySelectorAll(".data-row").length).toBe(4) - expect(root.querySelectorAll(".data-row.expanded").length).toBe(2) - }) - it("should add the class expanded to the first node if expanded is 1", () => { - const row = new DataRow({ - value: { key1: { key2: "test" } }, - expanded: 1, - }) - const root = document.createElement("div") - root.appendChild(row.element) - expect(root.querySelectorAll(".data-row.expanded").length).toBe(1) - expect(root.querySelector(".data-row").classList).toContain("expanded") - }) - it("should indent the second row node if indent is 1", () => { - const row = new DataRow({ - value: { key1: { key2: "test" } }, - indent: 1, - }) - const root = document.createElement("div") - root.appendChild(row.element) - expect(root.querySelectorAll(".data-row")[1].style.paddingLeft).toContain("5px") - }) - it("should set padding-left to 20px if indent is 4", () => { - const row = new DataRow({ - value: { key1: { key2: "test" } }, - indent: 4, - }) - const root = document.createElement("div") - root.appendChild(row.element) - expect(root.querySelectorAll(".data-row")[1].style.paddingLeft).toContain("20px") - }) - it("should create a value type node", () => { - const row = new DataRow({ - value: { key1: "test" }, - }) - const root = document.createElement("div") - root.appendChild(row.element) - expect(root.querySelectorAll(".data-row")[1].querySelector(".value .type")).not.toBeNull() - }) - it("should create a value type node with the correct type", () => { - const row = new DataRow({ - value: { key1: "test" }, - expanded: true, - }) - const root = document.createElement("div") - root.appendChild(row.element) - console.log(root.innerHTML, root.querySelectorAll(".data-row")[1].querySelector(".value").innerHTML) - expect(root.querySelectorAll(".data-row")[1].querySelector(".value .type").textContent).toBe("string") - }) - it("should create a size node", () => { - const row = new DataRow({ - value: { key1: "test" }, - expanded: true, - }) - const root = document.createElement("div") - root.appendChild(row.element) - expect(root.querySelectorAll(".data-row")[0].querySelector(".items-size")).not.toBeNull() - }) - it("should create a size node with 1 size", () => { - const row = new DataRow({ - value: { key1: "test" }, - expanded: true, - }) - const root = document.createElement("div") - root.appendChild(row.element) - expect(root.querySelectorAll(".data-row")[0].querySelector(".items-size").textContent).toBe("1 item") - }) - it("should create a size node with 2 size", () => { - const row = new DataRow({ - value: { key1: "test", key2: "test" }, - expanded: true, - }) - const root = document.createElement("div") - root.appendChild(row.element) - expect(root.querySelectorAll(".data-row")[0].querySelector(".items-size").textContent).toBe("2 items") - }) - it("should create the copy node", () => { - const row = new DataRow({ - value: { key1: "test" }, - expanded: true, - }) - const root = document.createElement("div") - root.appendChild(row.element) - expect(root.querySelectorAll(".data-row")[0].querySelector(".copy.icon")).not.toBeNull() - }) - it("should not contain any nodes with match css class", () => { - const row = new DataRow({ - value: { key1: "test" }, - expanded: true, - }) - row.update({ searchTerm: "" }) - const root = document.createElement("div") - root.appendChild(row.element) - expect(root.querySelectorAll(".match").length).toBe(0) - }) - it("should contain one node with match css class if matches the value", () => { - const row = new DataRow({ - value: { key1: "test" }, - expanded: true, - }) - row.update({ searchTerm: "test" }) - const root = document.createElement("div") - root.appendChild(row.element) - expect(root.querySelectorAll(".match").length).toBe(1) - }) - it("should contain one nodes with match css class if matches the key", () => { - const row = new DataRow({ - value: { key1: "test" }, - expanded: true, - }) - row.update({ searchTerm: "key1" }) - const root = document.createElement("div") - root.appendChild(row.element) - expect(root.querySelectorAll(".match").length).toBe(1) - }) -}) diff --git a/tests/renderer/toolbar.test.js b/tests/renderer/toolbar.test.js deleted file mode 100644 index 6299f4d..0000000 --- a/tests/renderer/toolbar.test.js +++ /dev/null @@ -1,88 +0,0 @@ -import Toolbar from "../../src/renderer/toolbar" - -describe("Toolbar", () => { - it("should be defined", () => { - expect(Toolbar).toBeDefined() - }) - it("should render the toolbar node", () => { - let root = document.createElement("div") - const toolbar = new Toolbar({}) - root.appendChild(toolbar.element) - expect(root.children[0].className).toBe("toolbar") - }) - it("should render the refresh icon", () => { - const toolbar = new Toolbar({}) - expect(toolbar.element.querySelector(".refresh.icon")).not.toBe(null) - }) - it("should render the expand icon", () => { - const toolbar = new Toolbar({}) - expect(toolbar.element.querySelector(".plus.icon")).not.toBe(null) - }) - it("should render the collapse icon", () => { - const toolbar = new Toolbar({}) - expect(toolbar.element.querySelector(".minus.icon")).not.toBe(null) - }) - it("should render the indent icon", () => { - const toolbar = new Toolbar({}) - expect(toolbar.element.querySelector(".indent.icon")).not.toBe(null) - }) - it("should render the outdent icon", () => { - const toolbar = new Toolbar({}) - expect(toolbar.element.querySelector(".outdent.icon")).not.toBe(null) - }) - it("should render the details icon", () => { - const toolbar = new Toolbar({}) - expect(toolbar.element.querySelector(".info.icon")).not.toBe(null) - }) - it("should render the search input", () => { - const toolbar = new Toolbar({}) - expect(toolbar.element.querySelector(".search-input")).toBeDefined() - }) - it("should call the onChange and onSearch callbacks when refresh icon is clicked", () => { - const onChange = jest.fn() - const onSearch = jest.fn() - const toolbar = new Toolbar({ onChange, onSearch }) - toolbar.element.querySelector(".refresh.icon").click() - expect(onChange).toHaveBeenCalledWith({ indent: 2, expanded: 1 }) - expect(onSearch).toHaveBeenCalledWith("") - }) - it("should call the onChange callback when expand icon is clicked", () => { - const onChange = jest.fn() - const toolbar = new Toolbar({ expanded: 0, onChange }) - toolbar.maxExpandLevel = 2 - toolbar.element.querySelector(".plus.icon").click() - expect(onChange).toHaveBeenCalledWith({ expanded: 1 }) - }) - it("should call the onChange callback when collapse icon is clicked", () => { - const onChange = jest.fn() - const toolbar = new Toolbar({ expanded: 2, onChange }) - toolbar.maxExpandLevel = 2 - toolbar.element.querySelector(".minus.icon").click() - expect(onChange).toHaveBeenCalledWith({ expanded: 1 }) - }) - it("should call the onChange callback when indent icon is clicked", () => { - const onChange = jest.fn() - const toolbar = new Toolbar({ indent: 2, onChange }) - toolbar.element.querySelector(".indent.icon").click() - expect(onChange).toHaveBeenCalledWith({ indent: 3 }) - }) - it("should call the onChange callback when outdent icon is clicked", () => { - const onChange = jest.fn() - const toolbar = new Toolbar({ indent: 2, onChange }) - toolbar.element.querySelector(".outdent.icon").click() - expect(onChange).toHaveBeenCalledWith({ indent: 1 }) - }) - it("should call the onChange callback when details icon is clicked", () => { - const onChange = jest.fn() - const toolbar = new Toolbar({ onChange, showDetails: true }) - toolbar.element.querySelector(".info.icon").click() - expect(onChange).toHaveBeenCalledWith({ showDetails: false }) - }) - it("should call the onSearch callback when search input is changed", () => { - const onSearch = jest.fn() - const toolbar = new Toolbar({ onSearch }) - toolbar.element.querySelector(".search-input").value = "test" - toolbar.element.querySelector(".search-input").dispatchEvent(new Event("input")) - expect(onSearch).toHaveBeenCalledWith("test") - }) -}) diff --git a/tests/themes.test.js b/tests/themes.test.js deleted file mode 100644 index 1053410..0000000 --- a/tests/themes.test.js +++ /dev/null @@ -1,42 +0,0 @@ -import { themeStyles, availableThemes } from "../src/themes" - -describe("themeStyles", () => { - it("should return a function", () => { - expect(typeof themeStyles).toBe("function") - }) - - it("should return a function that returns an object", () => { - expect(typeof themeStyles(availableThemes[0])).toBe("string") - }) - - it("should return a string containing .container", () => { - expect(themeStyles(availableThemes[0])).toContain(".container") - }) - - it("should return a string containing the 16 base colors", () => { - expect(themeStyles(availableThemes[0])).toMatch(/--base00.+--base01.+--base02.+--base0F/) - }) - - it("should return a string for a custom theme object", () => { - const customTheme = { - base00: "#000000", - base01: "#111111", - base02: "#222222", - base03: "#333333", - base04: "#444444", - base05: "#555555", - base06: "#666666", - base07: "#777777", - base08: "#888888", - base09: "#999999", - base0A: "#AAAAAA", - base0B: "#BBBBBB", - base0C: "#CCCCCC", - base0D: "#DDDDDD", - base0E: "#EEEEEE", - base0F: "#FFFFFF", - } - - expect(themeStyles(customTheme)).toMatch(/--base00.+--base01.+--base02.+--base0F/) - }) -}) diff --git a/tests/validator.test.js b/tests/validator.test.js deleted file mode 100644 index 7760ea3..0000000 --- a/tests/validator.test.js +++ /dev/null @@ -1,93 +0,0 @@ -import { - validateBoolean, - validateBooleanOrPositiveNumber, - validatePositiveNumber, - validateStringOrJson, - validateString, -} from "../src/validator" - -describe("validateBoolean", () => { - it("should return true if value is true", () => { - expect(validateBoolean(true)).toBe(true) - }) - it("should return false if value is false", () => { - expect(validateBoolean(false)).toBe(false) - }) - it("should return true if value is 'true'", () => { - expect(validateBoolean("true")).toBe(true) - }) - it("should return false if value is 'false'", () => { - expect(validateBoolean("false")).toBe(false) - }) - it("should throw an error if value is not a boolean", () => { - expect(() => validateBoolean("foo")).toThrowErrorMatchingInlineSnapshot(`"should be a boolean!"`) - }) -}) - -describe("validatePositiveNumber", () => { - it("should return the number if it is a number", () => { - expect(validatePositiveNumber(1)).toBe(1) - }) - it("should return the number if it is a string", () => { - expect(validatePositiveNumber("1")).toBe(1) - }) - it("should throw an error if the number is negative", () => { - expect(() => validatePositiveNumber(-1)).toThrowErrorMatchingInlineSnapshot(`"should be a positive number!"`) - }) - it("should throw an error if the number is NaN", () => { - expect(() => validatePositiveNumber("foo")).toThrowErrorMatchingInlineSnapshot(`"should be a positive number!"`) - }) -}) - -describe("validateBooleanOrPositiveNumber", () => { - it("should return true if value is true", () => { - expect(validateBooleanOrPositiveNumber(true)).toBe(true) - }) - it("should return false if value is false", () => { - expect(validateBooleanOrPositiveNumber(false)).toBe(false) - }) - it("should return true if value is 'true'", () => { - expect(validateBooleanOrPositiveNumber("true")).toBe(true) - }) - it("should return false if value is 'false'", () => { - expect(validateBooleanOrPositiveNumber("false")).toBe(false) - }) - it("should return the number if it is a number", () => { - expect(validateBooleanOrPositiveNumber(1)).toBe(1) - }) - it("should return the number if it is a string", () => { - expect(validateBooleanOrPositiveNumber("1")).toBe(1) - }) - it("should throw an error if value is not a boolean or positive number", () => { - expect(() => validateBooleanOrPositiveNumber("foo")).toThrowErrorMatchingInlineSnapshot( - `"should be a boolean or a positive number!"` - ) - }) -}) - -describe("validateStringOrJson", () => { - it("should return the value if it is an object", () => { - expect(validateStringOrJson({ foo: "bar" })).toEqual({ foo: "bar" }) - }) - it("should return the value if it is a string", () => { - expect(validateStringOrJson("foo")).toEqual("foo") - }) - it("should return the value if it is a valid JSON string", () => { - expect(validateStringOrJson('{"foo":"bar"}')).toEqual({ foo: "bar" }) - }) - it("should return the value if it is an invalid JSON string", () => { - expect(validateStringOrJson("{foo:bar}")).toEqual("{foo:bar}") - }) - it("should throw an error if value is not a string or JSON", () => { - expect(() => validateStringOrJson(1)).toThrowErrorMatchingInlineSnapshot(`"should be a string or JSON!"`) - }) -}) - -describe("validateString", () => { - it("should return the value if it is a string", () => { - expect(validateString("foo")).toEqual("foo") - }) - it("should throw an error if value is not a string", () => { - expect(() => validateString(1)).toThrowErrorMatchingInlineSnapshot(`"should be a string!"`) - }) -}) diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..205cd0c --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true, + "types": ["vite/client", "vitest/globals", "@testing-library/jest-dom"] + }, + "include": ["src"] +} diff --git a/tsconfig.types.json b/tsconfig.types.json new file mode 100644 index 0000000..9d7e435 --- /dev/null +++ b/tsconfig.types.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outFile": "dist/types/index", + "rootDir": "src/package" + }, + "include": ["src/package/**/*.ts", "src/package/**/*.tsx"], + "exclude": ["src/package/**/*.test.ts", "src/package/**/*.spec.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..9ca9481 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,42 @@ +import { defineConfig } from "vite" +import { resolve } from "path" + +export default defineConfig(({ mode }) => { + // Detect which build mode we're in + const isLibBuild = mode === "lib" + const isDemoBuild = mode === "demo" + + if (isLibBuild) { + console.log("Building library...") + return { + build: { + lib: { + entry: resolve(__dirname, "src/package/index.ts"), + name: "AndypfJsonViewer", + fileName: (format) => `${format}/index.js`, + formats: ["es", "iife"], // ESM and IIFE formats + }, + outDir: "dist", + emptyOutDir: true, + }, + } + } else if (isDemoBuild) { + console.log("Building demo...") + return { + root: resolve(__dirname, "src/demo"), + build: { + outDir: "../../dist/demo", + emptyOutDir: true, + }, + } + } else { + console.log("Starting development server for demo...") + return { + root: resolve(__dirname, "src/demo"), + server: { + open: true, + host: "0.0.0.0", + }, + } + } +})