diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml
deleted file mode 100644
index 93e03cd9..00000000
--- a/.github/workflows/e2e.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-name: E2E Tests
-
-on:
- push:
- branches: [main]
- pull_request:
- branches: [main]
-
-jobs:
- e2e:
- runs-on: ubuntu-latest
- defaults:
- run:
- working-directory: packages/oc-docs
- steps:
- - uses: actions/checkout@v4
-
- - uses: actions/setup-node@v4
- with:
- node-version: 22
- cache: npm
-
- - run: npm ci
- working-directory: .
-
- - run: npx playwright install --with-deps chromium
-
- - run: npm run test:e2e
-
- - uses: actions/upload-artifact@v4
- if: ${{ !cancelled() }}
- with:
- name: playwright-report
- path: packages/oc-docs/playwright-report/
- retention-days: 30
diff --git a/examples/express-server/package-lock.json b/examples/express-server/package-lock.json
deleted file mode 100644
index 02c94549..00000000
--- a/examples/express-server/package-lock.json
+++ /dev/null
@@ -1,951 +0,0 @@
-{
- "name": "opencollection-express-example",
- "version": "1.0.0",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "name": "opencollection-express-example",
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "express": "^4.18.2"
- },
- "devDependencies": {
- "@types/express": "^4.17.21"
- }
- },
- "node_modules/@types/body-parser": {
- "version": "1.19.6",
- "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz",
- "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/connect": "*",
- "@types/node": "*"
- }
- },
- "node_modules/@types/connect": {
- "version": "3.4.38",
- "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
- "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/express": {
- "version": "4.17.23",
- "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz",
- "integrity": "sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/body-parser": "*",
- "@types/express-serve-static-core": "^4.17.33",
- "@types/qs": "*",
- "@types/serve-static": "*"
- }
- },
- "node_modules/@types/express-serve-static-core": {
- "version": "4.19.6",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz",
- "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/node": "*",
- "@types/qs": "*",
- "@types/range-parser": "*",
- "@types/send": "*"
- }
- },
- "node_modules/@types/http-errors": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz",
- "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/mime": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
- "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/node": {
- "version": "24.5.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-24.5.0.tgz",
- "integrity": "sha512-y1dMvuvJspJiPSDZUQ+WMBvF7dpnEqN4x9DDC9ie5Fs/HUZJA3wFp7EhHoVaKX/iI0cRoECV8X2jL8zi0xrHCg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "undici-types": "~7.12.0"
- }
- },
- "node_modules/@types/qs": {
- "version": "6.14.0",
- "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz",
- "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/range-parser": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
- "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/send": {
- "version": "0.17.5",
- "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz",
- "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/mime": "^1",
- "@types/node": "*"
- }
- },
- "node_modules/@types/serve-static": {
- "version": "1.15.8",
- "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.8.tgz",
- "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/http-errors": "*",
- "@types/node": "*",
- "@types/send": "*"
- }
- },
- "node_modules/accepts": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
- "license": "MIT",
- "dependencies": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
- "license": "MIT"
- },
- "node_modules/body-parser": {
- "version": "1.20.3",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
- "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
- "license": "MIT",
- "dependencies": {
- "bytes": "3.1.2",
- "content-type": "~1.0.5",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "on-finished": "2.4.1",
- "qs": "6.13.0",
- "raw-body": "2.5.2",
- "type-is": "~1.6.18",
- "unpipe": "1.0.0"
- },
- "engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
- }
- },
- "node_modules/bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/call-bind-apply-helpers": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
- "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
- "license": "MIT",
- "dependencies": {
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/call-bound": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
- "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
- "license": "MIT",
- "dependencies": {
- "call-bind-apply-helpers": "^1.0.2",
- "get-intrinsic": "^1.3.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/content-disposition": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
- "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "5.2.1"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/content-type": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/cookie": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
- "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
- "license": "MIT"
- },
- "node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "license": "MIT",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/destroy": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
- }
- },
- "node_modules/dunder-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
- "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
- "license": "MIT",
- "dependencies": {
- "call-bind-apply-helpers": "^1.0.1",
- "es-errors": "^1.3.0",
- "gopd": "^1.2.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
- "license": "MIT"
- },
- "node_modules/encodeurl": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
- "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/es-define-property": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
- "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-errors": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
- "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-object-atoms": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
- "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
- "license": "MIT",
- "dependencies": {
- "es-errors": "^1.3.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
- "license": "MIT"
- },
- "node_modules/etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/express": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
- "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
- "license": "MIT",
- "dependencies": {
- "accepts": "~1.3.8",
- "array-flatten": "1.1.1",
- "body-parser": "1.20.3",
- "content-disposition": "0.5.4",
- "content-type": "~1.0.4",
- "cookie": "0.7.1",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "encodeurl": "~2.0.0",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "1.3.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "merge-descriptors": "1.0.3",
- "methods": "~1.1.2",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.12",
- "proxy-addr": "~2.0.7",
- "qs": "6.13.0",
- "range-parser": "~1.2.1",
- "safe-buffer": "5.2.1",
- "send": "0.19.0",
- "serve-static": "1.16.2",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "type-is": "~1.6.18",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
- },
- "engines": {
- "node": ">= 0.10.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/finalhandler": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
- "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
- "license": "MIT",
- "dependencies": {
- "debug": "2.6.9",
- "encodeurl": "~2.0.0",
- "escape-html": "~1.0.3",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "statuses": "2.0.1",
- "unpipe": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/forwarded": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
- "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-intrinsic": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
- "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
- "license": "MIT",
- "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"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
- "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
- "license": "MIT",
- "dependencies": {
- "dunder-proto": "^1.0.1",
- "es-object-atoms": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/gopd": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
- "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-symbols": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
- "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/hasown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
- "license": "MIT",
- "dependencies": {
- "function-bind": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/http-errors": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
- "license": "MIT",
- "dependencies": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "license": "MIT",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "license": "ISC"
- },
- "node_modules/ipaddr.js": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
- "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/math-intrinsics": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
- "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/merge-descriptors": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
- "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/methods": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "license": "MIT",
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "license": "MIT",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "license": "MIT"
- },
- "node_modules/negotiator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/object-inspect": {
- "version": "1.13.4",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
- "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/on-finished": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
- "license": "MIT",
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/path-to-regexp": {
- "version": "0.1.12",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
- "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==",
- "license": "MIT"
- },
- "node_modules/proxy-addr": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
- "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
- "license": "MIT",
- "dependencies": {
- "forwarded": "0.2.0",
- "ipaddr.js": "1.9.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/qs": {
- "version": "6.13.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
- "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
- "license": "BSD-3-Clause",
- "dependencies": {
- "side-channel": "^1.0.6"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/raw-body": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
- "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
- "license": "MIT",
- "dependencies": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "license": "MIT"
- },
- "node_modules/send": {
- "version": "0.19.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
- "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
- "license": "MIT",
- "dependencies": {
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "mime": "1.6.0",
- "ms": "2.1.3",
- "on-finished": "2.4.1",
- "range-parser": "~1.2.1",
- "statuses": "2.0.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/send/node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/send/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "license": "MIT"
- },
- "node_modules/serve-static": {
- "version": "1.16.2",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
- "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
- "license": "MIT",
- "dependencies": {
- "encodeurl": "~2.0.0",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.19.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
- "license": "ISC"
- },
- "node_modules/side-channel": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
- "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
- "license": "MIT",
- "dependencies": {
- "es-errors": "^1.3.0",
- "object-inspect": "^1.13.3",
- "side-channel-list": "^1.0.0",
- "side-channel-map": "^1.0.1",
- "side-channel-weakmap": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/side-channel-list": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
- "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
- "license": "MIT",
- "dependencies": {
- "es-errors": "^1.3.0",
- "object-inspect": "^1.13.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/side-channel-map": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
- "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.2",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.5",
- "object-inspect": "^1.13.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/side-channel-weakmap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
- "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.2",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.5",
- "object-inspect": "^1.13.3",
- "side-channel-map": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
- "license": "MIT",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
- "license": "MIT",
- "dependencies": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/undici-types": {
- "version": "7.12.0",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.12.0.tgz",
- "integrity": "sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/vary": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- }
- }
-}
diff --git a/examples/express-server/package.json b/examples/express-server/package.json
deleted file mode 100644
index 93077f6e..00000000
--- a/examples/express-server/package.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "name": "opencollection-express-example",
- "version": "1.0.0",
- "description": "Express server example using OpenCollection playground",
- "main": "server.js",
- "type": "module",
- "scripts": {
- "start": "node server.js",
- "start:cjs": "node server-cjs.cjs",
- "dev": "node --watch server.js",
- "dev:cjs": "node --watch server-cjs.cjs",
- "test": "node test.js"
- },
- "dependencies": {
- "express": "^4.18.2"
- },
- "devDependencies": {
- "@types/express": "^4.17.21"
- },
- "keywords": [
- "opencollection",
- "express",
- "api-docs",
- "playground"
- ],
- "author": "OpenCollection",
- "license": "MIT"
-}
\ No newline at end of file
diff --git a/examples/express-server/server-cjs.cjs b/examples/express-server/server-cjs.cjs
deleted file mode 100644
index 1df77472..00000000
--- a/examples/express-server/server-cjs.cjs
+++ /dev/null
@@ -1,117 +0,0 @@
-const express = require('express');
-const { playgroundHandler, setupPlaygroundAssets } = require('../../packages/oc-playground/dist/express.cjs');
-
-const app = express();
-const PORT = process.env.PORT || 3001;
-
-setupPlaygroundAssets(app, express.static, {
- playgroundDistPath: '../../packages/oc-playground/dist-standalone'
-});
-
-const apiCollection = {
- name: "My Express API (CommonJS)",
- description: "Example API documentation using OpenCollection playground with Express and CommonJS",
- docs: "This collection demonstrates different request types, bodies, auth, variables, and assertions for an Express-based API using CommonJS imports.",
- environments: [
- {
- name: "Development",
- description: "Local development environment",
- variables: [
- { name: "baseUrl", value: `http://localhost:${PORT}` },
- { name: "authToken", value: "dev-token-123" }
- ]
- }
- ],
- base: {
- headers: [
- { name: "Content-Type", value: "application/json" }
- ],
- auth: {
- type: "bearer",
- token: "{{authToken}}"
- }
- },
- items: [
- {
- name: "Get Users",
- type: "http",
- url: "{{baseUrl}}/api/users",
- method: "GET",
- docs: "Retrieve a list of all users",
- params: [
- { name: "limit", value: "10", type: "query" }
- ],
- assertions: [
- { expression: "response.status", operator: "==", value: "200" }
- ]
- },
- {
- name: "Create User",
- type: "http",
- url: "{{baseUrl}}/api/users",
- method: "POST",
- docs: "Create a new user",
- body: {
- type: "json",
- data: JSON.stringify({
- name: "Bob Wilson",
- email: "bob@example.com"
- }, null, 2)
- }
- }
- ]
-};
-
-app.get('/api-docs', playgroundHandler({
- collection: apiCollection,
- theme: 'dark',
- title: 'My Express API Documentation (CommonJS)'
-}));
-
-app.get('/simple-docs', playgroundHandler({
- name: "Simple API (CommonJS)",
- description: "My awesome API documentation using CommonJS",
- items: [{
- type: "http",
- method: "GET",
- url: "https://api.example.com/users",
- docs: "Get all users"
- }]
-}));
-
-app.get('/api/users', (req, res) => {
- res.json({
- users: [
- { id: 1, name: 'Bob Wilson', email: 'bob@example.com' },
- { id: 2, name: 'Carol Davis', email: 'carol@example.com' }
- ]
- });
-});
-
-app.post('/api/users', express.json(), (req, res) => {
- const { name, email } = req.body;
- res.status(201).json({
- id: Date.now(),
- name,
- email,
- createdAt: new Date().toISOString()
- });
-});
-
-app.get('/', (req, res) => {
- res.send(`
-
OpenCollection Express Example (CommonJS)
- Visit the API documentation:
-
- `);
-});
-
-app.listen(PORT, () => {
- console.log(`🚀 CommonJS Server running on http://localhost:${PORT}`);
- console.log(`📚 API docs available at:`);
- console.log(` - http://localhost:${PORT}/api-docs`);
- console.log(` - http://localhost:${PORT}/simple-docs`);
-});
\ No newline at end of file
diff --git a/examples/express-server/server.js b/examples/express-server/server.js
deleted file mode 100644
index c421bca5..00000000
--- a/examples/express-server/server.js
+++ /dev/null
@@ -1,247 +0,0 @@
-import express from 'express';
-import { playgroundHandler, setupPlaygroundAssets } from '../../packages/oc-playground/dist/express.js';
-
-const app = express();
-const PORT = process.env.PORT || 3000;
-
-setupPlaygroundAssets(app, express.static, {
- playgroundDistPath: '../../packages/oc-playground/dist-standalone'
-});
-
-const apiCollection = {
- name: "My Express API",
- description: "Example API documentation using OpenCollection playground with Express",
- docs: "This collection demonstrates different request types, bodies, auth, variables, and assertions for an Express-based API.",
- environments: [
- {
- name: "Development",
- description: "Local development environment",
- variables: [
- { name: "baseUrl", value: `http://localhost:${PORT}` },
- { name: "authToken", value: "dev-token-123" }
- ]
- },
- {
- name: "Production",
- variables: [
- { name: "baseUrl", value: "https://api.example.com" },
- { name: "authToken", value: "prod-token-456" }
- ]
- }
- ],
- base: {
- headers: [
- { name: "Content-Type", value: "application/json" }
- ],
- auth: {
- type: "bearer",
- token: "{{authToken}}"
- },
- variables: [
- { name: "globalVar", value: "global-value" }
- ]
- },
- items: [
- {
- name: "Get Users",
- type: "http",
- url: "{{baseUrl}}/api/users",
- method: "GET",
- docs: "Retrieve a list of all users",
- params: [
- { name: "limit", value: "10", type: "query" },
- { name: "offset", value: "0", type: "query" }
- ],
- assertions: [
- { expression: "response.status", operator: "==", value: "200" }
- ]
- },
- {
- name: "Get User by ID",
- type: "http",
- url: "{{baseUrl}}/api/users/:id",
- method: "GET",
- docs: "Get a specific user by their ID",
- params: [
- { name: "id", value: "123", type: "path" }
- ],
- headers: [
- { name: "X-Custom-Header", value: "CustomValue" }
- ]
- },
- {
- name: "Create User",
- type: "http",
- url: "{{baseUrl}}/api/users",
- method: "POST",
- docs: "Create a new user",
- body: {
- type: "json",
- data: JSON.stringify({
- name: "Alice Johnson",
- email: "alice@example.com",
- role: "user"
- }, null, 2)
- },
- assertions: [
- { expression: "response.body.name", operator: "==", value: "Alice Johnson" },
- { expression: "response.status", operator: "==", value: "201" }
- ]
- },
- {
- name: "Update User",
- type: "http",
- url: "{{baseUrl}}/api/users/:id",
- method: "PUT",
- docs: "Update an existing user",
- params: [
- { name: "id", value: "123", type: "path" }
- ],
- body: [
- { name: "name", value: "Alice Smith" },
- { name: "email", value: "alice.smith@example.com" }
- ]
- },
- {
- name: "Delete User",
- type: "http",
- url: "{{baseUrl}}/api/users/:id",
- method: "DELETE",
- docs: "Delete a user by ID",
- params: [
- { name: "id", value: "123", type: "path" }
- ],
- auth: {
- type: "apikey",
- key: "X-API-Key",
- value: "secret-key-999",
- placement: "header"
- }
- },
- {
- name: "User Management",
- type: "folder",
- docs: "Folder containing advanced user management endpoints",
- variables: [
- { name: "adminUserId", value: "admin-123" }
- ],
- headers: [
- { name: "X-Admin-Header", value: "AdminHeaderValue" }
- ],
- auth: {
- type: "basic",
- username: "admin",
- password: "password"
- }
- },
- {
- name: "Get Admin Dashboard",
- type: "http",
- url: "{{baseUrl}}/api/admin/dashboard",
- method: "GET",
- docs: "Access the admin dashboard (requires admin auth)"
- }
- ]
-};
-
-app.get('/api-docs', playgroundHandler({
- collection: apiCollection,
- theme: 'light',
- title: 'My Express API Documentation'
-}));
-
-app.get('/simple-docs', playgroundHandler({
- name: "Simple API",
- description: "My awesome API documentation",
- items: [{
- type: "http",
- method: "GET",
- url: "https://api.example.com/users",
- docs: "Get all users"
- }],
- theme: 'dark'
-}));
-
-app.get('/api/users', (req, res) => {
- const { limit = 10, offset = 0 } = req.query;
- res.json({
- users: [
- { id: 1, name: 'John Doe', email: 'john@example.com' },
- { id: 2, name: 'Jane Smith', email: 'jane@example.com' }
- ].slice(offset, offset + parseInt(limit)),
- total: 2,
- limit: parseInt(limit),
- offset: parseInt(offset)
- });
-});
-
-app.get('/api/users/:id', (req, res) => {
- const { id } = req.params;
- res.json({
- id: parseInt(id),
- name: 'John Doe',
- email: 'john@example.com',
- role: 'user'
- });
-});
-
-app.post('/api/users', express.json(), (req, res) => {
- const { name, email, role = 'user' } = req.body;
- res.status(201).json({
- id: Date.now(),
- name,
- email,
- role,
- createdAt: new Date().toISOString()
- });
-});
-
-app.put('/api/users/:id', express.json(), (req, res) => {
- const { id } = req.params;
- const { name, email } = req.body;
- res.json({
- id: parseInt(id),
- name,
- email,
- updatedAt: new Date().toISOString()
- });
-});
-
-app.delete('/api/users/:id', (req, res) => {
- const { id } = req.params;
- res.status(204).send();
-});
-
-app.get('/api/admin/dashboard', (req, res) => {
- res.json({
- stats: {
- totalUsers: 42,
- activeUsers: 38,
- newUsersToday: 5
- },
- message: 'Admin dashboard data'
- });
-});
-
-app.get('/', (req, res) => {
- res.send(`
- OpenCollection Express Example
- Visit the API documentation:
-
- Try the API endpoints:
-
- `);
-});
-
-app.listen(PORT, () => {
- console.log(`🚀 Server running on http://localhost:${PORT}`);
- console.log(`📚 API docs available at:`);
- console.log(` - http://localhost:${PORT}/api-docs`);
- console.log(` - http://localhost:${PORT}/simple-docs`);
-});
\ No newline at end of file
diff --git a/examples/react/index.html b/examples/react/index.html
deleted file mode 100644
index 87d1bf83..00000000
--- a/examples/react/index.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
- OpenCollection Playground - React Example
-
-
-
-
-
-
\ No newline at end of file
diff --git a/examples/react/package-lock.json b/examples/react/package-lock.json
deleted file mode 100644
index 591843c4..00000000
--- a/examples/react/package-lock.json
+++ /dev/null
@@ -1,1304 +0,0 @@
-{
- "name": "opencollection-react-example",
- "version": "1.0.0",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "name": "opencollection-react-example",
- "version": "1.0.0",
- "dependencies": {
- "react": "^18.2.0",
- "react-dom": "^18.2.0"
- },
- "devDependencies": {
- "@types/react": "^18.2.0",
- "@types/react-dom": "^18.2.0",
- "@vitejs/plugin-react": "^4.0.0",
- "vite": "^4.4.0"
- }
- },
- "node_modules/@babel/code-frame": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
- "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.27.1",
- "js-tokens": "^4.0.0",
- "picocolors": "^1.1.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/compat-data": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz",
- "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/core": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz",
- "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.28.3",
- "@babel/helper-compilation-targets": "^7.27.2",
- "@babel/helper-module-transforms": "^7.28.3",
- "@babel/helpers": "^7.28.4",
- "@babel/parser": "^7.28.4",
- "@babel/template": "^7.27.2",
- "@babel/traverse": "^7.28.4",
- "@babel/types": "^7.28.4",
- "@jridgewell/remapping": "^2.3.5",
- "convert-source-map": "^2.0.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.3",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/babel"
- }
- },
- "node_modules/@babel/generator": {
- "version": "7.28.3",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz",
- "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.28.3",
- "@babel/types": "^7.28.2",
- "@jridgewell/gen-mapping": "^0.3.12",
- "@jridgewell/trace-mapping": "^0.3.28",
- "jsesc": "^3.0.2"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets": {
- "version": "7.27.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
- "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/compat-data": "^7.27.2",
- "@babel/helper-validator-option": "^7.27.1",
- "browserslist": "^4.24.0",
- "lru-cache": "^5.1.1",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-globals": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
- "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-imports": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
- "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/traverse": "^7.27.1",
- "@babel/types": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-transforms": {
- "version": "7.28.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz",
- "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-imports": "^7.27.1",
- "@babel/helper-validator-identifier": "^7.27.1",
- "@babel/traverse": "^7.28.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-plugin-utils": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz",
- "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-string-parser": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
- "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
- "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-option": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
- "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helpers": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz",
- "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/template": "^7.27.2",
- "@babel/types": "^7.28.4"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/parser": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz",
- "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.28.4"
- },
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-self": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz",
- "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-source": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz",
- "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/template": {
- "version": "7.27.2",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
- "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/parser": "^7.27.2",
- "@babel/types": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz",
- "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.28.3",
- "@babel/helper-globals": "^7.28.0",
- "@babel/parser": "^7.28.4",
- "@babel/template": "^7.27.2",
- "@babel/types": "^7.28.4",
- "debug": "^4.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/types": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz",
- "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-string-parser": "^7.27.1",
- "@babel/helper-validator-identifier": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@esbuild/android-arm": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
- "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-arm64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz",
- "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz",
- "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/darwin-arm64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
- "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/darwin-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
- "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/freebsd-arm64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz",
- "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/freebsd-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz",
- "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-arm": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz",
- "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-arm64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz",
- "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-ia32": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz",
- "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-loong64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz",
- "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-mips64el": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz",
- "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
- "cpu": [
- "mips64el"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-ppc64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz",
- "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-riscv64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz",
- "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-s390x": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz",
- "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz",
- "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/netbsd-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz",
- "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/openbsd-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz",
- "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/sunos-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz",
- "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-arm64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz",
- "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-ia32": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
- "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
- "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.13",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
- "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/sourcemap-codec": "^1.5.0",
- "@jridgewell/trace-mapping": "^0.3.24"
- }
- },
- "node_modules/@jridgewell/remapping": {
- "version": "2.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
- "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.24"
- }
- },
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
- "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.5.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
- "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.31",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
- "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/resolve-uri": "^3.1.0",
- "@jridgewell/sourcemap-codec": "^1.4.14"
- }
- },
- "node_modules/@rolldown/pluginutils": {
- "version": "1.0.0-beta.27",
- "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz",
- "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/babel__core": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
- "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7",
- "@types/babel__generator": "*",
- "@types/babel__template": "*",
- "@types/babel__traverse": "*"
- }
- },
- "node_modules/@types/babel__generator": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz",
- "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.0.0"
- }
- },
- "node_modules/@types/babel__template": {
- "version": "7.4.4",
- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
- "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0"
- }
- },
- "node_modules/@types/babel__traverse": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz",
- "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.28.2"
- }
- },
- "node_modules/@types/prop-types": {
- "version": "15.7.15",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz",
- "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/react": {
- "version": "18.3.24",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.24.tgz",
- "integrity": "sha512-0dLEBsA1kI3OezMBF8nSsb7Nk19ZnsyE1LLhB8r27KbgU5H4pvuqZLdtE+aUkJVoXgTVuA+iLIwmZ0TuK4tx6A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/prop-types": "*",
- "csstype": "^3.0.2"
- }
- },
- "node_modules/@types/react-dom": {
- "version": "18.3.7",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz",
- "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "@types/react": "^18.0.0"
- }
- },
- "node_modules/@vitejs/plugin-react": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz",
- "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.28.0",
- "@babel/plugin-transform-react-jsx-self": "^7.27.1",
- "@babel/plugin-transform-react-jsx-source": "^7.27.1",
- "@rolldown/pluginutils": "1.0.0-beta.27",
- "@types/babel__core": "^7.20.5",
- "react-refresh": "^0.17.0"
- },
- "engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "peerDependencies": {
- "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0"
- }
- },
- "node_modules/baseline-browser-mapping": {
- "version": "2.8.4",
- "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.4.tgz",
- "integrity": "sha512-L+YvJwGAgwJBV1p6ffpSTa2KRc69EeeYGYjRVWKs0GKrK+LON0GC0gV+rKSNtALEDvMDqkvCFq9r1r94/Gjwxw==",
- "dev": true,
- "license": "Apache-2.0",
- "bin": {
- "baseline-browser-mapping": "dist/cli.js"
- }
- },
- "node_modules/browserslist": {
- "version": "4.26.2",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.2.tgz",
- "integrity": "sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "baseline-browser-mapping": "^2.8.3",
- "caniuse-lite": "^1.0.30001741",
- "electron-to-chromium": "^1.5.218",
- "node-releases": "^2.0.21",
- "update-browserslist-db": "^1.1.3"
- },
- "bin": {
- "browserslist": "cli.js"
- },
- "engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
- }
- },
- "node_modules/caniuse-lite": {
- "version": "1.0.30001743",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001743.tgz",
- "integrity": "sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "CC-BY-4.0"
- },
- "node_modules/convert-source-map": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/csstype": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
- "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/debug": {
- "version": "4.4.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
- "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "^2.1.3"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/electron-to-chromium": {
- "version": "1.5.218",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.218.tgz",
- "integrity": "sha512-uwwdN0TUHs8u6iRgN8vKeWZMRll4gBkz+QMqdS7DDe49uiK68/UX92lFb61oiFPrpYZNeZIqa4bA7O6Aiasnzg==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/esbuild": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
- "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=12"
- },
- "optionalDependencies": {
- "@esbuild/android-arm": "0.18.20",
- "@esbuild/android-arm64": "0.18.20",
- "@esbuild/android-x64": "0.18.20",
- "@esbuild/darwin-arm64": "0.18.20",
- "@esbuild/darwin-x64": "0.18.20",
- "@esbuild/freebsd-arm64": "0.18.20",
- "@esbuild/freebsd-x64": "0.18.20",
- "@esbuild/linux-arm": "0.18.20",
- "@esbuild/linux-arm64": "0.18.20",
- "@esbuild/linux-ia32": "0.18.20",
- "@esbuild/linux-loong64": "0.18.20",
- "@esbuild/linux-mips64el": "0.18.20",
- "@esbuild/linux-ppc64": "0.18.20",
- "@esbuild/linux-riscv64": "0.18.20",
- "@esbuild/linux-s390x": "0.18.20",
- "@esbuild/linux-x64": "0.18.20",
- "@esbuild/netbsd-x64": "0.18.20",
- "@esbuild/openbsd-x64": "0.18.20",
- "@esbuild/sunos-x64": "0.18.20",
- "@esbuild/win32-arm64": "0.18.20",
- "@esbuild/win32-ia32": "0.18.20",
- "@esbuild/win32-x64": "0.18.20"
- }
- },
- "node_modules/escalade": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
- "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "license": "MIT"
- },
- "node_modules/jsesc": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
- "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "license": "MIT",
- "dependencies": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- },
- "bin": {
- "loose-envify": "cli.js"
- }
- },
- "node_modules/lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^3.0.2"
- }
- },
- "node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/nanoid": {
- "version": "3.3.11",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
- "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
- "node_modules/node-releases": {
- "version": "2.0.21",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.21.tgz",
- "integrity": "sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/picocolors": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
- "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/postcss": {
- "version": "8.5.6",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
- "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "nanoid": "^3.3.11",
- "picocolors": "^1.1.1",
- "source-map-js": "^1.2.1"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- }
- },
- "node_modules/react": {
- "version": "18.3.1",
- "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
- "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
- "license": "MIT",
- "dependencies": {
- "loose-envify": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-dom": {
- "version": "18.3.1",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
- "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
- "license": "MIT",
- "dependencies": {
- "loose-envify": "^1.1.0",
- "scheduler": "^0.23.2"
- },
- "peerDependencies": {
- "react": "^18.3.1"
- }
- },
- "node_modules/react-refresh": {
- "version": "0.17.0",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz",
- "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/rollup": {
- "version": "3.29.5",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz",
- "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "rollup": "dist/bin/rollup"
- },
- "engines": {
- "node": ">=14.18.0",
- "npm": ">=8.0.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/scheduler": {
- "version": "0.23.2",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
- "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
- "license": "MIT",
- "dependencies": {
- "loose-envify": "^1.1.0"
- }
- },
- "node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/source-map-js": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
- "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/update-browserslist-db": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
- "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "escalade": "^3.2.0",
- "picocolors": "^1.1.1"
- },
- "bin": {
- "update-browserslist-db": "cli.js"
- },
- "peerDependencies": {
- "browserslist": ">= 4.21.0"
- }
- },
- "node_modules/vite": {
- "version": "4.5.14",
- "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.14.tgz",
- "integrity": "sha512-+v57oAaoYNnO3hIu5Z/tJRZjq5aHM2zDve9YZ8HngVHbhk66RStobhb1sqPMIPEleV6cNKYK4eGrAbE9Ulbl2g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "esbuild": "^0.18.10",
- "postcss": "^8.4.27",
- "rollup": "^3.27.1"
- },
- "bin": {
- "vite": "bin/vite.js"
- },
- "engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/vitejs/vite?sponsor=1"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- },
- "peerDependencies": {
- "@types/node": ">= 14",
- "less": "*",
- "lightningcss": "^1.21.0",
- "sass": "*",
- "stylus": "*",
- "sugarss": "*",
- "terser": "^5.4.0"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- },
- "less": {
- "optional": true
- },
- "lightningcss": {
- "optional": true
- },
- "sass": {
- "optional": true
- },
- "stylus": {
- "optional": true
- },
- "sugarss": {
- "optional": true
- },
- "terser": {
- "optional": true
- }
- }
- },
- "node_modules/yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true,
- "license": "ISC"
- }
- }
-}
diff --git a/examples/react/package.json b/examples/react/package.json
deleted file mode 100644
index cce434ae..00000000
--- a/examples/react/package.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "opencollection-react-example",
- "version": "1.0.0",
- "private": true,
- "scripts": {
- "dev": "vite",
- "build": "vite build",
- "preview": "vite preview"
- },
- "dependencies": {
- "react": "^18.2.0",
- "react-dom": "^18.2.0"
- },
- "devDependencies": {
- "@types/react": "^18.2.0",
- "@types/react-dom": "^18.2.0",
- "@vitejs/plugin-react": "^4.0.0",
- "vite": "^4.4.0"
- }
-}
\ No newline at end of file
diff --git a/examples/react/src/App.jsx b/examples/react/src/App.jsx
deleted file mode 100644
index e337e055..00000000
--- a/examples/react/src/App.jsx
+++ /dev/null
@@ -1,102 +0,0 @@
-import React from 'react';
-import { OpenCollectionPlayground } from '../../../packages/oc-playground/dist/oc-playground.es.js';
-import '../../../packages/oc-playground/dist/playground.css';
-
-const sampleCollection = {
- name: "Sample API Collection",
- description: "A comprehensive OpenCollection demonstration showcasing various API endpoints and configurations",
- items: [
- {
- type: "http",
- name: "Get Users",
- method: "GET",
- url: "https://jsonplaceholder.typicode.com/users",
- docs: "Retrieves a list of all users from the JSONPlaceholder API",
- headers: [
- {
- name: "Accept",
- value: "application/json"
- }
- ]
- },
- {
- type: "http",
- name: "Create User",
- method: "POST",
- url: "https://jsonplaceholder.typicode.com/users",
- docs: "Creates a new user in the system",
- headers: [
- {
- name: "Content-Type",
- value: "application/json"
- }
- ],
- body: {
- type: "json",
- data: JSON.stringify({
- name: "John Doe",
- email: "john@example.com"
- }, null, 2)
- }
- },
- {
- type: "http",
- name: "Get All Posts",
- method: "GET",
- url: "https://jsonplaceholder.typicode.com/posts",
- docs: "Retrieves all blog posts"
- },
- {
- type: "http",
- name: "Get Post by ID",
- method: "GET",
- url: "https://jsonplaceholder.typicode.com/posts/1",
- docs: "Retrieves a specific post by its ID"
- },
- {
- type: "script",
- script: "// Utility functions for API testing\nfunction generateRandomId() {\n return Math.floor(Math.random() * 1000) + 1;\n}\n\nconsole.log('Utility functions loaded');"
- }
- ],
- environments: [
- {
- name: "Production",
- description: "Production environment configuration",
- variables: [
- {
- name: "baseUrl",
- value: "https://api.example.com"
- }
- ]
- },
- {
- name: "Development",
- description: "Development environment for testing",
- variables: [
- {
- name: "baseUrl",
- value: "http://localhost:3000"
- }
- ]
- }
- ]
-};
-
-function App() {
- return (
-
- 🚀
-
- }
- />
- );
-}
-
-export default App;
\ No newline at end of file
diff --git a/examples/react/src/main.jsx b/examples/react/src/main.jsx
deleted file mode 100644
index 7c3fd8c2..00000000
--- a/examples/react/src/main.jsx
+++ /dev/null
@@ -1,12 +0,0 @@
-import React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './App.jsx';
-
-const container = document.getElementById('root');
-const root = createRoot(container);
-
-root.render(
-
-
-
-);
\ No newline at end of file
diff --git a/examples/react/vite.config.js b/examples/react/vite.config.js
deleted file mode 100644
index 4568ffba..00000000
--- a/examples/react/vite.config.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import { defineConfig } from 'vite';
-import react from '@vitejs/plugin-react';
-
-export default defineConfig({
- plugins: [react()],
- server: {
- port: 3001
- }
-});
\ No newline at end of file
diff --git a/examples/standalone-html/bruno.json b/examples/standalone-html/bruno.json
deleted file mode 100644
index 50a80eba..00000000
--- a/examples/standalone-html/bruno.json
+++ /dev/null
@@ -1,647 +0,0 @@
-{
- "name": "E-commerce API",
- "version": "1",
- "items": [
- {
- "type": "folder",
- "name": "Cart",
- "filename": "Cart",
- "seq": 4,
- "root": {
- "docs": "Shopping cart endpoints",
- "meta": {
- "name": "Cart",
- "seq": 4
- }
- },
- "items": [
- {
- "type": "http",
- "name": "Add Item to Cart",
- "filename": "Add Item to Cart.bru",
- "seq": 2,
- "settings": {},
- "tags": [],
- "request": {
- "url": "{{baseUrl}}/cart/add/item/:itemId",
- "method": "POST",
- "headers": [
- {
- "name": "Content-Type",
- "value": "application/json",
- "enabled": true
- },
- {
- "name": "Authorization",
- "value": "Bearer {{accessToken}}",
- "enabled": true
- }
- ],
- "params": [
- {
- "name": "itemId",
- "value": "cd3ad475-0784-4a0d-9fe4-a9a17e5391d9",
- "type": "path",
- "enabled": true
- }
- ],
- "body": {
- "mode": "json",
- "json": "{ \n \"quantity\": 2\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "",
- "docs": "Add a product to the user's shopping cart",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "Clear Cart",
- "filename": "Clear Cart.bru",
- "seq": 5,
- "settings": {},
- "tags": [],
- "request": {
- "url": "{{baseUrl}}/cart",
- "method": "DELETE",
- "headers": [
- {
- "name": "Authorization",
- "value": "Bearer {{accessToken}}",
- "enabled": true
- }
- ],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "",
- "docs": "Remove all items from the user's cart",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "Get User Cart",
- "filename": "Get User Cart.bru",
- "seq": 1,
- "settings": {},
- "tags": [],
- "request": {
- "url": "{{baseUrl}}/cart",
- "method": "GET",
- "headers": [
- {
- "name": "Authorization",
- "value": "Bearer {{accessToken}}",
- "enabled": true
- }
- ],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "",
- "docs": "Retrieve the current user's shopping cart",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "Remove Item from Cart",
- "filename": "Remove Item from Cart.bru",
- "seq": 4,
- "settings": {},
- "tags": [],
- "request": {
- "url": "{{baseUrl}}/cart/item/:itemId",
- "method": "DELETE",
- "headers": [
- {
- "name": "Authorization",
- "value": "Bearer {{accessToken}}",
- "enabled": true
- }
- ],
- "params": [
- {
- "name": "itemId",
- "value": "cd3ad475-0784-4a0d-9fe4-a9a17e5391d9",
- "type": "path",
- "enabled": true
- }
- ],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "",
- "docs": "Remove a specific item from the cart",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "Update Cart Item",
- "filename": "Update Cart Item.bru",
- "seq": 3,
- "settings": {},
- "tags": [],
- "request": {
- "url": "{{baseUrl}}/cart/item/:itemId",
- "method": "PUT",
- "headers": [
- {
- "name": "Content-Type",
- "value": "application/json",
- "enabled": true
- },
- {
- "name": "Authorization",
- "value": "Bearer {{accessToken}}",
- "enabled": true
- }
- ],
- "params": [
- {
- "name": "itemId",
- "value": "cd3ad475-0784-4a0d-9fe4-a9a17e5391d9",
- "type": "path",
- "enabled": true
- }
- ],
- "body": {
- "mode": "json",
- "json": "{\n \"quantity\": 5\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "",
- "docs": "Update the quantity of an item in the cart",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- },
- {
- "type": "folder",
- "name": "Authentication",
- "filename": "Authentication",
- "seq": 2,
- "root": {
- "docs": "User authentication endpoints",
- "meta": {
- "name": "Authentication",
- "seq": 2
- }
- },
- "items": [
- {
- "type": "http",
- "name": "Register User",
- "filename": "Register User.bru",
- "seq": 1,
- "settings": {},
- "tags": [],
- "request": {
- "url": "{{baseUrl}}/auth/register",
- "method": "POST",
- "headers": [
- {
- "name": "Content-Type",
- "value": "application/json",
- "enabled": true
- }
- ],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"name\": \"Anoop\",\n \"email\": \"test@example.com\",\n \"password\": \"password123\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "",
- "docs": "Register a new user account",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "Whoami",
- "filename": "Whoami.bru",
- "seq": 3,
- "settings": {},
- "tags": [],
- "request": {
- "url": "{{baseUrl}}/auth/whoami",
- "method": "GET",
- "headers": [
- {
- "name": "Authorization",
- "value": "Bearer {{accessToken}}",
- "enabled": true
- }
- ],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "",
- "docs": "Retrieve authenticated user's profile information",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "Login",
- "filename": "Login.bru",
- "seq": 2,
- "settings": {},
- "tags": [],
- "request": {
- "url": "{{baseUrl}}/auth/login",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"email\": \"test@example.com\",\n \"password\": \"password123\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "res": "bru.setEnvVar(\"accessToken\", res.body.token)"
- },
- "vars": {},
- "assertions": [],
- "tests": "",
- "docs": "Authenticate a user and receive a token",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- },
- {
- "type": "folder",
- "name": "Orders",
- "filename": "Orders",
- "seq": 5,
- "root": {
- "docs": "Order management endpoints",
- "meta": {
- "name": "Orders",
- "seq": 5
- }
- },
- "items": [
- {
- "type": "http",
- "name": "Create Order",
- "filename": "Create Order.bru",
- "seq": 1,
- "settings": {},
- "tags": [],
- "request": {
- "url": "{{baseUrl}}/orders",
- "method": "POST",
- "headers": [
- {
- "name": "Content-Type",
- "value": "application/json",
- "enabled": true
- },
- {
- "name": "Authorization",
- "value": "Bearer {{accessToken}}",
- "enabled": true
- }
- ],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"shippingAddress\": \"Mars\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "// Check if the request was successful\nif (res.getStatus() === 200 || res.getStatus() === 201) {\n // Parse the response body\n var jsonData = res.getBody();\n \n // Check if the order has an ID\n if (jsonData && jsonData.id) {\n // Store the order ID in the environment\n bru.setEnvVar('order_id', jsonData.id);\n console.log('Order ID saved to environment: ' + jsonData.id);\n }\n}",
- "docs": "Create a new order using the items in the user's cart",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "Get User Orders",
- "filename": "Get User Orders.bru",
- "seq": 2,
- "settings": {},
- "tags": [],
- "request": {
- "url": "{{baseUrl}}/orders",
- "method": "GET",
- "headers": [
- {
- "name": "Authorization",
- "value": "Bearer {{accessToken}}",
- "enabled": true
- }
- ],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "",
- "docs": "Retrieve a list of all orders placed by the current user",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "Get Order by ID",
- "filename": "Get Order by ID.bru",
- "seq": 3,
- "settings": {},
- "tags": [],
- "request": {
- "url": "{{baseUrl}}/orders/:orderId",
- "method": "GET",
- "headers": [
- {
- "name": "Authorization",
- "value": "Bearer {{accessToken}}",
- "enabled": true
- }
- ],
- "params": [
- {
- "name": "orderId",
- "value": "9c4d1e4f-64dd-465a-b52a-5471caab828b",
- "type": "path",
- "enabled": true
- }
- ],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "",
- "docs": "Retrieve detailed information about a specific order",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- },
- {
- "type": "folder",
- "name": "Products",
- "filename": "Products",
- "seq": 3,
- "root": {
- "docs": "Product-related endpoints. The server automatically seeds 5 sample products on startup if no products exist.",
- "meta": {
- "name": "Products",
- "seq": 3
- }
- },
- "items": [
- {
- "type": "http",
- "name": "Get Products by Category",
- "filename": "Get Products by Category.bru",
- "seq": 2,
- "settings": {},
- "tags": [],
- "request": {
- "url": "{{baseUrl}}/products?category=Electronics",
- "method": "GET",
- "headers": [],
- "params": [
- {
- "name": "category",
- "value": "Electronics",
- "type": "query",
- "enabled": true
- }
- ],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "",
- "docs": "Retrieve products filtered by category. Seeded categories include: Electronics, Sports, and Home.",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "Get Product by ID",
- "filename": "Get Product by ID.bru",
- "seq": 3,
- "settings": {},
- "tags": [],
- "request": {
- "url": "{{baseUrl}}/products/:productId",
- "method": "GET",
- "headers": [],
- "params": [
- {
- "name": "productId",
- "value": "cd3ad475-0784-4a0d-9fe4-a9a17e5391d9",
- "type": "path",
- "enabled": true
- }
- ],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "",
- "docs": "Retrieve detailed information about a specific product",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "Get All Products",
- "filename": "Get All Products.bru",
- "seq": 1,
- "settings": {},
- "tags": [],
- "request": {
- "url": "{{baseUrl}}/products",
- "method": "GET",
- "headers": [],
- "params": [
- {
- "name": "category",
- "value": "electronics",
- "type": "query",
- "enabled": false
- }
- ],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "",
- "docs": "Retrieve a list of all products, optionally filtered by category. Default seeded categories include: Electronics, Sports, and Home.",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- }
- ],
- "activeEnvironmentUid": "RcGeNRbYHRYrqqtGIxs7V",
- "environments": [
- {
- "variables": [
- {
- "name": "baseUrl",
- "value": "http://localhost:3001/api",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "userToken",
- "value": "ZjFhZDJhMDItNmQ3Yi00OTg2LWFhZjYtODJkZGE1M2UyYTJh",
- "secret": false,
- "enabled": true,
- "type": "text"
- },
- {
- "name": "accessToken",
- "value": "ZjFhZDJhMDItNmQ3Yi00OTg2LWFhZjYtODJkZGE1M2UyYTJh",
- "secret": false,
- "enabled": true,
- "type": "text"
- },
- {
- "name": "order_id",
- "value": "9c4d1e4f-64dd-465a-b52a-5471caab828b",
- "secret": false,
- "enabled": true,
- "type": "text"
- }
- ],
- "name": "dev"
- }
- ],
- "root": {
- "request": {
- "auth": {
- "mode": "none"
- }
- },
- "docs": "Collection for testing the E-commerce API endpoints. The server automatically seeds 5 sample products (Smartphone X, Running Shoes, Coffee Maker, Laptop Pro, Wireless Earbuds) on startup if no products exist in the database.\n\n[
](https://fetch.usebruno.com?url=git%40bitbucket.org%3Ausebruno%2Fdemo-api-collection.git \"target=_blank rel=noopener noreferrer\")",
- "meta": {
- "name": "E-commerce API"
- }
- },
- "brunoConfig": {
- "version": "1",
- "name": "E-commerce API",
- "type": "collection",
- "ignore": [
- "node_modules",
- ".git"
- ],
- "size": 0.005391120910644531,
- "filesCount": 23
- }
-}
\ No newline at end of file
diff --git a/examples/standalone-html/index.html b/examples/standalone-html/index.html
deleted file mode 100644
index d9563841..00000000
--- a/examples/standalone-html/index.html
+++ /dev/null
@@ -1,206 +0,0 @@
-
-
-
-
-
- OpenCollection - Standalone HTML Example
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/examples/standalone-html/index2.html b/examples/standalone-html/index2.html
deleted file mode 100644
index 8c7d36da..00000000
--- a/examples/standalone-html/index2.html
+++ /dev/null
@@ -1,268 +0,0 @@
-
-
-
-
-
- OpenCollection - Standalone HTML Example
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/main.json b/main.json
deleted file mode 100644
index 31efaa74..00000000
--- a/main.json
+++ /dev/null
@@ -1,4476 +0,0 @@
-{
- "name": "bruno-testbench",
- "version": "1",
- "items": [
- {
- "type": "http",
- "name": "ping",
- "filename": "ping.bru",
- "seq": 1,
- "request": {
- "url": "{{host}}/ping",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "bru.runner.stopExecution();"
- },
- "vars": {},
- "assertions": [],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "folder",
- "name": "graphql",
- "filename": "graphql",
- "items": [
- {
- "type": "graphql",
- "name": "spacex",
- "filename": "spacex.bru",
- "seq": 1,
- "request": {
- "url": "https://spacex-production.up.railway.app/",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "graphql",
- "graphql": {
- "query": "{\n company {\n ceo\n }\n}\n"
- },
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "cgAc6fGnMoVZmVUmttac9"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- },
- {
- "type": "folder",
- "name": "echo",
- "filename": "echo",
- "items": [
- {
- "type": "http",
- "name": "echo bom json",
- "filename": "echo bom json.bru",
- "seq": 1,
- "request": {
- "url": "{{host}}/api/echo/bom-json-test",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "echo form-url-encoded",
- "filename": "echo form-url-encoded.bru",
- "seq": 9,
- "request": {
- "url": "{{echo-host}}",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "formUrlEncoded",
- "formUrlEncoded": [
- {
- "name": "form-data-key",
- "value": "{{form-data-key}}",
- "enabled": true
- },
- {
- "name": "form-data-stringified-object",
- "value": "{{form-data-stringified-object}}",
- "enabled": true
- }
- ],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "let obj = JSON.stringify({foo:123});\nbru.setVar('form-data-key', 'form-data-value');\nbru.setVar('form-data-stringified-object', obj);"
- },
- "vars": {},
- "assertions": [
- {
- "name": "res.body",
- "value": "eq form-data-key=form-data-value&form-data-stringified-object=%7B%22foo%22%3A123%7D",
- "enabled": true,
- "uid": "GXP3iOow05yWkFbazZh97"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "echo json",
- "filename": "echo json.bru",
- "seq": 2,
- "request": {
- "url": "{{host}}/api/echo/json",
- "method": "POST",
- "headers": [
- {
- "name": "foo",
- "value": "bar",
- "enabled": true
- }
- ],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"hello\": \"bruno\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "bru.setVar(\"foo\", \"foo-world-2\");"
- },
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "NtmLz1fS7Ms6eQ6ZrDRN0"
- }
- ],
- "tests": "test(\"should return json\", function() {\n const data = res.getBody();\n expect(res.getBody()).to.eql({\n \"hello\": \"bruno\"\n });\n}); ",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "echo multipart via scripting",
- "filename": "echo multipart scripting.bru",
- "seq": 10,
- "request": {
- "url": "{{echo-host}}",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "multipartForm",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "const FormData = require(\"form-data\");\nconst form = new FormData();\nform.append('form-data-key', 'form-data-value');\nreq.setBody(form);"
- },
- "vars": {},
- "assertions": [
- {
- "name": "res.body",
- "value": "contains form-data-value",
- "enabled": true,
- "uid": "6jqCWTqQtH6GSgpFNU3ep"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "echo multipart",
- "filename": "echo multipart.bru",
- "seq": 8,
- "request": {
- "url": "{{echo-host}}",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "multipartForm",
- "formUrlEncoded": [],
- "multipartForm": [
- {
- "type": "text",
- "name": "foo",
- "value": "{\"bar\":\"baz\"}",
- "enabled": true
- },
- {
- "type": "text",
- "name": "form-data-key",
- "value": "{{form-data-key}}",
- "enabled": true
- },
- {
- "type": "text",
- "name": "form-data-stringified-object",
- "value": "{{form-data-stringified-object}}",
- "enabled": true
- },
- {
- "type": "file",
- "name": "file",
- "value": [
- "bruno.png"
- ],
- "enabled": true
- }
- ],
- "file": []
- },
- "script": {
- "req": "let obj = JSON.stringify({foo:123});\nbru.setVar('form-data-key', 'form-data-value');\nbru.setVar('form-data-stringified-object', obj);"
- },
- "vars": {},
- "assertions": [
- {
- "name": "res.body",
- "value": "contains form-data-value",
- "enabled": true,
- "uid": "mvYX54Lmd3i79iB48LEyz"
- },
- {
- "name": "res.body",
- "value": "contains {\"foo\":123}",
- "enabled": true,
- "uid": "CAEG8PjR6KPYsIbxz1N0f"
- },
- {
- "name": "res.body",
- "value": "contains Content-Type: application/json--test",
- "enabled": true,
- "uid": "aZHXzHRJMkWaVqA0kFLJV"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "echo numbers",
- "filename": "echo numbers.bru",
- "seq": 1,
- "request": {
- "url": "{{echo-host}}",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"integer\": 123,\n \"negativeInteger\": -99,\n \"zero\": 0,\n \"float\": 2.718,\n \"negativeFloat\": -1.618,\n \"largeDouble\": 12345.678901234567,\n \"smallDouble\": 9.876e-12,\n \"booleanTrue\": true,\n \"booleanFalse\": false\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.body.integer",
- "value": "eq 123",
- "enabled": true,
- "uid": "ZtVS9gUgc5iSmDq0gNIaT"
- },
- {
- "name": "res.body.integer",
- "value": "isNumber",
- "enabled": true,
- "uid": "fqLAWWm8pqG2YacqLa58R"
- },
- {
- "name": "res.body.negativeInteger",
- "value": "eq -99",
- "enabled": true,
- "uid": "ULU5rgNpJBc4t1OspKAIi"
- },
- {
- "name": "res.body.negativeInteger",
- "value": "isNumber",
- "enabled": true,
- "uid": "gpZjNNkPr2AXn6GzkhkN8"
- },
- {
- "name": "res.body.zero",
- "value": "eq 0",
- "enabled": true,
- "uid": "D2pXZJB9aTOAwqwXmTVEB"
- },
- {
- "name": "res.body.zero",
- "value": "isNumber",
- "enabled": true,
- "uid": "TE6Q5jhRkjg0Rsp0zNLl7"
- },
- {
- "name": "res.body.float",
- "value": "eq 2.718",
- "enabled": true,
- "uid": "izHjCWoESD3JaoDgQBwa0"
- },
- {
- "name": "res.body.float",
- "value": "isNumber",
- "enabled": true,
- "uid": "MRZ9PsV8AogLzvgUolu68"
- },
- {
- "name": "res.body.negativeFloat",
- "value": "eq -1.618",
- "enabled": true,
- "uid": "fzzJP0kj71WFqZ0DDMeIo"
- },
- {
- "name": "res.body.negativeFloat",
- "value": "isNumber",
- "enabled": true,
- "uid": "cm2c5v40ilCZsraGiR564"
- },
- {
- "name": "res.body.largeDouble",
- "value": "eq 12345.678901234567",
- "enabled": true,
- "uid": "6gnCn1c8TSHigYy1taFhN"
- },
- {
- "name": "res.body.largeDouble",
- "value": "isNumber",
- "enabled": true,
- "uid": "qEHQ1qRt6HyCzMqhUrdIT"
- },
- {
- "name": "res.body.smallDouble",
- "value": "eq 9.876e-12",
- "enabled": true,
- "uid": "ZKrwMPCjBEGqZ4yb1KxoG"
- },
- {
- "name": "res.body.smallDouble",
- "value": "isNumber",
- "enabled": true,
- "uid": "xRWLvDJJZSzmpz5vubw8p"
- },
- {
- "name": "res.body.booleanTrue",
- "value": "eq true",
- "enabled": true,
- "uid": "FENKG4gsPZtHyYYBLNKie"
- },
- {
- "name": "res.body.booleanFalse",
- "value": "eq false",
- "enabled": true,
- "uid": "6SoMig8CeBBIW590VwX5K"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "echo plaintext",
- "filename": "echo plaintext.bru",
- "seq": 3,
- "request": {
- "url": "{{host}}/api/echo/text",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "text",
- "text": "hello",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "uWsY31SAmtyc2JIpTxqzO"
- }
- ],
- "tests": "test(\"should return plain text\", function() {\n const data = res.getBody();\n expect(res.getBody()).to.eql(\"hello\");\n});\n",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "echo xml parsed(self closing tags)",
- "filename": "echo xml parsed(self closing tags).bru",
- "seq": 6,
- "request": {
- "url": "{{host}}/api/echo/xml-parsed",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "xml",
- "xml": "\n bruno\n \n",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "F4K7K3z239O2WvhcYc8cu"
- }
- ],
- "tests": "test(\"should return parsed xml\", function() {\n const data = res.getBody();\n expect(res.getBody()).to.eql({\n \"hello\": {\n \"world\": [\n \"bruno\",\n \"\"\n ]\n }\n });\n});\n",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "echo xml parsed",
- "filename": "echo xml parsed.bru",
- "seq": 4,
- "request": {
- "url": "{{host}}/api/echo/xml-parsed",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "xml",
- "xml": "\n bruno\n",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "4OxoP1d1Sn7J0Rr5A5MoR"
- }
- ],
- "tests": "test(\"should return parsed xml\", function() {\n const data = res.getBody();\n expect(res.getBody()).to.eql({\n \"hello\": {\n \"world\": [\"bruno\"]\n }\n });\n});\n",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "echo xml raw",
- "filename": "echo xml raw.bru",
- "seq": 5,
- "request": {
- "url": "{{host}}/api/echo/xml-raw",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "xml",
- "xml": "bruno",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "test echo any",
- "filename": "test echo any.bru",
- "seq": 11,
- "request": {
- "url": "{{httpfaker}}/api/echo/custom",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"headers\": { \"content-type\": \"text/plain\" },\n \"content\": \"hello\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.body",
- "value": "eq hello",
- "enabled": true,
- "uid": "7Plt7ZGJQhoOFXFKnTQce"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "test echo-any json",
- "filename": "test echo-any json.bru",
- "seq": 12,
- "request": {
- "url": "{{httpfaker}}/api/echo/custom",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"type\": \"application/json\",\n \"contentJSON\": {\"x\": 42}\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.body.x",
- "value": "eq 42",
- "enabled": true,
- "uid": "wU1YDNe5ZYZLi1noaCsHK"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "folder",
- "name": "multiline",
- "filename": "multiline",
- "items": [
- {
- "type": "http",
- "name": "echo binary",
- "filename": "echo binary.bru",
- "seq": 1,
- "request": {
- "url": "{{echo-host}}",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "file",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": [
- {
- "filePath": "bruno.png",
- "contentType": "image/png",
- "selected": true
- }
- ]
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- }
- ]
- },
- {
- "type": "folder",
- "name": "auth",
- "filename": "auth",
- "items": [
- {
- "type": "folder",
- "name": "inherit auth",
- "filename": "inherit auth",
- "items": [
- {
- "type": "http",
- "name": "inherit Bearer Auth 200",
- "filename": "inherit Bearer Auth 200.bru",
- "seq": 2,
- "request": {
- "url": "{{host}}/api/auth/bearer/protected",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "res": "bru.setEnvVar(\"foo\", \"bar\");"
- },
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "200",
- "enabled": true,
- "uid": "60I5u9Am5kDPd7juwvKV5"
- },
- {
- "name": "res.body.message",
- "value": "Authentication successful",
- "enabled": true,
- "uid": "fkQViSlIxJJ0RyhCN5tp3"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "inherit"
- }
- }
- }
- ]
- },
- {
- "type": "folder",
- "name": "basic",
- "filename": "basic",
- "items": [
- {
- "type": "folder",
- "name": "via auth",
- "filename": "via auth",
- "items": [
- {
- "type": "http",
- "name": "Basic Auth 200",
- "filename": "Basic Auth 200.bru",
- "seq": 1,
- "request": {
- "url": "{{host}}/api/auth/basic/protected",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "200",
- "enabled": true,
- "uid": "d5CVuD1HpRVtyUWziE6Y7"
- },
- {
- "name": "res.body.message",
- "value": "Authentication successful",
- "enabled": true,
- "uid": "kSZPZekosG0Uci7SE8Hju"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "basic",
- "basic": {
- "username": "bruno",
- "password": "{{basic_auth_password}}"
- }
- }
- }
- },
- {
- "type": "http",
- "name": "Basic Auth 400",
- "filename": "Basic Auth 401.bru",
- "seq": 2,
- "request": {
- "url": "{{host}}/api/auth/basic/protected",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "401",
- "enabled": true,
- "uid": "xnlyXClGdlx7gGLwzaniZ"
- },
- {
- "name": "res.body",
- "value": "Unauthorized",
- "enabled": true,
- "uid": "20H5jGbawcioeVKPLMsHn"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- },
- {
- "type": "folder",
- "name": "via script",
- "filename": "via script",
- "items": [
- {
- "type": "http",
- "name": "Basic Auth 401",
- "filename": "Basic Auth 401.bru",
- "seq": 2,
- "request": {
- "url": "{{host}}/api/auth/basic/protected",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "const username = \"bruno\";\nconst password = \"invalid\";\n\nconst authString = `${username}:${password}`;\nconst encodedAuthString = require('btoa')(authString);\n\nreq.setHeader(\"Authorization\", `Basic ${encodedAuthString}`);"
- },
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "401",
- "enabled": true,
- "uid": "96LEDffmtAmfKTsfemJaB"
- },
- {
- "name": "res.body",
- "value": "Unauthorized",
- "enabled": true,
- "uid": "7B66oHgquEiW39PCRcf5A"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "Basic Auth 200",
- "filename": "Basic Auth 200.bru",
- "seq": 1,
- "request": {
- "url": "{{host}}/api/auth/basic/protected",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "const username = \"bruno\";\nconst password = \"della\";\n\nconst authString = `${username}:${password}`;\nconst encodedAuthString = require('btoa')(authString);\n\nreq.setHeader(\"Authorization\", `Basic ${encodedAuthString}`);"
- },
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "C7EXFxZSx9MTjrPvbZK9h"
- },
- {
- "name": "res.body.message",
- "value": "Authentication successful",
- "enabled": true,
- "uid": "zXFBjrNaXojNhRdJVJ86w"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- }
- ]
- },
- {
- "type": "folder",
- "name": "cookie",
- "filename": "cookie",
- "items": [
- {
- "type": "http",
- "name": "Check",
- "filename": "Check.bru",
- "seq": 2,
- "request": {
- "url": "{{host}}/api/auth/cookie/protected",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "Login",
- "filename": "Login.bru",
- "seq": 1,
- "request": {
- "url": "{{host}}/api/auth/cookie/login",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- },
- {
- "type": "folder",
- "name": "bearer",
- "filename": "bearer",
- "items": [
- {
- "type": "folder",
- "name": "via headers",
- "filename": "via headers",
- "items": [
- {
- "type": "http",
- "name": "Bearer Auth 200",
- "filename": "Bearer Auth 200.bru",
- "seq": 1,
- "request": {
- "url": "{{host}}/api/auth/bearer/protected",
- "method": "GET",
- "headers": [
- {
- "name": "Authorization",
- "value": "Bearer your_secret_token",
- "enabled": true
- }
- ],
- "params": [],
- "body": {
- "mode": "json",
- "json": "",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "res": "bru.setEnvVar(\"foo\", \"bar\");"
- },
- "vars": {
- "req": [
- {
- "name": "a-c",
- "value": "foo",
- "enabled": true,
- "local": false
- }
- ]
- },
- "assertions": [
- {
- "name": "res.status",
- "value": "200",
- "enabled": true,
- "uid": "uV4xNx780Qk3ff8zj0xVX"
- },
- {
- "name": "res.body.message",
- "value": "Authentication successful",
- "enabled": true,
- "uid": "0t9sjKI6l5tFRfLYcFLXv"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- },
- {
- "type": "folder",
- "name": "via auth",
- "filename": "via auth",
- "items": [
- {
- "type": "http",
- "name": "Bearer Auth 200",
- "filename": "Bearer Auth 200.bru",
- "seq": 1,
- "request": {
- "url": "{{host}}/api/auth/bearer/protected",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "res": "bru.setEnvVar(\"foo\", \"bar\");"
- },
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "200",
- "enabled": true,
- "uid": "nD6fKpZaZcqky2EMS3hhQ"
- },
- {
- "name": "res.body.message",
- "value": "Authentication successful",
- "enabled": true,
- "uid": "HRp5kskhIHPPXXDesRKj0"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "bearer",
- "bearer": {
- "token": "{{bearer_auth_token}}"
- }
- }
- }
- }
- ]
- }
- ]
- }
- ]
- },
- {
- "type": "folder",
- "name": "multipart",
- "filename": "multipart"
- },
- {
- "type": "folder",
- "name": "lib",
- "filename": "lib",
- "items": [
- {
- "type": "js",
- "name": "constants",
- "filename": "constants.js",
- "seq": 1,
- "fileContent": "const PI = 3.14;\n\nmodule.exports = {\n PI\n};"
- },
- {
- "type": "js",
- "name": "math",
- "filename": "math.js",
- "seq": 1,
- "fileContent": "const { PI } = require('./constants');\n\nconst sum = (a, b) => a + b;\nconst areaOfCircle = (radius) => PI * radius * radius;\n\nmodule.exports = {\n sum,\n areaOfCircle\n};\n"
- },
- {
- "type": "js",
- "name": "notes",
- "filename": "notes.js",
- "seq": 1,
- "fileContent": "const visualizeNotes = (res) => {\n let response = res.body;\n\n let notes = response?.notes || {};\n let responseRuntime = notes.runtime_sec || 0;\n\n notes.runtime = new Date(responseRuntime * 1000).toISOString().substr(11, 8);\n\n if (typeof response?.data === 'undefined' && typeof response?.rows === 'object') {\n response.data = response?.rows?.map(function (data) {\n return data?.values;\n });\n }\n\n const templateScript = `\n \n `;\n\n const mainScript = `\n \n `;\n\n const style = `\n \n `;\n\n const htmlString = `\n \n \n ${style}\n \n \n \n ${templateScript}\n ${mainScript}\n \n \n `;\n\n return htmlString;\n};\n\nmodule.exports = visualizeNotes;\n"
- }
- ]
- },
- {
- "type": "folder",
- "name": "string interpolation",
- "filename": "string interpolation",
- "root": {
- "request": {
- "vars": {
- "req": [
- {
- "name": "folder_pre_var",
- "value": "folder_pre_var_value",
- "enabled": true,
- "local": false,
- "uid": "V3bTRQFGwkKI4UoahPd2V"
- },
- {
- "name": "folder_pre_var_2",
- "value": "{{env.var1}}",
- "enabled": true,
- "local": false,
- "uid": "av2XViQpOS4JZDWur8dK2"
- }
- ]
- }
- },
- "meta": {
- "name": "string interpolation"
- }
- },
- "items": [
- {
- "type": "http",
- "name": "env vars",
- "filename": "env vars.bru",
- "seq": 2,
- "request": {
- "url": "{{host}}/api/echo/json",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"envVar1\": \"{{env.var1}}\",\n \"envVar2\": \"{{env-var2}}\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "u2yA2zeeglSqFZxTDHEiZ"
- }
- ],
- "tests": "test(\"should return json\", function() {\n expect(res.getBody()).to.eql({\n \"envVar1\": \"envVar1\",\n \"envVar2\": \"envVar2\"\n });\n});\n",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "missing values",
- "filename": "missing values.bru",
- "seq": 1,
- "request": {
- "url": "{{host}}/api/echo/json?foo={{undefinedVar}}",
- "method": "POST",
- "headers": [],
- "params": [
- {
- "name": "foo",
- "value": "{{undefinedVar}}",
- "type": "query",
- "enabled": true
- }
- ],
- "body": {
- "mode": "json",
- "json": "{\n \"hello\": \"{{undefinedVar2}}\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "BwlJRndmkVnlQgCdpdNoE"
- }
- ],
- "tests": "test(\"should return json\", function() {\n const url = req.getUrl();\n const query = url.split(\"?\")[1];\n expect(query).to.equal(\"foo={{undefinedVar}}\");\n\n const data = res.getBody();\n expect(res.getBody()).to.eql({\n \"hello\": \"{{undefinedVar2}}\"\n });\n});\n",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "process env vars",
- "filename": "process env vars.bru",
- "seq": 4,
- "request": {
- "url": "{{host}}/api/echo/json",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"bark\": \"{{bark}}\",\n \"bark2\": \"{{process.env.PROC_ENV_VAR}}\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "VDoqOFucl5B4UdBGqGCAl"
- }
- ],
- "tests": "test(\"should return json\", function() {\n expect(res.getBody()).to.eql({\n \"bark\": \"woof\",\n \"bark2\": \"woof\"\n });\n});\n",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "runtime vars",
- "filename": "runtime vars.bru",
- "seq": 3,
- "request": {
- "url": "{{host}}/api/echo/text",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "text",
- "json": "{\n \"envVar1\": \"{{env.var1}}\",\n \"envVar2\": \"{{env-var2}}\"\n}",
- "text": "Hi, I am {{rUser.full_name}},\nI am {{rUser.age}} years old.\nMy favorite food is {{rUser.fav-food[0]}} and {{rUser.fav-food[1]}}.\nI like attention: {{rUser.want.attention}}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "bru.setVar(\"rUser\", {\n full_name: 'Bruno',\n age: 5,\n 'fav-food': ['egg', 'meat'],\n 'want.attention': true\n});"
- },
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "EodEloyMBhRCH8mPoLR8E"
- }
- ],
- "tests": "test(\"should return json\", function() {\n const expectedResponse = `Hi, I am Bruno,\nI am 5 years old.\nMy favorite food is egg and meat.\nI like attention: true`;\n expect(res.getBody()).to.equal(expectedResponse);\n});\n",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- },
- {
- "type": "folder",
- "name": "redirects",
- "filename": "redirects",
- "items": [
- {
- "type": "http",
- "name": "Disable Redirect",
- "filename": "Disable Redirect.bru",
- "seq": 1,
- "request": {
- "url": "{{host}}/redirect-to-ping",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "req.setMaxRedirects(0);"
- },
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "302",
- "enabled": true,
- "uid": "Kqu9TpenOeiPke7gM6e2W"
- }
- ],
- "tests": "test(\"should disable redirect to ping\", function() {\n const data = res.getBody();\n expect(data).to.equal('Found. Redirecting to /ping');\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "Test Redirect",
- "filename": "Test Redirect.bru",
- "seq": 2,
- "request": {
- "url": "{{host}}/redirect-to-ping",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "200",
- "enabled": true,
- "uid": "IDIABjMsPFmyysPy3DDLG"
- },
- {
- "name": "res.body",
- "value": "pong",
- "enabled": true,
- "uid": "d74g0aRt3Mlk1yaTa2BD1"
- }
- ],
- "tests": "test(\"should redirect to ping\", function() {\n const data = res.getBody();\n expect(data).to.equal('pong');\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- },
- {
- "type": "folder",
- "name": "asserts",
- "filename": "asserts",
- "items": [
- {
- "type": "http",
- "name": "test-assert-combinations",
- "filename": "test-assert-combinations.bru",
- "seq": 1,
- "request": {
- "url": "{{httpfaker}}/api/echo/custom",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"type\": \"application/json\",\n \"contentJSON\": {\n \"string\": \"foo\",\n \"stringWithSQuotes\": \"'foo'\",\n \"stringWithDQuotes\": \"\\\"foo\\\"\",\n \"number\": 123,\n \"numberAsString\": \"123\",\n \"numberAsStringWithSQuotes\": \"'123'\",\n \"numberAsStringWithDQuotes\": \"\\\"123\\\"\",\n \"numberAsStringWithLeadingZero\": \"0123\",\n \"numberBig\": 9007199254740992000,\n \"numberBigAsString\": \"9007199254740991999\",\n \"null\": null,\n \"nullAsString\": \"null\",\n \"nullAsStringWithSQuotes\": \"'null'\",\n \"nullAsStringWithDQuotes\": \"\\\"null\\\"\",\n \"true\": true,\n \"trueAsString\": \"true\",\n \"trueAsStringWithSQuotes\": \"'true'\",\n \"trueAsStringWithDQuotes\": \"\\\"true\\\"\",\n \"false\": false,\n \"falseAsString\": \"false\",\n \"falseAsStringWithSQuotes\": \"'false'\",\n \"falseAsStringWithDQuotes\": \"\\\"false\\\"\",\n \"stringWithCurlyBraces\": \"{foo}\",\n \"stringWithDoubleCurlyBraces\": \"{{foobar}}\"\n }\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.body.string",
- "value": "eq foo",
- "enabled": true,
- "uid": "BIAZhDa8r5jiaeUMC9oJx"
- },
- {
- "name": "res.body.string",
- "value": "eq 'foo'",
- "enabled": true,
- "uid": "MmDv72YGFukil4LAZ6H1f"
- },
- {
- "name": "res.body.string",
- "value": "eq \"foo\"",
- "enabled": true,
- "uid": "p0YuYI8JJhOLnQmb1OJyO"
- },
- {
- "name": "res.body.stringWithSQuotes",
- "value": "eq \"'foo'\"",
- "enabled": true,
- "uid": "6vBjUYmjT6w680kXw5GN8"
- },
- {
- "name": "res.body.stringWithDQuotes",
- "value": "eq '\"foo\"'",
- "enabled": true,
- "uid": "6SlJJOabN6dqU6zzBGJ5V"
- },
- {
- "name": "res.body.number",
- "value": "eq 123",
- "enabled": true,
- "uid": "qsTsccOFzdaTad54qLRPD"
- },
- {
- "name": "res.body.numberAsString",
- "value": "eq '123'",
- "enabled": true,
- "uid": "acr4c0DbVSMHybtmPfpAK"
- },
- {
- "name": "res.body.numberAsString",
- "value": "eq \"123\"",
- "enabled": true,
- "uid": "j2UBEitg7trKqERvHFonB"
- },
- {
- "name": "res.body.numberAsStringWithSQuotes",
- "value": "eq \"'123'\"",
- "enabled": true,
- "uid": "HkhFuTMDlPTtjdRH1JtDq"
- },
- {
- "name": "res.body.numberAsStringWithDQuotes",
- "value": "eq '\"123\"'",
- "enabled": true,
- "uid": "FOJ9Il1Mw26AVh3mtfH2A"
- },
- {
- "name": "res.body.numberAsStringWithLeadingZero",
- "value": "eq \"0123\"",
- "enabled": true,
- "uid": "PYqZgMwa8utODeQu6jGZ8"
- },
- {
- "name": "res.body.numberBig.toString()",
- "value": "eq '9007199254740992000'",
- "enabled": true,
- "uid": "ceH22BYjeONOfjQzCQuQ5"
- },
- {
- "name": "res.body.numberBigAsString",
- "value": "eq \"9007199254740991999\"",
- "enabled": true,
- "uid": "ISsGCwNYz2gO1OiwCrSzj"
- },
- {
- "name": "res.body.null",
- "value": "eq null",
- "enabled": true,
- "uid": "ymthap5UgbSWYrA2KrhSf"
- },
- {
- "name": "res.body.nullAsString",
- "value": "eq \"null\"",
- "enabled": true,
- "uid": "70dQ4jmZ3NObBuSgNms4U"
- },
- {
- "name": "res.body.nullAsStringWithSQuotes",
- "value": "eq \"'null'\"",
- "enabled": true,
- "uid": "8sHCgezylhO5WobuMF6x5"
- },
- {
- "name": "res.body.nullAsStringWithDQuotes",
- "value": "eq '\"null\"'",
- "enabled": true,
- "uid": "Beo0GPeJjGChOUW3ULJFq"
- },
- {
- "name": "res.body.true",
- "value": "eq true",
- "enabled": true,
- "uid": "xyKYxUigaRbnsM3NUCGqo"
- },
- {
- "name": "res.body.trueAsString",
- "value": "eq \"true\"",
- "enabled": true,
- "uid": "TpEuGS0KamPW2P5WlNKIz"
- },
- {
- "name": "res.body.trueAsStringWithSQuotes",
- "value": "eq \"'true'\"",
- "enabled": true,
- "uid": "NGOStfvaFasU1BnDQBeNw"
- },
- {
- "name": "res.body.trueAsStringWithDQuotes",
- "value": "eq '\"true\"'",
- "enabled": true,
- "uid": "1aQu1geER6NzyRyvn6YKL"
- },
- {
- "name": "res.body.false",
- "value": "eq false",
- "enabled": true,
- "uid": "5hYV1aZexcmTnvWVGukhR"
- },
- {
- "name": "res.body.falseAsString",
- "value": "eq \"false\"",
- "enabled": true,
- "uid": "0nlBWyhHLkqwJnnQvntpH"
- },
- {
- "name": "res.body.falseAsStringWithSQuotes",
- "value": "eq \"'false'\"",
- "enabled": true,
- "uid": "6SyZkAdoR7nymmSuxEAVm"
- },
- {
- "name": "res.body.falseAsStringWithDQuotes",
- "value": "eq '\"false\"'",
- "enabled": true,
- "uid": "ikW1dRvg543wlg4OBVOj4"
- },
- {
- "name": "res.body.nonexistent",
- "value": "eq undefined",
- "enabled": true,
- "uid": "18cmPWFrjuhO9w3r37QbC"
- },
- {
- "name": "res.body.stringWithCurlyBraces",
- "value": "eq \"{foo}\"",
- "enabled": true,
- "uid": "MG7kIGiDRpVMWFsUNJwwL"
- },
- {
- "name": "res.body.stringWithDoubleCurlyBraces",
- "value": "eq \"{{foobar}}\"",
- "enabled": true,
- "uid": "lc8H3nkOK6oH9EU8pfGAB"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- },
- {
- "type": "folder",
- "name": "response-parsing",
- "filename": "response-parsing",
- "items": [
- {
- "type": "http",
- "name": "test JSON false response",
- "filename": "test JSON false response.bru",
- "seq": 11,
- "request": {
- "url": "{{httpfaker}}/api/echo/custom",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"headers\": { \"content-type\": \"application/json\" },\n \"content\": \"false\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.body",
- "value": "eq false",
- "enabled": true,
- "uid": "44ByglOpNCcWR39kkFqUB"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "test JSON null response",
- "filename": "test JSON null response.bru",
- "seq": 6,
- "request": {
- "url": "{{httpfaker}}/api/echo/custom",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"headers\": { \"content-type\": \"application/json\" },\n \"content\": \"null\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.body",
- "value": "eq null",
- "enabled": true,
- "uid": "SoMSHwOxrNF0mO7vjtMIq"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "test JSON number response",
- "filename": "test JSON number response.bru",
- "seq": 12,
- "request": {
- "url": "{{httpfaker}}/api/echo/custom",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"headers\": { \"content-type\": \"application/json\" },\n \"content\": \"3.1\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.body",
- "value": "eq 3.1",
- "enabled": true,
- "uid": "PXORG50VO2DQhpxTe4Z9b"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "test JSON response",
- "filename": "test JSON response.bru",
- "seq": 2,
- "request": {
- "url": "{{httpfaker}}/api/echo/custom",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"headers\": { \"content-type\": \"application/json\" },\n \"contentJSON\": { \"message\": \"hello\" }\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.body.message",
- "value": "eq hello",
- "enabled": true,
- "uid": "ghYaoqOIqNkzYySyevIbS"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "test JSON string response",
- "filename": "test JSON string response.bru",
- "seq": 7,
- "request": {
- "url": "{{httpfaker}}/api/echo/custom",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"headers\": { \"content-type\": \"application/json\" },\n \"content\": \"\\\"ok\\\"\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.body",
- "value": "eq ok",
- "enabled": true,
- "uid": "lrb7s0Cy5fSBmpsnQS2hC"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "test JSON string with quotes response",
- "filename": "test JSON string with quotes response.bru",
- "seq": 8,
- "request": {
- "url": "{{httpfaker}}/api/echo/custom",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"headers\": { \"content-type\": \"application/json\" },\n \"contentJSON\": \"\\\"ok\\\"\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.body",
- "value": "eq '\"ok\"'",
- "enabled": true,
- "uid": "0vtvad5pJzWJ82EkoP1tL"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "test JSON true response",
- "filename": "test JSON true response.bru",
- "seq": 10,
- "request": {
- "url": "{{httpfaker}}/api/echo/custom",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"headers\": { \"content-type\": \"application/json\" },\n \"content\": \"true\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.body",
- "value": "eq true",
- "enabled": true,
- "uid": "gWf2HHCyZEfJDjF9epFgh"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "test JSON unsafe-int response",
- "filename": "test JSON unsafe-int response.bru",
- "seq": 13,
- "request": {
- "url": "{{httpfaker}}/api/echo/custom",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"headers\": { \"content-type\": \"application/json\" },\n \"content\": \"90071992547409919876\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.body.toString()",
- "value": "eq 90071992547409920000",
- "enabled": true,
- "uid": "VPxENgWx5laoc8a8AbPSt"
- }
- ],
- "tests": "",
- "docs": "Note: This test is not perfect, we should match the unparsed raw-response with the expected string version of the unsafe-integer",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "test binary response",
- "filename": "test binary response.bru",
- "seq": 4,
- "request": {
- "url": "{{httpfaker}}/api/echo/custom",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"type\": \"application/octet-stream\",\n \"contentBase64\": \"+Z1P82iH1wmbILfvnhvjQVbVAktP4TzltpxYD74zNyA=\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "test(\"response matches the expectation after utf-8 decoding(needs improvement)\", function () {\n expect(res.getStatus()).to.equal(200);\n const dataBinary = Buffer.from(\"+Z1P82iH1wmbILfvnhvjQVbVAktP4TzltpxYD74zNyA=\", \"base64\"); \n expect(res.body).to.equal(dataBinary.toString(\"utf-8\"));\n});",
- "docs": "Note:\n\nThis test is not perfect and needs to be improved by direclty matching expected binary data with raw-response.\n\nCurrently res.body is decoded with `utf-8` by default and looses data in the process. We need some property in `res` which gives access to raw-data/Buffer.",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "test html response",
- "filename": "test html response.bru",
- "seq": 5,
- "request": {
- "url": "{{httpfaker}}/api/echo/custom",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"headers\": { \"content-type\": \"text/html\" },\n \"content\": \"hello
\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.body",
- "value": "eq hello
",
- "enabled": true,
- "uid": "2ljMHST9vdVDcGsDYeea5"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "test image response",
- "filename": "test image response.bru",
- "seq": 3,
- "request": {
- "url": "{{httpfaker}}/api/echo/custom",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"type\": \"image/png\",\n \"contentBase64\": \"iVBORw0KGgoAAAANSUhEUgAAAGQAAABkAQMAAABKLAcXAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAGUExURQCqAP///59OGOoAAAABYktHRAH/Ai3eAAAAB3RJTUUH6QMHCwUNKHvFmgAAABRJREFUOMtjYBgFo2AUjIJRQE8AAAV4AAEpcbn8AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDI1LTAzLTA3VDExOjA1OjEzKzAwOjAwQkgGWgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyNS0wMy0wN1QxMTowNToxMyswMDowMDMVvuYAAAAodEVYdGRhdGU6dGltZXN0YW1wADIwMjUtMDMtMDdUMTE6MDU6MTMrMDA6MDBkAJ85AAAAAElFTkSuQmCC\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "test plain text response with formatting",
- "filename": "test plain text response with formatting.bru",
- "seq": 18,
- "request": {
- "url": "{{httpfaker}}/api/echo/custom",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"headers\": { \"content-type\": \"text/plain\" },\n \"content\": \"hello\\n\\tworld\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.body",
- "value": "eq hello\\n\\tworld",
- "enabled": true,
- "uid": "krtHsmpnhOUT4SP575BjE"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "test plain text response",
- "filename": "test plain text response.bru",
- "seq": 1,
- "request": {
- "url": "{{httpfaker}}/api/echo/custom",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"headers\": { \"content-type\": \"text/plain\" },\n \"content\": \"hello\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.body",
- "value": "eq hello",
- "enabled": true,
- "uid": "iiduau7JWqfG721cU41GX"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "test invalid JSON response with formatting",
- "filename": "test invalid JSON response with formatting.bru",
- "seq": 19,
- "request": {
- "url": "{{httpfaker}}/api/echo/custom",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"headers\": { \"content-type\": \"application/json\" },\n \"content\": \"hello\\n\\tworld\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.body",
- "value": "eq hello\\n\\tworld",
- "enabled": true,
- "uid": "2Lgh5484D4lpF5w2d0y4M"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "test plain text utf16 response",
- "filename": "test plain text utf16 response.bru",
- "seq": 14,
- "request": {
- "url": "{{httpfaker}}/api/echo/custom",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"headers\": { \"content-type\": \"text/plain; charset=utf-16\" },\n \"contentBase64\": \"dABoAGkAcwAgAGkAcwAgAGUAbgBjAG8AZABlAGQAIAB3AGkAdABoACAAdQB0AGYAMQA2AA==\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.body",
- "value": "eq \"this is encoded with utf16\"",
- "enabled": true,
- "uid": "bTudYyt3VYDJBGUQMaBrn"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "test plain text utf16-be with BOM response",
- "filename": "test plain text utf16-be with BOM response.bru",
- "seq": 15,
- "request": {
- "url": "{{httpfaker}}/api/echo/custom",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"headers\": { \"content-type\": \"text/plain; charset=utf-16\" },\n \"contentBase64\": \"/v8AdABoAGkAcwAgAGkAcwAgAGUAbgBjAG8AZABlAGQAIAB3AGkAdABoACAAdQB0AGYAMQA2AC0AYgBlACAAdwBpAHQAaAAgAEIATwBN\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.body",
- "value": "eq \"this is encoded with utf16-be with BOM\"",
- "enabled": true,
- "uid": "2y4vvfKmEIiPbazx9WcI7"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "test plain text utf16-le with BOM response",
- "filename": "test plain text utf16-le with BOM response.bru",
- "seq": 16,
- "request": {
- "url": "{{httpfaker}}/api/echo/custom",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"headers\": { \"content-type\": \"text/plain; charset=utf-16\" },\n \"contentBase64\": \"//50AGgAaQBzACAAaQBzACAAZQBuAGMAbwBkAGUAZAAgAHcAaQB0AGgAIAB1AHQAZgAxADYALQBsAGUAIAB3AGkAdABoACAAQgBPAE0A\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.body",
- "value": "eq \"this is encoded with utf16-le with BOM\"",
- "enabled": true,
- "uid": "DoCOfg20CxCaNv59xBeMK"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "test plain text utf8 with BOM response",
- "filename": "test plain text utf8 with BOM response.bru",
- "seq": 17,
- "request": {
- "url": "{{httpfaker}}/api/echo/custom",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"headers\": { \"content-type\": \"text/plain; charset=utf8\" },\n \"contentBase64\": \"77u/dGhpcyBpcyB1dGY4IGVuY29kZWQgd2l0aCBCT00sIHdoeSBub3Q/\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.body",
- "value": "eq \"this is utf8 encoded with BOM, why not?\"",
- "enabled": true,
- "uid": "W2wEieY0CyJnZPTS7QFdi"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "test xml response",
- "filename": "test xml response.bru",
- "seq": 9,
- "request": {
- "url": "{{httpfaker}}/api/echo/custom",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"headers\": { \"content-type\": \"application/xml\" },\n \"content\": \"hello\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.body",
- "value": "eq hello",
- "enabled": true,
- "uid": "LpkeJWArhseIjWVvrRSsY"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- },
- {
- "type": "folder",
- "name": "preview",
- "filename": "preview",
- "items": [
- {
- "type": "folder",
- "name": "html",
- "filename": "html",
- "items": [
- {
- "type": "http",
- "name": "bruno",
- "filename": "bruno.bru",
- "seq": 1,
- "request": {
- "url": "https://www.usebruno.com",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "Lq3jQdo5w6Sj5DmK7RR4e"
- }
- ],
- "tests": "test(\"should return parsed xml\", function() {\n const headers = res.getHeaders();\n expect(headers['content-type']).to.eql(\"text/html; charset=utf-8\");\n});\n",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- },
- {
- "type": "folder",
- "name": "image",
- "filename": "image",
- "items": [
- {
- "type": "http",
- "name": "bruno",
- "filename": "bruno.bru",
- "seq": 1,
- "request": {
- "url": "https://www.usebruno.com/favicon.ico",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "test(\"should return parsed xml\", function() {\n const headers = res.getHeaders();\n expect(headers['content-type']).to.eql(\"image/x-icon\");\n});\n",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- }
- ]
- },
- {
- "type": "folder",
- "name": "scripting",
- "filename": "scripting",
- "items": [
- {
- "type": "folder",
- "name": "js",
- "filename": "js",
- "root": {
- "request": {
- "headers": [
- {
- "name": "folder-header",
- "value": "folder-header-value",
- "enabled": true,
- "uid": "IbjpKtt6OSIEfbEpq63i5"
- }
- ],
- "script": {
- "req": "// used by `scripting/js/folder-collection script-tests`\nconst shouldTestFolderScripts = bru.getVar('should-test-folder-scripts');\nif(shouldTestFolderScripts) {\n bru.setVar('folder-var-set-by-folder-script', 'folder-var-value-set-by-folder-script');\n}"
- },
- "tests": "// used by `scripting/js/folder-collection script-tests`\nconst shouldTestFolderScripts = bru.getVar('should-test-folder-scripts');\nconst folderVar = bru.getVar(\"folder-var-set-by-folder-script\");\nif (shouldTestFolderScripts && folderVar) {\n test(\"folder level test - should get the var that was set by the folder script\", function() {\n expect(folderVar).to.equal(\"folder-var-value-set-by-folder-script\");\n }); \n bru.setVar('folder-var-set-by-folder-script', null); \n bru.setVar('should-test-folder-scripts', null);\n}"
- },
- "meta": {
- "name": "js"
- }
- },
- "items": [
- {
- "type": "http",
- "name": "data types - request vars",
- "filename": "data types - request vars.bru",
- "seq": 3,
- "request": {
- "url": "{{host}}/api/echo/json",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"boolean\": false,\n \"number_1\": 1,\n \"number_2\": 0,\n \"number_3\": -1,\n \"string\": \"bruno\",\n \"array\": [1, 2, 3, 4, 5],\n \"object\": {\n \"hello\": \"bruno\"\n },\n \"null\": null\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "req.body.boolean",
- "value": "isBoolean false",
- "enabled": true,
- "uid": "zEDwisxV9J5rpkVFsogOa"
- },
- {
- "name": "req.body.number_1",
- "value": "isNumber 1",
- "enabled": true,
- "uid": "dl2kC9vNfZZstXR4T7m82"
- },
- {
- "name": "req.body.undefined",
- "value": "isUndefined undefined",
- "enabled": true,
- "uid": "IgJsHATg2BunQdduIPWj7"
- },
- {
- "name": "req.body.string",
- "value": "isString bruno",
- "enabled": true,
- "uid": "ZkjsCtU9U3CXoUXQR22wr"
- },
- {
- "name": "req.body.null",
- "value": "isNull null",
- "enabled": true,
- "uid": "QK3P1uBuD9DwmMgQfeEIU"
- },
- {
- "name": "req.body.array",
- "value": "isArray",
- "enabled": true,
- "uid": "SS4pel9Lxy2zXJplAwdGl"
- },
- {
- "name": "req.body.boolean",
- "value": "eq false",
- "enabled": true,
- "uid": "bgDu625CBaYhGfZdDUPW0"
- },
- {
- "name": "req.body.number_1",
- "value": "eq 1",
- "enabled": true,
- "uid": "H0iOZFFLufmyelF7JT66C"
- },
- {
- "name": "req.body.undefined",
- "value": "eq undefined",
- "enabled": true,
- "uid": "NH5NrTa3rDBUovinP39vc"
- },
- {
- "name": "req.body.string",
- "value": "eq bruno",
- "enabled": true,
- "uid": "BWf3Y60ywGiLMP3BdtjF8"
- },
- {
- "name": "req.body.null",
- "value": "eq null",
- "enabled": true,
- "uid": "mz2qdTyufiVSGmDAsdDJD"
- },
- {
- "name": "req.body.number_2",
- "value": "eq 0",
- "enabled": true,
- "uid": "Fj8Je4fBjHQaBn9MlcyRY"
- },
- {
- "name": "req.body.number_3",
- "value": "eq -1",
- "enabled": true,
- "uid": "8nH1gowUVSlPE5B7zXjIu"
- },
- {
- "name": "req.body.number_2",
- "value": "isNumber",
- "enabled": true,
- "uid": "bZXbYyYOrxtfq3rcK4T0R"
- },
- {
- "name": "req.body.number_3",
- "value": "isNumber",
- "enabled": true,
- "uid": "WUpdAAGdYgyumiueofKzX"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "data types",
- "filename": "data types.bru",
- "seq": 2,
- "request": {
- "url": "{{host}}/api/echo/json",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"boolean\": false,\n \"number\": 1,\n \"string\": \"bruno\",\n \"array\": [1, 2, 3, 4, 5],\n \"object\": {\n \"hello\": \"bruno\"\n },\n \"null\": null\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "const reqBody = req.getBody();\n\nbru.setVar(\"dataTypeVarTest\", {\n ...reqBody,\n \"undefined\": undefined\n});"
- },
- "vars": {},
- "assertions": [],
- "tests": "test(\"data types check via bru var\", function() {\n let v = bru.getVar(\"dataTypeVarTest\");\n v = {\n ...v,\n \"undefined\": undefined\n };\n expect(v).to.eql({\n \"boolean\": false,\n \"number\": 1,\n \"string\": \"bruno\",\n \"array\": [1, 2, 3, 4, 5],\n \"object\": {\n \"hello\": \"bruno\"\n },\n \"null\": null,\n \"undefined\": undefined\n })\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "folder-collection script-tests pre",
- "filename": "folder-collection script-tests pre.bru",
- "seq": 4,
- "request": {
- "url": "{{echo-host}}",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "bru.setVar('should-test-collection-scripts', true);\nbru.setVar('should-test-folder-scripts', true);"
- },
- "vars": {},
- "assertions": [],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "folder-collection script-tests",
- "filename": "folder-collection script-tests.bru",
- "seq": 5,
- "request": {
- "url": "{{echo-host}}",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "// do not delete - the collection/folder scripts/tests run during this request execution"
- },
- "vars": {},
- "assertions": [],
- "tests": "const collectionHeader = req.getHeader(\"collection-header\");\nconst folderHeader = req.getHeader(\"folder-header\");\n\ntest(\"should get the header value set at collection level\", function() {\n expect(collectionHeader).to.equal(\"collection-header-value\");\n});\n\ntest(\"should get the header value set at folder level\", function() {\n expect(folderHeader).to.equal(\"folder-header-value\");\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "setTimeout",
- "filename": "setTimeout.bru",
- "seq": 1,
- "request": {
- "url": "{{host}}/ping",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "bru.setVar(\"test-js-set-timeout\", \"\");\nawait new Promise((resolve, reject) => {\n setTimeout(() => {\n bru.setVar(\"test-js-set-timeout\", \"bruno\");\n resolve();\n }, 1000);\n});\n\nconst v = bru.getVar(\"test-js-set-timeout\");\nbru.setVar(\"test-js-set-timeout\", v + \"-is-awesome\");\n"
- },
- "vars": {},
- "assertions": [],
- "tests": "test(\"setTimeout()\", function() {\n const v = bru.getVar(\"test-js-set-timeout\")\n expect(v).to.eql(\"bruno-is-awesome\");\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- },
- {
- "type": "folder",
- "name": "npm modules",
- "filename": "npm modules",
- "items": [
- {
- "type": "http",
- "name": "fakerjs",
- "filename": "fakerjs.bru",
- "seq": 1,
- "request": {
- "url": "{{host}}/api/echo/json",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"hello\": \"bruno\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "const { faker } = require('@faker-js/faker');\nconst uuid = faker.string.uuid();\n\nconst data = req.getBody();\ndata.uuid = uuid;\n\nreq.setBody(data);"
- },
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "lD0O3YJPd70wfjyybkyd5"
- }
- ],
- "tests": "test(\"should return json\", function() {\n const data = res.getBody();\n const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n const isUUID = (inputString) => {\n return uuidRegex.test(inputString);\n };\n \n expect(data.hello).to.equal(\"bruno\");\n expect(isUUID(data.uuid)).to.be.true;\n});\n",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- },
- {
- "type": "folder",
- "name": "local modules",
- "filename": "local modules",
- "items": [
- {
- "type": "http",
- "name": "invalid and valid module imports",
- "filename": "invalid and valid module imports.bru",
- "seq": 3,
- "request": {
- "url": "{{host}}/ping",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "try {\n bru.setVar('invalid_module_error_thrown', false);\n // should throw an error\n const invalid = require(\"./lib/invalid\");\n}\ncatch(error) {\n bru.setVar('invalid_module_error_thrown', true);\n}\n\n\ntry {\n bru.setVar('valid_module_no_error', true);\n // should not throw an error\n const math = require(\"./lib/math\");\n}\ncatch(error) {\n bru.setVar('valid_module_no_error', false);\n}"
- },
- "vars": {},
- "assertions": [
- {
- "name": "invalid_module_error_thrown",
- "value": "eq true",
- "enabled": true,
- "uid": "3imk4DIFjOQdXZL7RKBN0"
- },
- {
- "name": "valid_module_no_error",
- "value": "eq true",
- "enabled": true,
- "uid": "bGJX4qgETYERw2hvg1i3U"
- }
- ],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "sum (without js extn)",
- "filename": "sum (without js extn).bru",
- "seq": 2,
- "request": {
- "url": "{{host}}/api/echo/json",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"a\": 1,\n \"b\": 2\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "const math = require(\"./lib/math\");\nconsole.log(math, 'math');\n\nconst body = req.getBody();\nbody.sum = math.sum(body.a, body.b);\nbody.areaOfCircle = math.areaOfCircle(2);\n\nreq.setBody(body);"
- },
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "ckHfAfPNwcmxcCRBrj9sN"
- }
- ],
- "tests": "test(\"should return json\", function() {\n const data = res.getBody();\n expect(res.getBody()).to.eql({\n \"a\": 1,\n \"b\": 2,\n \"sum\": 3,\n \"areaOfCircle\": 12.56\n });\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "sum",
- "filename": "sum.bru",
- "seq": 1,
- "request": {
- "url": "{{host}}/api/echo/json",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"a\": 1,\n \"b\": 2\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "const math = require(\"./lib/math.js\"); \nconst body = req.getBody();\nbody.sum = math.sum(body.a, body.b);\n\nreq.setBody(body);"
- },
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "51KAG1UxDubFYXJrXSLCR"
- }
- ],
- "tests": "test(\"should return json\", function() {\n const data = res.getBody();\n expect(res.getBody()).to.eql({\n \"a\": 1,\n \"b\": 2,\n \"sum\": 3\n });\n});\n\ntest(\"should return json\", function() {\n const data = res.getBody();\n expect(res.getBody()).to.eql({\n \"a\": 1,\n \"b\": 2,\n \"sum\": 3\n });\n});\n\ntest(\"should return json\", function() {\n const data = res.getBody();\n expect(res.getBody()).to.eql({\n \"a\": 1,\n \"b\": 2,\n \"sum\": 3\n });\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- },
- {
- "type": "folder",
- "name": "inbuilt modules",
- "filename": "inbuilt modules",
- "items": [
- {
- "type": "folder",
- "name": "axios",
- "filename": "axios",
- "items": [
- {
- "type": "http",
- "name": "axios-pre-req-script",
- "filename": "axios-pre-req-script.bru",
- "seq": 1,
- "request": {
- "url": "{{host}}/ping",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "const axios = require(\"axios\");\n\nconst url = \"https://testbench-sanity.usebruno.com/api/echo/json\";\nconst response = await axios.post(url, {\n \"hello\": \"bruno\"\n});\n\nreq.setBody(response.data);\nreq.setMethod(\"POST\");\nreq.setUrl(url);"
- },
- "vars": {},
- "assertions": [],
- "tests": "test(\"req.getBody()\", function() {\n const data = res.getBody();\n expect(data).to.eql({\n \"hello\": \"bruno\"\n });\n});\n",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- },
- {
- "type": "folder",
- "name": "cheerio",
- "filename": "cheerio",
- "items": [
- {
- "type": "http",
- "name": "cheerio",
- "filename": "cheerio.bru",
- "seq": 1,
- "request": {
- "url": "https://echo.usebruno.com",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "text",
- "text": "Hello Bruno!
",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "const cheerio = require('cheerio');\n\nconst $ = cheerio.load('Hello world
');\n\n$('h2.title').text('Hello there!');\n$('h2').addClass('welcome');\n\nbru.setVar(\"cheerio-test-html\", $.html());"
- },
- "vars": {},
- "assertions": [],
- "tests": "const cheerio = require('cheerio');\n\ntest(\"cheerio html - from scripts\", function() {\n const expected = 'Hello there!
';\n const html = bru.getVar('cheerio-test-html');\n expect(html).to.eql(expected);\n});\n\ntest(\"cheerio html - from tests\", function() {\n const expected = 'Hello Bruno!
';\n const $ = cheerio.load(res.body);\n expect($.html()).to.eql(expected);\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- },
- {
- "type": "folder",
- "name": "crypto-js",
- "filename": "crypto-js",
- "items": [
- {
- "type": "http",
- "name": "crypto-js-pre-request-script",
- "filename": "crypto-js-pre-request-script.bru",
- "seq": 1,
- "request": {
- "url": "{{host}}/ping",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "var CryptoJS = require(\"crypto-js\");\n\n// Encrypt\nvar ciphertext = CryptoJS.AES.encrypt('my message', 'secret key 123').toString();\n\n// Decrypt\nvar bytes = CryptoJS.AES.decrypt(ciphertext, 'secret key 123');\nvar originalText = bytes.toString(CryptoJS.enc.Utf8);\n\nbru.setVar('crypto-test-message', originalText);"
- },
- "vars": {},
- "assertions": [],
- "tests": "test(\"crypto message\", function() {\n const data = bru.getVar('crypto-test-message');\n bru.setVar('crypto-test-message', null);\n expect(data).to.eql('my message');\n});\n",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- },
- {
- "type": "folder",
- "name": "nanoid",
- "filename": "nanoid",
- "items": [
- {
- "type": "http",
- "name": "nanoid",
- "filename": "nanoid.bru",
- "seq": 1,
- "request": {
- "url": "{{host}}/ping",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "const { nanoid } = require(\"nanoid\");\n \nbru.setVar(\"nanoid-test-id\", nanoid());"
- },
- "vars": {},
- "assertions": [],
- "tests": "test(\"nanoid var\", function() {\n const id = bru.getVar('nanoid-test-id');\n let isValidNanoid = /^[a-zA-Z0-9_-]{21}$/.test(id)\n bru.setVar('nanoid-test-id', null);\n expect(isValidNanoid).to.eql(true);\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- },
- {
- "type": "folder",
- "name": "xml2js",
- "filename": "xml2js",
- "items": [
- {
- "type": "http",
- "name": "xml2js",
- "filename": "xml2js.bru",
- "seq": 1,
- "request": {
- "url": "{{host}}/ping",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "var parseString = require('xml2js').parseString;\nvar xml = \"Hello xml2js!\"\nparseString(xml, function (err, result) {\n bru.setVar(\"xml2js-test-result\", result); \n});"
- },
- "vars": {},
- "assertions": [],
- "tests": "var parseString = require('xml2js').parseString;\n\ntest(\"xml2js parseString in scripts\", function() {\n const expected = {\n root: 'Hello xml2js!'\n };\n const result = bru.getVar('xml2js-test-result');\n expect(result).to.eql(expected);\n});\n\ntest(\"xml2js parseString in tests\", async function() {\n var xml = \"Hello inside test!\"\n const expected = {\n root: 'Hello inside test!'\n };\n parseString(xml, function (err, result) {\n expect(result).to.eql(expected);\n });\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- },
- {
- "type": "folder",
- "name": "uuid",
- "filename": "uuid",
- "items": [
- {
- "type": "http",
- "name": "uuid",
- "filename": "uuid.bru",
- "seq": 1,
- "request": {
- "url": "{{host}}/ping",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "const { v4 } = require(\"uuid\");\n \nbru.setVar(\"uuid-test-id\", v4());"
- },
- "vars": {},
- "assertions": [],
- "tests": "test(\"uuid var\", function() {\n const id = bru.getVar('uuid-test-id');\n let isValidUuid = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(id);\n bru.setVar('uuid-test-id', null);\n expect(isValidUuid).to.eql(true);\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- }
- ]
- },
- {
- "type": "folder",
- "name": "api",
- "filename": "api",
- "items": [
- {
- "type": "folder",
- "name": "bru",
- "filename": "bru",
- "root": {
- "request": {
- "vars": {
- "req": [
- {
- "name": "folder-var",
- "value": "folder-var-value",
- "enabled": true,
- "local": false,
- "uid": "AqPWEUdm2LylmjMIt3lkw"
- }
- ]
- }
- },
- "meta": {
- "name": "bru"
- }
- },
- "items": [
- {
- "type": "http",
- "name": "getCollectionVar",
- "filename": "getCollectionVar.bru",
- "seq": 9,
- "request": {
- "url": "{{host}}/ping",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "test(\"should get collection var in scripts\", function() {\n const testVar = bru.getCollectionVar(\"collection-var\");\n expect(testVar).to.equal(\"collection-var-value\");\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "getEnvName",
- "filename": "getEnvName.bru",
- "seq": 1,
- "request": {
- "url": "{{host}}/ping",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "const envName = bru.getEnvName();\nbru.setVar(\"testEnvName\", envName);"
- },
- "vars": {},
- "assertions": [],
- "tests": "test(\"should get env name in scripts\", function() {\n const testEnvName = bru.getVar(\"testEnvName\");\n expect(testEnvName).to.equal(\"Prod\");\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "getEnvVar",
- "filename": "getEnvVar.bru",
- "seq": 2,
- "request": {
- "url": "{{host}}/ping",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "test(\"should get env var in scripts\", function() {\n const host = bru.getEnvVar(\"host\")\n expect(host).to.equal(\"https://testbench-sanity.usebruno.com\");\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "getFolderVar",
- "filename": "getFolderVar.bru",
- "seq": 8,
- "request": {
- "url": "{{host}}/ping",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "test(\"should get folder var in scripts\", function() {\n const testVar = bru.getFolderVar(\"folder-var\");\n expect(testVar).to.equal(\"folder-var-value\");\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "getProcessEnv",
- "filename": "getProcessEnv.bru",
- "seq": 6,
- "request": {
- "url": "{{host}}/ping",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "test(\"bru.getProcessEnv()\", function() {\n const v = bru.getProcessEnv(\"PROC_ENV_VAR\");\n expect(v).to.equal(\"woof\");\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "getRequestVar",
- "filename": "getRequestVar.bru",
- "seq": 7,
- "request": {
- "url": "{{host}}/ping",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {
- "req": [
- {
- "name": "request-var",
- "value": "request-var-value",
- "enabled": true,
- "local": false
- }
- ]
- },
- "assertions": [],
- "tests": "test(\"should get request var in scripts\", function() {\n const testVar = bru.getRequestVar(\"request-var\");\n expect(testVar).to.equal(\"request-var-value\");\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "getVar",
- "filename": "getVar.bru",
- "seq": 5,
- "request": {
- "url": "{{host}}/ping",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "test(\"should get var in scripts\", function() {\n const testSetVar = bru.getVar(\"testSetVar\");\n expect(testSetVar).to.equal(\"bruno-test-87267\");\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "runRequest-1",
- "filename": "runRequest-1.bru",
- "seq": 10,
- "request": {
- "url": "{{echo-host}}",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "text",
- "text": "bruno",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "// reset values\nbru.setVar('run-request-runtime-var', null);\nbru.setEnvVar('run-request-env-var', null);\nbru.setGlobalEnvVar('run-request-global-env-var', null);\n\n// the above vars will be set in the below request\nconst resp = await bru.runRequest('scripting/api/bru/runRequest-2');\n\nbru.setVar('run-request-resp', {\n data: resp?.data,\n statusText: resp?.statusText,\n status: resp?.status\n});"
- },
- "vars": {},
- "assertions": [],
- "tests": "test(\"should get runtime var set in runRequest-2\", function() {\n const val = bru.getVar(\"run-request-runtime-var\");\n expect(val).to.equal(\"run-request-runtime-var-value\");\n});\n\ntest(\"should get env var set in runRequest-2\", function() {\n const val = bru.getEnvVar(\"run-request-env-var\");\n expect(val).to.equal(\"run-request-env-var-value\");\n});\n\ntest(\"should get global env var set in runRequest-2\", function() {\n const val = bru.getGlobalEnvVar(\"run-request-global-env-var\");\n const executionMode = req.getExecutionMode();\n if (executionMode == 'runner') {\n expect(val).to.equal(\"run-request-global-env-var-value\");\n }\n});\n\ntest(\"should get response of runRequest-2\", function() {\n const val = bru.getVar('run-request-resp');\n expect(JSON.stringify(val)).to.equal(JSON.stringify({\n \"data\": \"bruno\",\n \"statusText\": \"OK\",\n \"status\": 200\n }));\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "runRequest-2",
- "filename": "runRequest-2.bru",
- "seq": 11,
- "request": {
- "url": "{{echo-host}}",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "text",
- "text": "bruno",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "bru.setVar('run-request-runtime-var', 'run-request-runtime-var-value');\nbru.setEnvVar('run-request-env-var', 'run-request-env-var-value');\nbru.setGlobalEnvVar('run-request-global-env-var', 'run-request-global-env-var-value');"
- },
- "vars": {},
- "assertions": [],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "runRequest",
- "filename": "runRequest.bru",
- "seq": 2,
- "request": {
- "url": "{{host}}/api/echo/json",
- "method": "POST",
- "headers": [
- {
- "name": "foo",
- "value": "bar",
- "enabled": true
- }
- ],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"hello\": \"bruno\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "bru.setVar(\"runRequest-ping-res-1\", null);\nbru.setVar(\"runRequest-ping-res-2\", null);\nbru.setVar(\"runRequest-ping-res-3\", null);\n\nlet pingRes = await bru.runRequest('ping');\nbru.setVar('runRequest-ping-res-1', {\n data: pingRes?.data,\n statusText: pingRes?.statusText,\n status: pingRes?.status\n});",
- "res": "let pingRes = await bru.runRequest('ping');\nbru.setVar('runRequest-ping-res-2', {\n data: pingRes?.data,\n statusText: pingRes?.statusText,\n status: pingRes?.status\n});"
- },
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "XiYVLMGIQARuIZRmXYS65"
- }
- ],
- "tests": "const pingRes = await bru.runRequest('ping');\nbru.setVar('runRequest-ping-res-3', {\n data: pingRes?.data,\n statusText: pingRes?.statusText,\n status: pingRes?.status\n});\n\ntest(\"should run request and return valid response in pre-request script\", function() {\n const expectedPingRes = {\n data: \"pong\",\n statusText: \"OK\",\n status: 200\n };\n const pingRes = bru.getVar('runRequest-ping-res-1');\n expect(pingRes).to.eql(expectedPingRes);\n});\n\ntest(\"should run request and return valid response in post-response script\", function() {\n const expectedPingRes = {\n data: \"pong\",\n statusText: \"OK\",\n status: 200\n };\n const pingRes = bru.getVar('runRequest-ping-res-2');\n expect(pingRes).to.eql(expectedPingRes);\n});\n\ntest(\"should run request and return valid response in tests script\", function() {\n const expectedPingRes = {\n data: \"pong\",\n statusText: \"OK\",\n status: 200\n };\n const pingRes = bru.getVar('runRequest-ping-res-3');\n expect(pingRes).to.eql(expectedPingRes);\n});\n",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "setEnvVar",
- "filename": "setEnvVar.bru",
- "seq": 3,
- "request": {
- "url": "{{host}}/ping",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "res": "bru.setEnvVar(\"testSetEnvVar\", \"bruno-29653\")"
- },
- "vars": {},
- "assertions": [],
- "tests": "test(\"should set env var in scripts\", function() {\n const testSetEnvVar = bru.getEnvVar(\"testSetEnvVar\")\n expect(testSetEnvVar).to.equal(\"bruno-29653\");\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "setVar",
- "filename": "setVar.bru",
- "seq": 4,
- "request": {
- "url": "{{host}}/ping",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "res": "bru.setVar(\"testSetVar\", \"bruno-test-87267\")"
- },
- "vars": {},
- "assertions": [],
- "tests": "test(\"should get var in scripts\", function() {\n const testSetVar = bru.getVar(\"testSetVar\");\n expect(testSetVar).to.equal(\"bruno-test-87267\");\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "folder",
- "name": "runner",
- "filename": "runner",
- "items": [
- {
- "type": "http",
- "name": "1",
- "filename": "1.bru",
- "seq": 1,
- "request": {
- "url": "https://echo.usebruno.com",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "bru.setVar('bru-runner-req', 1);",
- "res": "bru.setVar('bru.runner.skipRequest', true);"
- },
- "vars": {},
- "assertions": [],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "2",
- "filename": "2.bru",
- "seq": 2,
- "request": {
- "url": "https://echo.usebruno.com",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "bru.runner.skipRequest();",
- "res": "bru.setVar('bru.runner.skipRequest', false);"
- },
- "vars": {},
- "assertions": [],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "3",
- "filename": "3.bru",
- "seq": 3,
- "request": {
- "url": "https://echo.usebruno.com",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [],
- "tests": "",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- }
- ]
- },
- {
- "type": "folder",
- "name": "req",
- "filename": "req",
- "items": [
- {
- "type": "http",
- "name": "getBody",
- "filename": "getBody.bru",
- "seq": 9,
- "request": {
- "url": "{{host}}/api/echo/json",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"hello\": \"bruno\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "YACUsQsYlX6yvIkkHfGeM"
- }
- ],
- "tests": "test(\"req.getBody()\", function() {\n const data = res.getBody();\n expect(data).to.eql({\n \"hello\": \"bruno\"\n });\n});\n",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "getHeader",
- "filename": "getHeader.bru",
- "seq": 5,
- "request": {
- "url": "{{host}}/ping",
- "method": "GET",
- "headers": [
- {
- "name": "bruno",
- "value": "is-awesome",
- "enabled": true
- }
- ],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "1fFLd8VtOZKujvtAkGUZj"
- },
- {
- "name": "res.body",
- "value": "eq pong",
- "enabled": true,
- "uid": "QD11VDqnqq5jTcL88Y3D1"
- }
- ],
- "tests": "test(\"req.getHeader(name)\", function() {\n const h = req.getHeader('bruno');\n expect(h).to.equal(\"is-awesome\");\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "getHeaders",
- "filename": "getHeaders.bru",
- "seq": 7,
- "request": {
- "url": "{{host}}/ping",
- "method": "GET",
- "headers": [
- {
- "name": "bruno",
- "value": "is-awesome",
- "enabled": true
- },
- {
- "name": "della",
- "value": "is-beautiful",
- "enabled": true
- }
- ],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "04R4EJbusCqY89KXTKajO"
- },
- {
- "name": "res.body",
- "value": "eq pong",
- "enabled": true,
- "uid": "CKd1EZjgvkeFB6a25BpDc"
- }
- ],
- "tests": "test(\"req.getHeaders()\", function() {\n const h = req.getHeaders();\n expect(h.bruno).to.equal(\"is-awesome\");\n expect(h.della).to.equal(\"is-beautiful\");\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "getMethod",
- "filename": "getMethod.bru",
- "seq": 3,
- "request": {
- "url": "{{host}}/ping",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "5ItoSs1VqOfB0sll7wqpN"
- },
- {
- "name": "res.body",
- "value": "eq pong",
- "enabled": true,
- "uid": "JdEtqrNa8XTVM8bwHYNLq"
- }
- ],
- "tests": "test(\"req.getMethod()()\", function() {\n const method = req.getMethod();\n expect(method).to.equal(\"GET\");\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "getUrl",
- "filename": "getUrl.bru",
- "seq": 1,
- "request": {
- "url": "{{host}}/ping",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "OkR2RNGAnwkPvXPex4huK"
- },
- {
- "name": "res.body",
- "value": "eq pong",
- "enabled": true,
- "uid": "T7L4EFpqrauldg2JOGshM"
- }
- ],
- "tests": "test(\"req.getUrl()\", function() {\n const url = req.getUrl();\n expect(url).to.equal(\"https://testbench-sanity.usebruno.com/ping\");\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "setBody",
- "filename": "setBody.bru",
- "seq": 10,
- "request": {
- "url": "{{host}}/api/echo/json",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"hello\": \"bruno\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "req.setBody({\n \"bruno\": \"is awesome\"\n});"
- },
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "1tuWeypKcGgbuLEXYF54S"
- }
- ],
- "tests": "test(\"req.setBody()\", function() {\n const data = res.getBody();\n expect(data).to.eql({\n \"bruno\": \"is awesome\"\n });\n});\n",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "setHeader",
- "filename": "setHeader.bru",
- "seq": 6,
- "request": {
- "url": "{{host}}/ping",
- "method": "GET",
- "headers": [
- {
- "name": "bruno",
- "value": "is-awesome",
- "enabled": true
- }
- ],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "req.setHeader('bruno', 'is-the-future');"
- },
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "jLHIdvmg0VXn4PLW5Ch3j"
- },
- {
- "name": "res.body",
- "value": "eq pong",
- "enabled": true,
- "uid": "PLKiqwDU1HsEkwchjyNky"
- }
- ],
- "tests": "test(\"req.setHeader(name)\", function() {\n const h = req.getHeader('bruno');\n expect(h).to.equal(\"is-the-future\");\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "setHeaders",
- "filename": "setHeaders.bru",
- "seq": 8,
- "request": {
- "url": "{{host}}/ping",
- "method": "GET",
- "headers": [
- {
- "name": "bruno",
- "value": "is-awesome",
- "enabled": true
- },
- {
- "name": "della",
- "value": "is-beautiful",
- "enabled": true
- }
- ],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "req.setHeaders({\n \"content-type\": \"application/text\",\n \"transaction-id\": \"foobar\"\n});"
- },
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "cFZM1lk0lnaR845ZQscl9"
- },
- {
- "name": "res.body",
- "value": "eq pong",
- "enabled": true,
- "uid": "Gt07qor0o6lnGiMGvtPF3"
- }
- ],
- "tests": "test(\"req.setHeaders()\", function() {\n const h = req.getHeaders();\n expect(h['content-type']).to.equal(\"application/text\");\n expect(h['transaction-id']).to.equal(\"foobar\");\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "setMethod",
- "filename": "setMethod.bru",
- "seq": 4,
- "request": {
- "url": "{{host}}/ping",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "req.setMethod(\"GET\");"
- },
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "cJZfmbnZVfdaenvhz4wfq"
- },
- {
- "name": "res.body",
- "value": "eq pong",
- "enabled": true,
- "uid": "wHTmbMRx9ZYWSZ8QivM8h"
- }
- ],
- "tests": "test(\"req.setMethod()()\", function() {\n const method = req.getMethod();\n expect(method).to.equal(\"GET\");\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "setUrl",
- "filename": "setUrl.bru",
- "seq": 2,
- "request": {
- "url": "{{host}}/ping/invalid",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {
- "req": "req.setUrl(\"https://testbench-sanity.usebruno.com/ping\");"
- },
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "rVolqUH1aCO0NurDPCA0T"
- },
- {
- "name": "res.body",
- "value": "eq pong",
- "enabled": true,
- "uid": "5ynLdeD42v7nQlvI8ORXZ"
- }
- ],
- "tests": "test(\"req.setUrl()\", function() {\n const url = req.getUrl();\n expect(url).to.equal(\"https://testbench-sanity.usebruno.com/ping\");\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- },
- {
- "type": "folder",
- "name": "res",
- "filename": "res",
- "items": [
- {
- "type": "http",
- "name": "getBody",
- "filename": "getBody.bru",
- "seq": 4,
- "request": {
- "url": "{{host}}/api/echo/json",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"hello\": \"bruno\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "QAa35PSfpwk267ompkUyX"
- }
- ],
- "tests": "test(\"res.getBody()\", function() {\n const data = res.getBody();\n expect(data).to.eql({\n \"hello\": \"bruno\"\n });\n});\n",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "getHeader",
- "filename": "getHeader.bru",
- "seq": 2,
- "request": {
- "url": "{{host}}/api/echo/json",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"hello\": \"bruno\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "QfXtdGakjK897gTqaU4PE"
- }
- ],
- "tests": "test(\"res.getHeader(name)\", function() {\n const server = res.getHeader('x-powered-by');\n expect(server).to.eql('Express');\n});\n",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "getHeaders",
- "filename": "getHeaders.bru",
- "seq": 3,
- "request": {
- "url": "{{host}}/api/echo/json",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"hello\": \"bruno\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "WCmqMcNZlAoJdZ9g2KLVe"
- }
- ],
- "tests": "test(\"res.getHeaders(name)\", function() {\n const h = res.getHeaders();\n expect(h['x-powered-by']).to.eql('Express');\n expect(h['content-length']).to.eql('17');\n});\n",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "getResponseTime",
- "filename": "getResponseTime.bru",
- "seq": 5,
- "request": {
- "url": "{{host}}/api/echo/json",
- "method": "POST",
- "headers": [],
- "params": [],
- "body": {
- "mode": "json",
- "json": "{\n \"hello\": \"bruno\"\n}",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "DpDzW3VB5cIFdxtvxe6Og"
- }
- ],
- "tests": "test(\"res.getResponseTime()\", function() {\n const responseTime = res.getResponseTime();\n expect(typeof responseTime).to.eql(\"number\");\n expect(responseTime > 0).to.be.true;\n});\n",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "getStatus",
- "filename": "getStatus.bru",
- "seq": 1,
- "request": {
- "url": "{{host}}/ping",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.status",
- "value": "eq 200",
- "enabled": true,
- "uid": "9lIBr7KIWkUTYANiSBNAW"
- },
- {
- "name": "res.body",
- "value": "eq pong",
- "enabled": true,
- "uid": "TnsOCt0EUxB7meZTOkEdb"
- }
- ],
- "tests": "test(\"res.getStatus()\", function() {\n const status = res.getStatus()\n expect(status).to.equal(200);\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- },
- {
- "type": "http",
- "name": "getStatusText",
- "filename": "getStatusText.bru",
- "seq": 6,
- "request": {
- "url": "{{host}}/ping",
- "method": "GET",
- "headers": [],
- "params": [],
- "body": {
- "mode": "none",
- "formUrlEncoded": [],
- "multipartForm": [],
- "file": []
- },
- "script": {},
- "vars": {},
- "assertions": [
- {
- "name": "res.statusText",
- "value": "eq OK",
- "enabled": true,
- "uid": "bhhg2wMYFSh060HKl8Vgq"
- },
- {
- "name": "res.body",
- "value": "eq pong",
- "enabled": true,
- "uid": "DTYW4zxmKrtsbPxqn8U5E"
- }
- ],
- "tests": "test(\"res.getStatusText()\", function() {\n const statusText = res.getStatusText()\n expect(statusText).to.equal('OK');\n});",
- "docs": "",
- "auth": {
- "mode": "none"
- }
- }
- }
- ]
- }
- ]
- }
- ]
- }
- ],
- "activeEnvironmentUid": "epJ1gynipcQgb5uJLBHZr",
- "environments": [
- {
- "variables": [
- {
- "name": "host",
- "value": "http://localhost:8080",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "httpfaker",
- "value": "https://www.httpfaker.org",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "bearer_auth_token",
- "value": "your_secret_token",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "basic_auth_password",
- "value": "della",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "env.var1",
- "value": "envVar1",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "env-var2",
- "value": "envVar2",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "bark",
- "value": "{{process.env.PROC_ENV_VAR}}",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "foo",
- "value": "bar",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "testSetEnvVar",
- "value": "bruno-29653",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "echo-host",
- "value": "https://echo.usebruno.com",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "client_id",
- "value": "client_id_1",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "client_secret",
- "value": "client_secret_1",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "auth_url",
- "value": "http://localhost:8080/api/auth/oauth2/authorization_code/authorize",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "callback_url",
- "value": "http://localhost:8080/api/auth/oauth2/authorization_code/callback",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "access_token_url",
- "value": "http://localhost:8080/api/auth/oauth2/authorization_code/token",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "passwordCredentials_username",
- "value": "foo",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "passwordCredentials_password",
- "value": "bar",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "github_authorize_url",
- "value": "https://github.com/login/oauth/authorize",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "github_access_token_url",
- "value": "https://github.com/login/oauth/access_token",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "google_auth_url",
- "value": "https://accounts.google.com/o/oauth2/auth",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "google_access_token_url",
- "value": "https://accounts.google.com/o/oauth2/token",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "google_scope",
- "value": "https://www.googleapis.com/auth/userinfo.email",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "github_client_secret",
- "value": "",
- "enabled": true,
- "secret": true,
- "type": "text"
- },
- {
- "name": "github_client_id",
- "value": "",
- "enabled": true,
- "secret": true,
- "type": "text"
- },
- {
- "name": "google_client_id",
- "value": "",
- "enabled": true,
- "secret": true,
- "type": "text"
- },
- {
- "name": "google_client_secret",
- "value": "",
- "enabled": true,
- "secret": true,
- "type": "text"
- },
- {
- "name": "github_authorization_code",
- "value": "",
- "enabled": true,
- "secret": true,
- "type": "text"
- },
- {
- "name": "passwordCredentials_access_token",
- "value": "",
- "enabled": true,
- "secret": true,
- "type": "text"
- },
- {
- "name": "client_credentials_access_token",
- "value": "",
- "enabled": true,
- "secret": true,
- "type": "text"
- },
- {
- "name": "authorization_code_access_token",
- "value": "",
- "enabled": true,
- "secret": true,
- "type": "text"
- },
- {
- "name": "github_access_token",
- "value": "",
- "enabled": true,
- "secret": true,
- "type": "text"
- }
- ],
- "name": "Local"
- },
- {
- "variables": [
- {
- "name": "host",
- "value": "https://testbench-sanity.usebruno.com",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "httpfaker",
- "value": "https://www.httpfaker.org",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "bearer_auth_token",
- "value": "your_secret_token",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "basic_auth_password",
- "value": "della",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "env.var1",
- "value": "envVar1",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "env-var2",
- "value": "envVar2",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "bark",
- "value": "{{process.env.PROC_ENV_VAR}}",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "foo",
- "value": "bar",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "testSetEnvVar",
- "value": "bruno-29653",
- "enabled": true,
- "secret": false,
- "type": "text"
- },
- {
- "name": "echo-host",
- "value": "https://echo.usebruno.com",
- "enabled": true,
- "secret": false,
- "type": "text"
- }
- ],
- "name": "Prod"
- }
- ],
- "root": {
- "request": {
- "auth": {
- "mode": "bearer",
- "bearer": {
- "token": "{{bearer_auth_token}}"
- }
- },
- "headers": [
- {
- "name": "check",
- "value": "again",
- "enabled": true,
- "uid": "x5ic2SWqv4uOlkzzUaK6u"
- },
- {
- "name": "token",
- "value": "{{collection_pre_var_token}}",
- "enabled": true,
- "uid": "MdFY4Vekah6cfuxuClOCu"
- },
- {
- "name": "collection-header",
- "value": "collection-header-value",
- "enabled": true,
- "uid": "wCrMSPJUrX9QljaY6kadq"
- }
- ],
- "script": {
- "req": "// used by `scripting/js/folder-collection script-tests`\nconst shouldTestCollectionScripts = bru.getVar('should-test-collection-scripts');\nif(shouldTestCollectionScripts) {\n bru.setVar('collection-var-set-by-collection-script', 'collection-var-value-set-by-collection-script');\n}"
- },
- "vars": {
- "req": [
- {
- "name": "collection_pre_var",
- "value": "collection_pre_var_value",
- "enabled": true,
- "local": false,
- "uid": "6K19B5ZyhSBTB1ilbx2Sx"
- },
- {
- "name": "collection_pre_var_token",
- "value": "{{request_pre_var_token}}",
- "enabled": true,
- "local": false,
- "uid": "zdoL9ayNeJnNY7ot6RHDj"
- },
- {
- "name": "collection-var",
- "value": "collection-var-value",
- "enabled": true,
- "local": false,
- "uid": "6tgTaZw6HTazsyAMWrVfL"
- }
- ]
- },
- "tests": "// used by `scripting/js/folder-collection script-tests`\nconst shouldTestCollectionScripts = bru.getVar('should-test-collection-scripts');\nconst collectionVar = bru.getVar(\"collection-var-set-by-collection-script\");\nif (shouldTestCollectionScripts && collectionVar) {\n test(\"collection level test - should get the var that was set by the collection script\", function() {\n expect(collectionVar).to.equal(\"collection-var-value-set-by-collection-script\");\n }); \n bru.setVar('collection-var-set-by-collection-script', null); \n bru.setVar('should-test-collection-scripts', null);\n}"
- },
- "docs": "# bruno-testbench 🐶\n\nThis is a test collection that I am using to test various functionalities around bruno"
- },
- "brunoConfig": {
- "version": "1",
- "name": "bruno-testbench",
- "type": "collection",
- "proxy": {
- "enabled": false,
- "protocol": "http",
- "hostname": "{{proxyHostname}}",
- "port": 4000,
- "auth": {
- "enabled": false,
- "username": "anoop"
- },
- "bypassProxy": ""
- },
- "scripts": {
- "moduleWhitelist": [
- "crypto",
- "buffer",
- "form-data"
- ],
- "filesystemAccess": {
- "allow": true
- }
- },
- "clientCertificates": {
- "enabled": true,
- "certs": []
- },
- "presets": {
- "requestType": "http",
- "requestUrl": "http://localhost:6000"
- },
- "ignore": [
- "node_modules",
- ".git"
- ],
- "size": 0.046390533447265625,
- "filesCount": 104
- }
- }
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index d527b4bd..1d24d3b9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7,7 +7,6 @@
"name": "opencollection",
"workspaces": [
"packages/oc-converters",
- "packages/oc-docs",
"packages/oc-schema",
"packages/oc-schema-explorer",
"packages/oc-spec",
@@ -29,12 +28,13 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
- "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz",
+ "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.29.7",
"js-tokens": "^4.0.0",
"picocolors": "^1.1.1"
},
@@ -43,9 +43,9 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz",
- "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz",
+ "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -53,21 +53,21 @@
}
},
"node_modules/@babel/core": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz",
- "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz",
+ "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.28.5",
- "@babel/helper-compilation-targets": "^7.27.2",
- "@babel/helper-module-transforms": "^7.28.3",
- "@babel/helpers": "^7.28.4",
- "@babel/parser": "^7.28.5",
- "@babel/template": "^7.27.2",
- "@babel/traverse": "^7.28.5",
- "@babel/types": "^7.28.5",
+ "@babel/code-frame": "^7.29.7",
+ "@babel/generator": "^7.29.7",
+ "@babel/helper-compilation-targets": "^7.29.7",
+ "@babel/helper-module-transforms": "^7.29.7",
+ "@babel/helpers": "^7.29.7",
+ "@babel/parser": "^7.29.7",
+ "@babel/template": "^7.29.7",
+ "@babel/traverse": "^7.29.7",
+ "@babel/types": "^7.29.7",
"@jridgewell/remapping": "^2.3.5",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
@@ -83,21 +83,15 @@
"url": "https://opencollective.com/babel"
}
},
- "node_modules/@babel/core/node_modules/convert-source-map": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/@babel/generator": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz",
- "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==",
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz",
+ "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@babel/parser": "^7.28.5",
- "@babel/types": "^7.28.5",
+ "@babel/parser": "^7.29.8",
+ "@babel/types": "^7.29.8",
"@jridgewell/gen-mapping": "^0.3.12",
"@jridgewell/trace-mapping": "^0.3.28",
"jsesc": "^3.0.2"
@@ -107,14 +101,14 @@
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.27.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
- "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz",
+ "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/compat-data": "^7.27.2",
- "@babel/helper-validator-option": "^7.27.1",
+ "@babel/compat-data": "^7.29.7",
+ "@babel/helper-validator-option": "^7.29.7",
"browserslist": "^4.24.0",
"lru-cache": "^5.1.1",
"semver": "^6.3.1"
@@ -124,37 +118,39 @@
}
},
"node_modules/@babel/helper-globals": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
- "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz",
+ "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-imports": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
- "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz",
+ "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@babel/traverse": "^7.27.1",
- "@babel/types": "^7.27.1"
+ "@babel/traverse": "^7.29.7",
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.28.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz",
- "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz",
+ "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-module-imports": "^7.27.1",
- "@babel/helper-validator-identifier": "^7.27.1",
- "@babel/traverse": "^7.28.3"
+ "@babel/helper-module-imports": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -164,9 +160,9 @@
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz",
- "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz",
+ "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -174,27 +170,29 @@
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
- "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz",
+ "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
- "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz",
+ "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-option": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
- "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz",
+ "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -202,26 +200,27 @@
}
},
"node_modules/@babel/helpers": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz",
- "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz",
+ "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/template": "^7.27.2",
- "@babel/types": "^7.28.4"
+ "@babel/template": "^7.29.7",
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz",
- "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz",
+ "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.28.5"
+ "@babel/types": "^7.29.8"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -231,13 +230,13 @@
}
},
"node_modules/@babel/plugin-transform-react-jsx-self": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz",
- "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz",
+ "integrity": "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -247,13 +246,13 @@
}
},
"node_modules/@babel/plugin-transform-react-jsx-source": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz",
- "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz",
+ "integrity": "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -262,41 +261,34 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/runtime": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz",
- "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==",
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
"node_modules/@babel/template": {
- "version": "7.27.2",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
- "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz",
+ "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/parser": "^7.27.2",
- "@babel/types": "^7.27.1"
+ "@babel/code-frame": "^7.29.7",
+ "@babel/parser": "^7.29.7",
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz",
- "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==",
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz",
+ "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.28.5",
- "@babel/helper-globals": "^7.28.0",
- "@babel/parser": "^7.28.5",
- "@babel/template": "^7.27.2",
- "@babel/types": "^7.28.5",
+ "@babel/code-frame": "^7.29.7",
+ "@babel/generator": "^7.29.8",
+ "@babel/helper-globals": "^7.29.7",
+ "@babel/parser": "^7.29.8",
+ "@babel/template": "^7.29.7",
+ "@babel/types": "^7.29.8",
"debug": "^4.3.1"
},
"engines": {
@@ -304,528 +296,323 @@
}
},
"node_modules/@babel/types": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz",
- "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz",
+ "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-string-parser": "^7.27.1",
- "@babel/helper-validator-identifier": "^7.28.5"
+ "@babel/helper-string-parser": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
}
},
- "node_modules/@codemirror/autocomplete": {
- "version": "6.20.0",
- "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.20.0.tgz",
- "integrity": "sha512-bOwvTOIJcG5FVo5gUUupiwYh8MioPLQ4UcqbcRf7UQ98X90tCa9E1kZ3Z7tqwpZxYyOvh1YTYbmZE9RTfTp5hg==",
- "license": "MIT",
- "dependencies": {
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.17.0",
- "@lezer/common": "^1.0.0"
- }
- },
- "node_modules/@codemirror/commands": {
- "version": "6.10.1",
- "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.10.1.tgz",
- "integrity": "sha512-uWDWFypNdQmz2y1LaNJzK7fL7TYKLeUAU0npEC685OKTF3KcQ2Vu3klIM78D7I6wGhktme0lh3CuQLv0ZCrD9Q==",
- "license": "MIT",
- "dependencies": {
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.4.0",
- "@codemirror/view": "^6.27.0",
- "@lezer/common": "^1.1.0"
- }
- },
- "node_modules/@codemirror/language": {
- "version": "6.12.1",
- "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.12.1.tgz",
- "integrity": "sha512-Fa6xkSiuGKc8XC8Cn96T+TQHYj4ZZ7RdFmXA3i9xe/3hLHfwPZdM+dqfX0Cp0zQklBKhVD8Yzc8LS45rkqcwpQ==",
- "license": "MIT",
- "dependencies": {
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.23.0",
- "@lezer/common": "^1.5.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.0.0",
- "style-mod": "^4.0.0"
- }
- },
- "node_modules/@codemirror/lint": {
- "version": "6.9.2",
- "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.9.2.tgz",
- "integrity": "sha512-sv3DylBiIyi+xKwRCJAAsBZZZWo82shJ/RTMymLabAdtbkV5cSKwWDeCgtUq3v8flTaXS2y1kKkICuRYtUswyQ==",
- "license": "MIT",
- "dependencies": {
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.35.0",
- "crelt": "^1.0.5"
- }
- },
- "node_modules/@codemirror/search": {
- "version": "6.5.11",
- "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.11.tgz",
- "integrity": "sha512-KmWepDE6jUdL6n8cAAqIpRmLPBZ5ZKnicE8oGU/s3QrAVID+0VhLFrzUucVKHG5035/BSykhExDL/Xm7dHthiA==",
- "license": "MIT",
- "dependencies": {
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.0.0",
- "crelt": "^1.0.5"
- }
- },
- "node_modules/@codemirror/state": {
- "version": "6.5.3",
- "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.5.3.tgz",
- "integrity": "sha512-MerMzJzlXogk2fxWFU1nKp36bY5orBG59HnPiz0G9nLRebWa0zXuv2siH6PLIHBvv5TH8CkQRqjBs0MlxCZu+A==",
- "license": "MIT",
- "dependencies": {
- "@marijn/find-cluster-break": "^1.0.0"
- }
- },
- "node_modules/@codemirror/view": {
- "version": "6.39.8",
- "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.39.8.tgz",
- "integrity": "sha512-1rASYd9Z/mE3tkbC9wInRlCNyCkSn+nLsiQKZhEDUUJiUfs/5FHDpCUDaQpoTIaNGeDc6/bhaEAyLmeEucEFPw==",
- "license": "MIT",
- "dependencies": {
- "@codemirror/state": "^6.5.0",
- "crelt": "^1.0.6",
- "style-mod": "^4.1.0",
- "w3c-keyname": "^2.2.4"
- }
- },
- "node_modules/@emotion/babel-plugin": {
- "version": "11.13.5",
- "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz",
- "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-imports": "^7.16.7",
- "@babel/runtime": "^7.18.3",
- "@emotion/hash": "^0.9.2",
- "@emotion/memoize": "^0.9.0",
- "@emotion/serialize": "^1.3.3",
- "babel-plugin-macros": "^3.1.0",
- "convert-source-map": "^1.5.0",
- "escape-string-regexp": "^4.0.0",
- "find-root": "^1.1.0",
- "source-map": "^0.5.7",
- "stylis": "4.2.0"
- }
- },
- "node_modules/@emotion/cache": {
- "version": "11.14.0",
- "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz",
- "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==",
- "license": "MIT",
- "dependencies": {
- "@emotion/memoize": "^0.9.0",
- "@emotion/sheet": "^1.4.0",
- "@emotion/utils": "^1.4.2",
- "@emotion/weak-memoize": "^0.4.0",
- "stylis": "4.2.0"
- }
- },
- "node_modules/@emotion/css": {
- "version": "11.13.5",
- "resolved": "https://registry.npmjs.org/@emotion/css/-/css-11.13.5.tgz",
- "integrity": "sha512-wQdD0Xhkn3Qy2VNcIzbLP9MR8TafI0MJb7BEAXKp+w4+XqErksWR4OXomuDzPsN4InLdGhVe6EYcn2ZIUCpB8w==",
- "license": "MIT",
- "dependencies": {
- "@emotion/babel-plugin": "^11.13.5",
- "@emotion/cache": "^11.13.5",
- "@emotion/serialize": "^1.3.3",
- "@emotion/sheet": "^1.4.0",
- "@emotion/utils": "^1.4.2"
- }
- },
- "node_modules/@emotion/hash": {
- "version": "0.9.2",
- "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz",
- "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==",
- "license": "MIT"
- },
- "node_modules/@emotion/is-prop-valid": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.4.0.tgz",
- "integrity": "sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==",
- "license": "MIT",
- "dependencies": {
- "@emotion/memoize": "^0.9.0"
- }
- },
- "node_modules/@emotion/memoize": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz",
- "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==",
- "license": "MIT"
- },
- "node_modules/@emotion/react": {
- "version": "11.14.0",
- "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz",
- "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.18.3",
- "@emotion/babel-plugin": "^11.13.5",
- "@emotion/cache": "^11.14.0",
- "@emotion/serialize": "^1.3.3",
- "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0",
- "@emotion/utils": "^1.4.2",
- "@emotion/weak-memoize": "^0.4.0",
- "hoist-non-react-statics": "^3.3.1"
- },
- "peerDependencies": {
- "react": ">=16.8.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@emotion/serialize": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz",
- "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==",
- "license": "MIT",
- "dependencies": {
- "@emotion/hash": "^0.9.2",
- "@emotion/memoize": "^0.9.0",
- "@emotion/unitless": "^0.10.0",
- "@emotion/utils": "^1.4.2",
- "csstype": "^3.0.2"
- }
- },
- "node_modules/@emotion/sheet": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz",
- "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==",
- "license": "MIT"
- },
- "node_modules/@emotion/styled": {
- "version": "11.14.1",
- "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.1.tgz",
- "integrity": "sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw==",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.18.3",
- "@emotion/babel-plugin": "^11.13.5",
- "@emotion/is-prop-valid": "^1.3.0",
- "@emotion/serialize": "^1.3.3",
- "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0",
- "@emotion/utils": "^1.4.2"
- },
- "peerDependencies": {
- "@emotion/react": "^11.0.0-rc.0",
- "react": ">=16.8.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@emotion/unitless": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz",
- "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==",
- "license": "MIT"
- },
- "node_modules/@emotion/use-insertion-effect-with-fallbacks": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz",
- "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==",
- "license": "MIT",
- "peerDependencies": {
- "react": ">=16.8.0"
- }
- },
- "node_modules/@emotion/utils": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz",
- "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==",
- "license": "MIT"
- },
- "node_modules/@emotion/weak-memoize": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz",
- "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==",
- "license": "MIT"
- },
"node_modules/@esbuild/aix-ppc64": {
- "version": "0.25.12",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz",
- "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
+ "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
"cpu": [
"ppc64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"aix"
],
+ "peer": true,
"engines": {
- "node": ">=18"
+ "node": ">=12"
}
},
"node_modules/@esbuild/android-arm": {
- "version": "0.25.12",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz",
- "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
+ "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
"cpu": [
"arm"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
],
+ "peer": true,
"engines": {
- "node": ">=18"
+ "node": ">=12"
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.25.12",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz",
- "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
+ "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
],
+ "peer": true,
"engines": {
- "node": ">=18"
+ "node": ">=12"
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.25.12",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz",
- "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
+ "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
],
+ "peer": true,
"engines": {
- "node": ">=18"
+ "node": ">=12"
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.25.12",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz",
- "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
+ "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
+ "peer": true,
"engines": {
- "node": ">=18"
+ "node": ">=12"
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.25.12",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz",
- "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
+ "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
+ "peer": true,
"engines": {
- "node": ">=18"
+ "node": ">=12"
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.25.12",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz",
- "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
+ "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"freebsd"
],
+ "peer": true,
"engines": {
- "node": ">=18"
+ "node": ">=12"
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.25.12",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz",
- "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
+ "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"freebsd"
],
+ "peer": true,
"engines": {
- "node": ">=18"
+ "node": ">=12"
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.25.12",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz",
- "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
+ "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
"cpu": [
"arm"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
+ "peer": true,
"engines": {
- "node": ">=18"
+ "node": ">=12"
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.25.12",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz",
- "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
+ "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
+ "peer": true,
"engines": {
- "node": ">=18"
+ "node": ">=12"
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.25.12",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz",
- "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
+ "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
"cpu": [
"ia32"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
+ "peer": true,
"engines": {
- "node": ">=18"
+ "node": ">=12"
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.25.12",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz",
- "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
+ "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
"cpu": [
"loong64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
+ "peer": true,
"engines": {
- "node": ">=18"
+ "node": ">=12"
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.25.12",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz",
- "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
+ "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
"cpu": [
"mips64el"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
+ "peer": true,
"engines": {
- "node": ">=18"
+ "node": ">=12"
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.25.12",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz",
- "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
+ "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
"cpu": [
"ppc64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
+ "peer": true,
"engines": {
- "node": ">=18"
+ "node": ">=12"
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.25.12",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz",
- "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
+ "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
"cpu": [
"riscv64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
+ "peer": true,
"engines": {
- "node": ">=18"
+ "node": ">=12"
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.25.12",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz",
- "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
+ "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
"cpu": [
"s390x"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
+ "peer": true,
"engines": {
- "node": ">=18"
+ "node": ">=12"
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.25.12",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz",
- "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==",
- "cpu": [
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
+ "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
+ "cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
+ "peer": true,
"engines": {
- "node": ">=18"
+ "node": ">=12"
}
},
"node_modules/@esbuild/netbsd-arm64": {
@@ -835,6 +622,7 @@
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -845,19 +633,21 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.25.12",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz",
- "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
+ "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"netbsd"
],
+ "peer": true,
"engines": {
- "node": ">=18"
+ "node": ">=12"
}
},
"node_modules/@esbuild/openbsd-arm64": {
@@ -867,6 +657,7 @@
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -877,19 +668,21 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.25.12",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz",
- "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
+ "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"openbsd"
],
+ "peer": true,
"engines": {
- "node": ">=18"
+ "node": ">=12"
}
},
"node_modules/@esbuild/openharmony-arm64": {
@@ -899,6 +692,7 @@
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -909,387 +703,82 @@
}
},
"node_modules/@esbuild/sunos-x64": {
- "version": "0.25.12",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz",
- "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
+ "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"sunos"
],
+ "peer": true,
"engines": {
- "node": ">=18"
+ "node": ">=12"
}
},
"node_modules/@esbuild/win32-arm64": {
- "version": "0.25.12",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz",
- "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
+ "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
+ "peer": true,
"engines": {
- "node": ">=18"
+ "node": ">=12"
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.25.12",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz",
- "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
+ "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
"cpu": [
"ia32"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
+ "peer": true,
"engines": {
- "node": ">=18"
+ "node": ">=12"
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.25.12",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz",
- "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
+ "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
+ "peer": true,
"engines": {
- "node": ">=18"
- }
- },
- "node_modules/@eslint-community/eslint-utils": {
- "version": "4.9.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz",
- "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "eslint-visitor-keys": "^3.4.3"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
- }
- },
- "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/@eslint-community/regexpp": {
- "version": "4.12.2",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
- "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
- },
- "node_modules/@eslint/config-array": {
- "version": "0.21.1",
- "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz",
- "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@eslint/object-schema": "^2.1.7",
- "debug": "^4.3.1",
- "minimatch": "^3.1.2"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- }
- },
- "node_modules/@eslint/config-helpers": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz",
- "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@eslint/core": "^0.17.0"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- }
- },
- "node_modules/@eslint/core": {
- "version": "0.17.0",
- "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz",
- "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@types/json-schema": "^7.0.15"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- }
- },
- "node_modules/@eslint/eslintrc": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz",
- "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^10.0.1",
- "globals": "^14.0.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.1",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/globals": {
- "version": "14.0.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
- "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@eslint/js": {
- "version": "9.39.2",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz",
- "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "url": "https://eslint.org/donate"
- }
- },
- "node_modules/@eslint/object-schema": {
- "version": "2.1.7",
- "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz",
- "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- }
- },
- "node_modules/@eslint/plugin-kit": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz",
- "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@eslint/core": "^0.17.0",
- "levn": "^0.4.1"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- }
- },
- "node_modules/@faker-js/faker": {
- "version": "9.9.0",
- "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-9.9.0.tgz",
- "integrity": "sha512-OEl393iCOoo/z8bMezRlJu+GlRGlsKbUAN7jKB6LhnKoqKve5DXRpalbItIIcwnCjs1k/FOPjFzcA6Qn+H+YbA==",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/fakerjs"
- }
- ],
- "license": "MIT",
- "engines": {
- "node": ">=18.0.0",
- "npm": ">=9.0.0"
- }
- },
- "node_modules/@humanfs/core": {
- "version": "0.19.1",
- "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
- "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=18.18.0"
- }
- },
- "node_modules/@humanfs/node": {
- "version": "0.16.7",
- "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz",
- "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@humanfs/core": "^0.19.1",
- "@humanwhocodes/retry": "^0.4.0"
- },
- "engines": {
- "node": ">=18.18.0"
- }
- },
- "node_modules/@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
- "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=12.22"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "node_modules/@humanwhocodes/retry": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz",
- "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=18.18"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "node_modules/@isaacs/balanced-match": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz",
- "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "20 || >=22"
- }
- },
- "node_modules/@isaacs/brace-expansion": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz",
- "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@isaacs/balanced-match": "^4.0.1"
- },
- "engines": {
- "node": "20 || >=22"
- }
- },
- "node_modules/@jitl/quickjs-ffi-types": {
- "version": "0.31.0",
- "resolved": "https://registry.npmjs.org/@jitl/quickjs-ffi-types/-/quickjs-ffi-types-0.31.0.tgz",
- "integrity": "sha512-1yrgvXlmXH2oNj3eFTrkwacGJbmM0crwipA3ohCrjv52gBeDaD7PsTvFYinlAnqU8iPME3LGP437yk05a2oejw==",
- "license": "MIT"
- },
- "node_modules/@jitl/quickjs-wasmfile-debug-asyncify": {
- "version": "0.31.0",
- "resolved": "https://registry.npmjs.org/@jitl/quickjs-wasmfile-debug-asyncify/-/quickjs-wasmfile-debug-asyncify-0.31.0.tgz",
- "integrity": "sha512-YkdzQdr1uaftFhgEnTRjTTZHk2SFZdpWO7XhOmRVbi6CEVsH9g5oNF8Ta1q3OuSJHRwwT8YsuR1YzEiEIJEk6w==",
- "license": "MIT",
- "dependencies": {
- "@jitl/quickjs-ffi-types": "0.31.0"
- }
- },
- "node_modules/@jitl/quickjs-wasmfile-debug-sync": {
- "version": "0.31.0",
- "resolved": "https://registry.npmjs.org/@jitl/quickjs-wasmfile-debug-sync/-/quickjs-wasmfile-debug-sync-0.31.0.tgz",
- "integrity": "sha512-8XvloaaWBONqcHXYs5tWOjdhQVxzULilIfB2hvZfS6S+fI4m2+lFiwQy7xeP8ExHmiZ7D8gZGChNkdLgjGfknw==",
- "license": "MIT",
- "dependencies": {
- "@jitl/quickjs-ffi-types": "0.31.0"
- }
- },
- "node_modules/@jitl/quickjs-wasmfile-release-asyncify": {
- "version": "0.31.0",
- "resolved": "https://registry.npmjs.org/@jitl/quickjs-wasmfile-release-asyncify/-/quickjs-wasmfile-release-asyncify-0.31.0.tgz",
- "integrity": "sha512-uz0BbQYTxNsFkvkurd7vk2dOg57ElTBLCuvNtRl4rgrtbC++NIndD5qv2+AXb6yXDD3Uy1O2PCwmoaH0eXgEOg==",
- "license": "MIT",
- "dependencies": {
- "@jitl/quickjs-ffi-types": "0.31.0"
- }
- },
- "node_modules/@jitl/quickjs-wasmfile-release-sync": {
- "version": "0.31.0",
- "resolved": "https://registry.npmjs.org/@jitl/quickjs-wasmfile-release-sync/-/quickjs-wasmfile-release-sync-0.31.0.tgz",
- "integrity": "sha512-hYduecOByj9AsAfsJhZh5nA6exokmuFC8cls39+lYmTCGY51bgjJJJwReEu7Ff7vBWaQCL6TeDdVlnp2WYz0jw==",
- "license": "MIT",
- "dependencies": {
- "@jitl/quickjs-ffi-types": "0.31.0"
+ "node": ">=12"
}
},
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.13",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
"integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.5.0",
@@ -1300,6 +789,7 @@
"version": "2.3.5",
"resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
"integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.5",
@@ -1310,79 +800,30 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=6.0.0"
}
},
- "node_modules/@jridgewell/source-map": {
- "version": "0.3.11",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz",
- "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==",
- "devOptional": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.25"
- }
- },
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.5.5",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
"integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
+ "dev": true,
"license": "MIT"
},
"node_modules/@jridgewell/trace-mapping": {
"version": "0.3.31",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
"integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jridgewell/resolve-uri": "^3.1.0",
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
- "node_modules/@lezer/common": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.5.0.tgz",
- "integrity": "sha512-PNGcolp9hr4PJdXR4ix7XtixDrClScvtSCYW3rQG106oVMOOI+jFb+0+J3mbeL/53g1Zd6s0kJzaw6Ri68GmAA==",
- "license": "MIT"
- },
- "node_modules/@lezer/highlight": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.3.tgz",
- "integrity": "sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g==",
- "license": "MIT",
- "dependencies": {
- "@lezer/common": "^1.3.0"
- }
- },
- "node_modules/@lezer/lr": {
- "version": "1.4.5",
- "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.5.tgz",
- "integrity": "sha512-/YTRKP5yPPSo1xImYQk7AZZMAgap0kegzqCSYHjAL9x1AZ0ZQW+IpcEzMKagCsbTsLnVeWkxYrCNeXG8xEPrjg==",
- "license": "MIT",
- "dependencies": {
- "@lezer/common": "^1.0.0"
- }
- },
- "node_modules/@marijn/find-cluster-break": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz",
- "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==",
- "license": "MIT"
- },
- "node_modules/@mintlify/httpsnippet": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/@mintlify/httpsnippet/-/httpsnippet-1.0.10.tgz",
- "integrity": "sha512-fn+WW+aoUVD+KKJLSQ49EWHVub3BM2IHEdfIEZ0tKCxEP7DFNjK6Gq4aYG2VMUJFodTkqDcc3QpYs62gFyTKEA==",
- "license": "MIT",
- "dependencies": {
- "qs": "6.14.2",
- "stringify-object": "3.3.0",
- "type-fest": "5.2.0"
- }
- },
"node_modules/@monaco-editor/loader": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.7.0.tgz",
@@ -1406,49 +847,27 @@
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
}
},
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "node_modules/@napi-rs/lzma-linux-x64-gnu": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz",
+ "integrity": "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
"license": "MIT",
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">= 8"
+ "node": "^22.20 || ^24.12 || >=25"
}
},
"node_modules/@opencollection/converters": {
"resolved": "packages/oc-converters",
"link": true
},
- "node_modules/@opencollection/docs": {
- "resolved": "packages/oc-docs",
- "link": true
- },
"node_modules/@opencollection/schema": {
"resolved": "packages/oc-schema",
"link": true
@@ -1461,51 +880,6 @@
"resolved": "packages/oc-types",
"link": true
},
- "node_modules/@playwright/test": {
- "version": "1.58.2",
- "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.58.2.tgz",
- "integrity": "sha512-akea+6bHYBBfA9uQqSYmlJXn61cTa+jbO87xVLCWbTqbWadRVmhxlXATaOjOgcBaWU4ePo0wB41KMFv3o35IXA==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "playwright": "1.58.2"
- },
- "bin": {
- "playwright": "cli.js"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@popperjs/core": {
- "version": "2.11.8",
- "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
- "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/popperjs"
- }
- },
- "node_modules/@prantlf/jsonlint": {
- "version": "16.0.0",
- "resolved": "https://registry.npmjs.org/@prantlf/jsonlint/-/jsonlint-16.0.0.tgz",
- "integrity": "sha512-L0jFtcsBRJZOr4T6sbePb1R6XYF6Nofj6kmEAxqTKCHEr50uvyxBFnB1UKaehWaMhHnvtyqWfTR5Go25RywXIQ==",
- "license": "MIT",
- "dependencies": {
- "ajv": "8.17.1",
- "ajv-draft-04": "1.0.0",
- "cosmiconfig": "9.0.0",
- "diff": "5.2.0",
- "fast-glob": "3.3.2"
- },
- "bin": {
- "jsonlint": "lib/cli.js"
- },
- "engines": {
- "node": ">=16.9"
- }
- },
"node_modules/@reactflow/background": {
"version": "11.3.14",
"resolved": "https://registry.npmjs.org/@reactflow/background/-/background-11.3.14.tgz",
@@ -1608,32 +982,6 @@
"react-dom": ">=17"
}
},
- "node_modules/@reduxjs/toolkit": {
- "version": "2.11.2",
- "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.11.2.tgz",
- "integrity": "sha512-Kd6kAHTA6/nUpp8mySPqj3en3dm0tdMIgbttnQ1xFMVpufoj+ADi8pXLBsd4xzTRHQa7t/Jv8W5UnCuW4kuWMQ==",
- "license": "MIT",
- "dependencies": {
- "@standard-schema/spec": "^1.0.0",
- "@standard-schema/utils": "^0.3.0",
- "immer": "^11.0.0",
- "redux": "^5.0.1",
- "redux-thunk": "^3.1.0",
- "reselect": "^5.1.0"
- },
- "peerDependencies": {
- "react": "^16.9.0 || ^17.0.0 || ^18 || ^19",
- "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0"
- },
- "peerDependenciesMeta": {
- "react": {
- "optional": true
- },
- "react-redux": {
- "optional": true
- }
- }
- },
"node_modules/@rolldown/pluginutils": {
"version": "1.0.0-beta.27",
"resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz",
@@ -1642,12 +990,13 @@
"license": "MIT"
},
"node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.54.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.54.0.tgz",
- "integrity": "sha512-OywsdRHrFvCdvsewAInDKCNyR3laPA2mc9bRYJ6LBp5IyvF3fvXbbNR0bSzHlZVFtn6E0xw2oZlyjg4rKCVcng==",
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.4.tgz",
+ "integrity": "sha512-RrPokAb7dmbxFoeO3TloqHyOjgye8RkBhSqmp4aJMIex4c9r46ZstPnleDQOq1t46VOVjwIuwNogIqbodV1Vvg==",
"cpu": [
"arm"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1655,12 +1004,13 @@
]
},
"node_modules/@rollup/rollup-android-arm64": {
- "version": "4.54.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.54.0.tgz",
- "integrity": "sha512-Skx39Uv+u7H224Af+bDgNinitlmHyQX1K/atIA32JP3JQw6hVODX5tkbi2zof/E69M1qH2UoN3Xdxgs90mmNYw==",
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.4.tgz",
+ "integrity": "sha512-JKuJc+pnpks2pjy7L/N3v/cAkZxYlnmuZoD840ldbMI5KDbC4iO9NKwPKYdjYFCMAIIlBzYSFHxIJVYzRo2/8A==",
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1668,12 +1018,13 @@
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.54.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.54.0.tgz",
- "integrity": "sha512-k43D4qta/+6Fq+nCDhhv9yP2HdeKeP56QrUUTW7E6PhZP1US6NDqpJj4MY0jBHlJivVJD5P8NxrjuobZBJTCRw==",
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.4.tgz",
+ "integrity": "sha512-krw5uS2STmvJ02x0uTXHbqQNuz+9eZ1iw+qXk9dmW2gvV4jV7O2hEoOnuhFrpOPiel1mBFtqbxYZZtC46hXLOw==",
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1681,12 +1032,13 @@
]
},
"node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.54.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.54.0.tgz",
- "integrity": "sha512-cOo7biqwkpawslEfox5Vs8/qj83M/aZCSSNIWpVzfU2CYHa2G3P1UN5WF01RdTHSgCkri7XOlTdtk17BezlV3A==",
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.4.tgz",
+ "integrity": "sha512-wsTxtgApb4PrOsNJIm0FZ1h3WvCC+k9uxLJ4ad75hgoS4NiRes2SoJFlDAyMwiUY8IssDqGcHbXuN0sx1tfF1A==",
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1694,12 +1046,13 @@
]
},
"node_modules/@rollup/rollup-freebsd-arm64": {
- "version": "4.54.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.54.0.tgz",
- "integrity": "sha512-miSvuFkmvFbgJ1BevMa4CPCFt5MPGw094knM64W9I0giUIMMmRYcGW/JWZDriaw/k1kOBtsWh1z6nIFV1vPNtA==",
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.4.tgz",
+ "integrity": "sha512-GUOnQlyZe3yAXhWOtOMsn5Qkrv5E5mZXa0thbARWi5Ei2szlVXJFQhddZ4HbAzh8q92w5twp+CQvs/eFanz9YQ==",
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1707,12 +1060,13 @@
]
},
"node_modules/@rollup/rollup-freebsd-x64": {
- "version": "4.54.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.54.0.tgz",
- "integrity": "sha512-KGXIs55+b/ZfZsq9aR026tmr/+7tq6VG6MsnrvF4H8VhwflTIuYh+LFUlIsRdQSgrgmtM3fVATzEAj4hBQlaqQ==",
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.4.tgz",
+ "integrity": "sha512-/Y7f3QuxjzPKsjA/rfEDa3+0vXqyjmJ50Ln8dPpCmWkKTrUoWHG1cWhTqaAMLob2m2nESWuC7yGrREz019Ztqg==",
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1720,12 +1074,13 @@
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.54.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.54.0.tgz",
- "integrity": "sha512-EHMUcDwhtdRGlXZsGSIuXSYwD5kOT9NVnx9sqzYiwAc91wfYOE1g1djOEDseZJKKqtHAHGwnGPQu3kytmfaXLQ==",
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.4.tgz",
+ "integrity": "sha512-81wiiX3v7aqy+T+bT61TJ78yJjRquqFFTTbAPt08imfQQzkPIW8t6aJbkTagtCCrXMNc9D66+geqlK7ydLPNqA==",
"cpu": [
"arm"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1733,12 +1088,13 @@
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.54.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.54.0.tgz",
- "integrity": "sha512-+pBrqEjaakN2ySv5RVrj/qLytYhPKEUwk+e3SFU5jTLHIcAtqh2rLrd/OkbNuHJpsBgxsD8ccJt5ga/SeG0JmA==",
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.4.tgz",
+ "integrity": "sha512-9kmDIvNZqdoHOBZgNtpTBeLWYO/LVipM3H/j62P8848/l/VPEQL6N3uxU9pvP1oZAsXyC2MEnFP3ovRjo7WYNQ==",
"cpu": [
"arm"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1746,12 +1102,13 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.54.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.54.0.tgz",
- "integrity": "sha512-NSqc7rE9wuUaRBsBp5ckQ5CVz5aIRKCwsoa6WMF7G01sX3/qHUw/z4pv+D+ahL1EIKy6Enpcnz1RY8pf7bjwng==",
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.4.tgz",
+ "integrity": "sha512-CcnXHWnXg69g+DX5VWL3FHts3qMRN2uVEHX+BZvGLdd07/gXkn3ePjYtO1LDJvxkGKVHMclKBRa1QUTH+6toYQ==",
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1759,12 +1116,13 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.54.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.54.0.tgz",
- "integrity": "sha512-gr5vDbg3Bakga5kbdpqx81m2n9IX8M6gIMlQQIXiLTNeQW6CucvuInJ91EuCJ/JYvc+rcLLsDFcfAD1K7fMofg==",
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.4.tgz",
+ "integrity": "sha512-iFOibiHnTRuhrWLlRsOQFdZJJIa7S8OwkneJr4ocALP16u5yk6lWLINFwhHaEqBFMsKDUZofLkGos7+CPzGB3g==",
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1772,12 +1130,27 @@
]
},
"node_modules/@rollup/rollup-linux-loong64-gnu": {
- "version": "4.54.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.54.0.tgz",
- "integrity": "sha512-gsrtB1NA3ZYj2vq0Rzkylo9ylCtW/PhpLEivlgWe0bpgtX5+9j9EZa0wtZiCjgu6zmSeZWyI/e2YRX1URozpIw==",
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.4.tgz",
+ "integrity": "sha512-XnWYMI7euHlb5a871xPja+Gm7DRCFU+FGRrtS2sMq9N8FvqtpagUy6gD4YOemC5MRk9xbh8+jYMEJbigFQwsgA==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loong64-musl": {
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.4.tgz",
+ "integrity": "sha512-qGDAlO0U8xedCcsdRm9oaoQY8DAx/QT7uIxJWhCdx0ceIWX783UC9QSYkdpzAe29wNiVfp24+bZdQmn49o45SQ==",
"cpu": [
"loong64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1785,12 +1158,27 @@
]
},
"node_modules/@rollup/rollup-linux-ppc64-gnu": {
- "version": "4.54.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.54.0.tgz",
- "integrity": "sha512-y3qNOfTBStmFNq+t4s7Tmc9hW2ENtPg8FeUD/VShI7rKxNW7O4fFeaYbMsd3tpFlIg1Q8IapFgy7Q9i2BqeBvA==",
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.4.tgz",
+ "integrity": "sha512-ru4H6ezD7ysA5EiEK6qkkaEb4modH8CTej6kUy/gQi20u3kB3G7Zn8snXXkeJSCOFKG/rbPPtM/+9Wgas1961w==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-ppc64-musl": {
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.4.tgz",
+ "integrity": "sha512-2W4MO5WQVJnbJaZdvDb9rhBDuFU1nKIepPFpJUBsTh2k1YY2g+ODViaWuyOAjQ5cOP7NvrvLzt3wvHOoiAvc7w==",
"cpu": [
"ppc64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1798,12 +1186,13 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.54.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.54.0.tgz",
- "integrity": "sha512-89sepv7h2lIVPsFma8iwmccN7Yjjtgz0Rj/Ou6fEqg3HDhpCa+Et+YSufy27i6b0Wav69Qv4WBNl3Rs6pwhebQ==",
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.4.tgz",
+ "integrity": "sha512-+fxjfuoAmVMCYV5QyjoIpu0cp5DOiOTeqYFk1AVaxGr+/ravWLX89XfQmptsoWcaVy/TGf2hexzbUOrCQIL1CQ==",
"cpu": [
"riscv64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1811,12 +1200,13 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-musl": {
- "version": "4.54.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.54.0.tgz",
- "integrity": "sha512-ZcU77ieh0M2Q8Ur7D5X7KvK+UxbXeDHwiOt/CPSBTI1fBmeDMivW0dPkdqkT4rOgDjrDDBUed9x4EgraIKoR2A==",
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.4.tgz",
+ "integrity": "sha512-jTn8JfHGL4djjFxPuM06LmNUJDsst2jeVlsd9OmIH6zc5sC9K6rIuO4YajXatLUpBmBKl6b35ro1QZocLi+tcA==",
"cpu": [
"riscv64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1824,12 +1214,13 @@
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.54.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.54.0.tgz",
- "integrity": "sha512-2AdWy5RdDF5+4YfG/YesGDDtbyJlC9LHmL6rZw6FurBJ5n4vFGupsOBGfwMRjBYH7qRQowT8D/U4LoSvVwOhSQ==",
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.4.tgz",
+ "integrity": "sha512-oCJCJL4pXsoDcP2QZ+JVlPTIRc6266zsIaeJJsWImmF7HO0W8nb6HuSgZlMWxJwaPf8ehbSw8yo0EUw925hKsA==",
"cpu": [
"s390x"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1837,12 +1228,13 @@
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.54.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.54.0.tgz",
- "integrity": "sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ==",
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.4.tgz",
+ "integrity": "sha512-W69hukhZ3KKNRCaMIEzKvcFye42hh0FE1+YoYaf5+Ikacuftoco6yO/xouz0hc5d5W/s3yBro5jRiuEE/Q5vUw==",
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1850,25 +1242,41 @@
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.54.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.54.0.tgz",
- "integrity": "sha512-JzQmb38ATzHjxlPHuTH6tE7ojnMKM2kYNzt44LO/jJi8BpceEC8QuXYA908n8r3CNuG/B3BV8VR3Hi1rYtmPiw==",
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.4.tgz",
+ "integrity": "sha512-qiXbGG2jkjXhzXpsFZSR2Xpb8DN/UaxYsbb/STbuR/6fpaDgRmmaq1B/LmtF2wQFOFOSsK2jdE0RZ3a0zHn4QA==",
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
+ "node_modules/@rollup/rollup-openbsd-x64": {
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.4.tgz",
+ "integrity": "sha512-nWeM//hxv8mIo6jD7Hu4o48DVmV9pbV6gsKaWU+4NFyqHoPKwrkRiZGLKUhOBk8qNmDmpwFtPKg80Bo/Tn4xiQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ]
+ },
"node_modules/@rollup/rollup-openharmony-arm64": {
- "version": "4.54.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.54.0.tgz",
- "integrity": "sha512-huT3fd0iC7jigGh7n3q/+lfPcXxBi+om/Rs3yiFxjvSxbSB6aohDFXbWvlspaqjeOh+hx7DDHS+5Es5qRkWkZg==",
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.4.tgz",
+ "integrity": "sha512-s62SQ/vgsRSvMwDkOEfTqfgASF0f26ZNaQuTA6Aok5lrikf89yI2W0gFHvZb2Jpgc6N8JnOKZgCK2iciO3CsxQ==",
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1876,12 +1284,13 @@
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.54.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.54.0.tgz",
- "integrity": "sha512-c2V0W1bsKIKfbLMBu/WGBz6Yci8nJ/ZJdheE0EwB73N3MvHYKiKGs3mVilX4Gs70eGeDaMqEob25Tw2Gb9Nqyw==",
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.4.tgz",
+ "integrity": "sha512-J6wGf8TVGbXJq+HH+ttTvrcfNKPbuZecV6KT1B8I18BC5IURUh5kl4Yl5OEP5eFIUoI5BWxCsyYMhFsDx8kekw==",
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1889,12 +1298,13 @@
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.54.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.54.0.tgz",
- "integrity": "sha512-woEHgqQqDCkAzrDhvDipnSirm5vxUXtSKDYTVpZG3nUdW/VVB5VdCYA2iReSj/u3yCZzXID4kuKG7OynPnB3WQ==",
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.4.tgz",
+ "integrity": "sha512-zmfrQd/0wu6oJs8Vq8KwY/YtsKSsLtKe/HwAP4Wqy8LhWjeT55fHRAkOhYQ12wI3ayS4Tt12d5CDRD7N96SAYQ==",
"cpu": [
"ia32"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1902,12 +1312,13 @@
]
},
"node_modules/@rollup/rollup-win32-x64-gnu": {
- "version": "4.54.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.54.0.tgz",
- "integrity": "sha512-dzAc53LOuFvHwbCEOS0rPbXp6SIhAf2txMP5p6mGyOXXw5mWY8NGGbPMPrs4P1WItkfApDathBj/NzMLUZ9rtQ==",
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.4.tgz",
+ "integrity": "sha512-qPzHqdj9rfUD+w79dtE07zi/kFwKyCJqplp5K5ygeLTp7jLpAoc16OAH39HSmRC9UpozaecsleI8uAdEj6v2yw==",
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1915,238 +1326,216 @@
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.54.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.54.0.tgz",
- "integrity": "sha512-hYT5d3YNdSh3mbCU1gwQyPgQd3T2ne0A3KG8KSBdav5TiBg6eInVmV+TeR5uHufiIgSFg0XsOWGW5/RhNcSvPg==",
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.4.tgz",
+ "integrity": "sha512-zD6NdeWEByGE9QF9vCrlJ5YQB4oq9q91kPZS37Jwj5hOkvR1lTBSpsKhKDw4IJtbQ35LsTS1HD9DZYGKIshU1Q==",
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
- "node_modules/@standard-schema/spec": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz",
- "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==",
- "license": "MIT"
- },
- "node_modules/@standard-schema/utils": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz",
- "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==",
- "license": "MIT"
- },
- "node_modules/@tabler/icons": {
- "version": "1.119.0",
- "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-1.119.0.tgz",
- "integrity": "sha512-Fk3Qq4w2SXcTjc/n1cuL5bccPkylrOMo7cYpQIf/yw6zP76LQV9dtLcHQUjFiUnaYuswR645CnURIhlafyAh9g==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/codecalm"
- },
- "peerDependencies": {
- "react": "^16.x || 17.x || 18.x",
- "react-dom": "^16.x || 17.x || 18.x"
- },
- "peerDependenciesMeta": {
- "react": {
- "optional": true
- },
- "react-dom": {
- "optional": true
- }
- }
- },
"node_modules/@tailwindcss/node": {
- "version": "4.1.18",
- "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.18.tgz",
- "integrity": "sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.3.tgz",
+ "integrity": "sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@jridgewell/remapping": "^2.3.4",
- "enhanced-resolve": "^5.18.3",
- "jiti": "^2.6.1",
- "lightningcss": "1.30.2",
+ "@jridgewell/remapping": "^2.3.5",
+ "enhanced-resolve": "^5.24.1",
+ "jiti": "^2.7.0",
+ "lightningcss": "1.32.0",
"magic-string": "^0.30.21",
"source-map-js": "^1.2.1",
- "tailwindcss": "4.1.18"
+ "tailwindcss": "4.3.3"
}
},
"node_modules/@tailwindcss/oxide": {
- "version": "4.1.18",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.18.tgz",
- "integrity": "sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.3.tgz",
+ "integrity": "sha512-krXjAikiaFSPaK/FkAQT5UTx3VormQaiZ5hBFlJZ9UFQGB/rwg1MZIhHAG9smMQRTdyJxP6Qt5MwMtdyU5FWrA==",
+ "dev": true,
"license": "MIT",
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
},
"optionalDependencies": {
- "@tailwindcss/oxide-android-arm64": "4.1.18",
- "@tailwindcss/oxide-darwin-arm64": "4.1.18",
- "@tailwindcss/oxide-darwin-x64": "4.1.18",
- "@tailwindcss/oxide-freebsd-x64": "4.1.18",
- "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.18",
- "@tailwindcss/oxide-linux-arm64-gnu": "4.1.18",
- "@tailwindcss/oxide-linux-arm64-musl": "4.1.18",
- "@tailwindcss/oxide-linux-x64-gnu": "4.1.18",
- "@tailwindcss/oxide-linux-x64-musl": "4.1.18",
- "@tailwindcss/oxide-wasm32-wasi": "4.1.18",
- "@tailwindcss/oxide-win32-arm64-msvc": "4.1.18",
- "@tailwindcss/oxide-win32-x64-msvc": "4.1.18"
+ "@tailwindcss/oxide-android-arm64": "4.3.3",
+ "@tailwindcss/oxide-darwin-arm64": "4.3.3",
+ "@tailwindcss/oxide-darwin-x64": "4.3.3",
+ "@tailwindcss/oxide-freebsd-x64": "4.3.3",
+ "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.3",
+ "@tailwindcss/oxide-linux-arm64-gnu": "4.3.3",
+ "@tailwindcss/oxide-linux-arm64-musl": "4.3.3",
+ "@tailwindcss/oxide-linux-x64-gnu": "4.3.3",
+ "@tailwindcss/oxide-linux-x64-musl": "4.3.3",
+ "@tailwindcss/oxide-wasm32-wasi": "4.3.3",
+ "@tailwindcss/oxide-win32-arm64-msvc": "4.3.3",
+ "@tailwindcss/oxide-win32-x64-msvc": "4.3.3"
}
},
"node_modules/@tailwindcss/oxide-android-arm64": {
- "version": "4.1.18",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.18.tgz",
- "integrity": "sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.3.tgz",
+ "integrity": "sha512-Y85A2gmPSkl5Ve5qR86GL4HT509cFqQh1aes9p3sSkyTPwt0Pppf3GkwGe4JPACcRYjgJIEhQgM6dBClnr0NYw==",
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
}
},
"node_modules/@tailwindcss/oxide-darwin-arm64": {
- "version": "4.1.18",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.18.tgz",
- "integrity": "sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.3.tgz",
+ "integrity": "sha512-BiaWatpBcERQFDlOjRDpIVXuFK5PJez5SA4JMg6VYZdBYU+qKfV/vqjcIs+IYmtitf1xYQZTwXvU/8y4lfZUGw==",
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
}
},
"node_modules/@tailwindcss/oxide-darwin-x64": {
- "version": "4.1.18",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.18.tgz",
- "integrity": "sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.3.tgz",
+ "integrity": "sha512-fAeUqfV5ndhxRwai8cXGzdLvul9utWOmeTkv69unv4ZXixjn61Z+p9lCWdwOwA3TYboG3BwdVuN/RDjhBRl0mw==",
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
}
},
"node_modules/@tailwindcss/oxide-freebsd-x64": {
- "version": "4.1.18",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.18.tgz",
- "integrity": "sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.3.tgz",
+ "integrity": "sha512-iyf5bV6+wnAlflVeEy7R25dupxTNECZN5QMI0qNT6eT+EgaGdZcKhGkr5SdoaWiLJ3spLqIY9VCeSGrwmtg4kw==",
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"freebsd"
],
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
}
},
"node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": {
- "version": "4.1.18",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.18.tgz",
- "integrity": "sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.3.tgz",
+ "integrity": "sha512-aAYUprJAJQWWbRrPvtjdroZ56Md+JM8pMiopS6xGEwDfLhqj+2ver2p4nU4Mb3CRqcMmNBjo8KkUgcxhkzVQGQ==",
"cpu": [
"arm"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
}
},
"node_modules/@tailwindcss/oxide-linux-arm64-gnu": {
- "version": "4.1.18",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.18.tgz",
- "integrity": "sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.3.tgz",
+ "integrity": "sha512-nDxldcEENOxZRzC2uu9jrutZdAAQtb+8WWDCSnWL1zvBk1+FN+x6MtDViPB5AJMfttVCUhehGWus3XBPgatM/w==",
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
}
},
"node_modules/@tailwindcss/oxide-linux-arm64-musl": {
- "version": "4.1.18",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.18.tgz",
- "integrity": "sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.3.tgz",
+ "integrity": "sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA==",
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
}
},
"node_modules/@tailwindcss/oxide-linux-x64-gnu": {
- "version": "4.1.18",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.18.tgz",
- "integrity": "sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.3.tgz",
+ "integrity": "sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w==",
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
}
},
"node_modules/@tailwindcss/oxide-linux-x64-musl": {
- "version": "4.1.18",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.18.tgz",
- "integrity": "sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.3.tgz",
+ "integrity": "sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img==",
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
}
},
"node_modules/@tailwindcss/oxide-wasm32-wasi": {
- "version": "4.1.18",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.18.tgz",
- "integrity": "sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.3.tgz",
+ "integrity": "sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ==",
"bundleDependencies": [
"@napi-rs/wasm-runtime",
"@emnapi/core",
@@ -2158,104 +1547,67 @@
"cpu": [
"wasm32"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
- "@emnapi/core": "^1.7.1",
- "@emnapi/runtime": "^1.7.1",
- "@emnapi/wasi-threads": "^1.1.0",
- "@napi-rs/wasm-runtime": "^1.1.0",
- "@tybys/wasm-util": "^0.10.1",
- "tslib": "^2.4.0"
+ "@emnapi/core": "^1.11.1",
+ "@emnapi/runtime": "^1.11.1",
+ "@emnapi/wasi-threads": "^1.2.2",
+ "@napi-rs/wasm-runtime": "^1.1.4",
+ "@tybys/wasm-util": "^0.10.2",
+ "tslib": "^2.8.1"
},
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/@tailwindcss/oxide-win32-arm64-msvc": {
- "version": "4.1.18",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.18.tgz",
- "integrity": "sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.3.tgz",
+ "integrity": "sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ==",
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
}
},
"node_modules/@tailwindcss/oxide-win32-x64-msvc": {
- "version": "4.1.18",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.18.tgz",
- "integrity": "sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.3.tgz",
+ "integrity": "sha512-yJ0pwIVc/nYeGoV02WtsN8KYyLQv7kyI2wDnkezyJlGGjkd4QLwDGAwl47YpPJeuI0M0ObaXGSPjvWDPeTPggw==",
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
}
},
"node_modules/@tailwindcss/postcss": {
- "version": "4.1.18",
- "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.18.tgz",
- "integrity": "sha512-Ce0GFnzAOuPyfV5SxjXGn0CubwGcuDB0zcdaPuCSzAa/2vII24JTkH+I6jcbXLb1ctjZMZZI6OjDaLPJQL1S0g==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.3.3.tgz",
+ "integrity": "sha512-JTSZZGQi1AyKirbLN3azmjVzef92tcX7h+iSqPdaeStyFpGpDlKvvpxeOE8njhbUanbRwr3z8DyzhICWnMtQeg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@alloc/quick-lru": "^5.2.0",
- "@tailwindcss/node": "4.1.18",
- "@tailwindcss/oxide": "4.1.18",
- "postcss": "^8.4.41",
- "tailwindcss": "4.1.18"
- }
- },
- "node_modules/@tailwindcss/typography": {
- "version": "0.5.19",
- "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.19.tgz",
- "integrity": "sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-selector-parser": "6.0.10"
- },
- "peerDependencies": {
- "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1"
- }
- },
- "node_modules/@tailwindcss/vite": {
- "version": "4.1.18",
- "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.18.tgz",
- "integrity": "sha512-jVA+/UpKL1vRLg6Hkao5jldawNmRo7mQYrZtNHMIVpLfLhDml5nMRUo/8MwoX2vNXvnaXNNMedrMfMugAVX1nA==",
- "license": "MIT",
- "dependencies": {
- "@tailwindcss/node": "4.1.18",
- "@tailwindcss/oxide": "4.1.18",
- "tailwindcss": "4.1.18"
- },
- "peerDependencies": {
- "vite": "^5.2.0 || ^6 || ^7"
- }
- },
- "node_modules/@tippyjs/react": {
- "version": "4.2.6",
- "resolved": "https://registry.npmjs.org/@tippyjs/react/-/react-4.2.6.tgz",
- "integrity": "sha512-91RicDR+H7oDSyPycI13q3b7o4O60wa2oRbjlz2fyRLmHImc4vyDwuUP8NtZaN0VARJY5hybvDYrFzhY9+Lbyw==",
- "license": "MIT",
- "dependencies": {
- "tippy.js": "^6.3.1"
- },
- "peerDependencies": {
- "react": ">=16.8",
- "react-dom": ">=16.8"
+ "@tailwindcss/node": "4.3.3",
+ "@tailwindcss/oxide": "4.3.3",
+ "postcss": "^8.5.16",
+ "tailwindcss": "4.3.3"
}
},
"node_modules/@types/babel__core": {
@@ -2303,27 +1655,6 @@
"@babel/types": "^7.28.2"
}
},
- "node_modules/@types/body-parser": {
- "version": "1.19.6",
- "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz",
- "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/connect": "*",
- "@types/node": "*"
- }
- },
- "node_modules/@types/connect": {
- "version": "3.4.38",
- "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
- "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/node": "*"
- }
- },
"node_modules/@types/d3": {
"version": "7.4.3",
"resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz",
@@ -2463,9 +1794,9 @@
"license": "MIT"
},
"node_modules/@types/d3-geo": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz",
- "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.1.tgz",
+ "integrity": "sha512-65Emv9fQiQQqphLlRkuQ5ypPsOmWPhtBGCMv61JDPEPMvsx+gzhGf74yw1a78xFKPj6zw4AgQICJoQv0vK9M2w==",
"license": "MIT",
"dependencies": {
"@types/geojson": "*"
@@ -2505,9 +1836,9 @@
"license": "MIT"
},
"node_modules/@types/d3-random": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz",
- "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.4.tgz",
+ "integrity": "sha512-UHYId5WTCx4L4YNel7NU00XUXXgvgpgZOvp10PuvsQENjMDXhh2RyFc0KBjO7B45ne4Ha1yVH7ii0vnzKkuzWA==",
"license": "MIT"
},
"node_modules/@types/d3-scale": {
@@ -2532,9 +1863,9 @@
"license": "MIT"
},
"node_modules/@types/d3-shape": {
- "version": "3.1.7",
- "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz",
- "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==",
+ "version": "3.1.8",
+ "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz",
+ "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==",
"license": "MIT",
"dependencies": {
"@types/d3-path": "*"
@@ -2577,55 +1908,12 @@
"@types/d3-selection": "*"
}
},
- "node_modules/@types/debug": {
- "version": "4.1.12",
- "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
- "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
- "license": "MIT",
- "dependencies": {
- "@types/ms": "*"
- }
- },
"node_modules/@types/estree": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
- "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
- "license": "MIT"
- },
- "node_modules/@types/estree-jsx": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz",
- "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==",
- "license": "MIT",
- "dependencies": {
- "@types/estree": "*"
- }
- },
- "node_modules/@types/express": {
- "version": "4.17.25",
- "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz",
- "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/body-parser": "*",
- "@types/express-serve-static-core": "^4.17.33",
- "@types/qs": "*",
- "@types/serve-static": "^1"
- }
- },
- "node_modules/@types/express-serve-static-core": {
- "version": "4.19.7",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz",
- "integrity": "sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==",
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",
+ "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/node": "*",
- "@types/qs": "*",
- "@types/range-parser": "*",
- "@types/send": "*"
- }
+ "license": "MIT"
},
"node_modules/@types/geojson": {
"version": "7946.0.16",
@@ -2633,850 +1921,874 @@
"integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==",
"license": "MIT"
},
- "node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "*"
- }
- },
- "node_modules/@types/http-errors": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz",
- "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/js-yaml": {
- "version": "4.0.9",
- "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz",
- "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==",
- "license": "MIT"
- },
- "node_modules/@types/json-schema": {
- "version": "7.0.15",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
- "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/linkify-it": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz",
- "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==",
- "license": "MIT"
- },
- "node_modules/@types/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/lodash-es": {
- "version": "4.17.12",
- "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz",
- "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==",
+ "node_modules/@vitejs/plugin-react": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz",
+ "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@types/lodash": "*"
+ "@babel/core": "^7.28.0",
+ "@babel/plugin-transform-react-jsx-self": "^7.27.1",
+ "@babel/plugin-transform-react-jsx-source": "^7.27.1",
+ "@rolldown/pluginutils": "1.0.0-beta.27",
+ "@types/babel__core": "^7.20.5",
+ "react-refresh": "^0.17.0"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0"
}
},
- "node_modules/@types/markdown-it": {
- "version": "14.1.2",
- "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz",
- "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==",
- "license": "MIT",
- "dependencies": {
- "@types/linkify-it": "^5",
- "@types/mdurl": "^2"
- }
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "license": "Python-2.0"
},
- "node_modules/@types/mdast": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
- "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
+ "node_modules/autoprefixer": {
+ "version": "10.5.4",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.4.tgz",
+ "integrity": "sha512-MaU0U/za7N3r6brxD4YB/l4NSrFzLPlANv6wEuQVaIPlD3L4W9rFcQPbL/EilY9BHhHvhfcz3gInDLrEtWT4EA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
"license": "MIT",
"dependencies": {
- "@types/unist": "*"
+ "browserslist": "^4.28.6",
+ "caniuse-lite": "^1.0.30001806",
+ "fraction.js": "^5.3.4",
+ "picocolors": "^1.1.1",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "bin": {
+ "autoprefixer": "bin/autoprefixer"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
}
},
- "node_modules/@types/mdurl": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz",
- "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==",
- "license": "MIT"
- },
- "node_modules/@types/mime": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
- "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
+ "node_modules/baseline-browser-mapping": {
+ "version": "2.11.12",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.12.tgz",
+ "integrity": "sha512-r7WnVImvVCeFpf2DOXfy41aPWzeNg3H/A2X4dKmy1QL0MSyyk/e7z8ihJ3N6Nn2PsdhkVlqnEfnUE4a05P2aTA==",
"dev": true,
- "license": "MIT"
- },
- "node_modules/@types/ms": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
- "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
- "license": "MIT"
+ "license": "Apache-2.0",
+ "bin": {
+ "baseline-browser-mapping": "dist/cli.cjs"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
},
- "node_modules/@types/node": {
- "version": "25.0.3",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz",
- "integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==",
- "devOptional": true,
+ "node_modules/browserslist": {
+ "version": "4.28.7",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.7.tgz",
+ "integrity": "sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
"license": "MIT",
"dependencies": {
- "undici-types": "~7.16.0"
+ "baseline-browser-mapping": "^2.10.44",
+ "caniuse-lite": "^1.0.30001806",
+ "electron-to-chromium": "^1.5.393",
+ "node-releases": "^2.0.51",
+ "update-browserslist-db": "^1.2.3"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
}
},
- "node_modules/@types/parse-json": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",
- "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==",
- "license": "MIT"
- },
- "node_modules/@types/prismjs": {
- "version": "1.26.5",
- "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.5.tgz",
- "integrity": "sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==",
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001806",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001806.tgz",
+ "integrity": "sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==",
"dev": true,
- "license": "MIT"
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
},
- "node_modules/@types/qs": {
- "version": "6.14.0",
- "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz",
- "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==",
- "dev": true,
+ "node_modules/classcat": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/classcat/-/classcat-5.0.5.tgz",
+ "integrity": "sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==",
"license": "MIT"
},
- "node_modules/@types/range-parser": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
- "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==",
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
"dev": true,
"license": "MIT"
},
- "node_modules/@types/react": {
- "version": "19.2.7",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz",
- "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==",
- "license": "MIT",
- "dependencies": {
- "csstype": "^3.2.2"
+ "node_modules/d3-color": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
+ "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/@types/react-dom": {
- "version": "19.2.3",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz",
- "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "@types/react": "^19.2.0"
+ "node_modules/d3-dispatch": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz",
+ "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/@types/send": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz",
- "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==",
- "dev": true,
- "license": "MIT",
+ "node_modules/d3-drag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz",
+ "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==",
+ "license": "ISC",
"dependencies": {
- "@types/node": "*"
+ "d3-dispatch": "1 - 3",
+ "d3-selection": "3"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/@types/serve-static": {
- "version": "1.15.10",
- "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz",
- "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/http-errors": "*",
- "@types/node": "*",
- "@types/send": "<1"
+ "node_modules/d3-ease": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
+ "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/@types/serve-static/node_modules/@types/send": {
- "version": "0.17.6",
- "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz",
- "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==",
- "dev": true,
- "license": "MIT",
+ "node_modules/d3-interpolate": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
+ "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
+ "license": "ISC",
"dependencies": {
- "@types/mime": "^1",
- "@types/node": "*"
+ "d3-color": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/@types/trusted-types": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-1.0.6.tgz",
- "integrity": "sha512-230RC8sFeHoT6sSUlRO6a8cAnclO06eeiq1QDfiv2FGCLWFvvERWgwIQD4FWqD9A69BN7Lzee4OXwoMVnnsWDw==",
- "license": "MIT"
- },
- "node_modules/@types/unist": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
- "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
- "license": "MIT"
- },
- "node_modules/@types/use-sync-external-store": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz",
- "integrity": "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==",
- "license": "MIT"
- },
- "node_modules/@types/uuid": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz",
- "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@typescript-eslint/eslint-plugin": {
- "version": "8.51.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.51.0.tgz",
- "integrity": "sha512-XtssGWJvypyM2ytBnSnKtHYOGT+4ZwTnBVl36TA4nRO2f4PRNGz5/1OszHzcZCvcBMh+qb7I06uoCmLTRdR9og==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/regexpp": "^4.10.0",
- "@typescript-eslint/scope-manager": "8.51.0",
- "@typescript-eslint/type-utils": "8.51.0",
- "@typescript-eslint/utils": "8.51.0",
- "@typescript-eslint/visitor-keys": "8.51.0",
- "ignore": "^7.0.0",
- "natural-compare": "^1.4.0",
- "ts-api-utils": "^2.2.0"
- },
+ "node_modules/d3-selection": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
+ "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
+ "license": "ISC",
"engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "@typescript-eslint/parser": "^8.51.0",
- "eslint": "^8.57.0 || ^9.0.0",
- "typescript": ">=4.8.4 <6.0.0"
+ "node": ">=12"
}
},
- "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": {
- "version": "7.0.5",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
- "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
- "dev": true,
- "license": "MIT",
+ "node_modules/d3-timer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz",
+ "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==",
+ "license": "ISC",
"engines": {
- "node": ">= 4"
+ "node": ">=12"
}
},
- "node_modules/@typescript-eslint/parser": {
- "version": "8.51.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.51.0.tgz",
- "integrity": "sha512-3xP4XzzDNQOIqBMWogftkwxhg5oMKApqY0BAflmLZiFYHqyhSOxv/cd/zPQLTcCXr4AkaKb25joocY0BD1WC6A==",
- "dev": true,
- "license": "MIT",
+ "node_modules/d3-transition": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz",
+ "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==",
+ "license": "ISC",
"dependencies": {
- "@typescript-eslint/scope-manager": "8.51.0",
- "@typescript-eslint/types": "8.51.0",
- "@typescript-eslint/typescript-estree": "8.51.0",
- "@typescript-eslint/visitor-keys": "8.51.0",
- "debug": "^4.3.4"
+ "d3-color": "1 - 3",
+ "d3-dispatch": "1 - 3",
+ "d3-ease": "1 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-timer": "1 - 3"
},
"engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
+ "node": ">=12"
},
"peerDependencies": {
- "eslint": "^8.57.0 || ^9.0.0",
- "typescript": ">=4.8.4 <6.0.0"
+ "d3-selection": "2 - 3"
}
},
- "node_modules/@typescript-eslint/project-service": {
- "version": "8.51.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.51.0.tgz",
- "integrity": "sha512-Luv/GafO07Z7HpiI7qeEW5NW8HUtZI/fo/kE0YbtQEFpJRUuR0ajcWfCE5bnMvL7QQFrmT/odMe8QZww8X2nfQ==",
- "dev": true,
- "license": "MIT",
+ "node_modules/d3-zoom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz",
+ "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==",
+ "license": "ISC",
"dependencies": {
- "@typescript-eslint/tsconfig-utils": "^8.51.0",
- "@typescript-eslint/types": "^8.51.0",
- "debug": "^4.3.4"
+ "d3-dispatch": "1 - 3",
+ "d3-drag": "2 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-selection": "2 - 3",
+ "d3-transition": "2 - 3"
},
"engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "typescript": ">=4.8.4 <6.0.0"
+ "node": ">=12"
}
},
- "node_modules/@typescript-eslint/scope-manager": {
- "version": "8.51.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.51.0.tgz",
- "integrity": "sha512-JhhJDVwsSx4hiOEQPeajGhCWgBMBwVkxC/Pet53EpBVs7zHHtayKefw1jtPaNRXpI9RA2uocdmpdfE7T+NrizA==",
+ "node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.51.0",
- "@typescript-eslint/visitor-keys": "8.51.0"
+ "ms": "^2.1.3"
},
"engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ "node": ">=6.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
- "node_modules/@typescript-eslint/tsconfig-utils": {
- "version": "8.51.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.51.0.tgz",
- "integrity": "sha512-Qi5bSy/vuHeWyir2C8u/uqGMIlIDu8fuiYWv48ZGlZ/k+PRPHtaAu7erpc7p5bzw2WNNSniuxoMSO4Ar6V9OXw==",
+ "node_modules/detect-libc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
"dev": true,
- "license": "MIT",
+ "license": "Apache-2.0",
"engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "typescript": ">=4.8.4 <6.0.0"
+ "node": ">=8"
}
},
- "node_modules/@typescript-eslint/type-utils": {
- "version": "8.51.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.51.0.tgz",
- "integrity": "sha512-0XVtYzxnobc9K0VU7wRWg1yiUrw4oQzexCG2V2IDxxCxhqBMSMbjB+6o91A+Uc0GWtgjCa3Y8bi7hwI0Tu4n5Q==",
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.401",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.401.tgz",
+ "integrity": "sha512-H6ViHN68nGYlChEvlIU67fn8O2/tpbWQPwck98yaJmh+08LSvHiydzDQ6oXNccLU3kNRVIRS9A4mA7CG+i6fLQ==",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "8.51.0",
- "@typescript-eslint/typescript-estree": "8.51.0",
- "@typescript-eslint/utils": "8.51.0",
- "debug": "^4.3.4",
- "ts-api-utils": "^2.2.0"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^8.57.0 || ^9.0.0",
- "typescript": ">=4.8.4 <6.0.0"
- }
+ "license": "ISC"
},
- "node_modules/@typescript-eslint/types": {
- "version": "8.51.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.51.0.tgz",
- "integrity": "sha512-TizAvWYFM6sSscmEakjY3sPqGwxZRSywSsPEiuZF6d5GmGD9Gvlsv0f6N8FvAAA0CD06l3rIcWNbsN1e5F/9Ag==",
+ "node_modules/enhanced-resolve": {
+ "version": "5.24.5",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.24.5.tgz",
+ "integrity": "sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==",
"dev": true,
"license": "MIT",
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.3.3"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
+ "engines": {
+ "node": ">=10.13.0"
}
},
- "node_modules/@typescript-eslint/typescript-estree": {
- "version": "8.51.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.51.0.tgz",
- "integrity": "sha512-1qNjGqFRmlq0VW5iVlcyHBbCjPB7y6SxpBkrbhNWMy/65ZoncXCEPJxkRZL8McrseNH6lFhaxCIaX+vBuFnRng==",
+ "node_modules/esbuild": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
+ "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
"dev": true,
+ "hasInstallScript": true,
"license": "MIT",
- "dependencies": {
- "@typescript-eslint/project-service": "8.51.0",
- "@typescript-eslint/tsconfig-utils": "8.51.0",
- "@typescript-eslint/types": "8.51.0",
- "@typescript-eslint/visitor-keys": "8.51.0",
- "debug": "^4.3.4",
- "minimatch": "^9.0.4",
- "semver": "^7.6.0",
- "tinyglobby": "^0.2.15",
- "ts-api-utils": "^2.2.0"
+ "bin": {
+ "esbuild": "bin/esbuild"
},
"engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
+ "node": ">=12"
},
- "peerDependencies": {
- "typescript": ">=4.8.4 <6.0.0"
- }
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.21.5",
+ "@esbuild/android-arm": "0.21.5",
+ "@esbuild/android-arm64": "0.21.5",
+ "@esbuild/android-x64": "0.21.5",
+ "@esbuild/darwin-arm64": "0.21.5",
+ "@esbuild/darwin-x64": "0.21.5",
+ "@esbuild/freebsd-arm64": "0.21.5",
+ "@esbuild/freebsd-x64": "0.21.5",
+ "@esbuild/linux-arm": "0.21.5",
+ "@esbuild/linux-arm64": "0.21.5",
+ "@esbuild/linux-ia32": "0.21.5",
+ "@esbuild/linux-loong64": "0.21.5",
+ "@esbuild/linux-mips64el": "0.21.5",
+ "@esbuild/linux-ppc64": "0.21.5",
+ "@esbuild/linux-riscv64": "0.21.5",
+ "@esbuild/linux-s390x": "0.21.5",
+ "@esbuild/linux-x64": "0.21.5",
+ "@esbuild/netbsd-x64": "0.21.5",
+ "@esbuild/openbsd-x64": "0.21.5",
+ "@esbuild/sunos-x64": "0.21.5",
+ "@esbuild/win32-arm64": "0.21.5",
+ "@esbuild/win32-ia32": "0.21.5",
+ "@esbuild/win32-x64": "0.21.5"
+ }
},
- "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
- "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0"
+ "engines": {
+ "node": ">=6"
}
},
- "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
"dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
+ "license": "MIT",
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": ">=12.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
},
- "engines": {
- "node": ">=10"
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
}
},
- "node_modules/@typescript-eslint/utils": {
- "version": "8.51.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.51.0.tgz",
- "integrity": "sha512-11rZYxSe0zabiKaCP2QAwRf/dnmgFgvTmeDTtZvUvXG3UuAdg/GU02NExmmIXzz3vLGgMdtrIosI84jITQOxUA==",
+ "node_modules/fraction.js": {
+ "version": "5.3.4",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz",
+ "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.7.0",
- "@typescript-eslint/scope-manager": "8.51.0",
- "@typescript-eslint/types": "8.51.0",
- "@typescript-eslint/typescript-estree": "8.51.0"
- },
"engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ "node": "*"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^8.57.0 || ^9.0.0",
- "typescript": ">=4.8.4 <6.0.0"
+ "type": "github",
+ "url": "https://github.com/sponsors/rawify"
}
},
- "node_modules/@typescript-eslint/visitor-keys": {
- "version": "8.51.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.51.0.tgz",
- "integrity": "sha512-mM/JRQOzhVN1ykejrvwnBRV3+7yTKK8tVANVN3o1O0t0v7o+jqdVu9crPy5Y9dov15TJk/FTIgoUGHrTOVL3Zg==",
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"dev": true,
+ "hasInstallScript": true,
"license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "8.51.0",
- "eslint-visitor-keys": "^4.2.1"
- },
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
- "node_modules/@ungap/structured-clone": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
- "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
- "license": "ISC"
- },
- "node_modules/@vitejs/plugin-react": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz",
- "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==",
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "@babel/core": "^7.28.0",
- "@babel/plugin-transform-react-jsx-self": "^7.27.1",
- "@babel/plugin-transform-react-jsx-source": "^7.27.1",
- "@rolldown/pluginutils": "1.0.0-beta.27",
- "@types/babel__core": "^7.20.5",
- "react-refresh": "^0.17.0"
- },
"engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "peerDependencies": {
- "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0"
+ "node": ">=6.9.0"
}
},
- "node_modules/@vitest/expect": {
- "version": "2.1.9",
- "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.9.tgz",
- "integrity": "sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw==",
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/jiti": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz",
+ "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "@vitest/spy": "2.1.9",
- "@vitest/utils": "2.1.9",
- "chai": "^5.1.2",
- "tinyrainbow": "^1.2.0"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
+ "bin": {
+ "jiti": "lib/jiti-cli.mjs"
}
},
- "node_modules/@vitest/mocker": {
- "version": "2.1.9",
- "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.9.tgz",
- "integrity": "sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg==",
- "dev": true,
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "license": "MIT"
+ },
+ "node_modules/js-yaml": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz",
+ "integrity": "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/puzrin"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/nodeca"
+ }
+ ],
"license": "MIT",
"dependencies": {
- "@vitest/spy": "2.1.9",
- "estree-walker": "^3.0.3",
- "magic-string": "^0.30.12"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
- },
- "peerDependencies": {
- "msw": "^2.4.9",
- "vite": "^5.0.0"
+ "argparse": "^2.0.1"
},
- "peerDependenciesMeta": {
- "msw": {
- "optional": true
- },
- "vite": {
- "optional": true
- }
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/@vitest/pretty-format": {
- "version": "2.1.9",
- "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz",
- "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==",
+ "node_modules/jsesc": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "tinyrainbow": "^1.2.0"
+ "bin": {
+ "jsesc": "bin/jsesc"
},
- "funding": {
- "url": "https://opencollective.com/vitest"
+ "engines": {
+ "node": ">=6"
}
},
- "node_modules/@vitest/runner": {
- "version": "2.1.9",
- "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.9.tgz",
- "integrity": "sha512-ZXSSqTFIrzduD63btIfEyOmNcBmQvgOVsPNPe0jYtESiXkhd8u2erDLnMxmGrDCwHCCHE7hxwRDCT3pt0esT4g==",
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "@vitest/utils": "2.1.9",
- "pathe": "^1.1.2"
+ "bin": {
+ "json5": "lib/cli.js"
},
- "funding": {
- "url": "https://opencollective.com/vitest"
+ "engines": {
+ "node": ">=6"
}
},
- "node_modules/@vitest/snapshot": {
- "version": "2.1.9",
- "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.9.tgz",
- "integrity": "sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==",
+ "node_modules/lightningcss": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz",
+ "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==",
"dev": true,
- "license": "MIT",
+ "license": "MPL-2.0",
"dependencies": {
- "@vitest/pretty-format": "2.1.9",
- "magic-string": "^0.30.12",
- "pathe": "^1.1.2"
+ "detect-libc": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
},
"funding": {
- "url": "https://opencollective.com/vitest"
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "lightningcss-android-arm64": "1.32.0",
+ "lightningcss-darwin-arm64": "1.32.0",
+ "lightningcss-darwin-x64": "1.32.0",
+ "lightningcss-freebsd-x64": "1.32.0",
+ "lightningcss-linux-arm-gnueabihf": "1.32.0",
+ "lightningcss-linux-arm64-gnu": "1.32.0",
+ "lightningcss-linux-arm64-musl": "1.32.0",
+ "lightningcss-linux-x64-gnu": "1.32.0",
+ "lightningcss-linux-x64-musl": "1.32.0",
+ "lightningcss-win32-arm64-msvc": "1.32.0",
+ "lightningcss-win32-x64-msvc": "1.32.0"
}
},
- "node_modules/@vitest/spy": {
- "version": "2.1.9",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.9.tgz",
- "integrity": "sha512-E1B35FwzXXTs9FHNK6bDszs7mtydNi5MIfUWpceJ8Xbfb1gBMscAnwLbEu+B44ed6W3XjL9/ehLPHR1fkf1KLQ==",
+ "node_modules/lightningcss-android-arm64": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz",
+ "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "license": "MIT",
- "dependencies": {
- "tinyspy": "^3.0.2"
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "peer": true,
+ "engines": {
+ "node": ">= 12.0.0"
},
"funding": {
- "url": "https://opencollective.com/vitest"
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/@vitest/utils": {
- "version": "2.1.9",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.9.tgz",
- "integrity": "sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==",
+ "node_modules/lightningcss-darwin-arm64": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz",
+ "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "license": "MIT",
- "dependencies": {
- "@vitest/pretty-format": "2.1.9",
- "loupe": "^3.1.2",
- "tinyrainbow": "^1.2.0"
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "peer": true,
+ "engines": {
+ "node": ">= 12.0.0"
},
"funding": {
- "url": "https://opencollective.com/vitest"
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/acorn": {
- "version": "8.15.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
- "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
- "devOptional": true,
- "license": "MIT",
- "bin": {
- "acorn": "bin/acorn"
- },
+ "node_modules/lightningcss-darwin-x64": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz",
+ "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "peer": true,
"engines": {
- "node": ">=0.4.0"
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "node_modules/lightningcss-freebsd-x64": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz",
+ "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "license": "MIT",
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/ajv": {
- "version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
- "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.3",
- "fast-uri": "^3.0.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2"
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "peer": true,
+ "engines": {
+ "node": ">= 12.0.0"
},
"funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/ajv-draft-04": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz",
- "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==",
- "license": "MIT",
- "peerDependencies": {
- "ajv": "^8.5.0"
+ "node_modules/lightningcss-linux-arm-gnueabihf": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz",
+ "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true,
+ "engines": {
+ "node": ">= 12.0.0"
},
- "peerDependenciesMeta": {
- "ajv": {
- "optional": true
- }
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "node_modules/lightningcss-linux-arm64-gnu": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz",
+ "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "license": "MIT",
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true,
"engines": {
- "node": ">=8"
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "node_modules/lightningcss-linux-arm64-musl": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz",
+ "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true,
"engines": {
- "node": ">=8"
+ "node": ">= 12.0.0"
},
"funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "license": "Python-2.0"
- },
- "node_modules/assertion-error": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
- "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
+ "node_modules/lightningcss-linux-x64-gnu": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz",
+ "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "license": "MIT",
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true,
"engines": {
- "node": ">=12"
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/autoprefixer": {
- "version": "10.4.23",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.23.tgz",
- "integrity": "sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==",
+ "node_modules/lightningcss-linux-x64-musl": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz",
+ "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/autoprefixer"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
],
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.28.1",
- "caniuse-lite": "^1.0.30001760",
- "fraction.js": "^5.3.4",
- "picocolors": "^1.1.1",
- "postcss-value-parser": "^4.2.0"
+ "peer": true,
+ "engines": {
+ "node": ">= 12.0.0"
},
- "bin": {
- "autoprefixer": "bin/autoprefixer"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-arm64-msvc": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz",
+ "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "peer": true,
+ "engines": {
+ "node": ">= 12.0.0"
},
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-x64-msvc": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz",
+ "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "peer": true,
"engines": {
- "node": "^10 || ^12 || >=14"
+ "node": ">= 12.0.0"
},
- "peerDependencies": {
- "postcss": "^8.1.0"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/babel-plugin-macros": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz",
- "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==",
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
"license": "MIT",
"dependencies": {
- "@babel/runtime": "^7.12.5",
- "cosmiconfig": "^7.0.0",
- "resolve": "^1.19.0"
+ "js-tokens": "^3.0.0 || ^4.0.0"
},
- "engines": {
- "node": ">=10",
- "npm": ">=6"
+ "bin": {
+ "loose-envify": "cli.js"
}
},
- "node_modules/babel-plugin-macros/node_modules/cosmiconfig": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
- "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
- "license": "MIT",
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "license": "ISC",
"dependencies": {
- "@types/parse-json": "^4.0.0",
- "import-fresh": "^3.2.1",
- "parse-json": "^5.0.0",
- "path-type": "^4.0.0",
- "yaml": "^1.10.0"
- },
- "engines": {
- "node": ">=10"
+ "yallist": "^3.0.2"
}
},
- "node_modules/bail": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
- "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==",
+ "node_modules/lucide-react": {
+ "version": "0.539.0",
+ "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.539.0.tgz",
+ "integrity": "sha512-VVISr+VF2krO91FeuCrm1rSOLACQUYVy7NQkzrOty52Y8TlTPcXcMdQFj9bYzBgXbWCiywlwSZ3Z8u6a+6bMlg==",
+ "license": "ISC",
+ "peerDependencies": {
+ "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.30.21",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
+ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
+ "dev": true,
"license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
}
},
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "node_modules/monaco-editor": {
+ "version": "0.47.0",
+ "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.47.0.tgz",
+ "integrity": "sha512-VabVvHvQ9QmMwXu4du008ZDuyLnHs9j7ThVFsiJoXSOQk18+LF89N4ADzPbFenm0W4V2bGHnFBztIRQTgBfxzw==",
"license": "MIT"
},
- "node_modules/baseline-browser-mapping": {
- "version": "2.9.11",
- "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.11.tgz",
- "integrity": "sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==",
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true,
- "license": "Apache-2.0",
+ "license": "MIT"
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.17",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.17.tgz",
+ "integrity": "sha512-xQLf0A3HOMlgHq0n247/LRuAOYmB7dXJ/DvAxGvsSBij45XtBSmQycu+F8ODbHwns/XyFZagyL1+J0Offw1E0g==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
"bin": {
- "baseline-browser-mapping": "dist/cli.js"
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
- "node_modules/boolbase": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
- "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "node_modules/node-releases": {
+ "version": "2.0.52",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.52.tgz",
+ "integrity": "sha512-MRlTqhAfoMx/4mhEbPo3Hi02g9LJZaJkka69V6h67Cb1gjrAG0jsTE4CZX1eptNx+VCAwJmfpnDIF4P0Nh1A7A==",
"dev": true,
- "license": "ISC"
- },
- "node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/braces": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
- "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "node_modules/oc-spec-site": {
+ "resolved": "packages/oc-spec-site",
+ "link": true
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",
+ "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
+ "dev": true,
"license": "MIT",
- "dependencies": {
- "fill-range": "^7.1.1"
- },
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
- "node_modules/browserslist": {
- "version": "4.28.1",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz",
- "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==",
+ "node_modules/postcss": {
+ "version": "8.5.25",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.25.tgz",
+ "integrity": "sha512-DTPx3RWSSnWyzLxQnlH0rJP+EW5ekl16ZU4/psbIhA0e53kJfdgaN5vKM+xP7yJtXVu+nfdVFmlgFDEKAe4Pyw==",
"dev": true,
"funding": [
{
"type": "opencollective",
- "url": "https://opencollective.com/browserslist"
+ "url": "https://opencollective.com/postcss/"
},
{
"type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
+ "url": "https://tidelift.com/funding/github/npm/postcss"
},
{
"type": "github",
@@ -3485,6135 +2797,248 @@
],
"license": "MIT",
"dependencies": {
- "baseline-browser-mapping": "^2.9.0",
- "caniuse-lite": "^1.0.30001759",
- "electron-to-chromium": "^1.5.263",
- "node-releases": "^2.0.27",
- "update-browserslist-db": "^1.2.0"
- },
- "bin": {
- "browserslist": "cli.js"
+ "nanoid": "^3.3.16",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
},
"engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ "node": "^10 || ^12 || >=14"
}
},
- "node_modules/buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "devOptional": true,
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "dev": true,
"license": "MIT"
},
- "node_modules/cac": {
- "version": "6.7.14",
- "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
- "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/call-bind-apply-helpers": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
- "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "node_modules/react": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
+ "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
"license": "MIT",
"dependencies": {
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2"
+ "loose-envify": "^1.1.0"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=0.10.0"
}
},
- "node_modules/call-bound": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
- "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+ "node_modules/react-dom": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
+ "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
"license": "MIT",
"dependencies": {
- "call-bind-apply-helpers": "^1.0.2",
- "get-intrinsic": "^1.3.0"
- },
- "engines": {
- "node": ">= 0.4"
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.2"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/caniuse-lite": {
- "version": "1.0.30001762",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001762.tgz",
- "integrity": "sha512-PxZwGNvH7Ak8WX5iXzoK1KPZttBXNPuaOvI2ZYU7NrlM+d9Ov+TUvlLOBNGzVXAntMSMMlJPd+jY6ovrVjSmUw==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "CC-BY-4.0"
- },
- "node_modules/ccount": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
- "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "peerDependencies": {
+ "react": "^18.3.1"
}
},
- "node_modules/chai": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz",
- "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==",
+ "node_modules/react-refresh": {
+ "version": "0.17.0",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz",
+ "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "assertion-error": "^2.0.1",
- "check-error": "^2.1.1",
- "deep-eql": "^5.0.1",
- "loupe": "^3.1.0",
- "pathval": "^2.0.0"
- },
"engines": {
- "node": ">=18"
+ "node": ">=0.10.0"
}
},
- "node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
+ "node_modules/reactflow": {
+ "version": "11.11.4",
+ "resolved": "https://registry.npmjs.org/reactflow/-/reactflow-11.11.4.tgz",
+ "integrity": "sha512-70FOtJkUWH3BAOsN+LU9lCrKoKbtOPnz2uq0CV2PLdNSwxTXOhCbsZr50GmZ+Rtw3jx8Uv7/vBFtCGixLfd4Og==",
"license": "MIT",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
+ "@reactflow/background": "11.3.14",
+ "@reactflow/controls": "11.2.14",
+ "@reactflow/core": "11.11.4",
+ "@reactflow/minimap": "11.7.14",
+ "@reactflow/node-resizer": "2.2.14",
+ "@reactflow/node-toolbar": "1.3.14"
},
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "peerDependencies": {
+ "react": ">=17",
+ "react-dom": ">=17"
}
},
- "node_modules/chalk/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "node_modules/rollup": {
+ "version": "4.62.4",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.4.tgz",
+ "integrity": "sha512-RXOqwaPsBGjMNMa4sQjDjHieHEZDFoj/Rdr46l2MU5DfEs16wHJPC2RPTPHWhNl+M3aI472LLqFkFKut4SblOg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "has-flag": "^4.0.0"
+ "@types/estree": "1.0.9"
},
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/character-entities": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
- "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/character-entities-html4": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
- "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/character-entities-legacy": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
- "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/character-reference-invalid": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz",
- "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/check-error": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz",
- "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 16"
- }
- },
- "node_modules/classcat": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/classcat/-/classcat-5.0.5.tgz",
- "integrity": "sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==",
- "license": "MIT"
- },
- "node_modules/cli": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz",
- "integrity": "sha512-41U72MB56TfUMGndAKK8vJ78eooOD4Z5NOL4xEfjc0c23s+6EYKXlXsmACBVclLP1yOfWCgEganVzddVrSNoTg==",
- "license": "MIT",
- "dependencies": {
- "exit": "0.1.2",
- "glob": "^7.1.1"
+ "bin": {
+ "rollup": "dist/bin/rollup"
},
"engines": {
- "node": ">=0.2.5"
- }
- },
- "node_modules/cliui": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
},
- "engines": {
- "node": ">=12"
+ "optionalDependencies": {
+ "@napi-rs/lzma-linux-x64-gnu": "1.5.1",
+ "@rollup/rollup-android-arm-eabi": "4.62.4",
+ "@rollup/rollup-android-arm64": "4.62.4",
+ "@rollup/rollup-darwin-arm64": "4.62.4",
+ "@rollup/rollup-darwin-x64": "4.62.4",
+ "@rollup/rollup-freebsd-arm64": "4.62.4",
+ "@rollup/rollup-freebsd-x64": "4.62.4",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.62.4",
+ "@rollup/rollup-linux-arm-musleabihf": "4.62.4",
+ "@rollup/rollup-linux-arm64-gnu": "4.62.4",
+ "@rollup/rollup-linux-arm64-musl": "4.62.4",
+ "@rollup/rollup-linux-loong64-gnu": "4.62.4",
+ "@rollup/rollup-linux-loong64-musl": "4.62.4",
+ "@rollup/rollup-linux-ppc64-gnu": "4.62.4",
+ "@rollup/rollup-linux-ppc64-musl": "4.62.4",
+ "@rollup/rollup-linux-riscv64-gnu": "4.62.4",
+ "@rollup/rollup-linux-riscv64-musl": "4.62.4",
+ "@rollup/rollup-linux-s390x-gnu": "4.62.4",
+ "@rollup/rollup-linux-x64-gnu": "4.62.4",
+ "@rollup/rollup-linux-x64-musl": "4.62.4",
+ "@rollup/rollup-openbsd-x64": "4.62.4",
+ "@rollup/rollup-openharmony-arm64": "4.62.4",
+ "@rollup/rollup-win32-arm64-msvc": "4.62.4",
+ "@rollup/rollup-win32-ia32-msvc": "4.62.4",
+ "@rollup/rollup-win32-x64-gnu": "4.62.4",
+ "@rollup/rollup-win32-x64-msvc": "4.62.4",
+ "fsevents": "~2.3.2"
}
},
- "node_modules/codemirror": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.2.tgz",
- "integrity": "sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw==",
+ "node_modules/scheduler": {
+ "version": "0.23.2",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
+ "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
"license": "MIT",
"dependencies": {
- "@codemirror/autocomplete": "^6.0.0",
- "@codemirror/commands": "^6.0.0",
- "@codemirror/language": "^6.0.0",
- "@codemirror/lint": "^6.0.0",
- "@codemirror/search": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.0.0"
+ "loose-envify": "^1.1.0"
}
},
- "node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
}
},
- "node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
"dev": true,
- "license": "MIT"
- },
- "node_modules/comma-separated-tokens": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
- "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "devOptional": true,
- "license": "MIT"
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "node_modules/state-local": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz",
+ "integrity": "sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==",
"license": "MIT"
},
- "node_modules/concurrently": {
- "version": "9.2.1",
- "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.1.tgz",
- "integrity": "sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==",
+ "node_modules/tailwindcss": {
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.3.tgz",
+ "integrity": "sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ==",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "chalk": "4.1.2",
- "rxjs": "7.8.2",
- "shell-quote": "1.8.3",
- "supports-color": "8.1.1",
- "tree-kill": "1.2.2",
- "yargs": "17.7.2"
- },
- "bin": {
- "conc": "dist/bin/concurrently.js",
- "concurrently": "dist/bin/concurrently.js"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/open-cli-tools/concurrently?sponsor=1"
- }
- },
- "node_modules/console-browserify": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
- "integrity": "sha512-duS7VP5pvfsNLDvL1O4VOEbw37AI3A4ZUQYemvDlnpGrNu9tprR7BYWpDYwC0Xia0Zxz5ZupdiIrUp0GH1aXfg==",
- "dependencies": {
- "date-now": "^0.1.4"
- }
- },
- "node_modules/convert-source-map": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
- "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
"license": "MIT"
},
- "node_modules/cookie": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz",
- "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==",
+ "node_modules/tapable": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz",
+ "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==",
+ "dev": true,
"license": "MIT",
"engines": {
- "node": ">=18"
+ "node": ">=6"
},
"funding": {
"type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/core-util-is": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
- "license": "MIT"
- },
- "node_modules/cosmiconfig": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz",
- "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==",
- "license": "MIT",
- "dependencies": {
- "env-paths": "^2.2.1",
- "import-fresh": "^3.3.0",
- "js-yaml": "^4.1.0",
- "parse-json": "^5.2.0"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/d-fischer"
- },
- "peerDependencies": {
- "typescript": ">=4.9.5"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "url": "https://opencollective.com/webpack"
}
},
- "node_modules/crelt": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz",
- "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==",
- "license": "MIT"
- },
- "node_modules/cross-spawn": {
- "version": "7.0.6",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
- "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "node_modules/tinyglobby": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",
+ "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.4"
},
"engines": {
- "node": ">= 8"
- }
- },
- "node_modules/css-select": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
- "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "boolbase": "^1.0.0",
- "css-what": "^6.1.0",
- "domhandler": "^5.0.2",
- "domutils": "^3.0.1",
- "nth-check": "^2.0.1"
+ "node": ">=12.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/fb55"
+ "url": "https://github.com/sponsors/SuperchupuDev"
}
},
- "node_modules/css-select/node_modules/dom-serializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
- "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "node_modules/typescript": {
+ "version": "5.9.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.2",
- "entities": "^4.2.0"
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
},
- "funding": {
- "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ "engines": {
+ "node": ">=14.17"
}
},
- "node_modules/css-select/node_modules/domelementtype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
- "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "node_modules/update-browserslist-db": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
+ "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
"dev": true,
"funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
{
"type": "github",
- "url": "https://github.com/sponsors/fb55"
+ "url": "https://github.com/sponsors/ai"
}
],
- "license": "BSD-2-Clause"
- },
- "node_modules/css-select/node_modules/domhandler": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
- "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
- "dev": true,
- "license": "BSD-2-Clause",
+ "license": "MIT",
"dependencies": {
- "domelementtype": "^2.3.0"
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
},
- "engines": {
- "node": ">= 4"
+ "bin": {
+ "update-browserslist-db": "cli.js"
},
- "funding": {
- "url": "https://github.com/fb55/domhandler?sponsor=1"
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
}
},
- "node_modules/css-select/node_modules/domutils": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
- "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "dom-serializer": "^2.0.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3"
- },
- "funding": {
- "url": "https://github.com/fb55/domutils?sponsor=1"
- }
- },
- "node_modules/css-select/node_modules/entities": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.12"
- },
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/css-what": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
- "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">= 6"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/cssesc": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
- "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "cssesc": "bin/cssesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/csstype": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
- "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
- "license": "MIT"
- },
- "node_modules/d3-color": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
- "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==",
- "license": "ISC",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-dispatch": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz",
- "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==",
- "license": "ISC",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-drag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz",
- "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==",
- "license": "ISC",
- "dependencies": {
- "d3-dispatch": "1 - 3",
- "d3-selection": "3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-ease": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
- "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-interpolate": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
- "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
- "license": "ISC",
- "dependencies": {
- "d3-color": "1 - 3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-selection": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
- "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
- "license": "ISC",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-timer": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz",
- "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==",
- "license": "ISC",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-transition": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz",
- "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==",
- "license": "ISC",
- "dependencies": {
- "d3-color": "1 - 3",
- "d3-dispatch": "1 - 3",
- "d3-ease": "1 - 3",
- "d3-interpolate": "1 - 3",
- "d3-timer": "1 - 3"
- },
- "engines": {
- "node": ">=12"
- },
- "peerDependencies": {
- "d3-selection": "2 - 3"
- }
- },
- "node_modules/d3-zoom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz",
- "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==",
- "license": "ISC",
- "dependencies": {
- "d3-dispatch": "1 - 3",
- "d3-drag": "2 - 3",
- "d3-interpolate": "1 - 3",
- "d3-selection": "2 - 3",
- "d3-transition": "2 - 3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/date-now": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
- "integrity": "sha512-AsElvov3LoNB7tf5k37H2jYSB+ZZPMT5sG2QjJCcdlV5chIv6htBUBUui2IKRjgtKAKtCBN7Zbwa+MtwLjSeNw=="
- },
- "node_modules/debug": {
- "version": "4.4.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
- "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
- "license": "MIT",
- "dependencies": {
- "ms": "^2.1.3"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/decode-named-character-reference": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz",
- "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==",
- "license": "MIT",
- "dependencies": {
- "character-entities": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/deep-eql": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz",
- "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/dequal": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
- "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/detect-libc": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
- "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
- "license": "Apache-2.0",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/devlop": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
- "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
- "license": "MIT",
- "dependencies": {
- "dequal": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/diff": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
- "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.3.1"
- }
- },
- "node_modules/dom-serializer": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
- "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
- "license": "MIT",
- "dependencies": {
- "domelementtype": "^2.0.1",
- "entities": "^2.0.0"
- }
- },
- "node_modules/dom-serializer/node_modules/domelementtype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
- "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ],
- "license": "BSD-2-Clause"
- },
- "node_modules/dom-serializer/node_modules/entities": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
- "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
- "license": "BSD-2-Clause",
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/domelementtype": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
- "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
- "license": "BSD-2-Clause"
- },
- "node_modules/domhandler": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz",
- "integrity": "sha512-q9bUwjfp7Eif8jWxxxPSykdRZAb6GkguBGSgvvCrhI9wB71W2K/Kvv4E61CF/mcCfnVJDeDWx/Vb/uAqbDj6UQ==",
- "dependencies": {
- "domelementtype": "1"
- }
- },
- "node_modules/domutils": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
- "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==",
- "dependencies": {
- "dom-serializer": "0",
- "domelementtype": "1"
- }
- },
- "node_modules/dunder-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
- "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
- "license": "MIT",
- "dependencies": {
- "call-bind-apply-helpers": "^1.0.1",
- "es-errors": "^1.3.0",
- "gopd": "^1.2.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/electron-to-chromium": {
- "version": "1.5.267",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz",
- "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/enhanced-resolve": {
- "version": "5.18.4",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz",
- "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==",
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.4",
- "tapable": "^2.2.0"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/entities": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
- "integrity": "sha512-LbLqfXgJMmy81t+7c14mnulFHJ170cM6E+0vMXR9k/ZiZwgX8i5pNgjTCX3SO4VeUsFLV+8InixoretwU+MjBQ==",
- "license": "BSD-like"
- },
- "node_modules/env-paths": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
- "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/error-ex": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",
- "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==",
- "license": "MIT",
- "dependencies": {
- "is-arrayish": "^0.2.1"
- }
- },
- "node_modules/es-define-property": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
- "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-errors": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
- "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-module-lexer": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz",
- "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/es-object-atoms": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz",
- "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==",
- "license": "MIT",
- "dependencies": {
- "es-errors": "^1.3.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/esbuild": {
- "version": "0.25.12",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz",
- "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==",
- "hasInstallScript": true,
- "license": "MIT",
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=18"
- },
- "optionalDependencies": {
- "@esbuild/aix-ppc64": "0.25.12",
- "@esbuild/android-arm": "0.25.12",
- "@esbuild/android-arm64": "0.25.12",
- "@esbuild/android-x64": "0.25.12",
- "@esbuild/darwin-arm64": "0.25.12",
- "@esbuild/darwin-x64": "0.25.12",
- "@esbuild/freebsd-arm64": "0.25.12",
- "@esbuild/freebsd-x64": "0.25.12",
- "@esbuild/linux-arm": "0.25.12",
- "@esbuild/linux-arm64": "0.25.12",
- "@esbuild/linux-ia32": "0.25.12",
- "@esbuild/linux-loong64": "0.25.12",
- "@esbuild/linux-mips64el": "0.25.12",
- "@esbuild/linux-ppc64": "0.25.12",
- "@esbuild/linux-riscv64": "0.25.12",
- "@esbuild/linux-s390x": "0.25.12",
- "@esbuild/linux-x64": "0.25.12",
- "@esbuild/netbsd-arm64": "0.25.12",
- "@esbuild/netbsd-x64": "0.25.12",
- "@esbuild/openbsd-arm64": "0.25.12",
- "@esbuild/openbsd-x64": "0.25.12",
- "@esbuild/openharmony-arm64": "0.25.12",
- "@esbuild/sunos-x64": "0.25.12",
- "@esbuild/win32-arm64": "0.25.12",
- "@esbuild/win32-ia32": "0.25.12",
- "@esbuild/win32-x64": "0.25.12"
- }
- },
- "node_modules/escalade": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
- "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/eslint": {
- "version": "9.39.2",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz",
- "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.8.0",
- "@eslint-community/regexpp": "^4.12.1",
- "@eslint/config-array": "^0.21.1",
- "@eslint/config-helpers": "^0.4.2",
- "@eslint/core": "^0.17.0",
- "@eslint/eslintrc": "^3.3.1",
- "@eslint/js": "9.39.2",
- "@eslint/plugin-kit": "^0.4.1",
- "@humanfs/node": "^0.16.6",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@humanwhocodes/retry": "^0.4.2",
- "@types/estree": "^1.0.6",
- "ajv": "^6.12.4",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.6",
- "debug": "^4.3.2",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^8.4.0",
- "eslint-visitor-keys": "^4.2.1",
- "espree": "^10.4.0",
- "esquery": "^1.5.0",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^8.0.0",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "ignore": "^5.2.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "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.3"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "url": "https://eslint.org/donate"
- },
- "peerDependencies": {
- "jiti": "*"
- },
- "peerDependenciesMeta": {
- "jiti": {
- "optional": true
- }
- }
- },
- "node_modules/eslint-plugin-react-hooks": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz",
- "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
- }
- },
- "node_modules/eslint-plugin-react-refresh": {
- "version": "0.4.26",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.26.tgz",
- "integrity": "sha512-1RETEylht2O6FM/MvgnyvT+8K21wLqDNg4qD51Zj3guhjt433XbnnkVttHMyaVyAFD03QSV4LPS5iE3VQmO7XQ==",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "eslint": ">=8.40"
- }
- },
- "node_modules/eslint-scope": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz",
- "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint-visitor-keys": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
- "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/eslint/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/espree": {
- "version": "10.4.0",
- "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
- "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "acorn": "^8.15.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^4.2.1"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/esquery": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
- "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "estraverse": "^5.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/estree-util-is-identifier-name": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz",
- "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==",
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/estree-walker": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
- "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/estree": "^1.0.0"
- }
- },
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/exit": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
- "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/expect-type": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz",
- "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=12.0.0"
- }
- },
- "node_modules/extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "license": "MIT"
- },
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "license": "MIT"
- },
- "node_modules/fast-glob": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
- "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "engines": {
- "node": ">=8.6.0"
- }
- },
- "node_modules/fast-glob/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/fast-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz",
- "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fastify"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/fastify"
- }
- ],
- "license": "BSD-3-Clause"
- },
- "node_modules/fastq": {
- "version": "1.20.1",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
- "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
- "license": "ISC",
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
- "node_modules/fdir": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
- "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
- "license": "MIT",
- "engines": {
- "node": ">=12.0.0"
- },
- "peerDependencies": {
- "picomatch": "^3 || ^4"
- },
- "peerDependenciesMeta": {
- "picomatch": {
- "optional": true
- }
- }
- },
- "node_modules/file-entry-cache": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
- "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "flat-cache": "^4.0.0"
- },
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/fill-range": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
- "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
- "license": "MIT",
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/find-root": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
- "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==",
- "license": "MIT"
- },
- "node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/flat-cache": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
- "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "flatted": "^3.2.9",
- "keyv": "^4.5.4"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/flatted": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
- "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/fraction.js": {
- "version": "5.3.4",
- "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz",
- "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "*"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/rawify"
- }
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "license": "ISC"
- },
- "node_modules/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "hasInstallScript": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/fuse.js": {
- "version": "7.5.0",
- "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.5.0.tgz",
- "integrity": "sha512-sQtrEfA+ez/3G0cCZecF70oqpCRttCexYUG4mUrtWL49ULUzUyxokt5kyqwtKzj1270RaKih+hcP3qLcumccow==",
- "license": "Apache-2.0",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/krisk"
- }
- },
- "node_modules/gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
- }
- },
- "node_modules/get-intrinsic": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
- "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
- "license": "MIT",
- "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"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-own-enumerable-property-symbols": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz",
- "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==",
- "license": "ISC"
- },
- "node_modules/get-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
- "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
- "license": "MIT",
- "dependencies": {
- "dunder-proto": "^1.0.1",
- "es-object-atoms": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
- "license": "ISC",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/glob-parent": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.3"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/globals": {
- "version": "15.15.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz",
- "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/gopd": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
- "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
- "license": "ISC"
- },
- "node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/has-symbols": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
- "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/hasown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
- "license": "MIT",
- "dependencies": {
- "function-bind": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/hast-util-to-jsx-runtime": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz",
- "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==",
- "license": "MIT",
- "dependencies": {
- "@types/estree": "^1.0.0",
- "@types/hast": "^3.0.0",
- "@types/unist": "^3.0.0",
- "comma-separated-tokens": "^2.0.0",
- "devlop": "^1.0.0",
- "estree-util-is-identifier-name": "^3.0.0",
- "hast-util-whitespace": "^3.0.0",
- "mdast-util-mdx-expression": "^2.0.0",
- "mdast-util-mdx-jsx": "^3.0.0",
- "mdast-util-mdxjs-esm": "^2.0.0",
- "property-information": "^7.0.0",
- "space-separated-tokens": "^2.0.0",
- "style-to-js": "^1.0.0",
- "unist-util-position": "^5.0.0",
- "vfile-message": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-whitespace": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
- "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hoist-non-react-statics": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
- "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
- "license": "BSD-3-Clause",
- "dependencies": {
- "react-is": "^16.7.0"
- }
- },
- "node_modules/html-url-attributes": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.1.tgz",
- "integrity": "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==",
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/htmlparser2": {
- "version": "3.8.3",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
- "integrity": "sha512-hBxEg3CYXe+rPIua8ETe7tmG3XDn9B0edOE/e9wH2nLczxzgdu0m0aNHY+5wFZiviLWLdANPJTssa92dMcXQ5Q==",
- "license": "MIT",
- "dependencies": {
- "domelementtype": "1",
- "domhandler": "2.3",
- "domutils": "1.5",
- "entities": "1.0",
- "readable-stream": "1.1"
- }
- },
- "node_modules/ignore": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
- "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/immer": {
- "version": "11.1.3",
- "resolved": "https://registry.npmjs.org/immer/-/immer-11.1.3.tgz",
- "integrity": "sha512-6jQTc5z0KJFtr1UgFpIL3N9XSC3saRaI9PwWtzM2pSqkNGtiNkYY2OSwkOGDK2XcTRcLb1pi/aNkKZz0nxVH4Q==",
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/immer"
- }
- },
- "node_modules/import-fresh": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
- "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
- "license": "MIT",
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "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.",
- "license": "ISC",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "license": "ISC"
- },
- "node_modules/inline-style-parser": {
- "version": "0.2.7",
- "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz",
- "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==",
- "license": "MIT"
- },
- "node_modules/is-alphabetical": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
- "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/is-alphanumerical": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
- "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
- "license": "MIT",
- "dependencies": {
- "is-alphabetical": "^2.0.0",
- "is-decimal": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
- "license": "MIT"
- },
- "node_modules/is-core-module": {
- "version": "2.16.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
- "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
- "license": "MIT",
- "dependencies": {
- "hasown": "^2.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-decimal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
- "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "license": "MIT",
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-hexadecimal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
- "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "license": "MIT",
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/is-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
- "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-plain-obj": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
- "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-regexp": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
- "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
- "license": "MIT"
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/jiti": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz",
- "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==",
- "license": "MIT",
- "bin": {
- "jiti": "lib/jiti-cli.mjs"
- }
- },
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "license": "MIT"
- },
- "node_modules/js-yaml": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
- "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
- "license": "MIT",
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/jsesc": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
- "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
- "license": "MIT",
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/jshint": {
- "version": "2.13.6",
- "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.13.6.tgz",
- "integrity": "sha512-IVdB4G0NTTeQZrBoM8C5JFVLjV2KtZ9APgybDA1MK73xb09qFs0jCXyQLnCOp1cSZZZbvhq/6mfXHUTaDkffuQ==",
- "license": "MIT",
- "dependencies": {
- "cli": "~1.0.0",
- "console-browserify": "1.1.x",
- "exit": "0.1.x",
- "htmlparser2": "3.8.x",
- "lodash": "~4.17.21",
- "minimatch": "~3.0.2",
- "strip-json-comments": "1.0.x"
- },
- "bin": {
- "jshint": "bin/jshint"
- }
- },
- "node_modules/jshint/node_modules/minimatch": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz",
- "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/jshint/node_modules/strip-json-comments": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz",
- "integrity": "sha512-AOPG8EBc5wAikaG1/7uFCNFJwnKOuQwFTpYBdTW6OvWHeZBQBrAA/amefHGrEiOnCPcLFZK6FUPtWVKpQVIRgg==",
- "license": "MIT",
- "bin": {
- "strip-json-comments": "cli.js"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/json-buffer": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
- "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/json-parse-even-better-errors": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "license": "MIT"
- },
- "node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "license": "MIT"
- },
- "node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/keyv": {
- "version": "4.5.4",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
- "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "json-buffer": "3.0.1"
- }
- },
- "node_modules/levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/lightningcss": {
- "version": "1.30.2",
- "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz",
- "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==",
- "license": "MPL-2.0",
- "dependencies": {
- "detect-libc": "^2.0.3"
- },
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- },
- "optionalDependencies": {
- "lightningcss-android-arm64": "1.30.2",
- "lightningcss-darwin-arm64": "1.30.2",
- "lightningcss-darwin-x64": "1.30.2",
- "lightningcss-freebsd-x64": "1.30.2",
- "lightningcss-linux-arm-gnueabihf": "1.30.2",
- "lightningcss-linux-arm64-gnu": "1.30.2",
- "lightningcss-linux-arm64-musl": "1.30.2",
- "lightningcss-linux-x64-gnu": "1.30.2",
- "lightningcss-linux-x64-musl": "1.30.2",
- "lightningcss-win32-arm64-msvc": "1.30.2",
- "lightningcss-win32-x64-msvc": "1.30.2"
- }
- },
- "node_modules/lightningcss-android-arm64": {
- "version": "1.30.2",
- "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz",
- "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==",
- "cpu": [
- "arm64"
- ],
- "license": "MPL-2.0",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/lightningcss-darwin-arm64": {
- "version": "1.30.2",
- "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz",
- "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==",
- "cpu": [
- "arm64"
- ],
- "license": "MPL-2.0",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/lightningcss-darwin-x64": {
- "version": "1.30.2",
- "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz",
- "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==",
- "cpu": [
- "x64"
- ],
- "license": "MPL-2.0",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/lightningcss-freebsd-x64": {
- "version": "1.30.2",
- "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz",
- "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==",
- "cpu": [
- "x64"
- ],
- "license": "MPL-2.0",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/lightningcss-linux-arm-gnueabihf": {
- "version": "1.30.2",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz",
- "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==",
- "cpu": [
- "arm"
- ],
- "license": "MPL-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/lightningcss-linux-arm64-gnu": {
- "version": "1.30.2",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz",
- "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==",
- "cpu": [
- "arm64"
- ],
- "license": "MPL-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/lightningcss-linux-arm64-musl": {
- "version": "1.30.2",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz",
- "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==",
- "cpu": [
- "arm64"
- ],
- "license": "MPL-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/lightningcss-linux-x64-gnu": {
- "version": "1.30.2",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz",
- "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==",
- "cpu": [
- "x64"
- ],
- "license": "MPL-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/lightningcss-linux-x64-musl": {
- "version": "1.30.2",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz",
- "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==",
- "cpu": [
- "x64"
- ],
- "license": "MPL-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/lightningcss-win32-arm64-msvc": {
- "version": "1.30.2",
- "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz",
- "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==",
- "cpu": [
- "arm64"
- ],
- "license": "MPL-2.0",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/lightningcss-win32-x64-msvc": {
- "version": "1.30.2",
- "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz",
- "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==",
- "cpu": [
- "x64"
- ],
- "license": "MPL-2.0",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/lines-and-columns": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
- "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
- "license": "MIT"
- },
- "node_modules/linkify-it": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz",
- "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==",
- "license": "MIT",
- "dependencies": {
- "uc.micro": "^2.0.0"
- }
- },
- "node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "license": "MIT"
- },
- "node_modules/lodash-es": {
- "version": "4.17.22",
- "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.22.tgz",
- "integrity": "sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/longest-streak": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
- "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "license": "MIT",
- "dependencies": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- },
- "bin": {
- "loose-envify": "cli.js"
- }
- },
- "node_modules/loupe": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz",
- "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^3.0.2"
- }
- },
- "node_modules/lucide-react": {
- "version": "0.539.0",
- "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.539.0.tgz",
- "integrity": "sha512-VVISr+VF2krO91FeuCrm1rSOLACQUYVy7NQkzrOty52Y8TlTPcXcMdQFj9bYzBgXbWCiywlwSZ3Z8u6a+6bMlg==",
- "license": "ISC",
- "peerDependencies": {
- "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
- }
- },
- "node_modules/magic-string": {
- "version": "0.30.21",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
- "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
- "license": "MIT",
- "dependencies": {
- "@jridgewell/sourcemap-codec": "^1.5.5"
- }
- },
- "node_modules/markdown-it": {
- "version": "14.1.0",
- "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz",
- "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==",
- "license": "MIT",
- "dependencies": {
- "argparse": "^2.0.1",
- "entities": "^4.4.0",
- "linkify-it": "^5.0.0",
- "mdurl": "^2.0.0",
- "punycode.js": "^2.3.1",
- "uc.micro": "^2.1.0"
- },
- "bin": {
- "markdown-it": "bin/markdown-it.mjs"
- }
- },
- "node_modules/markdown-it/node_modules/entities": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.12"
- },
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/markdown-table": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz",
- "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/math-intrinsics": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
- "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/mdast-util-find-and-replace": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz",
- "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "escape-string-regexp": "^5.0.0",
- "unist-util-is": "^6.0.0",
- "unist-util-visit-parents": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
- "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/mdast-util-from-markdown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz",
- "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "@types/unist": "^3.0.0",
- "decode-named-character-reference": "^1.0.0",
- "devlop": "^1.0.0",
- "mdast-util-to-string": "^4.0.0",
- "micromark": "^4.0.0",
- "micromark-util-decode-numeric-character-reference": "^2.0.0",
- "micromark-util-decode-string": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0",
- "unist-util-stringify-position": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-gfm": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz",
- "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==",
- "license": "MIT",
- "dependencies": {
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-gfm-autolink-literal": "^2.0.0",
- "mdast-util-gfm-footnote": "^2.0.0",
- "mdast-util-gfm-strikethrough": "^2.0.0",
- "mdast-util-gfm-table": "^2.0.0",
- "mdast-util-gfm-task-list-item": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-gfm-autolink-literal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz",
- "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "ccount": "^2.0.0",
- "devlop": "^1.0.0",
- "mdast-util-find-and-replace": "^3.0.0",
- "micromark-util-character": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-gfm-footnote": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz",
- "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "devlop": "^1.1.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-gfm-strikethrough": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz",
- "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-gfm-table": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz",
- "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "devlop": "^1.0.0",
- "markdown-table": "^3.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-gfm-task-list-item": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz",
- "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "devlop": "^1.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-mdx-expression": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz",
- "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==",
- "license": "MIT",
- "dependencies": {
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "devlop": "^1.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-mdx-jsx": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz",
- "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==",
- "license": "MIT",
- "dependencies": {
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "@types/unist": "^3.0.0",
- "ccount": "^2.0.0",
- "devlop": "^1.1.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0",
- "parse-entities": "^4.0.0",
- "stringify-entities": "^4.0.0",
- "unist-util-stringify-position": "^4.0.0",
- "vfile-message": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-mdxjs-esm": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz",
- "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==",
- "license": "MIT",
- "dependencies": {
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "devlop": "^1.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-phrasing": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz",
- "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "unist-util-is": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-to-hast": {
- "version": "13.2.1",
- "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz",
- "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "@ungap/structured-clone": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-util-sanitize-uri": "^2.0.0",
- "trim-lines": "^3.0.0",
- "unist-util-position": "^5.0.0",
- "unist-util-visit": "^5.0.0",
- "vfile": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-to-markdown": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz",
- "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "@types/unist": "^3.0.0",
- "longest-streak": "^3.0.0",
- "mdast-util-phrasing": "^4.0.0",
- "mdast-util-to-string": "^4.0.0",
- "micromark-util-classify-character": "^2.0.0",
- "micromark-util-decode-string": "^2.0.0",
- "unist-util-visit": "^5.0.0",
- "zwitch": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-to-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz",
- "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdurl": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz",
- "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==",
- "license": "MIT"
- },
- "node_modules/merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/micromark": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz",
- "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@types/debug": "^4.0.0",
- "debug": "^4.0.0",
- "decode-named-character-reference": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-core-commonmark": "^2.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-combine-extensions": "^2.0.0",
- "micromark-util-decode-numeric-character-reference": "^2.0.0",
- "micromark-util-encode": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-resolve-all": "^2.0.0",
- "micromark-util-sanitize-uri": "^2.0.0",
- "micromark-util-subtokenize": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-core-commonmark": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz",
- "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "decode-named-character-reference": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-factory-destination": "^2.0.0",
- "micromark-factory-label": "^2.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-factory-title": "^2.0.0",
- "micromark-factory-whitespace": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-classify-character": "^2.0.0",
- "micromark-util-html-tag-name": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-resolve-all": "^2.0.0",
- "micromark-util-subtokenize": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-extension-gfm": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz",
- "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==",
- "license": "MIT",
- "dependencies": {
- "micromark-extension-gfm-autolink-literal": "^2.0.0",
- "micromark-extension-gfm-footnote": "^2.0.0",
- "micromark-extension-gfm-strikethrough": "^2.0.0",
- "micromark-extension-gfm-table": "^2.0.0",
- "micromark-extension-gfm-tagfilter": "^2.0.0",
- "micromark-extension-gfm-task-list-item": "^2.0.0",
- "micromark-util-combine-extensions": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-gfm-autolink-literal": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz",
- "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==",
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-sanitize-uri": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-gfm-footnote": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz",
- "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==",
- "license": "MIT",
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-core-commonmark": "^2.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-sanitize-uri": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-gfm-strikethrough": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz",
- "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==",
- "license": "MIT",
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-classify-character": "^2.0.0",
- "micromark-util-resolve-all": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-gfm-table": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz",
- "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==",
- "license": "MIT",
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-gfm-tagfilter": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz",
- "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==",
- "license": "MIT",
- "dependencies": {
- "micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-gfm-task-list-item": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz",
- "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==",
- "license": "MIT",
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-factory-destination": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz",
- "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-label": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz",
- "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-space": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
- "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-title": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz",
- "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-whitespace": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz",
- "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-character": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
- "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-chunked": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz",
- "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-classify-character": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz",
- "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-combine-extensions": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz",
- "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-decode-numeric-character-reference": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz",
- "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-decode-string": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz",
- "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "decode-named-character-reference": "^1.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-decode-numeric-character-reference": "^2.0.0",
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-encode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz",
- "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/micromark-util-html-tag-name": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz",
- "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/micromark-util-normalize-identifier": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz",
- "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-resolve-all": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz",
- "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-sanitize-uri": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz",
- "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-encode": "^2.0.0",
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-subtokenize": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz",
- "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-symbol": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
- "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/micromark-util-types": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
- "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/micromatch": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
- "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
- "license": "MIT",
- "dependencies": {
- "braces": "^3.0.3",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/minipass": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
- "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=16 || 14 >=14.17"
- }
- },
- "node_modules/monaco-editor": {
- "version": "0.53.0",
- "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.53.0.tgz",
- "integrity": "sha512-0WNThgC6CMWNXXBxTbaYYcunj08iB5rnx4/G56UOPeL9UVIUGGHA1GR0EWIh9Ebabj7NpCRawQ5b0hfN1jQmYQ==",
- "license": "MIT",
- "dependencies": {
- "@types/trusted-types": "^1.0.6"
- }
- },
- "node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "license": "MIT"
- },
- "node_modules/nanoid": {
- "version": "3.3.11",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
- "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
- "node_modules/natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/node-html-parser": {
- "version": "8.0.4",
- "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-8.0.4.tgz",
- "integrity": "sha512-w2YxujN/TqrSIWGVNW/fVgKKfAyQeHMXCvnKZI0owLnfP0tfjdLecUoy9zhOMZGoEFk6eP5qSDyvUarjPl3bwQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "css-select": "^5.1.0",
- "entities": "^8.0.0"
- }
- },
- "node_modules/node-html-parser/node_modules/entities": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-8.0.0.tgz",
- "integrity": "sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=20.19.0"
- },
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/node-releases": {
- "version": "2.0.27",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz",
- "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/nth-check": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
- "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "boolbase": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/fb55/nth-check?sponsor=1"
- }
- },
- "node_modules/object-inspect": {
- "version": "1.13.4",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
- "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/oc-spec-site": {
- "resolved": "packages/oc-spec-site",
- "link": true
- },
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "license": "ISC",
- "dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/optionator": {
- "version": "0.9.4",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
- "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.5"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/package-json-from-dist": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
- "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
- "dev": true,
- "license": "BlueOak-1.0.0"
- },
- "node_modules/parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "license": "MIT",
- "dependencies": {
- "callsites": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/parse-entities": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz",
- "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "character-entities-legacy": "^3.0.0",
- "character-reference-invalid": "^2.0.0",
- "decode-named-character-reference": "^1.0.0",
- "is-alphanumerical": "^2.0.0",
- "is-decimal": "^2.0.0",
- "is-hexadecimal": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/parse-entities/node_modules/@types/unist": {
- "version": "2.0.11",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
- "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
- "license": "MIT"
- },
- "node_modules/parse-json": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
- "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "license": "MIT"
- },
- "node_modules/path-scurry": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz",
- "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "lru-cache": "^11.0.0",
- "minipass": "^7.1.2"
- },
- "engines": {
- "node": "20 || >=22"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/path-scurry/node_modules/lru-cache": {
- "version": "11.2.4",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz",
- "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "engines": {
- "node": "20 || >=22"
- }
- },
- "node_modules/path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pathe": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
- "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/pathval": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz",
- "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 14.16"
- }
- },
- "node_modules/picocolors": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
- "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
- "license": "ISC"
- },
- "node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "license": "MIT",
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/playwright": {
- "version": "1.58.2",
- "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.58.2.tgz",
- "integrity": "sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "playwright-core": "1.58.2"
- },
- "bin": {
- "playwright": "cli.js"
- },
- "engines": {
- "node": ">=18"
- },
- "optionalDependencies": {
- "fsevents": "2.3.2"
- }
- },
- "node_modules/playwright-core": {
- "version": "1.58.2",
- "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.58.2.tgz",
- "integrity": "sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==",
- "dev": true,
- "license": "Apache-2.0",
- "bin": {
- "playwright-core": "cli.js"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/playwright/node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/postcss": {
- "version": "8.5.6",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
- "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "nanoid": "^3.3.11",
- "picocolors": "^1.1.1",
- "source-map-js": "^1.2.1"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- }
- },
- "node_modules/postcss-selector-parser": {
- "version": "6.0.10",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
- "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cssesc": "^3.0.0",
- "util-deprecate": "^1.0.2"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/postcss-value-parser": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
- "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/prismjs": {
- "version": "1.30.0",
- "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz",
- "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/property-information": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz",
- "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/punycode": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
- "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/punycode.js": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
- "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/qs": {
- "version": "6.14.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz",
- "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==",
- "license": "BSD-3-Clause",
- "dependencies": {
- "side-channel": "^1.1.0"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/quickjs-emscripten": {
- "version": "0.31.0",
- "resolved": "https://registry.npmjs.org/quickjs-emscripten/-/quickjs-emscripten-0.31.0.tgz",
- "integrity": "sha512-K7Yt78aRPLjPcqv3fIuLW1jW3pvwO21B9pmFOolsjM/57ZhdVXBr51GqJpalgBlkPu9foAvhEAuuQPnvIGvLvQ==",
- "license": "MIT",
- "dependencies": {
- "@jitl/quickjs-wasmfile-debug-asyncify": "0.31.0",
- "@jitl/quickjs-wasmfile-debug-sync": "0.31.0",
- "@jitl/quickjs-wasmfile-release-asyncify": "0.31.0",
- "@jitl/quickjs-wasmfile-release-sync": "0.31.0",
- "quickjs-emscripten-core": "0.31.0"
- },
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/quickjs-emscripten-core": {
- "version": "0.31.0",
- "resolved": "https://registry.npmjs.org/quickjs-emscripten-core/-/quickjs-emscripten-core-0.31.0.tgz",
- "integrity": "sha512-oQz8p0SiKDBc1TC7ZBK2fr0GoSHZKA0jZIeXxsnCyCs4y32FStzCW4d1h6E1sE0uHDMbGITbk2zhNaytaoJwXQ==",
- "license": "MIT",
- "dependencies": {
- "@jitl/quickjs-ffi-types": "0.31.0"
- }
- },
- "node_modules/react": {
- "version": "18.3.1",
- "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
- "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
- "license": "MIT",
- "dependencies": {
- "loose-envify": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-dom": {
- "version": "18.3.1",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
- "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
- "license": "MIT",
- "dependencies": {
- "loose-envify": "^1.1.0",
- "scheduler": "^0.23.2"
- },
- "peerDependencies": {
- "react": "^18.3.1"
- }
- },
- "node_modules/react-is": {
- "version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
- "license": "MIT"
- },
- "node_modules/react-markdown": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-10.1.0.tgz",
- "integrity": "sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "devlop": "^1.0.0",
- "hast-util-to-jsx-runtime": "^2.0.0",
- "html-url-attributes": "^3.0.0",
- "mdast-util-to-hast": "^13.0.0",
- "remark-parse": "^11.0.0",
- "remark-rehype": "^11.0.0",
- "unified": "^11.0.0",
- "unist-util-visit": "^5.0.0",
- "vfile": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- },
- "peerDependencies": {
- "@types/react": ">=18",
- "react": ">=18"
- }
- },
- "node_modules/react-redux": {
- "version": "9.2.0",
- "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz",
- "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==",
- "license": "MIT",
- "dependencies": {
- "@types/use-sync-external-store": "^0.0.6",
- "use-sync-external-store": "^1.4.0"
- },
- "peerDependencies": {
- "@types/react": "^18.2.25 || ^19",
- "react": "^18.0 || ^19",
- "redux": "^5.0.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "redux": {
- "optional": true
- }
- }
- },
- "node_modules/react-refresh": {
- "version": "0.17.0",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz",
- "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-router": {
- "version": "7.11.0",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.11.0.tgz",
- "integrity": "sha512-uI4JkMmjbWCZc01WVP2cH7ZfSzH91JAZUDd7/nIprDgWxBV1TkkmLToFh7EbMTcMak8URFRa2YoBL/W8GWnCTQ==",
- "license": "MIT",
- "dependencies": {
- "cookie": "^1.0.1",
- "set-cookie-parser": "^2.6.0"
- },
- "engines": {
- "node": ">=20.0.0"
- },
- "peerDependencies": {
- "react": ">=18",
- "react-dom": ">=18"
- },
- "peerDependenciesMeta": {
- "react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/react-router-dom": {
- "version": "7.11.0",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.11.0.tgz",
- "integrity": "sha512-e49Ir/kMGRzFOOrYQBdoitq3ULigw4lKbAyKusnvtDu2t4dBX4AGYPrzNvorXmVuOyeakai6FUPW5MmibvVG8g==",
- "license": "MIT",
- "dependencies": {
- "react-router": "7.11.0"
- },
- "engines": {
- "node": ">=20.0.0"
- },
- "peerDependencies": {
- "react": ">=18",
- "react-dom": ">=18"
- }
- },
- "node_modules/reactflow": {
- "version": "11.11.4",
- "resolved": "https://registry.npmjs.org/reactflow/-/reactflow-11.11.4.tgz",
- "integrity": "sha512-70FOtJkUWH3BAOsN+LU9lCrKoKbtOPnz2uq0CV2PLdNSwxTXOhCbsZr50GmZ+Rtw3jx8Uv7/vBFtCGixLfd4Og==",
- "license": "MIT",
- "dependencies": {
- "@reactflow/background": "11.3.14",
- "@reactflow/controls": "11.2.14",
- "@reactflow/core": "11.11.4",
- "@reactflow/minimap": "11.7.14",
- "@reactflow/node-resizer": "2.2.14",
- "@reactflow/node-toolbar": "1.3.14"
- },
- "peerDependencies": {
- "react": ">=17",
- "react-dom": ">=17"
- }
- },
- "node_modules/readable-stream": {
- "version": "1.1.14",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
- "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==",
- "license": "MIT",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
- }
- },
- "node_modules/redux": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz",
- "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==",
- "license": "MIT"
- },
- "node_modules/redux-thunk": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz",
- "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==",
- "license": "MIT",
- "peerDependencies": {
- "redux": "^5.0.0"
- }
- },
- "node_modules/remark-gfm": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz",
- "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "mdast-util-gfm": "^3.0.0",
- "micromark-extension-gfm": "^3.0.0",
- "remark-parse": "^11.0.0",
- "remark-stringify": "^11.0.0",
- "unified": "^11.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-parse": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
- "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "micromark-util-types": "^2.0.0",
- "unified": "^11.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-rehype": {
- "version": "11.1.2",
- "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz",
- "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "mdast-util-to-hast": "^13.0.0",
- "unified": "^11.0.0",
- "vfile": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-stringify": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz",
- "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "mdast-util-to-markdown": "^2.0.0",
- "unified": "^11.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/require-from-string": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
- "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/reselect": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz",
- "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==",
- "license": "MIT"
- },
- "node_modules/resolve": {
- "version": "1.22.11",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz",
- "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==",
- "license": "MIT",
- "dependencies": {
- "is-core-module": "^2.16.1",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/reusify": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
- "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
- "license": "MIT",
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "node_modules/rimraf": {
- "version": "6.1.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.2.tgz",
- "integrity": "sha512-cFCkPslJv7BAXJsYlK1dZsbP8/ZNLkCAQ0bi1hf5EKX2QHegmDFEFA6QhuYJlk7UDdc+02JjO80YSOrWPpw06g==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "glob": "^13.0.0",
- "package-json-from-dist": "^1.0.1"
- },
- "bin": {
- "rimraf": "dist/esm/bin.mjs"
- },
- "engines": {
- "node": "20 || >=22"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/rimraf/node_modules/glob": {
- "version": "13.0.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz",
- "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "minimatch": "^10.1.1",
- "minipass": "^7.1.2",
- "path-scurry": "^2.0.0"
- },
- "engines": {
- "node": "20 || >=22"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/rimraf/node_modules/minimatch": {
- "version": "10.1.1",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz",
- "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "@isaacs/brace-expansion": "^5.0.0"
- },
- "engines": {
- "node": "20 || >=22"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/rollup": {
- "version": "4.54.0",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.54.0.tgz",
- "integrity": "sha512-3nk8Y3a9Ea8szgKhinMlGMhGMw89mqule3KWczxhIzqudyHdCIOHw8WJlj/r329fACjKLEh13ZSk7oE22kyeIw==",
- "license": "MIT",
- "dependencies": {
- "@types/estree": "1.0.8"
- },
- "bin": {
- "rollup": "dist/bin/rollup"
- },
- "engines": {
- "node": ">=18.0.0",
- "npm": ">=8.0.0"
- },
- "optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.54.0",
- "@rollup/rollup-android-arm64": "4.54.0",
- "@rollup/rollup-darwin-arm64": "4.54.0",
- "@rollup/rollup-darwin-x64": "4.54.0",
- "@rollup/rollup-freebsd-arm64": "4.54.0",
- "@rollup/rollup-freebsd-x64": "4.54.0",
- "@rollup/rollup-linux-arm-gnueabihf": "4.54.0",
- "@rollup/rollup-linux-arm-musleabihf": "4.54.0",
- "@rollup/rollup-linux-arm64-gnu": "4.54.0",
- "@rollup/rollup-linux-arm64-musl": "4.54.0",
- "@rollup/rollup-linux-loong64-gnu": "4.54.0",
- "@rollup/rollup-linux-ppc64-gnu": "4.54.0",
- "@rollup/rollup-linux-riscv64-gnu": "4.54.0",
- "@rollup/rollup-linux-riscv64-musl": "4.54.0",
- "@rollup/rollup-linux-s390x-gnu": "4.54.0",
- "@rollup/rollup-linux-x64-gnu": "4.54.0",
- "@rollup/rollup-linux-x64-musl": "4.54.0",
- "@rollup/rollup-openharmony-arm64": "4.54.0",
- "@rollup/rollup-win32-arm64-msvc": "4.54.0",
- "@rollup/rollup-win32-ia32-msvc": "4.54.0",
- "@rollup/rollup-win32-x64-gnu": "4.54.0",
- "@rollup/rollup-win32-x64-msvc": "4.54.0",
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "node_modules/rxjs": {
- "version": "7.8.2",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
- "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.1.0"
- }
- },
- "node_modules/scheduler": {
- "version": "0.23.2",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
- "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
- "license": "MIT",
- "dependencies": {
- "loose-envify": "^1.1.0"
- }
- },
- "node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/set-cookie-parser": {
- "version": "2.7.2",
- "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz",
- "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==",
- "license": "MIT"
- },
- "node_modules/shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shell-quote": {
- "version": "1.8.3",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz",
- "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/side-channel": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz",
- "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==",
- "license": "MIT",
- "dependencies": {
- "es-errors": "^1.3.0",
- "object-inspect": "^1.13.4",
- "side-channel-list": "^1.0.1",
- "side-channel-map": "^1.0.1",
- "side-channel-weakmap": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/side-channel-list": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz",
- "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==",
- "license": "MIT",
- "dependencies": {
- "es-errors": "^1.3.0",
- "object-inspect": "^1.13.4"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/side-channel-map": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
- "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.2",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.5",
- "object-inspect": "^1.13.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/side-channel-weakmap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
- "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.2",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.5",
- "object-inspect": "^1.13.3",
- "side-channel-map": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/siginfo": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
- "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-js": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
- "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "devOptional": true,
- "license": "MIT",
- "dependencies": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "node_modules/source-map-support/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "devOptional": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/space-separated-tokens": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
- "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/stackback": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
- "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/state-local": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz",
- "integrity": "sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==",
- "license": "MIT"
- },
- "node_modules/std-env": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz",
- "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
- "license": "MIT"
- },
- "node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/stringify-entities": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
- "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
- "license": "MIT",
- "dependencies": {
- "character-entities-html4": "^2.0.0",
- "character-entities-legacy": "^3.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/stringify-object": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
- "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==",
- "license": "BSD-2-Clause",
- "dependencies": {
- "get-own-enumerable-property-symbols": "^3.0.0",
- "is-obj": "^1.0.1",
- "is-regexp": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/style-mod": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.3.tgz",
- "integrity": "sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ==",
- "license": "MIT"
- },
- "node_modules/style-to-js": {
- "version": "1.1.21",
- "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz",
- "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==",
- "license": "MIT",
- "dependencies": {
- "style-to-object": "1.0.14"
- }
- },
- "node_modules/style-to-object": {
- "version": "1.0.14",
- "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz",
- "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==",
- "license": "MIT",
- "dependencies": {
- "inline-style-parser": "0.2.7"
- }
- },
- "node_modules/stylis": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz",
- "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==",
- "license": "MIT"
- },
- "node_modules/supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
- }
- },
- "node_modules/supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/tagged-tag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/tagged-tag/-/tagged-tag-1.0.0.tgz",
- "integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==",
- "license": "MIT",
- "engines": {
- "node": ">=20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/tailwindcss": {
- "version": "4.1.18",
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz",
- "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==",
- "license": "MIT"
- },
- "node_modules/tapable": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz",
- "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- }
- },
- "node_modules/terser": {
- "version": "5.44.1",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz",
- "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==",
- "devOptional": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@jridgewell/source-map": "^0.3.3",
- "acorn": "^8.15.0",
- "commander": "^2.20.0",
- "source-map-support": "~0.5.20"
- },
- "bin": {
- "terser": "bin/terser"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/tinybench": {
- "version": "2.9.0",
- "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz",
- "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/tinyexec": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz",
- "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/tinyglobby": {
- "version": "0.2.15",
- "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
- "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
- "license": "MIT",
- "dependencies": {
- "fdir": "^6.5.0",
- "picomatch": "^4.0.3"
- },
- "engines": {
- "node": ">=12.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/SuperchupuDev"
- }
- },
- "node_modules/tinyglobby/node_modules/picomatch": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
- "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/tinypool": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz",
- "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^18.0.0 || >=20.0.0"
- }
- },
- "node_modules/tinyrainbow": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz",
- "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/tinyspy": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz",
- "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/tippy.js": {
- "version": "6.3.7",
- "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz",
- "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==",
- "license": "MIT",
- "dependencies": {
- "@popperjs/core": "^2.9.0"
- }
- },
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "license": "MIT",
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/tree-kill": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
- "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "tree-kill": "cli.js"
- }
- },
- "node_modules/trim-lines": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
- "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/trough": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz",
- "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/ts-api-utils": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.3.0.tgz",
- "integrity": "sha512-6eg3Y9SF7SsAvGzRHQvvc1skDAhwI4YQ32ui1scxD1Ccr0G5qIIbUBT3pFTKX8kmWIQClHobtUdNuaBgwdfdWg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18.12"
- },
- "peerDependencies": {
- "typescript": ">=4.8.4"
- }
- },
- "node_modules/tslib": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
- "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
- "devOptional": true,
- "license": "0BSD"
- },
- "node_modules/type-check": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/type-fest": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.2.0.tgz",
- "integrity": "sha512-xxCJm+Bckc6kQBknN7i9fnP/xobQRsRQxR01CztFkp/h++yfVxUUcmMgfR2HttJx/dpWjS9ubVuyspJv24Q9DA==",
- "license": "(MIT OR CC0-1.0)",
- "dependencies": {
- "tagged-tag": "^1.0.0"
- },
- "engines": {
- "node": ">=20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/typescript": {
- "version": "5.7.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
- "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
- "devOptional": true,
- "license": "Apache-2.0",
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=14.17"
- }
- },
- "node_modules/typescript-eslint": {
- "version": "8.51.0",
- "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.51.0.tgz",
- "integrity": "sha512-jh8ZuM5oEh2PSdyQG9YAEM1TCGuWenLSuSUhf/irbVUNW9O5FhbFVONviN2TgMTBnUmyHv7E56rYnfLZK6TkiA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/eslint-plugin": "8.51.0",
- "@typescript-eslint/parser": "8.51.0",
- "@typescript-eslint/typescript-estree": "8.51.0",
- "@typescript-eslint/utils": "8.51.0"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^8.57.0 || ^9.0.0",
- "typescript": ">=4.8.4 <6.0.0"
- }
- },
- "node_modules/uc.micro": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
- "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==",
- "license": "MIT"
- },
- "node_modules/undici-types": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
- "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
- "devOptional": true,
- "license": "MIT"
- },
- "node_modules/unified": {
- "version": "11.0.5",
- "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz",
- "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "bail": "^2.0.0",
- "devlop": "^1.0.0",
- "extend": "^3.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-is": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz",
- "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-position": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
- "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-stringify-position": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
- "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-visit": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
- "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-is": "^6.0.0",
- "unist-util-visit-parents": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-visit-parents": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz",
- "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-is": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/update-browserslist-db": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
- "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "escalade": "^3.2.0",
- "picocolors": "^1.1.1"
- },
- "bin": {
- "update-browserslist-db": "cli.js"
- },
- "peerDependencies": {
- "browserslist": ">= 4.21.0"
- }
- },
- "node_modules/uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/use-sync-external-store": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz",
- "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==",
- "license": "MIT",
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/vfile": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
- "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "vfile-message": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/vfile-message": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz",
- "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-stringify-position": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/vite": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz",
- "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==",
- "license": "MIT",
- "dependencies": {
- "esbuild": "^0.25.0",
- "fdir": "^6.4.4",
- "picomatch": "^4.0.2",
- "postcss": "^8.5.3",
- "rollup": "^4.34.9",
- "tinyglobby": "^0.2.13"
- },
- "bin": {
- "vite": "bin/vite.js"
- },
- "engines": {
- "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
- },
- "funding": {
- "url": "https://github.com/vitejs/vite?sponsor=1"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.3"
- },
- "peerDependencies": {
- "@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": {
- "@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
- }
- }
- },
- "node_modules/vite-node": {
- "version": "2.1.9",
- "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.9.tgz",
- "integrity": "sha512-AM9aQ/IPrW/6ENLQg3AGY4K1N2TGZdR5e4gu/MmmR2xR3Ll1+dib+nook92g4TV3PXVyeyxdWwtaCAiUL0hMxA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cac": "^6.7.14",
- "debug": "^4.3.7",
- "es-module-lexer": "^1.5.4",
- "pathe": "^1.1.2",
- "vite": "^5.0.0"
- },
- "bin": {
- "vite-node": "vite-node.mjs"
- },
- "engines": {
- "node": "^18.0.0 || >=20.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/aix-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
- "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "aix"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/android-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
- "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/android-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
- "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/android-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
- "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/darwin-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
- "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/darwin-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
- "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/freebsd-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
- "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/freebsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
- "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/linux-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
- "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/linux-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
- "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/linux-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
- "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/linux-loong64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
- "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/linux-mips64el": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
- "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
- "cpu": [
- "mips64el"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/linux-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
- "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/linux-riscv64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
- "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/linux-s390x": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
- "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/linux-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
- "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/netbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
- "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/openbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
- "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/sunos-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
- "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/win32-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
- "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/win32-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
- "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/win32-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
- "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/esbuild": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
- "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=12"
- },
- "optionalDependencies": {
- "@esbuild/aix-ppc64": "0.21.5",
- "@esbuild/android-arm": "0.21.5",
- "@esbuild/android-arm64": "0.21.5",
- "@esbuild/android-x64": "0.21.5",
- "@esbuild/darwin-arm64": "0.21.5",
- "@esbuild/darwin-x64": "0.21.5",
- "@esbuild/freebsd-arm64": "0.21.5",
- "@esbuild/freebsd-x64": "0.21.5",
- "@esbuild/linux-arm": "0.21.5",
- "@esbuild/linux-arm64": "0.21.5",
- "@esbuild/linux-ia32": "0.21.5",
- "@esbuild/linux-loong64": "0.21.5",
- "@esbuild/linux-mips64el": "0.21.5",
- "@esbuild/linux-ppc64": "0.21.5",
- "@esbuild/linux-riscv64": "0.21.5",
- "@esbuild/linux-s390x": "0.21.5",
- "@esbuild/linux-x64": "0.21.5",
- "@esbuild/netbsd-x64": "0.21.5",
- "@esbuild/openbsd-x64": "0.21.5",
- "@esbuild/sunos-x64": "0.21.5",
- "@esbuild/win32-arm64": "0.21.5",
- "@esbuild/win32-ia32": "0.21.5",
- "@esbuild/win32-x64": "0.21.5"
- }
- },
- "node_modules/vite-node/node_modules/vite": {
- "version": "5.4.21",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz",
- "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "esbuild": "^0.21.3",
- "postcss": "^8.4.43",
- "rollup": "^4.20.0"
- },
- "bin": {
- "vite": "bin/vite.js"
- },
- "engines": {
- "node": "^18.0.0 || >=20.0.0"
- },
- "funding": {
- "url": "https://github.com/vitejs/vite?sponsor=1"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.3"
- },
- "peerDependencies": {
- "@types/node": "^18.0.0 || >=20.0.0",
- "less": "*",
- "lightningcss": "^1.21.0",
- "sass": "*",
- "sass-embedded": "*",
- "stylus": "*",
- "sugarss": "*",
- "terser": "^5.4.0"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- },
- "less": {
- "optional": true
- },
- "lightningcss": {
- "optional": true
- },
- "sass": {
- "optional": true
- },
- "sass-embedded": {
- "optional": true
- },
- "stylus": {
- "optional": true
- },
- "sugarss": {
- "optional": true
- },
- "terser": {
- "optional": true
- }
- }
- },
- "node_modules/vite/node_modules/picomatch": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
- "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/vitest": {
- "version": "2.1.9",
- "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.9.tgz",
- "integrity": "sha512-MSmPM9REYqDGBI8439mA4mWhV5sKmDlBKWIYbA3lRb2PTHACE0mgKwA8yQ2xq9vxDTuk4iPrECBAEW2aoFXY0Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@vitest/expect": "2.1.9",
- "@vitest/mocker": "2.1.9",
- "@vitest/pretty-format": "^2.1.9",
- "@vitest/runner": "2.1.9",
- "@vitest/snapshot": "2.1.9",
- "@vitest/spy": "2.1.9",
- "@vitest/utils": "2.1.9",
- "chai": "^5.1.2",
- "debug": "^4.3.7",
- "expect-type": "^1.1.0",
- "magic-string": "^0.30.12",
- "pathe": "^1.1.2",
- "std-env": "^3.8.0",
- "tinybench": "^2.9.0",
- "tinyexec": "^0.3.1",
- "tinypool": "^1.0.1",
- "tinyrainbow": "^1.2.0",
- "vite": "^5.0.0",
- "vite-node": "2.1.9",
- "why-is-node-running": "^2.3.0"
- },
- "bin": {
- "vitest": "vitest.mjs"
- },
- "engines": {
- "node": "^18.0.0 || >=20.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
- },
- "peerDependencies": {
- "@edge-runtime/vm": "*",
- "@types/node": "^18.0.0 || >=20.0.0",
- "@vitest/browser": "2.1.9",
- "@vitest/ui": "2.1.9",
- "happy-dom": "*",
- "jsdom": "*"
- },
- "peerDependenciesMeta": {
- "@edge-runtime/vm": {
- "optional": true
- },
- "@types/node": {
- "optional": true
- },
- "@vitest/browser": {
- "optional": true
- },
- "@vitest/ui": {
- "optional": true
- },
- "happy-dom": {
- "optional": true
- },
- "jsdom": {
- "optional": true
- }
- }
- },
- "node_modules/vitest/node_modules/@esbuild/aix-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
- "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "aix"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/android-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
- "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/android-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
- "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/android-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
- "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/darwin-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
- "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/darwin-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
- "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/freebsd-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
- "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/freebsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
- "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/linux-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
- "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/linux-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
- "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/linux-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
- "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/linux-loong64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
- "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/linux-mips64el": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
- "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
- "cpu": [
- "mips64el"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/linux-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
- "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/linux-riscv64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
- "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/linux-s390x": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
- "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/linux-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
- "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/netbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
- "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/openbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
- "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/sunos-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
- "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/win32-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
- "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/win32-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
- "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/win32-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
- "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/esbuild": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
- "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
- "dev": true,
- "hasInstallScript": true,
+ "node_modules/use-sync-external-store": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz",
+ "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==",
"license": "MIT",
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=12"
- },
- "optionalDependencies": {
- "@esbuild/aix-ppc64": "0.21.5",
- "@esbuild/android-arm": "0.21.5",
- "@esbuild/android-arm64": "0.21.5",
- "@esbuild/android-x64": "0.21.5",
- "@esbuild/darwin-arm64": "0.21.5",
- "@esbuild/darwin-x64": "0.21.5",
- "@esbuild/freebsd-arm64": "0.21.5",
- "@esbuild/freebsd-x64": "0.21.5",
- "@esbuild/linux-arm": "0.21.5",
- "@esbuild/linux-arm64": "0.21.5",
- "@esbuild/linux-ia32": "0.21.5",
- "@esbuild/linux-loong64": "0.21.5",
- "@esbuild/linux-mips64el": "0.21.5",
- "@esbuild/linux-ppc64": "0.21.5",
- "@esbuild/linux-riscv64": "0.21.5",
- "@esbuild/linux-s390x": "0.21.5",
- "@esbuild/linux-x64": "0.21.5",
- "@esbuild/netbsd-x64": "0.21.5",
- "@esbuild/openbsd-x64": "0.21.5",
- "@esbuild/sunos-x64": "0.21.5",
- "@esbuild/win32-arm64": "0.21.5",
- "@esbuild/win32-ia32": "0.21.5",
- "@esbuild/win32-x64": "0.21.5"
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
}
},
- "node_modules/vitest/node_modules/vite": {
+ "node_modules/vite": {
"version": "5.4.21",
"resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz",
"integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==",
@@ -9645,115 +3070,32 @@
"stylus": "*",
"sugarss": "*",
"terser": "^5.4.0"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- },
- "less": {
- "optional": true
- },
- "lightningcss": {
- "optional": true
- },
- "sass": {
- "optional": true
- },
- "sass-embedded": {
- "optional": true
- },
- "stylus": {
- "optional": true
- },
- "sugarss": {
- "optional": true
- },
- "terser": {
- "optional": true
- }
- }
- },
- "node_modules/w3c-keyname": {
- "version": "2.2.8",
- "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz",
- "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==",
- "license": "MIT"
- },
- "node_modules/which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/why-is-node-running": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz",
- "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "siginfo": "^2.0.0",
- "stackback": "0.0.2"
- },
- "bin": {
- "why-is-node-running": "cli.js"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/word-wrap": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
- "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "license": "ISC"
- },
- "node_modules/y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=10"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ }
}
},
"node_modules/yallist": {
@@ -9763,57 +3105,6 @@
"dev": true,
"license": "ISC"
},
- "node_modules/yaml": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
- "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
- "license": "ISC",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/yargs": {
- "version": "17.7.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
- "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/yargs-parser": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/zustand": {
"version": "4.5.7",
"resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.7.tgz",
@@ -9842,96 +3133,11 @@
}
}
},
- "node_modules/zwitch": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
- "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
"packages/oc-converters": {
"name": "@opencollection/converters",
"version": "0.0.2",
"license": "MIT"
},
- "packages/oc-docs": {
- "name": "@opencollection/docs",
- "version": "0.0.1",
- "license": "MIT",
- "dependencies": {
- "@emotion/css": "^11.13.5",
- "@emotion/react": "^11.14.0",
- "@emotion/styled": "^11.14.1",
- "@faker-js/faker": "^9.7.0",
- "@mintlify/httpsnippet": "^1.0.10",
- "@monaco-editor/react": "^4.7.0",
- "@opencollection/types": "0.12.0",
- "@prantlf/jsonlint": "^16.0.0",
- "@reduxjs/toolkit": "^2.10.1",
- "@tabler/icons": "^1.46.0",
- "@tailwindcss/vite": "^4.0.9",
- "@tippyjs/react": "^4.2.6",
- "@types/js-yaml": "^4.0.9",
- "@types/markdown-it": "^14.1.2",
- "@types/prismjs": "^1.26.5",
- "ajv": "^8.12.0",
- "codemirror": "^6.0.2",
- "fuse.js": "^7.5.0",
- "js-yaml": "^4.1.0",
- "jshint": "^2.13.6",
- "markdown-it": "^14.1.0",
- "monaco-editor": "^0.53.0",
- "nanoid": "~3.3.11",
- "prismjs": "^1.29.0",
- "quickjs-emscripten": "~0.31.0",
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react-markdown": "^10.0.0",
- "react-redux": "^9.2.0",
- "react-router-dom": "^7.3.0",
- "remark-gfm": "^4.0.1",
- "strip-json-comments": "^3.1.1"
- },
- "devDependencies": {
- "@emotion/babel-plugin": "~11.13.5",
- "@eslint/js": "^9.21.0",
- "@playwright/test": "^1.52.0",
- "@tailwindcss/postcss": "^4.1.13",
- "@tailwindcss/typography": "^0.5.10",
- "@types/express": "^4.17.21",
- "@types/lodash-es": "~4.17.12",
- "@types/prismjs": "^1.26.3",
- "@types/react": "^19.0.10",
- "@types/react-dom": "^19.0.4",
- "@types/uuid": "^10.0.0",
- "@vitejs/plugin-react": "^4.3.4",
- "autoprefixer": "^10.4.20",
- "chai": "~5.3.3",
- "concurrently": "^9.1.2",
- "eslint": "^9.21.0",
- "eslint-plugin-react-hooks": "^5.1.0",
- "eslint-plugin-react-refresh": "^0.4.19",
- "globals": "^15.15.0",
- "lodash-es": "~4.17.21",
- "node-html-parser": "^8.0.4",
- "postcss": "^8.5.3",
- "rimraf": "^6.0.1",
- "rollup": "^4.50.2",
- "tailwindcss": "^4.0.9",
- "terser": "^5.44.0",
- "typescript": "~5.7.2",
- "typescript-eslint": "^8.24.1",
- "vite": "^6.2.0",
- "vitest": "^2.1.8"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
- }
- },
"packages/oc-schema": {
"name": "@opencollection/schema",
"version": "0.12.0",
@@ -9956,10 +3162,25 @@
"vite": "^5.1.0"
}
},
- "packages/oc-schema-explorer/node_modules/@esbuild/aix-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
- "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
+ "packages/oc-spec-site": {
+ "version": "0.0.0",
+ "dependencies": {
+ "js-yaml": "^4.1.0",
+ "react": "^19.0.0",
+ "react-dom": "^19.0.0"
+ },
+ "devDependencies": {
+ "@vitejs/plugin-react": "^4.3.4",
+ "autoprefixer": "^10.4.21",
+ "postcss": "^8.5.6",
+ "tailwindcss": "^3.4.17",
+ "vite": "^6.2.0"
+ }
+ },
+ "packages/oc-spec-site/node_modules/@esbuild/aix-ppc64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz",
+ "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==",
"cpu": [
"ppc64"
],
@@ -9970,13 +3191,13 @@
"aix"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
- "packages/oc-schema-explorer/node_modules/@esbuild/android-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
- "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
+ "packages/oc-spec-site/node_modules/@esbuild/android-arm": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz",
+ "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==",
"cpu": [
"arm"
],
@@ -9987,13 +3208,13 @@
"android"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
- "packages/oc-schema-explorer/node_modules/@esbuild/android-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
- "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
+ "packages/oc-spec-site/node_modules/@esbuild/android-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz",
+ "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==",
"cpu": [
"arm64"
],
@@ -10004,13 +3225,13 @@
"android"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
- "packages/oc-schema-explorer/node_modules/@esbuild/android-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
- "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
+ "packages/oc-spec-site/node_modules/@esbuild/android-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz",
+ "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==",
"cpu": [
"x64"
],
@@ -10021,11 +3242,13 @@
"android"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
- "packages/oc-schema-explorer/node_modules/@esbuild/darwin-arm64": {
- "version": "0.21.5",
+ "packages/oc-spec-site/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz",
+ "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==",
"cpu": [
"arm64"
],
@@ -10036,13 +3259,13 @@
"darwin"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
- "packages/oc-schema-explorer/node_modules/@esbuild/darwin-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
- "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
+ "packages/oc-spec-site/node_modules/@esbuild/darwin-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz",
+ "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==",
"cpu": [
"x64"
],
@@ -10053,13 +3276,13 @@
"darwin"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
- "packages/oc-schema-explorer/node_modules/@esbuild/freebsd-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
- "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
+ "packages/oc-spec-site/node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz",
+ "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==",
"cpu": [
"arm64"
],
@@ -10070,13 +3293,13 @@
"freebsd"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
- "packages/oc-schema-explorer/node_modules/@esbuild/freebsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
- "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
+ "packages/oc-spec-site/node_modules/@esbuild/freebsd-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz",
+ "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==",
"cpu": [
"x64"
],
@@ -10087,13 +3310,13 @@
"freebsd"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
- "packages/oc-schema-explorer/node_modules/@esbuild/linux-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
- "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
+ "packages/oc-spec-site/node_modules/@esbuild/linux-arm": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz",
+ "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==",
"cpu": [
"arm"
],
@@ -10104,13 +3327,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
- "packages/oc-schema-explorer/node_modules/@esbuild/linux-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
- "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
+ "packages/oc-spec-site/node_modules/@esbuild/linux-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz",
+ "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==",
"cpu": [
"arm64"
],
@@ -10121,13 +3344,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
- "packages/oc-schema-explorer/node_modules/@esbuild/linux-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
- "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
+ "packages/oc-spec-site/node_modules/@esbuild/linux-ia32": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz",
+ "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==",
"cpu": [
"ia32"
],
@@ -10138,13 +3361,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
- "packages/oc-schema-explorer/node_modules/@esbuild/linux-loong64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
- "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
+ "packages/oc-spec-site/node_modules/@esbuild/linux-loong64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz",
+ "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==",
"cpu": [
"loong64"
],
@@ -10155,13 +3378,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
- "packages/oc-schema-explorer/node_modules/@esbuild/linux-mips64el": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
- "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
+ "packages/oc-spec-site/node_modules/@esbuild/linux-mips64el": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz",
+ "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==",
"cpu": [
"mips64el"
],
@@ -10172,13 +3395,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
- "packages/oc-schema-explorer/node_modules/@esbuild/linux-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
- "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
+ "packages/oc-spec-site/node_modules/@esbuild/linux-ppc64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz",
+ "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==",
"cpu": [
"ppc64"
],
@@ -10189,13 +3412,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
- "packages/oc-schema-explorer/node_modules/@esbuild/linux-riscv64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
- "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
+ "packages/oc-spec-site/node_modules/@esbuild/linux-riscv64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz",
+ "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==",
"cpu": [
"riscv64"
],
@@ -10206,13 +3429,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
- "packages/oc-schema-explorer/node_modules/@esbuild/linux-s390x": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
- "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
+ "packages/oc-spec-site/node_modules/@esbuild/linux-s390x": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz",
+ "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==",
"cpu": [
"s390x"
],
@@ -10223,13 +3446,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
- "packages/oc-schema-explorer/node_modules/@esbuild/linux-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
- "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
+ "packages/oc-spec-site/node_modules/@esbuild/linux-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz",
+ "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==",
"cpu": [
"x64"
],
@@ -10240,13 +3463,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
- "packages/oc-schema-explorer/node_modules/@esbuild/netbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
- "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
+ "packages/oc-spec-site/node_modules/@esbuild/netbsd-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz",
+ "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==",
"cpu": [
"x64"
],
@@ -10257,13 +3480,13 @@
"netbsd"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
- "packages/oc-schema-explorer/node_modules/@esbuild/openbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
- "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
+ "packages/oc-spec-site/node_modules/@esbuild/openbsd-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz",
+ "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==",
"cpu": [
"x64"
],
@@ -10274,13 +3497,13 @@
"openbsd"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
- "packages/oc-schema-explorer/node_modules/@esbuild/sunos-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
- "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
+ "packages/oc-spec-site/node_modules/@esbuild/sunos-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz",
+ "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==",
"cpu": [
"x64"
],
@@ -10291,13 +3514,13 @@
"sunos"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
- "packages/oc-schema-explorer/node_modules/@esbuild/win32-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
- "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
+ "packages/oc-spec-site/node_modules/@esbuild/win32-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz",
+ "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==",
"cpu": [
"arm64"
],
@@ -10308,13 +3531,13 @@
"win32"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
- },
- "packages/oc-schema-explorer/node_modules/@esbuild/win32-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
- "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
+ },
+ "packages/oc-spec-site/node_modules/@esbuild/win32-ia32": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz",
+ "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==",
"cpu": [
"ia32"
],
@@ -10325,13 +3548,13 @@
"win32"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
- "packages/oc-schema-explorer/node_modules/@esbuild/win32-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
- "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
+ "packages/oc-spec-site/node_modules/@esbuild/win32-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz",
+ "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==",
"cpu": [
"x64"
],
@@ -10342,121 +3565,7 @@
"win32"
],
"engines": {
- "node": ">=12"
- }
- },
- "packages/oc-schema-explorer/node_modules/esbuild": {
- "version": "0.21.5",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=12"
- },
- "optionalDependencies": {
- "@esbuild/aix-ppc64": "0.21.5",
- "@esbuild/android-arm": "0.21.5",
- "@esbuild/android-arm64": "0.21.5",
- "@esbuild/android-x64": "0.21.5",
- "@esbuild/darwin-arm64": "0.21.5",
- "@esbuild/darwin-x64": "0.21.5",
- "@esbuild/freebsd-arm64": "0.21.5",
- "@esbuild/freebsd-x64": "0.21.5",
- "@esbuild/linux-arm": "0.21.5",
- "@esbuild/linux-arm64": "0.21.5",
- "@esbuild/linux-ia32": "0.21.5",
- "@esbuild/linux-loong64": "0.21.5",
- "@esbuild/linux-mips64el": "0.21.5",
- "@esbuild/linux-ppc64": "0.21.5",
- "@esbuild/linux-riscv64": "0.21.5",
- "@esbuild/linux-s390x": "0.21.5",
- "@esbuild/linux-x64": "0.21.5",
- "@esbuild/netbsd-x64": "0.21.5",
- "@esbuild/openbsd-x64": "0.21.5",
- "@esbuild/sunos-x64": "0.21.5",
- "@esbuild/win32-arm64": "0.21.5",
- "@esbuild/win32-ia32": "0.21.5",
- "@esbuild/win32-x64": "0.21.5"
- }
- },
- "packages/oc-schema-explorer/node_modules/monaco-editor": {
- "version": "0.47.0",
- "license": "MIT"
- },
- "packages/oc-schema-explorer/node_modules/vite": {
- "version": "5.4.20",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "esbuild": "^0.21.3",
- "postcss": "^8.4.43",
- "rollup": "^4.20.0"
- },
- "bin": {
- "vite": "bin/vite.js"
- },
- "engines": {
- "node": "^18.0.0 || >=20.0.0"
- },
- "funding": {
- "url": "https://github.com/vitejs/vite?sponsor=1"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.3"
- },
- "peerDependencies": {
- "@types/node": "^18.0.0 || >=20.0.0",
- "less": "*",
- "lightningcss": "^1.21.0",
- "sass": "*",
- "sass-embedded": "*",
- "stylus": "*",
- "sugarss": "*",
- "terser": "^5.4.0"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- },
- "less": {
- "optional": true
- },
- "lightningcss": {
- "optional": true
- },
- "sass": {
- "optional": true
- },
- "sass-embedded": {
- "optional": true
- },
- "stylus": {
- "optional": true
- },
- "sugarss": {
- "optional": true
- },
- "terser": {
- "optional": true
- }
- }
- },
- "packages/oc-spec-site": {
- "version": "0.0.0",
- "dependencies": {
- "js-yaml": "^4.1.0",
- "react": "^19.0.0",
- "react-dom": "^19.0.0"
- },
- "devDependencies": {
- "@vitejs/plugin-react": "^4.3.4",
- "autoprefixer": "^10.4.21",
- "postcss": "^8.5.6",
- "tailwindcss": "^3.4.17",
- "vite": "^6.2.0"
+ "node": ">=18"
}
},
"packages/oc-spec-site/node_modules/@isaacs/cliui": {
@@ -10523,6 +3632,19 @@
"node": ">= 8"
}
},
+ "packages/oc-spec-site/node_modules/anymatch/node_modules/picomatch": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"packages/oc-spec-site/node_modules/arg": {
"version": "5.0.2",
"dev": true,
@@ -10617,6 +3739,48 @@
"dev": true,
"license": "MIT"
},
+ "packages/oc-spec-site/node_modules/esbuild": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz",
+ "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.25.12",
+ "@esbuild/android-arm": "0.25.12",
+ "@esbuild/android-arm64": "0.25.12",
+ "@esbuild/android-x64": "0.25.12",
+ "@esbuild/darwin-arm64": "0.25.12",
+ "@esbuild/darwin-x64": "0.25.12",
+ "@esbuild/freebsd-arm64": "0.25.12",
+ "@esbuild/freebsd-x64": "0.25.12",
+ "@esbuild/linux-arm": "0.25.12",
+ "@esbuild/linux-arm64": "0.25.12",
+ "@esbuild/linux-ia32": "0.25.12",
+ "@esbuild/linux-loong64": "0.25.12",
+ "@esbuild/linux-mips64el": "0.25.12",
+ "@esbuild/linux-ppc64": "0.25.12",
+ "@esbuild/linux-riscv64": "0.25.12",
+ "@esbuild/linux-s390x": "0.25.12",
+ "@esbuild/linux-x64": "0.25.12",
+ "@esbuild/netbsd-arm64": "0.25.12",
+ "@esbuild/netbsd-x64": "0.25.12",
+ "@esbuild/openbsd-arm64": "0.25.12",
+ "@esbuild/openbsd-x64": "0.25.12",
+ "@esbuild/openharmony-arm64": "0.25.12",
+ "@esbuild/sunos-x64": "0.25.12",
+ "@esbuild/win32-arm64": "0.25.12",
+ "@esbuild/win32-ia32": "0.25.12",
+ "@esbuild/win32-x64": "0.25.12"
+ }
+ },
"packages/oc-spec-site/node_modules/fast-glob": {
"version": "3.3.3",
"dev": true,
@@ -10951,6 +4115,19 @@
"node": ">=8.10.0"
}
},
+ "packages/oc-spec-site/node_modules/readdirp/node_modules/picomatch": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"packages/oc-spec-site/node_modules/scheduler": {
"version": "0.27.0",
"license": "MIT"
@@ -11135,6 +4312,81 @@
"dev": true,
"license": "Apache-2.0"
},
+ "packages/oc-spec-site/node_modules/vite": {
+ "version": "6.4.3",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.3.tgz",
+ "integrity": "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "^0.25.0",
+ "fdir": "^6.4.4",
+ "picomatch": "^4.0.2",
+ "postcss": "^8.5.3",
+ "rollup": "^4.34.9",
+ "tinyglobby": "^0.2.13"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ },
+ "peerDependencies": {
+ "@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": {
+ "@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
+ }
+ }
+ },
"packages/oc-spec-site/node_modules/wrap-ansi": {
"version": "8.1.0",
"dev": true,
diff --git a/package.json b/package.json
index 2b7ab347..770d7257 100644
--- a/package.json
+++ b/package.json
@@ -3,7 +3,6 @@
"private": true,
"workspaces": [
"packages/oc-converters",
- "packages/oc-docs",
"packages/oc-schema",
"packages/oc-schema-explorer",
"packages/oc-spec",
diff --git a/packages/oc-docs/.gitignore b/packages/oc-docs/.gitignore
deleted file mode 100644
index 66582f2c..00000000
--- a/packages/oc-docs/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-src/scripting/sandbox/quickjs/bundled-libraries.iife.js
-
-# Playwright
-playwright-report/
-test-results/
\ No newline at end of file
diff --git a/packages/oc-docs/e2e/README.md b/packages/oc-docs/e2e/README.md
deleted file mode 100644
index 24990aff..00000000
--- a/packages/oc-docs/e2e/README.md
+++ /dev/null
@@ -1,143 +0,0 @@
-# End-to-end tests
-
-Playwright tests for the docs app. They open the app in a real browser and check that
-what a person sees on the page is correct.
-
-Two rules shape every test here:
-
-1. **Tests read like documentation.** The title says, in plain English, what the page
- does; the body confirms it.
-2. **Elements are located by `data-testid`.** The app sets a stable test id on each
- meaningful element (via the components' `testId` props); tests target those, never
- styling classes. Rendered-Markdown internals — which have no test id — are matched
- by role/tag within their test-id'd container.
-
-## What's tested
-
-| Area | Spec |
-|------|------|
-| Collection Overview — version/name, stat counts, environments, configuration | `tests/overview/overview.spec.ts` |
-| Overview documentation — rendered Markdown | `tests/overview/overview-documentation.spec.ts` |
-| Request page — details (breadcrumb, title, method/URL, description, params, auth, code snippet) | `tests/request/request-details.spec.ts` |
-| Request page — Examples | `tests/request/request-examples.spec.ts` |
-| Request page — Execution Context (scripts, variables, asserts, tests) | `tests/request/request-execution-context.spec.ts` |
-| Script page — title, breadcrumb, source code | `tests/script/script.spec.ts` |
-| Light/dark theme switch | `tests/theming/theme-toggle.spec.ts` |
-
-## Running the tests
-
-```sh
-npm run test:e2e # run headless
-npm run test:e2e:ui # run in Playwright's interactive UI
-```
-
-Playwright starts the dev server for you (see `webServer` in `playwright.config.ts`).
-
-## Folder layout
-
-```
-e2e/
-├── tests/ # the tests, grouped by feature
-│ ├── overview/ # Collection Overview page
-│ │ ├── overview.spec.ts
-│ │ └── overview-documentation.spec.ts
-│ ├── request/ # Request page
-│ │ ├── request-details.spec.ts
-│ │ ├── request-examples.spec.ts
-│ │ └── request-execution-context.spec.ts
-│ ├── script/ # Script page
-│ │ └── script.spec.ts
-│ └── theming/ # light/dark theme switch
-│ └── theme-toggle.spec.ts
-├── pages/ # one "page object" per screen
-│ ├── base.page.ts # shared navigation (goto, reload)
-│ ├── overview.page.ts # OverviewPage — composes its overview/ sections
-│ ├── request.page.ts # RequestPage — composes its request/ sections
-│ └── script.page.ts # ScriptPage — breadcrumb, title, source code
-├── components/ # reusable pieces
-│ ├── base.component.ts # shared base — every component has a `root`
-│ ├── markdown.component.ts # any block of rendered Markdown
-│ ├── secret-value.component.ts # a masked value with a reveal toggle
-│ ├── theme-toggle.component.ts # the light/dark switch
-│ ├── sidebar.component.ts # the navigation tree (open a request/script)
-│ ├── breadcrumb.component.ts # the "folder › folder › page" trail
-│ ├── overview/ # sections specific to the Overview page
-│ │ ├── header-section.component.ts
-│ │ ├── stats-section.component.ts
-│ │ ├── environments-section.component.ts
-│ │ └── configuration-section.component.ts
-│ ├── request/ # sections specific to the Request page
-│ │ ├── url-bar.component.ts
-│ │ ├── code-snippet.component.ts
-│ │ ├── examples.component.ts
-│ │ └── execution-context.component.ts
-│ └── script/ # sections specific to the Script page
-│ └── script-content.component.ts
-├── playwright/ # the test harness
-│ ├── pages.fixture.ts # defines the fixtures
-│ └── index.ts # merges them; the single import for specs
-├── config/app.config.ts # base URL + how to start the app
-└── tsconfig.json # TypeScript settings for this folder
-```
-
-The Request and Script pages have no URL of their own, so their page objects reach
-them by navigating the **sidebar** — `requestPage.open(['billing', 'customers', 'Get
-All Customers'])` clicks down the folder trail and waits for the page to render. The
-reusable `sidebar` and `breadcrumb` components are shared by both pages.
-
-## The three building blocks
-
-**Page objects** (`pages/`) describe a whole screen. They own navigation (`goto`) and
-compose the components a test cares about — the `OverviewPage`, for instance, wires up
-the header, stats, environments and configuration sections.
-
-**Components** (`components/`) are the reusable building blocks. Common controls used
-across pages — the Markdown renderer, the theme switch — live at the top level; point
-one at the element it lives in (its `root`) and it works anywhere that UI appears.
-**Sections that belong to a single page live in a subfolder named after it** — the
-Overview's header, stats, environments and configuration sections are in
-`components/overview/`. (Its documentation section is just the common `MarkdownComponent`
-scoped to the `overview-markdown-documentation` container.)
-
-**Fixtures** (`playwright/`) hand a test ready-made page objects and common components:
-
-```ts
-test('…', async ({ overviewPage, themeToggle }) => { … });
-```
-
-`pages.fixture.ts` defines them; `index.ts` combines them with Playwright's `mergeTests`
-and is the single place specs import from. To add a page, drop a new `*.fixture.ts` in
-this folder and merge it in `index.ts`.
-
-## Writing a test
-
-Import `test` and `expect` from the `playwright` folder, then pull the page objects and
-components you need off the test callback — no `new`, no setup boilerplate:
-
-```ts
-import { test, expect } from '../../playwright';
-
-test.describe('Collection Overview', () => {
- test.beforeEach(async ({ overviewPage }) => {
- await overviewPage.goto();
- });
-
- test('shows the collection name in the header', async ({ overviewPage }) => {
- await expect(overviewPage.header.collectionName).toHaveText('Bruno Testbench');
- });
-});
-```
-
-Keep the `expect`s in the test. Page objects and sections only expose elements and
-actions — the test decides what to check.
-
-## Imports
-
-Every import is a relative path — there are no path aliases. Specs import from the
-`playwright` barrel; everything else points straight at the file it needs:
-
-```ts
-import { test, expect } from '../../playwright'; // test → harness
-import { OverviewPage } from '../pages/overview.page'; // harness → page
-import { MarkdownComponent } from '../components/markdown.component'; // page → component
-```
diff --git a/packages/oc-docs/e2e/components/base.component.ts b/packages/oc-docs/e2e/components/base.component.ts
deleted file mode 100644
index fabf37cc..00000000
--- a/packages/oc-docs/e2e/components/base.component.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import type { Page, Locator } from '@playwright/test';
-
-export abstract class BaseComponent {
- readonly root: Locator;
- private dragY = 0;
-
- constructor(protected readonly page: Page, root?: Locator) {
- this.root = root ?? page.locator(':root');
- }
-
- /** Press the pointer on a resize handle; the drag y is kept for later moves. */
- protected async grabHandle(handle: Locator): Promise {
- const box = await handle.boundingBox();
- this.dragY = (box?.y ?? 0) + (box?.height ?? 0) / 2;
- await handle.hover();
- await this.page.mouse.down();
- }
-
- /** Move the held pointer to an absolute x (keeps the grabbed y). */
- async movePointerToX(x: number): Promise {
- await this.page.mouse.move(x, this.dragY, { steps: 10 });
- }
-
- async releasePointer(): Promise {
- await this.page.mouse.up();
- }
-}
diff --git a/packages/oc-docs/e2e/components/breadcrumb.component.ts b/packages/oc-docs/e2e/components/breadcrumb.component.ts
deleted file mode 100644
index 8eaa348a..00000000
--- a/packages/oc-docs/e2e/components/breadcrumb.component.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import type { Locator, Page } from '@playwright/test';
-import { BaseComponent } from './base.component';
-
-export class BreadcrumbComponent extends BaseComponent {
- readonly current: Locator;
- readonly segments: Locator;
-
- constructor(page: Page, testId: string) {
- super(page, page.getByTestId(testId));
-
- this.current = page.getByTestId(`${testId}-current`);
- this.segments = page.getByTestId(`${testId}-segment`);
- }
-
- segment(name: string): Locator {
- return this.segments.filter({ hasText: name });
- }
-}
diff --git a/packages/oc-docs/e2e/components/code-editor/code-editor.component.ts b/packages/oc-docs/e2e/components/code-editor/code-editor.component.ts
deleted file mode 100644
index f2bb3c53..00000000
--- a/packages/oc-docs/e2e/components/code-editor/code-editor.component.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import type { Locator, Page } from '@playwright/test';
-import { BaseComponent } from '../base.component';
-
-/**
- * A Monaco-backed code editor (see `src/ui/CodeEditor`). Only the container carries a test id;
- * Monaco renders its own DOM, so the editor surface, the text region we click to focus, and the
- * (portaled) autocomplete popup are matched by Monaco's stable class names and kept out of specs.
- */
-export class CodeEditorComponent extends BaseComponent {
- readonly copyButton: Locator;
- readonly suggestions: Locator;
- private readonly surface: Locator;
- private readonly lines: Locator;
-
- constructor(page: Page, testId: string) {
- super(page, page.getByTestId(testId));
- this.copyButton = this.root.getByTestId(`${testId}-copy`);
- this.surface = this.root.locator('.monaco-editor');
- this.lines = this.root.locator('.view-lines');
- this.suggestions = page.locator('.suggest-widget.visible');
- }
-
- async focus(): Promise {
- await this.surface.waitFor({ state: 'visible', timeout: 20000 });
- await this.lines.click();
- }
-}
diff --git a/packages/oc-docs/e2e/components/collection-settings/collection-settings.component.ts b/packages/oc-docs/e2e/components/collection-settings/collection-settings.component.ts
deleted file mode 100644
index 43a5a969..00000000
--- a/packages/oc-docs/e2e/components/collection-settings/collection-settings.component.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import type { Locator } from '@playwright/test';
-import { BaseComponent } from '../base.component';
-
-export class CollectionSettingsComponent extends BaseComponent {
- readonly view = this.page.getByTestId('playground-view');
- readonly collectionNode = this.page.getByTestId('sidebar-collection-root');
- readonly overviewMarkdown = this.view.getByTestId('overview-markdown-documentation');
- readonly overviewEmpty = this.view.getByTestId('overview-empty');
- readonly bulkEditToggle = this.view.getByTestId('bulk-edit-toggle');
- readonly varsTable = this.view.getByTestId('variables-pre-request');
- readonly authMode = this.view.getByTestId('auth-mode-select');
-
- tab(id: string): Locator {
- return this.view.getByTestId(`collection-settings-tabs-tab-${id}`);
- }
-
- scriptTab(id: string): Locator {
- return this.view.getByTestId(`scripts-tabs-tab-${id}`);
- }
-
- authField(name: string): Locator {
- return this.view.getByTestId(`auth-${name}`);
- }
-
- /** An option inside the (opened) auth-mode dropdown. */
- authModeOption(value: string): Locator {
- return this.page.getByTestId(`auth-mode-select-${value}`);
- }
-
- async open(): Promise {
- await this.collectionNode.click();
- }
-
- async openTab(id: string): Promise {
- await this.tab(id).click();
- }
-
- async selectAuthMode(value: string): Promise {
- await this.authMode.click();
- await this.page.getByTestId(`auth-mode-select-${value}`).click();
- }
-}
diff --git a/packages/oc-docs/e2e/components/environments/env-editor.component.ts b/packages/oc-docs/e2e/components/environments/env-editor.component.ts
deleted file mode 100644
index 25d4342b..00000000
--- a/packages/oc-docs/e2e/components/environments/env-editor.component.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import type { Locator } from '@playwright/test';
-import { BaseComponent } from '../base.component';
-
-export class EnvEditorComponent extends BaseComponent {
- readonly cards = this.page.getByTestId('env-var-cards');
- readonly cardItems = this.cards.locator('.env-card');
- readonly nameInputs = this.cards.getByPlaceholder('Name');
- readonly valueInputs = this.cards.getByPlaceholder('Value');
-
- /** The per-variable enable/disable checkbox, addressed by the variable name via its aria-label. */
- enableToggle(name: string): Locator {
- return this.cards.getByRole('checkbox', { name: `Enable ${name}` });
- }
-
- /** The card that owns the named variable, matched via its enable checkbox. */
- cardFor(name: string): Locator {
- return this.cardItems.filter({ has: this.page.getByRole('checkbox', { name: `Enable ${name}` }) });
- }
-}
diff --git a/packages/oc-docs/e2e/components/environments/environment-table.component.ts b/packages/oc-docs/e2e/components/environments/environment-table.component.ts
deleted file mode 100644
index feb51503..00000000
--- a/packages/oc-docs/e2e/components/environments/environment-table.component.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import type { Locator } from '@playwright/test';
-import { BaseComponent } from '../base.component';
-
-export class EnvironmentTableComponent extends BaseComponent {
- readonly root = this.page.getByTestId('environment-table');
- readonly variableRows = this.page.getByTestId('environment-variable-row');
- readonly secretVariableRows = this.page.getByTestId('environment-secret-variable-row');
- readonly externalSecretRows = this.page.getByTestId('environment-external-secret-row');
- readonly variableDescriptions = this.page.getByTestId('environment-variable-row-description');
- readonly secretVariableDescriptions = this.page.getByTestId('environment-secret-variable-row-description');
-
- columnHeader(key: string): Locator {
- return this.root.getByTestId(`table-header-${key}`);
- }
-
- variableRow(name: string): Locator {
- return this.variableRows.filter({ hasText: name });
- }
-
- secretVariableRow(name: string): Locator {
- return this.secretVariableRows.filter({ hasText: name });
- }
-
- externalSecretRow(name: string): Locator {
- return this.externalSecretRows.filter({ hasText: name });
- }
-
- valueOf(name: string): Locator {
- return this.variableRow(name).getByTestId('table-cell-value');
- }
-
- dataTypeOf(name: string): Locator {
- return this.variableRow(name).getByTestId('table-cell-type');
- }
-
- secretValueOf(name: string): Locator {
- return this.secretVariableRow(name).getByTestId('table-cell-value');
- }
-
- secretRevealToggleOf(name: string): Locator {
- return this.secretValueOf(name).getByTestId('environment-secret-value-toggle');
- }
-}
diff --git a/packages/oc-docs/e2e/components/folder/folder-configuration.component.ts b/packages/oc-docs/e2e/components/folder/folder-configuration.component.ts
deleted file mode 100644
index ed8c0199..00000000
--- a/packages/oc-docs/e2e/components/folder/folder-configuration.component.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { BaseComponent } from '../base.component';
-
-export class FolderConfigurationComponent extends BaseComponent {
- readonly root = this.page.getByTestId('folder-config');
- readonly headers = this.page.getByTestId('folder-config-headers');
- readonly auth = this.page.getByTestId('folder-config-auth');
- readonly script = this.page.getByTestId('folder-config-script');
- readonly vars = this.page.getByTestId('folder-config-vars');
- readonly tests = this.page.getByTestId('folder-config-tests');
-}
diff --git a/packages/oc-docs/e2e/components/key-value-table/key-value-table.component.ts b/packages/oc-docs/e2e/components/key-value-table/key-value-table.component.ts
deleted file mode 100644
index ab45e001..00000000
--- a/packages/oc-docs/e2e/components/key-value-table/key-value-table.component.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import type { Locator, Page } from '@playwright/test';
-import { BaseComponent } from '../base.component';
-
-/** A KeyValueTable instance (headers, params, variables …). Pass the table's testId to target a specific one. */
-export class KeyValueTableComponent extends BaseComponent {
- readonly container: Locator;
- readonly table: Locator;
- readonly nameInputs: Locator;
- readonly valueInputs: Locator;
- readonly cellErrors: Locator;
- readonly autocomplete: Locator;
-
- constructor(page: Page, testId = 'key-value-table') {
- super(page, page.getByTestId(testId));
- this.container = page.getByTestId(`${testId}-container`);
- this.table = page.getByTestId(`${testId}-table`);
- this.nameInputs = page.getByTestId(`${testId}-name-input`);
- this.valueInputs = page.getByTestId(`${testId}-value-input`);
- this.cellErrors = page.getByTestId(`${testId}-error`);
- this.autocomplete = page.getByTestId('variable-autocomplete');
- }
-
- /** The per-row enable/disable checkbox, addressed by the row name via its aria-label. */
- enableToggle(name: string): Locator {
- return this.table.getByRole('checkbox', { name: `Enable ${name}` });
- }
-}
diff --git a/packages/oc-docs/e2e/components/layout/env-switcher.component.ts b/packages/oc-docs/e2e/components/layout/env-switcher.component.ts
deleted file mode 100644
index 355d160e..00000000
--- a/packages/oc-docs/e2e/components/layout/env-switcher.component.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-import type { Page, Locator } from '@playwright/test';
-import { BaseComponent } from '../base.component';
-
-/**
- * The environment controls in the page header: the show-variables toggle and
- * the environment switcher. Both are sibling controls in the header's env slot,
- * so the toggle is found page-wide by its test id and the trigger is scoped to
- * the switcher root. The menu renders through MenuDropdown (Tippy), portaled to
- * so it escapes the topbar stacking context and clears the playground
- * docks, so its menu and options are located page-wide. Parts are found by test
- * id, never by class.
- */
-export class EnvSwitcherComponent extends BaseComponent {
- readonly showVarsToggle = this.page.getByTestId('show-vars-toggle');
- readonly trigger: Locator;
- readonly menu: Locator;
- readonly emptyOption: Locator;
-
- constructor(
- page: Page,
- private readonly base = 'env-switcher'
- ) {
- super(page, page.getByTestId(`${base}-root`));
- this.trigger = this.root.getByTestId(base);
- this.menu = this.page.getByTestId(`${base}-dropdown`);
- this.emptyOption = this.option('no-environments');
- }
-
- option(name: string): Locator {
- return this.menu.getByTestId(`${this.base}-${name.toLowerCase()}`);
- }
-
- async open(): Promise {
- await this.trigger.click();
- }
-
- async selectEnvironment(name: string): Promise {
- await this.open();
- await this.option(name).click();
- }
-
- async toggle(): Promise {
- await this.showVarsToggle.click();
- }
-
- async pressKey(key: string): Promise {
- await this.page.keyboard.press(key);
- }
-}
diff --git a/packages/oc-docs/e2e/components/layout/page-header.component.ts b/packages/oc-docs/e2e/components/layout/page-header.component.ts
deleted file mode 100644
index 971d3905..00000000
--- a/packages/oc-docs/e2e/components/layout/page-header.component.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import type { Page } from '@playwright/test';
-import { BaseComponent } from '../base.component';
-
-/**
- * The page header (sticky top navigation bar). A layout component — present on
- * every screen — so tests get it handed over directly (`pageHeader.brandName`),
- * the same way the sidebar is.
- *
- * Scoped to the `topbar` test id. Exposes the header's own shipped chrome:
- * brand cluster, the Open-in-Bruno CTA, and the menu (hamburger) trigger.
- * Parts are found by test id or accessible name, never by class.
- */
-export class PageHeaderComponent extends BaseComponent {
- constructor(page: Page) {
- super(page, page.getByTestId('topbar'));
- }
-
- // Brand cluster
- readonly brand = this.root.getByTestId('brand');
- readonly brandName = this.root.getByTestId('brand-name');
- readonly brandVersion = this.root.getByTestId('brand-version');
- readonly brandInitials = this.root.getByTestId('brand-initials');
-
- // Open-in-Bruno CTA
- readonly openInBruno = this.root.getByTestId('open-in-bruno');
-
- // Sidebar (hamburger) trigger — shown below desktop. The header only renders
- // the button; the drawer it opens lives elsewhere.
- readonly menuButton = this.root.getByTestId('topbar-menu');
-}
diff --git a/packages/oc-docs/e2e/components/layout/theme-toggle.component.ts b/packages/oc-docs/e2e/components/layout/theme-toggle.component.ts
deleted file mode 100644
index dd9d1922..00000000
--- a/packages/oc-docs/e2e/components/layout/theme-toggle.component.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { BaseComponent } from '../base.component';
-
-export class ThemeToggleComponent extends BaseComponent {
- readonly button = this.page.getByTestId('theme-toggle');
-
- async toggle(): Promise {
- await this.button.click();
- }
-}
diff --git a/packages/oc-docs/e2e/components/markdown.component.ts b/packages/oc-docs/e2e/components/markdown.component.ts
deleted file mode 100644
index 3b67e80a..00000000
--- a/packages/oc-docs/e2e/components/markdown.component.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-import type { Locator } from '@playwright/test';
-import { BaseComponent } from './base.component';
-
-/**
- * A block of rendered Markdown — headings, paragraphs, lists, tables, code and
- * quotes.
- */
-export class MarkdownComponent extends BaseComponent {
- heading(text: string): Locator {
- return this.root.getByRole('heading', { name: text });
- }
-
- paragraph(text: string): Locator {
- return this.root.getByRole('paragraph').filter({ hasText: text });
- }
-
- /** An item in a numbered (ordered) list. */
- numberedItem(text: string): Locator {
- return this.root.locator('ol > li', { hasText: text });
- }
-
- /** An item in a bulleted (unordered) list. */
- bulletedItem(text: string): Locator {
- return this.root.locator('ul > li', { hasText: text });
- }
-
- /** Bold (`**…**`) text. */
- boldText(text: string): Locator {
- return this.root.locator('strong', { hasText: text });
- }
-
- /** Inline or fenced code. */
- code(text: string): Locator {
- return this.root.locator('code', { hasText: text });
- }
-
- table(): Locator {
- return this.root.getByRole('table');
- }
-
- columnHeader(text: string): Locator {
- return this.table().getByRole('columnheader', { name: text });
- }
-
- /** A table cell, matched exactly. */
- cell(text: string): Locator {
- return this.table().getByRole('cell', { name: text, exact: true });
- }
-}
diff --git a/packages/oc-docs/e2e/components/overview/collection-configuration.component.ts b/packages/oc-docs/e2e/components/overview/collection-configuration.component.ts
deleted file mode 100644
index c560fe48..00000000
--- a/packages/oc-docs/e2e/components/overview/collection-configuration.component.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import type { Locator } from "@playwright/test";
-import { BaseComponent } from "../base.component";
-import { SecretValueComponent } from "../secret-value.component";
-
-export class ConfigurationSection extends BaseComponent {
- readonly root = this.page.getByTestId("collection-config");
-
- readonly copyButton = this.root.getByTestId("collection-config-tests-copy");
-
- readonly secret = new SecretValueComponent(
- this.page,
- "collection-config-auth-secret",
- );
-
- readonly disabledRows = this.root
- .getByTestId("property-value-line")
- .filter({ has: this.page.getByTestId("disabled-badge") });
-
- subHeading(name: string): Locator {
- return this.root
- .getByTestId("collection-config-subheading")
- .filter({ hasText: name });
- }
-
- async copyToClipboard(): Promise {
- await this.copyButton.click();
- }
-}
diff --git a/packages/oc-docs/e2e/components/overview/collection-stats.component.ts b/packages/oc-docs/e2e/components/overview/collection-stats.component.ts
deleted file mode 100644
index ba202bcf..00000000
--- a/packages/oc-docs/e2e/components/overview/collection-stats.component.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import type { Locator } from '@playwright/test';
-import { BaseComponent } from '../base.component';
-
-export class StatsSection extends BaseComponent {
-
- readonly cards = this.page.getByTestId('collection-stats-stat');
-
- card(label: string): Locator {
- return this.cards.filter({ hasText: label });
- }
-
- valueFor(label: string): Locator {
- return this.card(label).getByTestId('collection-stats-stat-value');
- }
-}
diff --git a/packages/oc-docs/e2e/components/overview/environments.component.ts b/packages/oc-docs/e2e/components/overview/environments.component.ts
deleted file mode 100644
index 3b01f5bb..00000000
--- a/packages/oc-docs/e2e/components/overview/environments.component.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import type { Locator } from '@playwright/test';
-import { BaseComponent } from '../base.component';
-
-export class EnvironmentsSection extends BaseComponent {
-
- readonly items = this.page.getByTestId('overview-environment-item');
-
- item(name: string): Locator {
- return this.items.filter({ has: this.page.getByText(name, { exact: true }) });
- }
-
- variableCount(name: string): Locator {
- return this.item(name).getByTestId('overview-environment-item-variable-count');
- }
-}
diff --git a/packages/oc-docs/e2e/components/overview/header.component.ts b/packages/oc-docs/e2e/components/overview/header.component.ts
deleted file mode 100644
index 114259e9..00000000
--- a/packages/oc-docs/e2e/components/overview/header.component.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { BaseComponent } from '../base.component';
-
-export class HeaderSection extends BaseComponent {
- readonly collectionVersion = this.page.getByTestId('overview-collection-version');
- readonly collectionName = this.page.getByTestId('overview-collection-name');
-}
diff --git a/packages/oc-docs/e2e/components/playground.component.ts b/packages/oc-docs/e2e/components/playground.component.ts
deleted file mode 100644
index 75f42bcb..00000000
--- a/packages/oc-docs/e2e/components/playground.component.ts
+++ /dev/null
@@ -1,143 +0,0 @@
-import type { Locator } from '@playwright/test';
-import { BaseComponent } from './base.component';
-import { KeyValueTableComponent } from './key-value-table/key-value-table.component';
-import { CodeEditorComponent } from './code-editor/code-editor.component';
-import type { DockMode } from '../../src/utils/playgroundDock';
-
-export class PlaygroundComponent extends BaseComponent {
- readonly keyValueTable = new KeyValueTableComponent(this.page);
- readonly preRequestScriptEditor = new CodeEditorComponent(this.page, 'scripts-editor-pre-request');
- readonly postResponseScriptEditor = new CodeEditorComponent(this.page, 'scripts-editor-post-response');
- readonly bodyEditor = new CodeEditorComponent(this.page, 'body-editor');
- readonly testsEditor = new CodeEditorComponent(this.page, 'tests-editor');
-
- readonly header = this.page.getByTestId('playground-header');
- readonly switcher = this.page.getByTestId('playground-dock-switcher');
- readonly content = this.page.getByTestId('playground-content');
- readonly runner = this.page.getByTestId('playground-runner');
- readonly loadError = this.page.getByTestId('playground-load-error');
- readonly sidebarPanel = this.page.getByTestId('playground-sidebar-panel');
- readonly sidebarResizer = this.page.getByTestId('playground-sidebar-resizer');
- readonly sidebarBackdrop = this.page.getByTestId('playground-sidebar-backdrop');
- readonly collectionNode = this.page.getByTestId('sidebar-collection-root');
- readonly collectionCollapseToggle = this.collectionNode.getByRole('button', {
- name: /Collapse collection|Expand collection/,
- });
- readonly collectionRootLink = this.collectionNode.getByRole('button', {
- name: /Bruno Testbench|Collection/,
- });
- readonly envSwitcher = this.page.getByTestId('playground-env-switcher');
- readonly gear = this.page.getByTestId('playground-env-settings');
- readonly view = this.page.getByTestId('playground-view');
- readonly sidebarToggle = this.page.getByTestId('playground-sidebar-toggle');
- readonly treeItems = this.page.getByTestId('playground-sidebar-panel').getByTestId('sidebar-item');
- readonly closeButton = this.page.getByTestId('playground-close');
- readonly collapseButton = this.page.getByTestId('playground-collapse');
- readonly inlinePanel = this.page.getByTestId('playground-dock-inline-panel');
- readonly bottomPanel = this.page.getByTestId('playground-dock-bottom-panel');
- readonly modalPanel = this.page.getByTestId('playground-dock-modal-panel');
- readonly mobilePanel = this.page.getByTestId('playground-dock-mobile-panel');
- readonly unsupported = this.view.getByTestId('unsupported-request');
- readonly unsupportedTitle = this.view.getByTestId('unsupported-request-title');
- readonly unsupportedMessage = this.view.getByTestId('unsupported-request-empty');
- readonly unsupportedIcon = this.view.getByTestId('file-not-found-icon');
- readonly exampleView = this.page.getByTestId('example-view');
- readonly exampleViewRequest = this.page.getByTestId('example-view-request');
- readonly exampleViewResponse = this.page.getByTestId('example-view-response');
-
- readonly exampleViewControls = this.exampleView.locator('input, textarea');
-
- exampleToggle(requestName: string): Locator {
- return this.treeItems.filter({ hasText: requestName }).getByTestId('sidebar-example-toggle');
- }
-
- exampleRow(exampleName: string): Locator {
- return this.sidebarPanel.getByTestId('sidebar-example').filter({ hasText: exampleName });
- }
-
- async open(dock: DockMode = 'bottom'): Promise {
- await this.page.goto(`/#/?pg=1&dock=${dock}`);
- }
-
- sidebarItem(name: string): Locator {
- return this.treeItems.filter({ hasText: name }).first();
- }
-
- async openSidebarItem(name: string): Promise {
- await this.sidebarItem(name).click();
- }
-
- scriptTab(id: string): Locator {
- return this.page.getByTestId(`scripts-tabs-tab-${id}`);
- }
-
- async selectScriptTab(id: string): Promise {
- await this.scriptTab(id).click();
- }
-
- async openTreeItem(names: string[]): Promise {
- for (const name of names) {
- await this.treeItems.filter({ hasText: name }).first().click();
- }
- }
-
- dockButton(mode: DockMode): Locator {
- return this.page.getByTestId(`playground-dock-${mode}`);
- }
-
- panel(mode: DockMode): Locator {
- return this.page.getByTestId(`playground-dock-${mode}-panel`);
- }
-
- async open(mode: DockMode): Promise {
- await this.page.goto(`/#/?pg=1&dock=${mode}`);
- await this.runner.waitFor({ state: 'visible' });
- }
-
- async openRequest(name: string): Promise {
- await this.treeItems.filter({ hasText: name }).first().click();
- await this.view.waitFor({ state: 'visible' });
- }
-
- async openEnvironments(): Promise {
- if (!(await this.gear.isVisible())) {
- await this.sidebarToggle.click();
- }
- await this.gear.click();
- }
-
- async selectDock(mode: DockMode): Promise {
- await this.dockButton(mode).click();
- }
-
- tab(id: string): Locator {
- return this.page.getByTestId(`tabs-tab-${id}`);
- }
-
- async selectTab(id: string): Promise {
- const direct = this.tab(id);
- if ((await direct.count()) > 0 && (await direct.isVisible())) {
- await direct.click();
- return;
- }
- await this.page.getByTestId('tabs-more').click();
- await this.page.getByTestId(`tabs-more-${id}`).click();
- }
-
- async close(): Promise {
- await this.closeButton.click();
- }
-
- async toggleCollapse(): Promise {
- await this.collapseButton.click();
- }
-
- async sidebarWidth(): Promise {
- const box = await this.sidebarPanel.boundingBox();
- return box?.width ?? 0;
- }
-
- async grabSidebarResizer(): Promise {
- await this.grabHandle(this.sidebarResizer);
- }
-}
diff --git a/packages/oc-docs/e2e/components/playground/request-body.component.ts b/packages/oc-docs/e2e/components/playground/request-body.component.ts
deleted file mode 100644
index eb56b718..00000000
--- a/packages/oc-docs/e2e/components/playground/request-body.component.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { BaseComponent } from '../base.component';
-
-// The Body tab inside the playground request pane: the body-type dropdown and
-// the editor region each type renders. Open the tab via playground.selectTab('body').
-export class RequestBodyComponent extends BaseComponent {
- readonly typeSelect = this.page.getByTestId('body-type-select');
- readonly empty = this.page.getByTestId('body-empty');
- readonly multipart = this.page.getByTestId('body-multipart');
- readonly file = this.page.getByTestId('body-file');
-
- async selectType(value: string): Promise {
- await this.typeSelect.click();
- await this.page.getByTestId(`body-type-select-${value}`).click();
- }
-}
diff --git a/packages/oc-docs/e2e/components/request/code-snippet.component.ts b/packages/oc-docs/e2e/components/request/code-snippet.component.ts
deleted file mode 100644
index 317d37dc..00000000
--- a/packages/oc-docs/e2e/components/request/code-snippet.component.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import type { Locator } from '@playwright/test';
-import { BaseComponent } from '../base.component';
-
-export class CodeSnippetComponent extends BaseComponent {
- readonly root = this.page.getByTestId('request-code-snippet');
-
- readonly code = this.root.getByTestId('code-snippet-code');
-
- readonly copyButton = this.root.getByTestId('code-snippet-code-copy');
-
- readonly expandButton = this.root.getByTestId('code-snippet-expand');
-
- readonly modal = this.page.getByTestId('code-snippet-modal');
-
- readonly modalCode = this.modal.getByTestId('code-snippet-code');
-
- variableToken(name: string): Locator {
- return this.code.getByTestId(`variable-token-${name}`).first();
- }
-
- modalVariableToken(name: string): Locator {
- return this.modalCode.getByTestId(`variable-token-${name}`).first();
- }
-
- languageTab(language: string): Locator {
- return this.root.getByTestId(`code-snippet-tab-${language}`);
- }
-
- modalLanguageTab(language: string): Locator {
- return this.modal.getByTestId(`code-snippet-tab-${language}`);
- }
-
- async selectLanguage(language: string): Promise {
- await this.languageTab(language).click();
- }
-
- /** Open the enlarged code-snippet view via the expand control. */
- async openExpandedView(): Promise {
- await this.expandButton.click();
- await this.modal.waitFor({ state: 'visible' });
- }
-
- async selectModalLanguage(language: string): Promise {
- await this.modalLanguageTab(language).click();
- }
-}
diff --git a/packages/oc-docs/e2e/components/request/examples.component.ts b/packages/oc-docs/e2e/components/request/examples.component.ts
deleted file mode 100644
index 8c03e3bf..00000000
--- a/packages/oc-docs/e2e/components/request/examples.component.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import type { Locator } from '@playwright/test';
-import { BaseComponent } from '../base.component';
-
-export class ExamplesComponent extends BaseComponent {
- readonly root = this.page.getByTestId('request-examples');
-
- readonly items = this.root.getByTestId('example-card');
-
- // The card the sidebar navigated to (data-active set by ExampleCard).
- readonly activeCard = this.root.locator('[data-testid="example-card"][data-active="true"]');
-
- example(name: string): Locator {
- return this.items.filter({ hasText: name });
- }
-
- statusCode(name: string): Locator {
- return this.example(name).getByTestId('example-status');
- }
-
- requestBody(name: string): Locator {
- return this.example(name).getByTestId('example-request-pane-body');
- }
-
- responseBody(name: string): Locator {
- return this.example(name).getByTestId('example-response-pane-body');
- }
-
- async open(name: string): Promise {
- await this.example(name).getByTestId('example-toggle').click();
- }
-
- async selectRequestTab(name: string, tab: string): Promise {
- await this.example(name).getByTestId(`example-request-pane-tab-${tab}`).click();
- }
-
- async selectResponseTab(name: string, tab: string): Promise {
- await this.example(name).getByTestId(`example-response-pane-tab-${tab}`).click();
- }
-}
diff --git a/packages/oc-docs/e2e/components/request/execution-context.component.ts b/packages/oc-docs/e2e/components/request/execution-context.component.ts
deleted file mode 100644
index 45142c57..00000000
--- a/packages/oc-docs/e2e/components/request/execution-context.component.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import type { Locator } from '@playwright/test';
-import { BaseComponent } from '../base.component';
-
-export type ExecutionContextTab = 'variables' | 'scripts' | 'asserts' | 'tests';
-
-export class ExecutionContextComponent extends BaseComponent {
- readonly root = this.page.getByTestId('execution-context');
-
- readonly executionFlow = this.root.getByTestId('execution-context-flow');
- readonly viewCompleteCodeButton = this.root.getByTestId('execution-context-view-complete-code');
-
- readonly variablesPanel = this.root.getByTestId('execution-context-variables');
- readonly scriptsPanel = this.root.getByTestId('execution-context-scripts');
- readonly assertsPanel = this.root.getByTestId('execution-context-asserts');
- readonly testsPanel = this.root.getByTestId('execution-context-tests');
-
- tab(name: ExecutionContextTab): Locator {
- return this.root.getByTestId(`execution-context-tabs-tab-${name}`);
- }
-
- async openTab(name: ExecutionContextTab): Promise {
- await this.tab(name).click();
- }
-
- scriptStep(label: string): Locator {
- return this.scriptsPanel.getByText(label);
- }
-
- scriptSource(name: string): Locator {
- return this.scriptsPanel.locator('button.script-step-source').filter({ hasText: name });
- }
-
- variable(name: string): Locator {
- return this.variablesPanel.getByText(name, { exact: true });
- }
-
- assertion(text: string): Locator {
- return this.assertsPanel.getByText(text);
- }
-
- testCase(name: string): Locator {
- return this.testsPanel.getByText(name);
- }
-}
diff --git a/packages/oc-docs/e2e/components/request/url-bar.component.ts b/packages/oc-docs/e2e/components/request/url-bar.component.ts
deleted file mode 100644
index 1afba089..00000000
--- a/packages/oc-docs/e2e/components/request/url-bar.component.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { BaseComponent } from '../base.component';
-
-export class RequestUrlBarComponent extends BaseComponent {
- readonly root = this.page.getByTestId('request-url-bar');
-
- readonly method = this.root.getByTestId('request-method');
- readonly url = this.root.getByTestId('request-url');
- readonly tryButton = this.root.getByTestId('request-try-button');
-}
diff --git a/packages/oc-docs/e2e/components/script/script-content.component.ts b/packages/oc-docs/e2e/components/script/script-content.component.ts
deleted file mode 100644
index cc271bd1..00000000
--- a/packages/oc-docs/e2e/components/script/script-content.component.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { BaseComponent } from '../base.component';
-
-export class ScriptContentComponent extends BaseComponent {
- readonly root = this.page.getByTestId('script-code');
-
- readonly code = this.root.locator('code');
-
- readonly copyButton = this.root.getByTestId('script-code-copy');
-}
diff --git a/packages/oc-docs/e2e/components/search/search.component.ts b/packages/oc-docs/e2e/components/search/search.component.ts
deleted file mode 100644
index 8ec975ba..00000000
--- a/packages/oc-docs/e2e/components/search/search.component.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import type { Page, Locator } from '@playwright/test';
-import { BaseComponent } from '../base.component';
-
-/**
- * The endpoint search palette. A page-wide control (its panel is a fixed
- * overlay), so it omits a container root. Parts are found by accessible role or
- * test id, never by class.
- */
-export class SearchComponent extends BaseComponent {
- constructor(page: Page) {
- super(page);
- }
-
- /** Inline combobox field (desktop / once revealed below desktop). */
- readonly field = this.root.getByRole('combobox', { name: 'Search endpoints' });
- /** The panel element (open state is reflected by its `data-open` attribute). */
- readonly panel = this.root.getByTestId('search-panel');
- readonly openPanel = this.root.locator('[data-testid="search-panel"][data-open="true"]');
- readonly filters = this.root.getByTestId('search-filters');
- readonly resultsList = this.root.getByTestId('search-results');
- /** The scrollable results container (results overflow it and scroll). */
- readonly resultsScroll = this.root.getByTestId('search-scroll');
- readonly results = this.root.getByTestId('search-result');
- readonly resultMethods = this.root.getByTestId('search-result-method');
- /** The keyboard-highlighted result option. */
- readonly activeOption = this.root.locator('[role="option"][aria-selected="true"]');
- readonly clearButton = this.root.getByRole('button', { name: 'Clear search' });
- /** Below-desktop Topbar trigger that reveals the search. */
- readonly toggleIcon = this.root.getByRole('button', { name: /^search$/i });
- readonly folderButton = this.root.getByRole('button', { name: 'Folder', exact: true });
- readonly folderMenu = this.root.getByRole('listbox', { name: 'Filter by folder' });
-
- methodChip(label: string): Locator {
- return this.root.getByRole('button', { name: label, exact: true });
- }
-
- folderOption(name: string): Locator {
- return this.folderMenu.getByRole('button', { name, exact: true });
- }
-
- result(text: string): Locator {
- return this.results.filter({ hasText: text });
- }
-}
diff --git a/packages/oc-docs/e2e/components/secret-value.component.ts b/packages/oc-docs/e2e/components/secret-value.component.ts
deleted file mode 100644
index 3c4e1eda..00000000
--- a/packages/oc-docs/e2e/components/secret-value.component.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import type { Locator, Page } from '@playwright/test';
-import { BaseComponent } from './base.component';
-
-export class SecretValueComponent extends BaseComponent {
- readonly value: Locator;
-
- readonly toggle: Locator;
-
- constructor(page: Page, testId: string) {
- super(page);
- this.value = page.getByTestId(`${testId}-text`);
- this.toggle = page.getByTestId(`${testId}-toggle`);
- }
-
- // Reveal the raw value.
- async toggleReveal(): Promise {
- await this.toggle.click();
- }
-}
diff --git a/packages/oc-docs/e2e/components/sidebar.component.ts b/packages/oc-docs/e2e/components/sidebar.component.ts
deleted file mode 100644
index 95231e5c..00000000
--- a/packages/oc-docs/e2e/components/sidebar.component.ts
+++ /dev/null
@@ -1,71 +0,0 @@
-import type { Locator } from '@playwright/test';
-import { BaseComponent } from './base.component';
-
-export class SidebarComponent extends BaseComponent {
- readonly items = this.page.getByTestId('sidebar-item');
- readonly inline = this.page.getByTestId('app-sidebar');
- readonly overview = this.page.getByTestId('sidebar-overview');
- readonly environments = this.page.getByTestId('sidebar-environments');
- readonly collapseButton = this.page.getByTestId('sidebar-collapse');
- readonly expandButton = this.page.getByTestId('sidebar-expand');
- readonly resizer = this.page.getByTestId('sidebar-resizer');
- readonly drawer = this.page.getByTestId('sidebar-drawer');
- readonly backdrop = this.page.getByTestId('sidebar-backdrop');
- readonly hamburger = this.page.getByTestId('topbar-menu');
-
- item(name: string): Locator {
- return this.items.filter({ hasText: name });
- }
-
- folderChevron(name: string): Locator {
- return this.item(name).first().locator('.navlink-chevron');
- }
-
- async toggleFolder(name: string): Promise {
- await this.folderChevron(name).click();
- }
-
- exampleToggle(requestName: string): Locator {
- return this.item(requestName).first().getByTestId('sidebar-example-toggle');
- }
-
- exampleRow(exampleName: string): Locator {
- return this.page.getByTestId('sidebar-example').filter({ hasText: exampleName });
- }
-
- async toggleExamples(requestName: string): Promise {
- await this.exampleToggle(requestName).click();
- }
-
- async open(paths: string[]): Promise {
- for (const name of paths) {
- await this.item(name).first().click();
- }
- }
-
- async width(): Promise {
- const box = await this.inline.boundingBox();
- return box?.width ?? 0;
- }
-
- async grabResizer(): Promise {
- await this.grabHandle(this.resizer);
- }
-
- async collapse(): Promise {
- await this.inline.hover();
- await this.collapseButton.click();
- }
-
- async expand(): Promise {
- await this.expandButton.click();
- }
-
- async openDrawer(): Promise {
- await this.hamburger.click();
- }
-
- async closeDrawerViaBackdrop(): Promise {
- await this.backdrop.click({ position: { x: 375, y: 400 } });
- }
-}
diff --git a/packages/oc-docs/e2e/components/tooltip.component.ts b/packages/oc-docs/e2e/components/tooltip.component.ts
deleted file mode 100644
index cee2d6e0..00000000
--- a/packages/oc-docs/e2e/components/tooltip.component.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import type { Locator, Page } from '@playwright/test';
-import { BaseComponent } from './base.component';
-
-export class TooltipComponent extends BaseComponent {
- readonly truncatableCells: Locator;
-
- readonly popup: Locator;
-
- constructor(page: Page) {
- super(page);
- this.truncatableCells = page.getByTestId('truncated-text');
- this.popup = page.getByTestId('tooltip');
- }
-
- /** The index and full text of the first cell whose text is clipped, or null if none is clipped. */
- async findFirstClippedCell(): Promise<{ index: number; fullText: string } | null> {
- return this.truncatableCells.evaluateAll<{ index: number; fullText: string } | null, HTMLElement>((cells) => {
- const clippedIndex = cells.findIndex((cell) => cell.scrollWidth > cell.clientWidth + 1);
- if (clippedIndex < 0) return null;
- return { index: clippedIndex, fullText: (cells[clippedIndex].textContent || '').trim() };
- });
- }
-
- /** The index of the first cell whose text fits within its width, or -1 if every cell is clipped. */
- async findFirstUnclippedCellIndex(): Promise {
- return this.truncatableCells.evaluateAll((cells) =>
- cells.findIndex((cell) => cell.scrollWidth <= cell.clientWidth + 1)
- );
- }
-
- /** Hover the truncatable cell at `index` to trigger (or suppress) its tooltip. */
- async hoverCell(index: number): Promise {
- await this.truncatableCells.nth(index).hover();
- }
-}
diff --git a/packages/oc-docs/e2e/components/variable-card/variable-card.component.ts b/packages/oc-docs/e2e/components/variable-card/variable-card.component.ts
deleted file mode 100644
index 1f1ea38f..00000000
--- a/packages/oc-docs/e2e/components/variable-card/variable-card.component.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import type { Locator } from '@playwright/test';
-import { BaseComponent } from '../base.component';
-
-export class VariableCardComponent extends BaseComponent {
- readonly card = this.page.getByTestId('variable-info-card');
- readonly name = this.card.getByTestId('variable-info-card-name');
- readonly scopeBadge = this.card.getByTestId('variable-info-card-scope');
- readonly value = this.card.getByTestId('variable-info-card-value');
- readonly copyButton = this.card.getByTestId('variable-info-card-copy');
- readonly revealToggle = this.card.getByTestId('variable-info-card-reveal');
- readonly note = this.card.getByTestId('variable-info-card-note');
- readonly warning = this.card.getByTestId('variable-info-card-warning');
- // Read-only guard: the card must contain no editable control. Native inputs and third-party
- // CodeMirror carry no test ids, so this absence check matches them structurally.
- readonly editors = this.card.locator('textarea, input, .CodeMirror');
-
- token(name: string): Locator {
- return this.root.getByTestId(`variable-token-${name}`).first();
- }
-
- async hoverToken(name: string): Promise {
- await this.token(name).hover();
- }
-
- async pinToken(name: string): Promise {
- await this.token(name).click();
- }
-}
diff --git a/packages/oc-docs/e2e/config/app.config.ts b/packages/oc-docs/e2e/config/app.config.ts
deleted file mode 100644
index e77e909a..00000000
--- a/packages/oc-docs/e2e/config/app.config.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-export interface AppConfig {
- /** Base URL the docs app is served from (used as Playwright's `baseURL`). */
- baseURL: string;
- /** Command Playwright runs to start the app (the `webServer`). */
- webServerCommand: string;
-}
-
-export const appConfig: AppConfig = {
- baseURL:'http://127.0.0.1:3001',
- webServerCommand: 'npm run dev'
-};
diff --git a/packages/oc-docs/e2e/pages/base.page.ts b/packages/oc-docs/e2e/pages/base.page.ts
deleted file mode 100644
index 520416ea..00000000
--- a/packages/oc-docs/e2e/pages/base.page.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import type { Page } from '@playwright/test';
-
-export abstract class BasePage {
- readonly root = this.page.locator('#root');
-
- constructor(protected readonly page: Page) {}
-
- /** Navigate to a path on the docs app (defaults to the app root). */
- protected async navigate(path = '/'): Promise {
- await this.page.goto(path);
- }
-
- /** Open a path on the docs app (defaults to the root) and wait for it to render. */
- async goto(path = '/'): Promise {
- await this.navigate(path);
- await this.root.waitFor({ state: 'visible' });
- }
-
- /** Reload the current page. */
- async reload(): Promise {
- await this.page.reload();
- }
-}
diff --git a/packages/oc-docs/e2e/pages/environments.page.ts b/packages/oc-docs/e2e/pages/environments.page.ts
deleted file mode 100644
index 93a7c425..00000000
--- a/packages/oc-docs/e2e/pages/environments.page.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import type { Locator } from '@playwright/test';
-import { BasePage } from './base.page';
-import { SidebarComponent } from '../components/sidebar.component';
-import { EnvironmentTableComponent } from '../components/environments/environment-table.component';
-
-export class EnvironmentsPage extends BasePage {
-
- readonly root = this.page.getByTestId('environments-page');
- readonly title = this.page.getByTestId('environments-title');
- readonly tabs = this.page.getByTestId('environment-tab');
- readonly variablesGroup = this.page.getByTestId('environment-variables');
- readonly secretVariablesGroup = this.page.getByTestId('environment-secret-variables');
- readonly externalSecretsGroup = this.page.getByTestId('environment-external-secrets');
- readonly emptyState = this.page.getByTestId('environments-empty');
-
- readonly table = new EnvironmentTableComponent(this.page);
- readonly sidebar = new SidebarComponent(this.page);
-
- async open(): Promise {
- await this.navigate('/');
- await this.page.getByTestId('sidebar-environments').click();
- await this.root.waitFor({ state: 'visible' });
- }
-
- tab(name: string): Locator {
- return this.tabs.filter({ hasText: name });
- }
-}
diff --git a/packages/oc-docs/e2e/pages/folder.page.ts b/packages/oc-docs/e2e/pages/folder.page.ts
deleted file mode 100644
index ca31e8bf..00000000
--- a/packages/oc-docs/e2e/pages/folder.page.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { BasePage } from './base.page';
-import { SidebarComponent } from '../components/sidebar.component';
-import { BreadcrumbComponent } from '../components/breadcrumb.component';
-import { FolderConfigurationComponent } from '../components/folder/folder-configuration.component';
-import { VariableCardComponent } from '../components/variable-card/variable-card.component';
-
-export class FolderPage extends BasePage {
- readonly root = this.page.getByTestId('folder-page');
- readonly title = this.page.getByTestId('folder-title');
- readonly requestCount = this.page.getByTestId('folder-request-count');
- readonly folderMarkdownDocs = this.page.getByTestId('folder-docs');
- readonly folderMarkdownDocsToggle = this.page.getByTestId('folder-docs-toggle');
- readonly emptyState = this.page.getByTestId('folder-config-empty');
-
- readonly sidebar = new SidebarComponent(this.page);
- readonly breadcrumb = new BreadcrumbComponent(this.page, 'folder-breadcrumb');
- readonly configuration = new FolderConfigurationComponent(this.page);
- readonly variableCard = new VariableCardComponent(this.page, this.root);
-
- async open(trail: string[]): Promise {
- await this.navigate('/');
- await this.sidebar.open(trail);
- await this.root.waitFor({ state: 'visible' });
- }
-}
diff --git a/packages/oc-docs/e2e/pages/overview.page.ts b/packages/oc-docs/e2e/pages/overview.page.ts
deleted file mode 100644
index a8919c86..00000000
--- a/packages/oc-docs/e2e/pages/overview.page.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import type { Locator } from '@playwright/test';
-import { BasePage } from './base.page';
-import { MarkdownComponent } from '../components/markdown.component';
-import { HeaderSection } from '../components/overview/header.component';
-import { StatsSection } from '../components/overview/collection-stats.component';
-import { EnvironmentsSection } from '../components/overview/environments.component';
-import { ConfigurationSection } from '../components/overview/collection-configuration.component';
-import { VariableCardComponent } from '../components/variable-card/variable-card.component';
-
-export class OverviewPage extends BasePage {
- readonly root = this.page.getByTestId('overview');
-
- readonly header = new HeaderSection(this.page);
- readonly stats = new StatsSection(this.page);
- readonly environments = new EnvironmentsSection(this.page);
- readonly configuration = new ConfigurationSection(this.page);
- readonly docMarkdown = new MarkdownComponent(this.page, this.page.getByTestId('overview-markdown-documentation'));
- readonly variableCard = new VariableCardComponent(this.page, this.root);
-
- sectionLabel(name: string): Locator {
- return this.page.getByTestId('overview-section-label').filter({ hasText: name });
- }
-}
diff --git a/packages/oc-docs/e2e/pages/request.page.ts b/packages/oc-docs/e2e/pages/request.page.ts
deleted file mode 100644
index e28cda63..00000000
--- a/packages/oc-docs/e2e/pages/request.page.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import type { Locator } from '@playwright/test';
-import { BasePage } from './base.page';
-import { SidebarComponent } from '../components/sidebar.component';
-import { BreadcrumbComponent } from '../components/breadcrumb.component';
-import { RequestUrlBarComponent } from '../components/request/url-bar.component';
-import { CodeSnippetComponent } from '../components/request/code-snippet.component';
-import { ExamplesComponent } from '../components/request/examples.component';
-import { ExecutionContextComponent } from '../components/request/execution-context.component';
-import { VariableCardComponent } from '../components/variable-card/variable-card.component';
-
-export class RequestPage extends BasePage {
- readonly root = this.page.getByTestId('request-page');
- readonly title = this.page.getByTestId('request-title');
- readonly description = this.page.getByTestId('request-description');
-
- readonly sidebar = new SidebarComponent(this.page);
- readonly breadcrumb = new BreadcrumbComponent(this.page, 'request-breadcrumb');
- readonly urlBar = new RequestUrlBarComponent(this.page);
- readonly codeSnippet = new CodeSnippetComponent(this.page);
-
- readonly examples = new ExamplesComponent(this.page);
- readonly executionContext = new ExecutionContextComponent(this.page);
-
- readonly variableCard = new VariableCardComponent(this.page, this.root);
- readonly bodyVariableCard = new VariableCardComponent(this.page, this.section('body'));
-
- async open(path: string[]): Promise {
- await this.navigate('/');
- await this.sidebar.open(path);
- await this.root.waitFor({ state: 'visible' });
- }
-
- section(label: string): Locator {
- const slug = label.toLowerCase().replace(/\s+/g, '-');
- return this.page.getByTestId(`request-section-${slug}`);
- }
-}
diff --git a/packages/oc-docs/e2e/pages/script.page.ts b/packages/oc-docs/e2e/pages/script.page.ts
deleted file mode 100644
index 00bcee8b..00000000
--- a/packages/oc-docs/e2e/pages/script.page.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { BasePage } from './base.page';
-import { SidebarComponent } from '../components/sidebar.component';
-import { BreadcrumbComponent } from '../components/breadcrumb.component';
-import { ScriptContentComponent } from '../components/script/script-content.component';
-
-export class ScriptPage extends BasePage {
- readonly root = this.page.getByTestId('script-page');
-
- readonly sidebar = new SidebarComponent(this.page);
- readonly breadcrumb = new BreadcrumbComponent(this.page, 'script-breadcrumb');
- readonly title = this.page.getByTestId('script-title');
- readonly content = new ScriptContentComponent(this.page);
-
- async open(path: string[]): Promise {
- await this.navigate('/');
- await this.sidebar.open(path);
- await this.root.waitFor({ state: 'visible' });
- }
-}
diff --git a/packages/oc-docs/e2e/pages/unsupported-request.page.ts b/packages/oc-docs/e2e/pages/unsupported-request.page.ts
deleted file mode 100644
index 6b74705a..00000000
--- a/packages/oc-docs/e2e/pages/unsupported-request.page.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { BasePage } from './base.page';
-import { SidebarComponent } from '../components/sidebar.component';
-import { BreadcrumbComponent } from '../components/breadcrumb.component';
-import { RequestUrlBarComponent } from '../components/request/url-bar.component';
-
-export class UnsupportedRequestPage extends BasePage {
- readonly sidebar = new SidebarComponent(this.page);
- readonly breadcrumb = new BreadcrumbComponent(this.page, 'unsupported-request-breadcrumb');
- readonly urlBar = new RequestUrlBarComponent(this.page);
-
- readonly root = this.page.getByTestId('unsupported-request');
- readonly title = this.page.getByTestId('unsupported-request-title');
- readonly message = this.page.getByTestId('unsupported-request-empty');
- readonly docs = this.root.getByTestId('overview-markdown-documentation');
-
- async open(path: string[]): Promise {
- await this.navigate('/');
- await this.sidebar.open(path);
- await this.root.waitFor({ state: 'visible' });
- }
-}
diff --git a/packages/oc-docs/e2e/playwright/index.ts b/packages/oc-docs/e2e/playwright/index.ts
deleted file mode 100644
index 26cbd136..00000000
--- a/packages/oc-docs/e2e/playwright/index.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { mergeTests } from '@playwright/test';
-import { test as pagesTest } from './pages.fixture';
-
-/**
- * Entry point for the test harness — specs import everything (`test`, `expect`)
- * from here.
- *
- * `mergeTests` combines the fixtures from every `*.fixture.ts` file in this folder
- * into one `test`.
- */
-export const test = mergeTests(pagesTest);
-export { expect } from '@playwright/test';
diff --git a/packages/oc-docs/e2e/playwright/pages.fixture.ts b/packages/oc-docs/e2e/playwright/pages.fixture.ts
deleted file mode 100644
index c831dda1..00000000
--- a/packages/oc-docs/e2e/playwright/pages.fixture.ts
+++ /dev/null
@@ -1,87 +0,0 @@
-import { test as base } from '@playwright/test';
-import { OverviewPage } from '../pages/overview.page';
-import { EnvironmentsPage } from '../pages/environments.page';
-import { RequestPage } from '../pages/request.page';
-import { ScriptPage } from '../pages/script.page';
-import { FolderPage } from '../pages/folder.page';
-import { UnsupportedRequestPage } from '../pages/unsupported-request.page';
-import { SidebarComponent } from '../components/sidebar.component';
-import { TooltipComponent } from '../components/tooltip.component';
-import { PlaygroundComponent } from '../components/playground.component';
-import { RequestBodyComponent } from '../components/playground/request-body.component';
-import { EnvEditorComponent } from '../components/environments/env-editor.component';
-import { CollectionSettingsComponent } from '../components/collection-settings/collection-settings.component';
-import { ThemeToggleComponent } from '../components/layout/theme-toggle.component';
-import { PageHeaderComponent } from '../components/layout/page-header.component';
-import { SearchComponent } from '../components/search/search.component';
-import { EnvSwitcherComponent } from '../components/layout/env-switcher.component';
-
-type Fixtures = {
- overviewPage: OverviewPage;
- environmentsPage: EnvironmentsPage;
- requestPage: RequestPage;
- scriptPage: ScriptPage;
- folderPage: FolderPage;
- unsupportedRequestPage: UnsupportedRequestPage;
- sidebar: SidebarComponent;
- tooltip: TooltipComponent;
- playground: PlaygroundComponent;
- requestBody: RequestBodyComponent;
- envEditor: EnvEditorComponent;
- collectionSettings: CollectionSettingsComponent;
- pageHeader: PageHeaderComponent;
- envSwitcher: EnvSwitcherComponent;
- themeToggle: ThemeToggleComponent;
- search: SearchComponent;
-};
-
-export const test = base.extend({
- overviewPage: async ({ page }, use) => {
- await use(new OverviewPage(page));
- },
- environmentsPage: async ({ page }, use) => {
- await use(new EnvironmentsPage(page));
- },
- requestPage: async ({ page }, use) => {
- await use(new RequestPage(page));
- },
- scriptPage: async ({ page }, use) => {
- await use(new ScriptPage(page));
- },
- folderPage: async ({ page }, use) => {
- await use(new FolderPage(page));
- },
- unsupportedRequestPage: async ({ page }, use) => {
- await use(new UnsupportedRequestPage(page));
- },
- sidebar: async ({ page }, use) => {
- await use(new SidebarComponent(page));
- },
- tooltip: async ({ page }, use) => {
- await use(new TooltipComponent(page));
- },
- pageHeader: async ({ page }, use) => {
- await use(new PageHeaderComponent(page));
- },
- envSwitcher: async ({ page }, use) => {
- await use(new EnvSwitcherComponent(page));
- },
- playground: async ({ page }, use) => {
- await use(new PlaygroundComponent(page));
- },
- requestBody: async ({ page }, use) => {
- await use(new RequestBodyComponent(page));
- },
- envEditor: async ({ page }, use) => {
- await use(new EnvEditorComponent(page));
- },
- collectionSettings: async ({ page }, use) => {
- await use(new CollectionSettingsComponent(page));
- },
- themeToggle: async ({ page }, use) => {
- await use(new ThemeToggleComponent(page));
- },
- search: async ({ page }, use) => {
- await use(new SearchComponent(page));
- }
-});
diff --git a/packages/oc-docs/e2e/tests/app/app.spec.ts b/packages/oc-docs/e2e/tests/app/app.spec.ts
deleted file mode 100644
index 6f027b05..00000000
--- a/packages/oc-docs/e2e/tests/app/app.spec.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { test, expect } from '../../playwright';
-
-test('app loads and renders the collection', async ({ page }) => {
- await page.goto('/');
- await expect(page.getByTestId('app-shell')).toBeVisible();
- await expect(page.getByRole('heading', { name: 'Bruno Testbench' }).first()).toBeVisible();
-});
diff --git a/packages/oc-docs/e2e/tests/collection-settings/collection-settings.spec.ts b/packages/oc-docs/e2e/tests/collection-settings/collection-settings.spec.ts
deleted file mode 100644
index 55095acf..00000000
--- a/packages/oc-docs/e2e/tests/collection-settings/collection-settings.spec.ts
+++ /dev/null
@@ -1,82 +0,0 @@
-import { test, expect } from '../../playwright';
-
-const TABS = ['overview', 'headers', 'variables', 'auth', 'scripts', 'tests'];
-
-test.describe('collection settings', () => {
- test.use({ viewport: { width: 1280, height: 900 } });
-
- test.beforeEach(async ({ page, collectionSettings }) => {
- await page.goto('/#/?pg=1&dock=bottom');
- await collectionSettings.open();
- });
-
- test('renders the six tabs', async ({ collectionSettings }) => {
- for (const id of TABS) {
- await expect(collectionSettings.tab(id)).toBeVisible();
- }
- });
-
- test('overview renders the docs markdown or an empty state', async ({ collectionSettings }) => {
- await expect(collectionSettings.overviewMarkdown.or(collectionSettings.overviewEmpty)).toBeVisible();
- });
-
- test('headers toggles between key/value and bulk edit', async ({ collectionSettings }) => {
- await collectionSettings.openTab('headers');
- await expect(collectionSettings.bulkEditToggle).toHaveText('Bulk edit');
- await collectionSettings.bulkEditToggle.click();
- await expect(collectionSettings.bulkEditToggle).toHaveText('Key/Value edit');
- await collectionSettings.bulkEditToggle.click();
- await expect(collectionSettings.bulkEditToggle).toHaveText('Bulk edit');
- });
-
- test('vars shows the collection variables table', async ({ collectionSettings }) => {
- await collectionSettings.openTab('variables');
- await expect(collectionSettings.varsTable).toBeVisible();
- });
-
- test('auth edits basic credentials', async ({ collectionSettings }) => {
- await collectionSettings.openTab('auth');
- await collectionSettings.selectAuthMode('basic');
- await expect(collectionSettings.authField('username')).toBeVisible();
- await expect(collectionSettings.authField('password')).toBeVisible();
- await expect(collectionSettings.authField('password')).toHaveAttribute('type', 'password');
- });
-
- test('bearer and api key render their fields', async ({ collectionSettings }) => {
- await collectionSettings.openTab('auth');
-
- await collectionSettings.selectAuthMode('bearer');
- await expect(collectionSettings.authField('token')).toHaveAttribute('type', 'password');
-
- await collectionSettings.selectAuthMode('apikey');
- await expect(collectionSettings.authField('key')).toBeVisible();
- await expect(collectionSettings.authField('value')).toHaveAttribute('type', 'text');
- await expect(collectionSettings.authField('placement')).toBeVisible();
- });
-
- test('does not offer Digest or AWS Signature v4 as selectable auth modes', async ({ collectionSettings }) => {
- await collectionSettings.openTab('auth');
- await collectionSettings.authMode.click();
-
- await expect(collectionSettings.authModeOption('basic')).toBeVisible();
- await expect(collectionSettings.authModeOption('digest')).toHaveCount(0);
- await expect(collectionSettings.authModeOption('awsv4')).toHaveCount(0);
- });
-
- test('scripts shows pre-request and post-response editors', async ({ collectionSettings }) => {
- await collectionSettings.openTab('scripts');
- await expect(collectionSettings.scriptTab('pre-request')).toBeVisible();
- await expect(collectionSettings.scriptTab('post-response')).toBeVisible();
- });
-
- test('persists an edited auth value across tab switches', async ({ collectionSettings }) => {
- await collectionSettings.openTab('auth');
- await collectionSettings.selectAuthMode('basic');
- await collectionSettings.authField('username').fill('admin');
-
- await collectionSettings.openTab('variables');
- await collectionSettings.openTab('auth');
-
- await expect(collectionSettings.authField('username')).toHaveValue('admin');
- });
-});
diff --git a/packages/oc-docs/e2e/tests/environments/environments.spec.ts b/packages/oc-docs/e2e/tests/environments/environments.spec.ts
deleted file mode 100644
index 96b37866..00000000
--- a/packages/oc-docs/e2e/tests/environments/environments.spec.ts
+++ /dev/null
@@ -1,113 +0,0 @@
-import { test, expect } from '../../playwright';
-
-test.describe('Environments page', () => {
- test.beforeEach(async ({ environmentsPage }) => {
- await environmentsPage.open();
- });
-
- test('opens from the sidebar and shows a tab per environment', async ({ environmentsPage }) => {
- await expect(environmentsPage.title).toHaveText('Environments');
- await expect(environmentsPage.tabs).toHaveCount(2);
- await expect(environmentsPage.tab('Local')).toBeVisible();
- await expect(environmentsPage.tab('Prod')).toBeVisible();
- });
-
- test('selects the first environment by default', async ({ environmentsPage }) => {
- await expect(environmentsPage.tab('Local')).toHaveAttribute('aria-selected', 'true');
- await expect(environmentsPage.tab('Prod')).toHaveAttribute('aria-selected', 'false');
- });
-
- test('lists the active environment variables with their value and data type', async ({ environmentsPage }) => {
- const { table } = environmentsPage;
-
- await test.step('the Variables group is shown', async () => {
- await expect(environmentsPage.variablesGroup).toBeVisible();
- });
-
- await test.step('the host variable shows its value and a string data type', async () => {
- await expect(table.variableRow('host')).toBeVisible();
- await expect(table.valueOf('host')).toContainText('http://localhost:8081');
- await expect(table.dataTypeOf('host')).toHaveText('string');
- });
- });
-
- test('labels number, boolean and object variables with their data type', async ({ environmentsPage }) => {
- const { table } = environmentsPage;
-
- await test.step('a number variable shows its value and a number data type', async () => {
- await expect(table.valueOf('retryCount')).toContainText('3');
- await expect(table.dataTypeOf('retryCount')).toHaveText('number');
- });
-
- await test.step('a boolean variable shows a boolean data type', async () => {
- await expect(table.dataTypeOf('featureEnabled')).toHaveText('boolean');
- });
-
- await test.step('an object variable shows an object data type', async () => {
- await expect(table.dataTypeOf('defaultUser')).toHaveText('object');
- });
- });
-
- test('shows a "(Secret)" placeholder for a secret variable — display-only, never empty, no reveal toggle', async ({
- environmentsPage
- }) => {
- const { table } = environmentsPage;
- await expect(environmentsPage.secretVariablesGroup).toBeVisible();
-
- await expect(table.secretValueOf('bearer_auth_token')).toContainText('(Secret)');
- await expect(table.secretValueOf('bearer_auth_token')).not.toContainText('(empty)');
- await expect(table.secretRevealToggleOf('bearer_auth_token')).toHaveCount(0);
- });
-
- test('switches the table when another environment tab is selected', async ({ environmentsPage }) => {
- const { table } = environmentsPage;
-
- await expect(table.valueOf('host')).toContainText('http://localhost:8081');
-
- await environmentsPage.tab('Prod').click();
-
- await expect(environmentsPage.tab('Prod')).toHaveAttribute('aria-selected', 'true');
- await expect(table.valueOf('host')).toContainText('https://echo.usebruno.com');
- });
-
- test('renders an accessible columnar table with Name, Value and Data Type headers', async ({ environmentsPage }) => {
- const { table } = environmentsPage;
- await expect(table.columnHeader('name')).toHaveText('Name');
- await expect(table.columnHeader('value')).toHaveText('Value');
- await expect(table.columnHeader('type')).toHaveText('Data Type');
- });
-
- test('collapses the description row for variables that have no description', async ({ environmentsPage }) => {
- const { table } = environmentsPage;
-
- await expect(table.variableDescriptions).toBeHidden();
- await expect(table.secretVariableDescriptions).toBeHidden();
- });
-
- test('hides the External Secret Variables section when the environment has none', async ({ environmentsPage }) => {
- await expect(environmentsPage.tab('Local')).toHaveAttribute('aria-selected', 'true');
- await expect(environmentsPage.externalSecretsGroup).toBeHidden();
- });
-
- test('shows external secrets with the manager label and reference for the Prod environment', async ({
- environmentsPage
- }) => {
- const { table } = environmentsPage;
-
- await environmentsPage.tab('Prod').click();
-
- await test.step('the External Secret Variables group is shown with its manager', async () => {
- await expect(environmentsPage.externalSecretsGroup).toBeVisible();
- await expect(environmentsPage.externalSecretsGroup).toContainText('AWS Secrets Manager');
- });
-
- await test.step('each external secret lists its name and secret reference', async () => {
- await expect(table.externalSecretRow('dbPassword')).toContainText('prod/db/credentials');
- await expect(table.externalSecretRow('apiKey')).toContainText('prod/payment-gateway/api-key');
- });
-
- await test.step('external secrets without a type show an empty data type', async () => {
- await expect(table.externalSecretRow('dbPassword')).toContainText('(empty)');
- });
- });
-});
diff --git a/packages/oc-docs/e2e/tests/folder/folder.spec.ts b/packages/oc-docs/e2e/tests/folder/folder.spec.ts
deleted file mode 100644
index 87426ae5..00000000
--- a/packages/oc-docs/e2e/tests/folder/folder.spec.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-import { test, expect } from '../../playwright';
-
-test.describe('Folder page', () => {
- test('displays the folder name and how many requests it contains', async ({ folderPage }) => {
- await folderPage.open(['Realtime']);
- await expect(folderPage.title).toHaveText('Realtime');
- await expect(folderPage.requestCount).toHaveText('3 requests');
- });
-
- test('shows the "No folder configuration" empty state when the folder has no config', async ({ folderPage }) => {
- await folderPage.open(['Realtime']);
- await expect(folderPage.emptyState).toBeVisible();
- await expect(folderPage.emptyState).toContainText('No folder configuration');
- await expect(folderPage.configuration.root).toBeHidden();
- });
-
- test('renders the configuration with inherited auth and folder-level scripts', async ({ folderPage }) => {
- await folderPage.open(['billing']);
-
- await test.step('the configuration is shown instead of the empty state', async () => {
- await expect(folderPage.configuration.root).toBeVisible();
- await expect(folderPage.emptyState).toBeHidden();
- });
-
- await test.step('the auth group shows the inherited-from-collection badge', async () => {
- await expect(folderPage.configuration.auth).toBeVisible();
- await expect(folderPage.configuration.auth).toContainText('Inherited from collection');
- });
-
- await test.step('the script group is shown', async () => {
- await expect(folderPage.configuration.script).toBeVisible();
- });
- });
-
- test('shows the Tests group when the folder defines folder-scoped tests', async ({ folderPage }) => {
- await folderPage.open(['billing', 'customers']);
- await expect(folderPage.title).toHaveText('customers');
- await expect(folderPage.configuration.tests).toBeVisible();
- });
-
- test('renders the folder docs as markdown and collapses long content behind a "View more" toggle', async ({
- folderPage
- }) => {
- await folderPage.open(['billing']);
-
- await test.step('the markdown is rendered with formatting', async () => {
- await expect(folderPage.folderMarkdownDocs).toBeVisible();
- await expect(folderPage.folderMarkdownDocs).toContainText('Endpoints for managing');
- await expect(folderPage.folderMarkdownDocs.locator('strong').first()).toHaveText('customers');
- });
-
- await test.step('long docs collapse to a preview with a "View more" toggle', async () => {
- await expect(folderPage.folderMarkdownDocsToggle).toHaveText('View more');
- await folderPage.folderMarkdownDocsToggle.click();
- await expect(folderPage.folderMarkdownDocsToggle).toHaveText('View less');
- });
- });
-});
diff --git a/packages/oc-docs/e2e/tests/layout/page-header.spec.ts b/packages/oc-docs/e2e/tests/layout/page-header.spec.ts
deleted file mode 100644
index e5a74763..00000000
--- a/packages/oc-docs/e2e/tests/layout/page-header.spec.ts
+++ /dev/null
@@ -1,78 +0,0 @@
-import { test, expect } from '../../playwright';
-
-/**
- * The page header (sticky top navigation bar): brand cluster, Open-in-Bruno
- * CTA and theme toggle. These tests cover what the mounted app actually
- * renders — the search and env-switcher slots ship empty here, so they aren't
- * exercised in this suite.
- */
-test.use({ colorScheme: 'light' });
-
-const DESKTOP = { width: 1280, height: 900 };
-const MOBILE = { width: 390, height: 800 };
-
-test.describe('Page header', () => {
- test('shows brand (name + version) and a pinned bar', async ({ page, pageHeader }) => {
- await page.setViewportSize(DESKTOP);
- await page.goto('/');
-
- await expect(pageHeader.root).toBeVisible();
- await expect(pageHeader.brandName).toContainText('Bruno Testbench');
- await expect(pageHeader.brandVersion).toHaveText('Version : 1.0.0');
-
- // Sticky: header stays at the top after the page scrolls.
- await page.mouse.wheel(0, 600);
- const box = await pageHeader.root.boundingBox();
- if (box === null) throw new Error('header has no bounding box');
- expect(box.y).toBeLessThanOrEqual(1);
- });
-
- test('shows the initials avatar derived from the collection name', async ({ page, pageHeader }) => {
- await page.setViewportSize(DESKTOP);
- await page.goto('/');
-
- // sampleCollection name is "Bruno Testbench" → "BT".
- await expect(pageHeader.brandInitials).toBeVisible();
- await expect(pageHeader.brandInitials).toHaveText('BT');
- });
-
- test('shows the theme toggle in the header', async ({ page, themeToggle }) => {
- await page.setViewportSize(DESKTOP);
- await page.goto('/');
-
- await expect(themeToggle.button).toBeVisible();
- });
-
- test('shows the Open-in-Bruno CTA linking to Fetch-in-Bruno when the collection has a git url', async ({ page, pageHeader }) => {
- await page.setViewportSize(DESKTOP);
- await page.goto('/');
-
- await expect(pageHeader.openInBruno).toBeVisible();
- const href = await pageHeader.openInBruno.getAttribute('href');
- expect(href).toMatch(/^https:\/\/fetch\.usebruno\.com\?url=/);
- expect(await pageHeader.openInBruno.getAttribute('target')).toBe('_blank');
- expect(await pageHeader.openInBruno.getAttribute('rel')).toContain('noopener');
- });
-
- test('mobile condenses: hamburger shows, Open-in-Bruno becomes a glyph, brand compact', async ({ page, pageHeader }) => {
- await page.setViewportSize(MOBILE);
- await page.goto('/');
-
- // Below desktop the sidebar trigger appears.
- await expect(pageHeader.menuButton).toBeVisible();
- // Open-in-Bruno condenses to the Bruno glyph below the desktop layout (the
- // capability gate still hides it on real touch devices; this browser is
- // pointer-capable, so the glyph shows). No full "Open in Bruno" label.
- await expect(pageHeader.openInBruno).toBeVisible();
- await expect(pageHeader.openInBruno).toHaveClass(/is-icon/);
-
- // Compact brand: avatar + "Docs" only — no full name, no version.
- await expect(pageHeader.brandName).toHaveText('Docs');
- await expect(pageHeader.brandVersion).toHaveCount(0);
- await expect(pageHeader.root).not.toContainText('Bruno Testbench');
-
- // No horizontal overflow.
- const scrollW = await page.evaluate(() => document.documentElement.scrollWidth);
- expect(scrollW).toBeLessThanOrEqual(MOBILE.width + 1);
- });
-});
diff --git a/packages/oc-docs/e2e/tests/overview/overview-documentation.spec.ts b/packages/oc-docs/e2e/tests/overview/overview-documentation.spec.ts
deleted file mode 100644
index c60d13a3..00000000
--- a/packages/oc-docs/e2e/tests/overview/overview-documentation.spec.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-import { test, expect } from '../../playwright';
-
-test.describe('Overview documentation (rendered Markdown)', () => {
- test.beforeEach(async ({ overviewPage }) => {
- await overviewPage.goto();
- });
-
- test('renders the "Getting Started", "Authentication" and "Rate Limits" section headings', async ({ overviewPage }) => {
- const { docMarkdown } = overviewPage;
- await expect(docMarkdown.heading('Getting Started')).toBeVisible();
- await expect(docMarkdown.heading('Authentication')).toBeVisible();
- await expect(docMarkdown.heading('Rate Limits')).toBeVisible();
- });
-
- test('renders the intro paragraph and shows the product name "OpenCollection" in bold', async ({ overviewPage }) => {
- const { docMarkdown } = overviewPage;
- await expect(docMarkdown.paragraph('comprehensive API collection for testing')).toBeVisible();
- await expect(docMarkdown.boldText('OpenCollection')).toBeVisible();
- });
-
- test('renders the getting-started steps as an ordered list', async ({ overviewPage }) => {
- const { docMarkdown } = overviewPage;
- await expect(docMarkdown.numberedItem('Select an environment')).toBeVisible();
- await expect(docMarkdown.numberedItem('Try out the various API endpoints')).toBeVisible();
- await expect(docMarkdown.numberedItem('Check the response examples')).toBeVisible();
- });
-
- test('renders the environments table with its column headers and Local/Prod rows', async ({ overviewPage }) => {
- const { docMarkdown } = overviewPage;
- await expect(docMarkdown.table()).toBeVisible();
- await expect(docMarkdown.columnHeader('Environment')).toBeVisible();
- await expect(docMarkdown.columnHeader('Base URL')).toBeVisible();
- await expect(docMarkdown.columnHeader('Auth')).toBeVisible();
- await expect(docMarkdown.cell('Local')).toBeVisible();
- await expect(docMarkdown.cell('Prod')).toBeVisible();
- });
-
- test('renders the example request as a fenced code block', async ({ overviewPage }) => {
- await expect(overviewPage.docMarkdown.code('curl -H')).toBeVisible();
- });
-});
diff --git a/packages/oc-docs/e2e/tests/overview/overview.spec.ts b/packages/oc-docs/e2e/tests/overview/overview.spec.ts
deleted file mode 100644
index 853f94e3..00000000
--- a/packages/oc-docs/e2e/tests/overview/overview.spec.ts
+++ /dev/null
@@ -1,123 +0,0 @@
-import { test, expect } from '../../playwright';
-import type { Locator } from '@playwright/test';
-
-const boundingBoxOf = async (locator: Locator) => {
- const box = await locator.boundingBox();
- if (box === null) throw new Error('expected the element to have a bounding box');
- return box;
-};
-
-test.describe('Collection Overview', () => {
- test.beforeEach(async ({ overviewPage }) => {
- await overviewPage.goto();
- });
-
- test('header shows the collection version ("Version : 1.0.0") and name ("Bruno Testbench")', async ({ overviewPage }) => {
- await test.step('the raw version is shown, unformatted', async () => {
- await expect(overviewPage.header.collectionVersion).toHaveText('Version : 1.0.0');
- });
-
- await test.step('the collection name is shown as the page title', async () => {
- await expect(overviewPage.header.collectionName).toHaveText('Bruno Testbench');
- });
- });
-
- test('shows three stat cards with the request (41), folder (7) and environment (2) counts', async ({ overviewPage }) => {
- await expect(overviewPage.stats.cards).toHaveCount(3);
- await expect(overviewPage.stats.valueFor('Requests')).toHaveText('41');
- await expect(overviewPage.stats.valueFor('Folders')).toHaveText('7');
- await expect(overviewPage.stats.valueFor('Environments')).toHaveText('2');
- });
-
- test('renders the collection documentation under the "Overview" section', async ({ overviewPage }) => {
- await expect(overviewPage.sectionLabel('Overview')).toBeVisible();
- await expect(overviewPage.docMarkdown.root).toBeVisible();
- await expect(overviewPage.docMarkdown.heading('Getting Started')).toBeVisible();
- });
-
- test.describe('Collection Configuration', () => {
- test('shows the Headers, Auth, Variables, Script and Tests groups with their values', async ({ overviewPage }) => {
- const { configuration } = overviewPage;
- await expect(overviewPage.sectionLabel('Collection Configuration')).toBeVisible();
-
- await test.step('the Headers group lists the collection-level header and its value', async () => {
- await expect(configuration.subHeading('Headers')).toBeVisible();
- await expect(configuration.root.getByText('collection-header-value')).toBeVisible();
- });
-
- await test.step('the Auth group shows the resolved auth mode (Bearer Token)', async () => {
- await expect(configuration.subHeading('Auth')).toBeVisible();
- await expect(configuration.root.getByText('Bearer Token')).toBeVisible();
- });
-
- await test.step('the Variables group lists the collection-level pre-request variables', async () => {
- await expect(configuration.subHeading('Variables')).toBeVisible();
- await expect(configuration.root.getByText('collection_pre_var_value', { exact: true })).toBeVisible();
- await expect(configuration.root.getByText('collection-var-value', { exact: true })).toBeVisible();
- });
-
- await test.step('the Script and Tests groups are present', async () => {
- await expect(configuration.subHeading('Script')).toBeVisible();
- await expect(configuration.subHeading('Tests')).toBeVisible();
- });
- });
-
- test('keeps the auth token masked until the reveal toggle is clicked', async ({ overviewPage }) => {
- const { secret } = overviewPage.configuration;
-
- await test.step('the token is shown as stars, not the raw value', async () => {
- await expect(secret.value).toContainText('*');
- await expect(secret.value).not.toHaveText('{{bearer_auth_token}}');
- });
-
- await test.step('clicking the reveal toggle shows the raw token', async () => {
- await secret.toggleReveal();
- await expect(secret.value).toHaveText('{{bearer_auth_token}}');
- });
- });
-
- test('copies a config code snippet and confirms with a "Copied" label', async ({ overviewPage, context }) => {
- await context.grantPermissions(['clipboard-read', 'clipboard-write']);
- const { configuration } = overviewPage;
-
- await test.step('clicking the copy button switches its label to "Copied"', async () => {
- await configuration.copyToClipboard();
- await expect(configuration.copyButton).toHaveAttribute('aria-label', 'Copied');
- });
- });
- });
-
- test('mobile: every Disabled chip stays pinned at the row end without overflowing', async ({ overviewPage, page }) => {
- await page.setViewportSize({ width: 360, height: 800 });
- const { configuration } = overviewPage;
-
- const rows = configuration.disabledRows;
- const count = await rows.count();
- expect(count).toBeGreaterThan(0);
-
- const card = await boundingBoxOf(configuration.root);
-
- for (let i = 0; i < count; i += 1) {
- const row = rows.nth(i);
- const value = row.getByTestId('property-value');
- const chip = await boundingBoxOf(row.getByTestId('disabled-badge'));
- const valueBox = await boundingBoxOf(value);
-
- await test.step(`row ${i}: the chip sits at the end — to the right of the value`, () => {
- expect(chip.x).toBeGreaterThanOrEqual(valueBox.x + valueBox.width);
- });
-
- await test.step(`row ${i}: the chip stays within the config card, never clipped or overflowing`, () => {
- expect(chip.x + chip.width).toBeLessThanOrEqual(card.x + card.width);
- });
-
- await test.step(`row ${i}: the value keeps its truncation styling, so a long value ellipsizes rather than pushing the chip off`, async () => {
- const style = await value.evaluate((el) => {
- const cs = getComputedStyle(el);
- return { overflow: cs.overflow, textOverflow: cs.textOverflow, whiteSpace: cs.whiteSpace };
- });
- expect(style).toEqual({ overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' });
- });
- }
- });
-});
diff --git a/packages/oc-docs/e2e/tests/playground/dropdown-stacking.spec.ts b/packages/oc-docs/e2e/tests/playground/dropdown-stacking.spec.ts
deleted file mode 100644
index 15d3ae0e..00000000
--- a/packages/oc-docs/e2e/tests/playground/dropdown-stacking.spec.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-import { test, expect } from '../../playwright';
-import { EnvSwitcherComponent } from '../../components/layout/env-switcher.component';
-import type { Locator } from '@playwright/test';
-
-/**
- * Regression: the environment selector dropdown must stack above the playground
- * docks in every dock mode. Its menu is portaled to with --z-popover so
- * it clears the docks (all at or below --z-modal). We assert not just visibility
- * but that the option is the topmost element at its own centre — a menu hidden
- * behind a dock is "visible" to the DOM but not the hit-test.
- */
-
-const DESKTOP = { width: 1280, height: 900 };
-
-const isTopmost = async (option: Locator): Promise => {
- const box = await option.boundingBox();
- if (!box) return false;
- const x = box.x + box.width / 2;
- const y = box.y + box.height / 2;
- return option.page().evaluate(
- ({ x, y }) => {
- const el = document.elementFromPoint(x, y);
- return !!el?.closest('[role="menu"]');
- },
- { x, y }
- );
-};
-
-test.describe('env selector dropdown stacks above the docks', () => {
- test.use({ viewport: DESKTOP });
-
- for (const dock of ['inline', 'bottom'] as const) {
- test(`top-nav env dropdown clears the ${dock} dock`, async ({ page, playground }) => {
- await playground.open(dock);
- await expect(playground.panel(dock)).toBeVisible();
-
- const envSwitcher = new EnvSwitcherComponent(page);
- await envSwitcher.open();
-
- await expect(envSwitcher.menu).toBeVisible();
- await expect(envSwitcher.option('Prod')).toBeVisible();
- expect(await isTopmost(envSwitcher.option('Prod'))).toBe(true);
- });
- }
-
- test('playground env dropdown clears the modal dock', async ({ page, playground }) => {
- await playground.open('modal');
- await expect(playground.modalPanel).toBeVisible();
-
- // The playground env switcher lives in the playground sidebar, so it must be
- // on screen before we can open it.
- await expect(playground.sidebarPanel).toBeVisible();
-
- const envSwitcher = new EnvSwitcherComponent(page, 'playground-env-switcher');
- await envSwitcher.open();
-
- await expect(envSwitcher.menu).toBeVisible();
- await expect(envSwitcher.option('Prod')).toBeVisible();
- expect(await isTopmost(envSwitcher.option('Prod'))).toBe(true);
- });
-});
diff --git a/packages/oc-docs/e2e/tests/playground/editor-fill-height.spec.ts b/packages/oc-docs/e2e/tests/playground/editor-fill-height.spec.ts
deleted file mode 100644
index 4e8e4002..00000000
--- a/packages/oc-docs/e2e/tests/playground/editor-fill-height.spec.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-import type { Locator } from '@playwright/test';
-import { test, expect } from '../../playwright';
-
-// The Body / Tests / Scripts editors in the request pane opt into `fillHeight`, so they stretch to
-// fill the pane and stop ~1rem above its bottom, instead of a short fixed-height box that either
-// leaves a large empty area or overflows the pane. We assert the editor's bottom sits just above
-// the view's bottom: a fixed-height editor in this dock would overflow (negative gap) or fall well
-// short (large gap).
-async function expectFillsPane(editor: Locator, view: Locator): Promise {
- await expect(editor).toBeVisible();
- const gapBelow = async (): Promise => {
- const e = await editor.boundingBox();
- const v = await view.boundingBox();
- if (!e || !v) return Number.NaN;
- return Math.round(v.y + v.height - (e.y + e.height));
- };
- // Monaco relays out after the tab becomes active; retry until the gap settles to ~1rem.
- await expect.poll(gapBelow, { message: 'editor should fill to ~1rem above the pane bottom' }).toBeLessThanOrEqual(48);
- expect(await gapBelow()).toBeGreaterThanOrEqual(4);
-
- const editorBox = await editor.boundingBox();
- expect(editorBox!.height).toBeGreaterThan(40);
-}
-
-test.describe('Playground request editors fill height', () => {
- // A wide viewport keeps the request-pane tabs on one row (no responsive "⋯" overflow),
- // so selecting Body/Tests/Scripts is a direct click rather than a flaky dropdown step.
- test.use({ viewport: { width: 1600, height: 900 } });
-
- test.beforeEach(async ({ playground }) => {
- await playground.open('bottom');
- await playground.openRequest('echo json');
- });
-
- test('body editor fills the request pane', async ({ playground }) => {
- await playground.selectTab('body');
- await expectFillsPane(playground.bodyEditor.root, playground.view);
- });
-
- test('tests editor fills the request pane', async ({ playground }) => {
- await playground.selectTab('tests');
- await expectFillsPane(playground.testsEditor.root, playground.view);
- });
-
- test('pre-request script editor fills the request pane', async ({ playground }) => {
- await playground.selectTab('scripts');
- await expectFillsPane(playground.preRequestScriptEditor.root, playground.view);
- });
-});
diff --git a/packages/oc-docs/e2e/tests/playground/env-add-variable.spec.ts b/packages/oc-docs/e2e/tests/playground/env-add-variable.spec.ts
deleted file mode 100644
index cdaea6bc..00000000
--- a/packages/oc-docs/e2e/tests/playground/env-add-variable.spec.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-import { test, expect } from '../../playwright';
-
-test.describe('Environment variables — adding rows (card view)', () => {
- test.use({ viewport: { width: 1400, height: 900 } });
-
- test('a filled name and value in the trailing blank card adds a new variable row', async ({ playground, envEditor }) => {
- await playground.open('inline');
- await playground.openEnvironments();
-
- await expect(envEditor.nameInputs.first()).toBeVisible();
- const before = await envEditor.nameInputs.count();
-
- await envEditor.nameInputs.last().fill('newVariable');
- await expect(envEditor.nameInputs).toHaveCount(before);
-
- await envEditor.valueInputs.last().fill('newValue');
- await expect(envEditor.nameInputs).toHaveCount(before + 1);
- await expect(envEditor.nameInputs.nth(before - 1)).toHaveValue('newVariable');
- await expect(envEditor.valueInputs.nth(before - 1)).toHaveValue('newValue');
- });
-
- test('toggling a variable checkbox enables/disables its card', async ({ playground, envEditor }) => {
- await playground.open('inline');
- await playground.openEnvironments();
-
- const toggle = envEditor.enableToggle('host');
- const card = envEditor.cardFor('host');
- const disabled = /(^|\s)disabled(\s|$)/;
-
- await expect(toggle).toBeChecked();
- await expect(card).not.toHaveClass(disabled);
-
- await toggle.uncheck();
- await expect(toggle).not.toBeChecked();
- await expect(card).toHaveClass(disabled);
-
- await toggle.check();
- await expect(toggle).toBeChecked();
- await expect(card).not.toHaveClass(disabled);
- });
-});
diff --git a/packages/oc-docs/e2e/tests/playground/keyvalue-table.spec.ts b/packages/oc-docs/e2e/tests/playground/keyvalue-table.spec.ts
deleted file mode 100644
index fa98c474..00000000
--- a/packages/oc-docs/e2e/tests/playground/keyvalue-table.spec.ts
+++ /dev/null
@@ -1,74 +0,0 @@
-import { test, expect } from '../../playwright';
-
-test.describe('KeyValueTable — tooltips & mobile scroll', () => {
- test.beforeEach(async ({ page, playground }) => {
- await page.goto('/#/?pg=1&dock=bottom');
- await playground.openSidebarItem('get users');
- await playground.selectTab('headers');
- await expect(playground.keyValueTable.root).toBeVisible();
- });
-
- test('a typed cell carries a native title tooltip with its full value', async ({ page, playground }) => {
- const { keyValueTable } = playground;
- const nameInput = keyValueTable.nameInputs.first();
- await nameInput.click();
- await page.keyboard.type('-A-Very-Long-Custom-Header-Name-That-Truncates');
- // The full value is exposed as a native title tooltip so a truncated cell stays readable.
- const value = await nameInput.inputValue();
- expect(value.length).toBeGreaterThan(0);
- await expect(nameInput).toHaveAttribute('title', value);
- });
-
- test('the table has a min-width and a horizontally-scrollable container', async ({ page, playground }) => {
- const { keyValueTable } = playground;
- await expect(keyValueTable.container).toHaveCSS('overflow-x', 'auto');
- await expect(keyValueTable.table).toHaveCSS('min-width', '448px'); // 28rem @16px
-
- // Narrow the viewport below the min-width → the container actually overflows and scrolls.
- await page.setViewportSize({ width: 360, height: 800 });
- const overflows = await keyValueTable.container.evaluate((el) => el.scrollWidth > el.clientWidth + 1);
- expect(overflows).toBe(true);
- });
-
- test('offers {{variable}} autocomplete in the value cell but not the name cell', async ({ page, playground }) => {
- const { keyValueTable } = playground;
- // Value cell: a `{{` reference surfaces the collection's variables.
- await keyValueTable.valueInputs.last().click();
- await page.keyboard.type('{{coll');
- await expect(keyValueTable.autocomplete).toBeVisible();
-
- await page.keyboard.press('Escape');
- await expect(keyValueTable.autocomplete).toHaveCount(0);
-
- // Name cell: the same reference must not open the dropdown — the app only
- // autocompletes variables in value cells, never in param/variable name cells.
- await keyValueTable.nameInputs.last().click();
- await page.keyboard.type('{{coll');
- await page.waitForTimeout(250);
- await expect(keyValueTable.autocomplete).toHaveCount(0);
- });
-
- test('flags a header name that contains a space with an inline error', async ({ page, playground }) => {
- const { keyValueTable } = playground;
- await keyValueTable.nameInputs.last().click();
- await page.keyboard.type('Bad Name');
- const error = keyValueTable.cellErrors.first();
- await expect(error).toBeVisible();
- await expect(error).toHaveAttribute('aria-label', 'Header name cannot contain spaces or newlines');
- });
-
- test('a named row can be enabled and disabled via its checkbox', async ({ playground }) => {
- const { keyValueTable } = playground;
- // The trailing blank row has no checkbox; naming a row promotes it to a real row with one.
- await keyValueTable.nameInputs.last().fill('X-Custom');
-
- const toggle = keyValueTable.enableToggle('X-Custom');
- await expect(toggle).toBeChecked();
-
- await toggle.uncheck();
- await expect(toggle).not.toBeChecked();
-
- await toggle.check();
- await expect(toggle).toBeChecked();
- });
-});
diff --git a/packages/oc-docs/e2e/tests/playground/playground-examples.spec.ts b/packages/oc-docs/e2e/tests/playground/playground-examples.spec.ts
deleted file mode 100644
index 0056ddba..00000000
--- a/packages/oc-docs/e2e/tests/playground/playground-examples.spec.ts
+++ /dev/null
@@ -1,104 +0,0 @@
-import { test, expect } from '../../playwright';
-
-const openAt = (dock: string): string => `/#/?pg=1&dock=${dock}`;
-const LIST_USERS_EXAMPLE = 'List Users';
-const LIST_USERS_SLUG = 'list-users';
-const UNAUTHORIZED_EXAMPLE = 'Unauthorized';
-
-test.describe('Playground - Examples', () => {
- test.beforeEach(async ({ page }) => {
- await page.goto(openAt('bottom'));
- });
-
- test('expanding a request in the sidebar reveals its examples', async ({ playground }) => {
- await expect(playground.exampleToggle('get users')).toBeVisible();
- await expect(playground.exampleRow(LIST_USERS_EXAMPLE)).toHaveCount(0);
-
- await playground.exampleToggle('get users').click();
-
- await expect(playground.exampleRow(LIST_USERS_EXAMPLE)).toBeVisible();
- await expect(playground.exampleRow(UNAUTHORIZED_EXAMPLE)).toBeVisible();
- });
-
- test('selecting an example shows a read-only example view with the expected status', async ({ playground }) => {
- await playground.exampleToggle('get users').click();
- await playground.exampleRow(LIST_USERS_EXAMPLE).click();
-
- const exampleView = playground.exampleView;
- await expect(exampleView).toBeVisible();
- await expect(exampleView).toContainText('200');
- await expect(exampleView).toContainText('OK');
-
- // Only the example row is highlighted, not its parent request row.
- await expect(playground.exampleRow(LIST_USERS_EXAMPLE)).toHaveClass(/active/);
- await expect(playground.treeItems.filter({ hasText: 'get users' })).not.toHaveClass(/active/);
- await expect(playground.exampleViewRequest).toBeVisible();
- await expect(playground.exampleViewResponse).toBeVisible();
-
- // Read-only: no editable form controls anywhere in the example view.
- await expect(playground.exampleViewControls).toHaveCount(0);
- });
-
- test('switching to another example updates the view to its own status and stays read-only', async ({ playground }) => {
- await playground.exampleToggle('get users').click();
- await playground.exampleRow(UNAUTHORIZED_EXAMPLE).click();
-
- const exampleView = playground.exampleView;
- await expect(exampleView).toContainText('401');
- await expect(exampleView).toContainText('Unauthorized');
- await expect(playground.exampleViewControls).toHaveCount(0);
- });
-
- test('deep-links the example: pgEx in the url, reload restores the example view', async ({ page, playground }) => {
- await playground.exampleToggle('get users').click();
- await playground.exampleRow(LIST_USERS_EXAMPLE).click();
- await expect(playground.exampleView).toBeVisible();
- await expect(page).toHaveURL(new RegExp(`[?&]pgEx=${LIST_USERS_SLUG}(?:&|$)`));
-
- await page.reload();
- await expect(playground.exampleView).toBeVisible();
- await expect(playground.exampleView).toContainText('200');
- });
-
- test('an unknown example slug in the url falls back to the live request and stays open', async ({ page, playground }) => {
- // Open a real example to obtain its request slug, then swap in a bogus pgEx.
- await playground.exampleToggle('get users').click();
- await playground.exampleRow(LIST_USERS_EXAMPLE).click();
- await expect(playground.exampleView).toBeVisible();
-
- const stale = page.url().replace(`pgEx=${LIST_USERS_SLUG}`, 'pgEx=does-not-exist');
- await page.goto(stale);
-
- // Unmatched example: no example view, the live request opens instead, no crash.
- await expect(playground.runner).toBeVisible();
- await expect(playground.exampleView).toHaveCount(0);
- await expect(page).toHaveURL(/[?&]pgReq=/);
- });
-
- test('switching docks keeps the example view and its pgEx in the url', async ({ page, playground }) => {
- await playground.exampleToggle('get users').click();
- await playground.exampleRow(LIST_USERS_EXAMPLE).click();
- await expect(playground.exampleView).toBeVisible();
- await expect(page).toHaveURL(new RegExp(`[?&]pgEx=${LIST_USERS_SLUG}(?:&|$)`));
-
- // A dock switch is presentation only: the example must survive it.
- await playground.selectDock('modal');
- await expect(playground.panel('modal')).toBeVisible();
- await expect(playground.exampleView).toBeVisible();
- await expect(playground.exampleView).toContainText('200');
- await expect(page).toHaveURL(new RegExp(`[?&]pgEx=${LIST_USERS_SLUG}(?:&|$)`));
- });
-
- test('browser back and forward move between examples in the playground', async ({ page, playground }) => {
- await playground.exampleToggle('get users').click();
- await playground.exampleRow(LIST_USERS_EXAMPLE).click();
- await expect(playground.exampleView).toContainText('200');
- await playground.exampleRow(UNAUTHORIZED_EXAMPLE).click();
- await expect(playground.exampleView).toContainText('401');
-
- await page.goBack();
- await expect(playground.exampleView).toContainText('200');
- await page.goForward();
- await expect(playground.exampleView).toContainText('401');
- });
-});
diff --git a/packages/oc-docs/e2e/tests/playground/playground-mobile.spec.ts b/packages/oc-docs/e2e/tests/playground/playground-mobile.spec.ts
deleted file mode 100644
index 0957c2ef..00000000
--- a/packages/oc-docs/e2e/tests/playground/playground-mobile.spec.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-import { test, expect } from '../../playwright';
-
-// A phone user agent flips useIsMobilePhone to true (it reads navigator.userAgent,
-// not the viewport). The viewport is set to a phone size for realism.
-const IPHONE_UA =
- 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1';
-
-// The dock param is ignored on a phone (MobileDock renders regardless); a
-// non-default dock is used here to prove it is overridden.
-const OPEN_ON_PHONE = '/#/?pg=1&dock=bottom';
-
-test.describe('playground on a phone', () => {
- test.use({ userAgent: IPHONE_UA, viewport: { width: 390, height: 844 } });
-
- test('opens fullscreen with no dock switcher or collapse', async ({ page, playground }) => {
- await page.goto(OPEN_ON_PHONE);
- await expect(playground.mobilePanel).toBeVisible();
- await expect(playground.runner).toBeVisible();
- await expect(playground.switcher).toHaveCount(0);
- await expect(playground.collapseButton).toHaveCount(0);
- await expect(playground.sidebarToggle).toBeVisible();
- await expect(playground.closeButton).toBeVisible();
- // The desktop dock shells never mount on a phone.
- await expect(playground.bottomPanel).toHaveCount(0);
- });
-
- test('sidebar is an overlay: starts closed, opens on toggle, closes on navigate', async ({ page, playground }) => {
- await page.goto(OPEN_ON_PHONE);
- await expect(playground.mobilePanel).toBeVisible();
- await expect(playground.sidebarPanel).toHaveCount(0);
-
- await playground.sidebarToggle.click();
- await expect(playground.sidebarPanel).toBeVisible();
-
- // Opening the environments view is a navigate; the overlay sidebar closes.
- await playground.gear.click();
- await expect(playground.sidebarPanel).toHaveCount(0);
- });
-
- test('closes from the header and clears the url state', async ({ page, playground }) => {
- await page.goto(OPEN_ON_PHONE);
- await expect(playground.mobilePanel).toBeVisible();
-
- await playground.close();
- await expect(playground.header).toHaveCount(0);
- await expect(page).toHaveURL(/#\/$/);
- });
-});
diff --git a/packages/oc-docs/e2e/tests/playground/playground-tabs.spec.ts b/packages/oc-docs/e2e/tests/playground/playground-tabs.spec.ts
deleted file mode 100644
index 33377ddb..00000000
--- a/packages/oc-docs/e2e/tests/playground/playground-tabs.spec.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { test, expect } from '../../playwright';
-
-test.describe('Playground request tabs — responsive overflow', () => {
- test.use({ viewport: { width: 900, height: 800 } });
-
- test('collapses overflowing tabs into a ⋯ dropdown and selects from it', async ({ page, playground }) => {
- await playground.open('bottom');
- await playground.openRequest('get users');
-
- await expect(page.getByTestId('tabs-more')).toBeVisible();
-
- await playground.selectTab('tests');
- await expect(page.getByTestId('tabs-tab-tests')).toHaveAttribute('aria-selected', 'true');
- });
-});
diff --git a/packages/oc-docs/e2e/tests/playground/playground.spec.ts b/packages/oc-docs/e2e/tests/playground/playground.spec.ts
deleted file mode 100644
index d20af77b..00000000
--- a/packages/oc-docs/e2e/tests/playground/playground.spec.ts
+++ /dev/null
@@ -1,289 +0,0 @@
-import { test, expect } from '../../playwright';
-
-const DESKTOP = { width: 1280, height: 900 };
-const openAt = (dock: string, pgReq?: string): string =>
- `/#/?pg=1&dock=${dock}${pgReq ? `&pgReq=${pgReq}` : ''}`;
-
-test.describe('playground docks (desktop)', () => {
- test.use({ viewport: DESKTOP });
-
- test('opens in the bottom dock from a deep link and embeds the playground', async ({ page, playground }) => {
- await page.goto(openAt('bottom'));
- await expect(playground.header).toBeVisible();
- await expect(playground.bottomPanel).toBeVisible();
- await expect(playground.runner).toBeVisible();
- });
-
- test('switches between docks from the switcher and marks the active one', async ({ page, playground }) => {
- await page.goto(openAt('bottom'));
- await expect(playground.dockButton('bottom')).toHaveClass(/active/);
-
- await playground.selectDock('inline');
- await expect(playground.inlinePanel).toBeVisible();
- await expect(playground.dockButton('inline')).toHaveClass(/active/);
-
- await playground.selectDock('modal');
- await expect(playground.modalPanel).toBeVisible();
- await expect(playground.dockButton('modal')).toHaveClass(/active/);
- });
-
- test('inline dock reflows alongside the docs sidebar and content', async ({ page, playground, sidebar }) => {
- // Wide viewport so the docs column stays >=1024 (desktop) alongside the
- // inline dock; at narrower widths the docs sidebar collapses to a drawer.
- await page.setViewportSize({ width: 1920, height: 900 });
- await page.goto(openAt('inline'));
- await expect(sidebar.inline).toBeVisible();
- await expect(page.getByTestId('page')).toBeVisible();
- await expect(playground.inlinePanel).toBeVisible();
- });
-
- test('closes from the header and clears the url state', async ({ page, playground }) => {
- await page.goto(openAt('bottom'));
- await expect(playground.bottomPanel).toBeVisible();
-
- await playground.close();
- await expect(playground.header).toHaveCount(0);
- await expect(page).toHaveURL(/#\/$/);
- });
-
- test('collapses the bottom dock to its header, then restores it', async ({ page, playground }) => {
- await page.goto(openAt('bottom'));
- await expect(playground.content).toBeVisible();
-
- await playground.toggleCollapse();
- await expect(playground.content).toHaveCount(0);
- await expect(playground.header).toBeVisible();
-
- await playground.toggleCollapse();
- await expect(playground.content).toBeVisible();
- });
-
- test('opens from the Try button and embeds the playground', async ({ requestPage, playground, page }) => {
- await requestPage.open(['billing', 'customers', 'Get Customers - Filter by Date Range']);
- await requestPage.urlBar.tryButton.click();
- await expect(playground.header).toBeVisible();
- await expect(page).toHaveURL(/pg=1/);
- await expect(playground.runner).toBeVisible();
- });
-
- // Regression: reopening a request after navigating away from it (to the gear /
- // Environments) then closing must re-apply the request, not reopen on the
- // stale Environments/empty view. The applied-slug guard has to reset on close.
- test('reopening a request after leaving it for Environments shows the request again', async ({
- requestPage,
- playground,
- }) => {
- await requestPage.open(['billing', 'customers', 'Get Customers - Filter by Date Range']);
-
- // Open request A in the playground.
- await requestPage.urlBar.tryButton.click();
- await expect(playground.view).toContainText('Get Customers');
-
- // Leave it: open the Environments view via the gear.
- await playground.gear.click();
- await expect(playground.view).toContainText('Environments');
-
- // Close, then reopen the SAME request in-session (no reload) via Try.
- await playground.close();
- await expect(playground.header).toHaveCount(0);
- await requestPage.urlBar.tryButton.click();
-
- // It must show request A again, not the Environments view it was left on.
- await expect(playground.header).toBeVisible();
- await expect(playground.view).toContainText('Get Customers');
- await expect(playground.view).not.toContainText('Environments');
- });
-
- test('sidebar shows the collection node, env switcher, gear and tree', async ({ page, playground }) => {
- await page.goto(openAt('bottom'));
- await expect(playground.sidebarPanel).toBeVisible();
- await expect(playground.collectionNode).toBeVisible();
- await expect(playground.envSwitcher).toBeVisible();
- await expect(playground.gear).toBeVisible();
- await expect(playground.treeItems.first()).toBeVisible();
- });
-
- test('header toggle hides and restores the playground sidebar', async ({ page, playground }) => {
- await page.goto(openAt('bottom'));
- await expect(playground.sidebarPanel).toBeVisible();
- await expect(playground.sidebarToggle).toHaveAttribute('aria-pressed', 'true');
- await playground.sidebarToggle.click();
- await expect(playground.sidebarPanel).toHaveCount(0);
- await expect(playground.sidebarToggle).toHaveAttribute('aria-pressed', 'false');
- await playground.sidebarToggle.click();
- await expect(playground.sidebarPanel).toBeVisible();
- await expect(playground.sidebarToggle).toHaveAttribute('aria-pressed', 'true');
- });
-
- test('clicking a request in the sidebar loads it, gear opens environments', async ({ page, playground }) => {
- await page.goto(openAt('bottom'));
- await playground.treeItems.filter({ hasText: 'get users' }).first().click();
- await expect(page).toHaveURL(/pgReq=/);
- await expect(playground.view).toContainText('get users');
-
- await playground.gear.click();
- await expect(playground.view).toContainText('Environments');
- });
-
- test('clicking the collection root opens the collection view', async ({ page, playground }) => {
- await page.goto(openAt('bottom'));
- await playground.collectionRootLink.click();
- await expect(playground.view).toContainText(/Overview|Headers|Vars|Auth|Scripts|Tests/);
- });
-
- // Clicking a folder row opens its settings AND expands it in the tree (matches
- // docs), so its children become visible; the chevron alone toggles collapse.
- test('clicking a folder opens its settings and expands it in the tree', async ({ page, playground }) => {
- await page.goto(openAt('bottom'));
- await expect(playground.sidebarPanel).toBeVisible();
- // customers is nested under the collapsed billing folder, so it is hidden.
- await expect(playground.treeItems.filter({ hasText: /^customers$/ })).toHaveCount(0);
- await playground.treeItems.filter({ hasText: /^billing$/ }).first().click();
- // billing expands: its child folder is revealed and the URL carries the folder.
- await expect(playground.treeItems.filter({ hasText: /^customers$/ }).first()).toBeVisible();
- await expect(page).toHaveURL(/pgReq=billing(?!%2F)/);
- });
-
- // Clicking the collection root re-expands the tree too, not just opens the view.
- test('clicking the collection root re-expands the tree', async ({ page, playground }) => {
- await page.goto(openAt('bottom'));
- await expect(playground.sidebarPanel).toBeVisible();
- // Collapse the collection from its chevron -> top-level items disappear.
- await playground.collectionCollapseToggle.click();
- await expect(playground.treeItems.filter({ hasText: /^billing$/ })).toHaveCount(0);
- // Clicking the root row brings the tree back and shows the collection view.
- await playground.collectionRootLink.click();
- await expect(playground.treeItems.filter({ hasText: /^billing$/ }).first()).toBeVisible();
- await expect(playground.view).toContainText(/Overview|Headers|Vars|Auth|Scripts|Tests/);
- });
-
- // Regression: an example keeps the URL slug on its parent request, so clicking
- // that request row must still leave the example and show the request view.
- test('clicking a request while its example is open returns to the request view', async ({ page, playground }) => {
- await page.goto(openAt('bottom', 'billing/customers/get-all-customers'));
- await expect(playground.sidebarPanel).toBeVisible();
- // Open the request's examples and select one -> example view.
- await playground.exampleToggle('Get All Customers').click();
- await playground.exampleRow('200 OK - first page').click();
- await expect(playground.exampleView).toBeVisible();
- // Clicking the parent request row leaves the example for the request view,
- // even though the URL slug stays on that same request.
- await playground.treeItems.filter({ hasText: 'Get All Customers' }).first().click();
- await expect(playground.exampleView).toHaveCount(0);
- await expect(playground.view).toContainText('Get All Customers');
- });
-
- test('inline dock: sidebar is closed by default and overlays the view when opened', async ({ page, playground }) => {
- await page.goto(openAt('inline'));
- await expect(playground.sidebarPanel).toHaveCount(0); // closed by default in inline
- await playground.sidebarToggle.click(); // open it as an overlay
- await expect(playground.sidebarPanel).toBeVisible();
- await expect(playground.view).toBeVisible();
- const viewBox = await playground.view.boundingBox();
- const sideBox = await playground.sidebarPanel.boundingBox();
- // overlay: sidebar starts at (or within 5px of) the view's left edge, not to its left
- expect(sideBox!.x).toBeLessThanOrEqual(viewBox!.x + 5);
- expect(viewBox!.x).toBeLessThanOrEqual(sideBox!.x + 5);
- });
-
- test('inline dock: clicking outside the overlay sidebar closes it', async ({ page, playground }) => {
- await page.goto(openAt('inline'));
- await playground.sidebarToggle.click();
- await expect(playground.sidebarPanel).toBeVisible();
- // Click the view area outside the sidebar (its backdrop), mirroring the docs
- // navigation drawer: an outside click dismisses the overlay. The backdrop
- // spans the whole dock from its left edge, so click just past the sidebar's
- // right edge to land on the exposed view area, not the panel.
- const side = await playground.sidebarPanel.boundingBox();
- await playground.sidebarBackdrop.click({ position: { x: side!.width + 40, y: 30 } });
- await expect(playground.sidebarPanel).toHaveCount(0);
- });
-
- test('inline dock: clicking outside the playground closes the overlay sidebar', async ({ page, playground }) => {
- // Wide viewport so the docs column stays desktop and is clickable to the
- // left of the inline dock (rather than collapsing to a drawer).
- await page.setViewportSize({ width: 1920, height: 900 });
- await page.goto(openAt('inline'));
- await playground.sidebarToggle.click();
- await expect(playground.sidebarPanel).toBeVisible();
- // Click the docs page, entirely outside the playground dock.
- await page.getByTestId('page').click({ position: { x: 100, y: 300 } });
- await expect(playground.sidebarPanel).toHaveCount(0);
- });
-
- test('inline dock: selecting a request auto-closes the overlay sidebar', async ({ page, playground }) => {
- await page.goto(openAt('inline'));
- await playground.sidebarToggle.click();
- await expect(playground.sidebarPanel).toBeVisible();
- await playground.treeItems.filter({ hasText: 'get users' }).first().click();
- await expect(playground.sidebarPanel).toHaveCount(0); // auto-closed on select
- await expect(playground.view).toContainText('get users');
- });
-
- test('request and response stack when the playground is narrow and sit side-by-side when wide', async ({ page, playground }) => {
- // bottom dock is full width -> side by side
- await page.goto(openAt('bottom'));
- await playground.treeItems.filter({ hasText: 'get users' }).first().click();
- // assert horizontal: playground view is visible and rendered without error
- await expect(page.getByTestId('playground-view')).toBeVisible();
-
- // inline dock (narrowest placement) -> stacked orientation when viewport is narrow
- await playground.selectDock('inline');
- await expect(page.getByTestId('playground-view')).toBeVisible();
- });
-
- test('playground stays open when navigating docs pages', async ({ page, playground }) => {
- // Inline dock keeps the playground on the right, so the docs sidebar on the
- // left is unobstructed (the bottom dock would overlap the lower tree rows).
- // Wide viewport so the docs column stays desktop (inline sidebar visible to
- // click) rather than collapsing to a drawer.
- await page.setViewportSize({ width: 1920, height: 900 });
- await page.goto(openAt('inline'));
- await expect(playground.header).toBeVisible();
- // click a docs sidebar item (the docs sidebar, not the playground one)
- await page.getByTestId('sidebar').getByTestId('sidebar-item').first().click();
- await expect(playground.header).toBeVisible(); // playground did NOT close
- await expect(page).toHaveURL(/pg=1/); // playground params preserved
- });
-
- test('deep-link / reload to a nested request reveals its ancestor folders', async ({ page, playground }) => {
- await page.goto(openAt('bottom', 'billing/customers/get-all-customers'));
- await expect(playground.sidebarPanel).toBeVisible();
- // billing + customers auto-expand, so the request row is rendered in the tree.
- await expect(playground.treeItems.filter({ hasText: 'Get All Customers' }).first()).toBeVisible();
- // Still revealed after a full reload while sitting on the request.
- await page.reload();
- await expect(playground.treeItems.filter({ hasText: 'Get All Customers' }).first()).toBeVisible();
- });
-
- // Opening a folder / environments / collection-settings must persist in the URL
- // (pgReq) so a reload restores that view instead of snapping back to the request.
- test('opening a folder persists in the url and survives reload', async ({ page, playground }) => {
- await page.goto(openAt('bottom', 'billing/customers/get-all-customers'));
- await expect(playground.sidebarPanel).toBeVisible();
- await playground.treeItems.filter({ hasText: /^billing$/ }).first().click();
- // pgReq switches to the folder slug (billing), no longer the request path.
- await expect(page).toHaveURL(/pgReq=billing(?!%2Fcustomers)/);
- await page.reload();
- await expect(page).toHaveURL(/pgReq=billing(?!%2Fcustomers)/);
- await expect(playground.view).toBeVisible();
- });
-
- test('opening environments persists in the url and survives reload', async ({ page, playground }) => {
- await page.goto(openAt('bottom', 'billing/customers/get-all-customers'));
- await playground.gear.click();
- await expect(page).toHaveURL(/pgReq=(~|%7E)environments/);
- await page.reload();
- await expect(page).toHaveURL(/pgReq=(~|%7E)environments/);
- await expect(playground.view).toBeVisible();
- });
-
- test('opening collection settings persists in the url and survives reload', async ({ page, playground }) => {
- await page.goto(openAt('bottom', 'billing/customers/get-all-customers'));
- await playground.collectionNode.click();
- await expect(page).toHaveURL(/pgReq=(~|%7E)collection/);
- await page.reload();
- await expect(page).toHaveURL(/pgReq=(~|%7E)collection/);
- await expect(playground.view).toBeVisible();
- });
-});
diff --git a/packages/oc-docs/e2e/tests/playground/request-body.spec.ts b/packages/oc-docs/e2e/tests/playground/request-body.spec.ts
deleted file mode 100644
index b3541a30..00000000
--- a/packages/oc-docs/e2e/tests/playground/request-body.spec.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import { test, expect } from '../../playwright';
-
-test.describe('Request body types', () => {
- test.beforeEach(async ({ page, playground }) => {
- await playground.open('bottom');
- await playground.openRequest('get users');
- await expect(page).toHaveURL(/pgReq=/);
- await playground.selectTab('body');
- });
-
- test('selecting Multipart Form shows the multipart field editor', async ({ requestBody }) => {
- await requestBody.selectType('multipart-form');
- await expect(requestBody.multipart).toBeVisible();
- });
-
- test('selecting File / Binary shows the referenced-path view', async ({ requestBody }) => {
- await requestBody.selectType('file');
- await expect(requestBody.file).toBeVisible();
- });
-
- test('switching back to None clears the editor to the empty prompt', async ({ requestBody }) => {
- await requestBody.selectType('multipart-form');
- await expect(requestBody.multipart).toBeVisible();
- await requestBody.selectType('none');
- await expect(requestBody.empty).toBeVisible();
- await expect(requestBody.multipart).toHaveCount(0);
- });
-});
diff --git a/packages/oc-docs/e2e/tests/playground/unsupported-request.spec.ts b/packages/oc-docs/e2e/tests/playground/unsupported-request.spec.ts
deleted file mode 100644
index 6c3667a8..00000000
--- a/packages/oc-docs/e2e/tests/playground/unsupported-request.spec.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import { test, expect } from '../../playwright';
-
-const DESKTOP = { width: 1280, height: 900 };
-const openAt = (dock: string): string => `/#/?pg=1&dock=${dock}`;
-
-const UNSUPPORTED = [
- { paths: ['Realtime', 'Live Updates'], name: 'Live Updates', typeLabel: 'Websocket' },
- { paths: ['Realtime', 'GraphQL API'], name: 'GraphQL API', typeLabel: 'GraphQL' },
- { paths: ['Realtime', 'Order Service'], name: 'Order Service', typeLabel: 'gRPC' }
-];
-
-test.describe('Playground — unsupported request types', () => {
- test.use({ viewport: DESKTOP });
-
- for (const { paths, name, typeLabel } of UNSUPPORTED) {
- test(`shows a "not supported" notice when a ${typeLabel} request is opened`, async ({ page, playground }) => {
- await page.goto(openAt('bottom'));
- await playground.openTreeItem(paths);
-
- await expect(playground.unsupported).toBeVisible();
- await expect(playground.unsupportedIcon).toBeVisible();
- await expect(playground.unsupportedTitle).toHaveText(name);
- await expect(playground.unsupportedMessage).toContainText('Request type not supported');
- await expect(playground.unsupportedMessage).toContainText(`${typeLabel} isn't currently supported in this playground`);
- });
- }
-
- test('does not render request docs inside the playground (showRequestDocs is off)', async ({ page, playground }) => {
- await page.goto(openAt('bottom'));
- await playground.openTreeItem(['Realtime', 'Live Updates']);
-
- await expect(playground.unsupported).toBeVisible();
- await expect(playground.view.getByTestId('overview-markdown-documentation')).toHaveCount(0);
- });
-});
diff --git a/packages/oc-docs/e2e/tests/request/request-details.spec.ts b/packages/oc-docs/e2e/tests/request/request-details.spec.ts
deleted file mode 100644
index 6ebb9ef1..00000000
--- a/packages/oc-docs/e2e/tests/request/request-details.spec.ts
+++ /dev/null
@@ -1,104 +0,0 @@
-import { test, expect } from '../../playwright';
-
-const FILTER_BY_DATE_RANGE = ['billing', 'customers', 'Get Customers - Filter by Date Range'];
-
-test.describe('Request page — Details', () => {
- test.beforeEach(async ({ requestPage }) => {
- await requestPage.open(FILTER_BY_DATE_RANGE);
- });
-
- test.describe('Breadcrumb', () => {
- test('shows the folder paths to the request', async ({ requestPage }) => {
- const { breadcrumb } = requestPage;
- await expect(breadcrumb.segment('billing')).toBeVisible();
- await expect(breadcrumb.segment('customers')).toBeVisible();
- await expect(breadcrumb.current).toHaveText('Get Customers - Filter by Date Range');
- });
-
- test('returns to a parent folder when its segment is clicked', async ({ requestPage, page }) => {
- await requestPage.breadcrumb.segment('customers').click();
- await expect(page.getByTestId('folder-page')).toBeVisible();
- await expect(page.getByTestId('folder-title')).toHaveText('customers');
- });
- });
-
- test('shows the request name as the page title', async ({ requestPage }) => {
- await expect(requestPage.title).toHaveText('Get Customers - Filter by Date Range');
- });
-
- test('shows the GET method and the request URL', async ({ requestPage }) => {
- await expect(requestPage.urlBar.method).toHaveText('GET');
- await expect(requestPage.urlBar.url).toContainText('{{baseUrl}}/billing/customers');
- });
-
- test('offers a "Try" action to open the request in the playground', async ({ requestPage }) => {
- await expect(requestPage.urlBar.tryButton).toBeVisible();
- });
-
- test('renders the request description', async ({ requestPage }) => {
- await expect(requestPage.description).toContainText('Retrieves customers created within a date range.');
- });
-
- test.describe('Params section', () => {
- test('lists the query parameters', async ({ requestPage }) => {
- const params = requestPage.section('Params');
- await expect(params).toBeVisible();
- await expect(params.getByText('created[gte]')).toBeVisible();
- await expect(params.getByText('created[lte]')).toBeVisible();
- await expect(params.getByText('per_page')).toBeVisible();
- });
-
- test('shows each parameter value', async ({ requestPage }) => {
- const params = requestPage.section('Params');
- await expect(params.getByText('2024-01-01')).toBeVisible();
- await expect(params.getByText('2024-12-31')).toBeVisible();
- });
- });
-
- test.describe('Auth section', () => {
- test('shows the auth mode inherited from the collection', async ({ requestPage }) => {
- const auth = requestPage.section('Auth');
- await expect(auth).toBeVisible();
- await expect(auth.getByText('Inherited from collection')).toBeVisible();
- await expect(auth.getByText('Bearer Token')).toBeVisible();
- });
- });
-
- test.describe('Code snippet', () => {
- test('shows a cURL command by default', async ({ requestPage }) => {
- const { codeSnippet } = requestPage;
- await expect(codeSnippet.languageTab('curl')).toHaveAttribute('aria-selected', 'true');
- await expect(codeSnippet.code).toContainText('curl');
- await expect(codeSnippet.code).toContainText('/billing/customers');
- });
-
- test('switches to the Python snippet when its tab is selected', async ({ requestPage }) => {
- const { codeSnippet } = requestPage;
- await codeSnippet.selectLanguage('python');
- await expect(codeSnippet.languageTab('python')).toHaveAttribute('aria-selected', 'true');
- await expect(codeSnippet.code).toContainText('requests');
- });
-
- test('the expanded view opens on the same language currently selected inline', async ({ requestPage }) => {
- const { codeSnippet } = requestPage;
- await codeSnippet.selectLanguage('python');
- await codeSnippet.openExpandedView();
- await expect(codeSnippet.modalLanguageTab('python')).toHaveAttribute('aria-selected', 'true');
- });
-
- test('switching the language in the modal does not change the language tab in the request details', async ({ requestPage }) => {
- const { codeSnippet } = requestPage;
- await expect(codeSnippet.languageTab('curl')).toHaveAttribute('aria-selected', 'true');
-
- await codeSnippet.openExpandedView();
- await codeSnippet.selectModalLanguage('python');
-
- await expect(codeSnippet.modalLanguageTab('python')).toHaveAttribute('aria-selected', 'true');
- await expect(codeSnippet.modalCode).toContainText('requests');
-
- await expect(codeSnippet.languageTab('curl')).toHaveAttribute('aria-selected', 'true');
- await expect(codeSnippet.languageTab('python')).toHaveAttribute('aria-selected', 'false');
- await expect(codeSnippet.code).toContainText('curl');
- });
- });
-});
diff --git a/packages/oc-docs/e2e/tests/request/request-examples.spec.ts b/packages/oc-docs/e2e/tests/request/request-examples.spec.ts
deleted file mode 100644
index 309f2f5d..00000000
--- a/packages/oc-docs/e2e/tests/request/request-examples.spec.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-import { test, expect } from '../../playwright';
-
-const GET_ALL_CUSTOMERS = ['billing', 'customers', 'Get All Customers'];
-const OK_EXAMPLE = '200 OK - first page';
-const BAD_REQUEST_EXAMPLE = '400 Bad Request - invalid per_page';
-
-test.describe('Request page — Examples', () => {
- test.beforeEach(async ({ requestPage }) => {
- await requestPage.open(GET_ALL_CUSTOMERS);
- });
-
- test('lists every saved example', async ({ requestPage }) => {
- const { examples } = requestPage;
- await expect(examples.root).toBeVisible();
- await expect(examples.items).toHaveCount(2);
- await expect(examples.example(OK_EXAMPLE)).toBeVisible();
- await expect(examples.example(BAD_REQUEST_EXAMPLE)).toBeVisible();
- });
-
- test('shows the status code of each example', async ({ requestPage }) => {
- const { examples } = requestPage;
- await expect(examples.statusCode(OK_EXAMPLE)).toHaveText('200');
- await expect(examples.statusCode(BAD_REQUEST_EXAMPLE)).toHaveText('400');
- });
-
- test.describe('Request pane', () => {
- test('shows the query parameters by default', async ({ requestPage }) => {
- const { examples } = requestPage;
- await expect(examples.requestBody(OK_EXAMPLE)).toContainText('per_page');
- await expect(examples.requestBody(OK_EXAMPLE)).toContainText('10');
- });
-
- test('switches to the Headers tab to reveal the request headers', async ({ requestPage }) => {
- const { examples } = requestPage;
- await examples.selectRequestTab(OK_EXAMPLE, 'headers');
- await expect(examples.requestBody(OK_EXAMPLE)).toContainText('Accept');
- await expect(examples.requestBody(OK_EXAMPLE)).toContainText('application/json');
- });
- });
-
- test.describe('Response pane', () => {
- test('shows the response body by default', async ({ requestPage }) => {
- const { examples } = requestPage;
- await expect(examples.responseBody(OK_EXAMPLE)).toContainText('cus_ABC123xyz');
- await expect(examples.responseBody(OK_EXAMPLE)).toContainText('john.smith@example.com');
- });
-
- test('switches to the Headers tab to reveal the response headers', async ({ requestPage }) => {
- const { examples } = requestPage;
- await examples.selectResponseTab(OK_EXAMPLE, 'headers');
- await expect(examples.responseBody(OK_EXAMPLE)).toContainText('x-total-count');
- await expect(examples.responseBody(OK_EXAMPLE)).toContainText('42');
- });
- });
-
- test('expands a collapsed example to reveal its response', async ({ requestPage }) => {
- const { examples } = requestPage;
- await examples.open(BAD_REQUEST_EXAMPLE);
- await expect(examples.responseBody(BAD_REQUEST_EXAMPLE)).toContainText('invalid_request');
- });
-});
diff --git a/packages/oc-docs/e2e/tests/request/request-execution-context.spec.ts b/packages/oc-docs/e2e/tests/request/request-execution-context.spec.ts
deleted file mode 100644
index 3b4aa894..00000000
--- a/packages/oc-docs/e2e/tests/request/request-execution-context.spec.ts
+++ /dev/null
@@ -1,155 +0,0 @@
-import { test, expect } from '../../playwright';
-import type { ExecutionContextTab } from '../../components/request/execution-context.component';
-
-const GET_ALL_CUSTOMERS = ['billing', 'customers', 'Get All Customers'];
-const TABS: ExecutionContextTab[] = ['variables', 'scripts', 'asserts', 'tests'];
-
-test.describe('Request page — Execution Context', () => {
- test.beforeEach(async ({ requestPage }) => {
- await requestPage.open(GET_ALL_CUSTOMERS);
- });
-
- test.describe('tabs', () => {
- test('shows a tab for each populated section, each with a count', async ({ requestPage }) => {
- const { executionContext } = requestPage;
- await expect(requestPage.section('Execution Context')).toBeVisible();
- for (const name of TABS) {
- await expect(executionContext.tab(name)).toBeVisible();
- await expect(executionContext.tab(name)).toContainText(/\d/);
- }
- });
-
- test('opens on the Variables tab and mounts only its panel', async ({ requestPage }) => {
- const { executionContext } = requestPage;
- await expect(executionContext.tab('variables')).toHaveAttribute('aria-selected', 'true');
- await expect(executionContext.variablesPanel).toBeVisible();
- await expect(executionContext.scriptsPanel).toBeHidden();
- await expect(executionContext.assertsPanel).toBeHidden();
- await expect(executionContext.testsPanel).toBeHidden();
- });
-
- test('selecting a tab reveals only that panel and marks it selected', async ({ requestPage }) => {
- const { executionContext } = requestPage;
- await executionContext.openTab('asserts');
-
- await expect(executionContext.tab('asserts')).toHaveAttribute('aria-selected', 'true');
- await expect(executionContext.tab('variables')).toHaveAttribute('aria-selected', 'false');
- await expect(executionContext.assertsPanel).toBeVisible();
- await expect(executionContext.variablesPanel).toBeHidden();
- });
-
- test('is keyboard navigable across tabs with the arrow keys', async ({ requestPage, page }) => {
- const { executionContext } = requestPage;
- await executionContext.tab('variables').focus();
-
- await page.keyboard.press('ArrowRight');
-
- await expect(executionContext.tab('scripts')).toHaveAttribute('aria-selected', 'true');
- await expect(executionContext.scriptsPanel).toBeVisible();
-
- await page.keyboard.press('ArrowLeft');
-
- await expect(executionContext.tab('variables')).toHaveAttribute('aria-selected', 'true');
- });
- });
-
- test.describe('panel content', () => {
- test('Variables lists the pre-request and post-response variables', async ({ requestPage }) => {
- const { executionContext } = requestPage;
- await executionContext.openTab('variables');
-
- await expect(executionContext.variablesPanel.getByText('Pre-Request')).toBeVisible();
- await expect(executionContext.variable('expectedStatus')).toBeVisible();
- await expect(executionContext.variable('customersPath')).toBeVisible();
- await expect(executionContext.variablesPanel.getByText('Post-Response')).toBeVisible();
- await expect(executionContext.variable('firstCustomerId')).toBeVisible();
- });
-
- test('Scripts lists the collection → folder → request chain around the HTTP call', async ({ requestPage }) => {
- const { executionContext } = requestPage;
- await executionContext.openTab('scripts');
-
- await expect(executionContext.scriptStep('Collection Pre-Request')).toBeVisible();
- await expect(executionContext.scriptStep('Request Pre-Request')).toBeVisible();
- await expect(executionContext.scriptStep('Collection Post-Response')).toBeVisible();
- await expect(executionContext.scriptsPanel.getByText('HTTP')).toBeVisible();
- });
-
- test('Scripts navigates to a folder overview from a script source', async ({ requestPage, page }) => {
- const { executionContext } = requestPage;
- await executionContext.openTab('scripts');
- await executionContext.scriptSource('customers').first().click();
-
- await expect(page.getByTestId('folder-page')).toBeVisible();
- await expect(page.getByTestId('folder-title')).toHaveText('customers');
- });
-
- test('Scripts navigates to the collection overview from the collection source', async ({ requestPage, page }) => {
- const { executionContext } = requestPage;
- await executionContext.openTab('scripts');
- await executionContext.scriptSource('Bruno Testbench').first().click();
-
- await expect(page.getByTestId('overview')).toBeVisible();
- });
-
- test('Asserts lists every assertion', async ({ requestPage }) => {
- const { executionContext } = requestPage;
- await executionContext.openTab('asserts');
-
- await expect(executionContext.assertion('res.status equals 200')).toBeVisible();
- await expect(executionContext.assertion('res.body is an array')).toBeVisible();
- await expect(executionContext.assertion('res.body.length greater than 0')).toBeVisible();
- });
-
- test('Tests lists every test case', async ({ requestPage }) => {
- const { executionContext } = requestPage;
- await executionContext.openTab('tests');
-
- await expect(executionContext.testCase('status is 200 OK')).toBeVisible();
- await expect(executionContext.testCase('response body is a non-empty array')).toBeVisible();
- await expect(executionContext.testCase('every customer has an id and email')).toBeVisible();
- await expect(executionContext.testCase('multi-level execution chain captured')).toBeVisible();
- });
- });
-
- test.describe('header extras track the active tab', () => {
- test('the execution flow shows only while Scripts is active', async ({ requestPage }) => {
- const { executionContext } = requestPage;
- await expect(executionContext.executionFlow).toBeHidden();
-
- await executionContext.openTab('scripts');
-
- await expect(executionContext.executionFlow).toHaveText('Sandwich execution flow');
-
- await executionContext.openTab('variables');
-
- await expect(executionContext.executionFlow).toBeHidden();
- });
-
- test('"View complete code" shows only while Tests is active and opens the code dialog', async ({ requestPage, page }) => {
- const { executionContext } = requestPage;
- await expect(executionContext.viewCompleteCodeButton).toBeHidden();
-
- await executionContext.openTab('tests');
-
- await expect(executionContext.viewCompleteCodeButton).toBeVisible();
-
- await executionContext.viewCompleteCodeButton.click();
-
- await expect(page.getByRole('dialog', { name: 'All tests' })).toBeVisible();
- });
- });
-
- test('persists the collapsed state across a reload', async ({ requestPage, page }) => {
- const toggle = () => requestPage.section('Execution Context').getByRole('button', { name: /Execution Context/i });
- await expect(toggle()).toHaveAttribute('aria-expanded', 'true');
-
- await toggle().click();
-
- await expect(toggle()).toHaveAttribute('aria-expanded', 'false');
-
- await page.reload();
-
- await expect(toggle()).toHaveAttribute('aria-expanded', 'false');
- });
-});
diff --git a/packages/oc-docs/e2e/tests/request/unsupported-request.spec.ts b/packages/oc-docs/e2e/tests/request/unsupported-request.spec.ts
deleted file mode 100644
index 3ee25718..00000000
--- a/packages/oc-docs/e2e/tests/request/unsupported-request.spec.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import { test, expect } from '../../playwright';
-
-const UNSUPPORTED_REQUESTS = [
- { paths: ['Realtime', 'Live Updates'], name: 'Live Updates', typeLabel: 'Websocket', shortName: 'WS', url: '/ws/updates' },
- { paths: ['Realtime', 'GraphQL API'], name: 'GraphQL API', typeLabel: 'GraphQL', shortName: 'GQL', url: '/graphql' },
- { paths: ['Realtime', 'Order Service'], name: 'Order Service', typeLabel: 'gRPC', shortName: 'GRPC', url: '/orders.OrderService' }
-];
-
-test.describe('Request page — unsupported request types', () => {
- for (const { paths, name, typeLabel, shortName, url } of UNSUPPORTED_REQUESTS) {
- test(`shows a "preview not available" notice for a ${typeLabel} request`, async ({ unsupportedRequestPage }) => {
- await unsupportedRequestPage.open(paths);
-
- await expect(unsupportedRequestPage.title).toHaveText(name);
- await expect(unsupportedRequestPage.breadcrumb.segment('Realtime')).toBeVisible();
- await expect(unsupportedRequestPage.breadcrumb.current).toHaveText(name);
- await expect(unsupportedRequestPage.message).toContainText('Preview not available');
- await expect(unsupportedRequestPage.message).toContainText(`${typeLabel} documentation`);
- });
-
- test(`renders the protocol method and url for a ${typeLabel} request`, async ({ unsupportedRequestPage }) => {
- await unsupportedRequestPage.open(paths);
-
- await expect(unsupportedRequestPage.urlBar.root).toBeVisible();
- await expect(unsupportedRequestPage.urlBar.method).toHaveText(shortName);
- await expect(unsupportedRequestPage.urlBar.url).toContainText(url);
- });
- }
-
- test('renders request docs on the docs page when the request provides them', async ({ unsupportedRequestPage }) => {
- // Only "Live Updates" carries a `docs` field in the sample collection.
- await unsupportedRequestPage.open(['Realtime', 'Live Updates']);
-
- await expect(unsupportedRequestPage.docs).toBeVisible();
- await expect(unsupportedRequestPage.docs).toContainText('full-duplex communication channel');
- });
-});
diff --git a/packages/oc-docs/e2e/tests/routing/routing.spec.ts b/packages/oc-docs/e2e/tests/routing/routing.spec.ts
deleted file mode 100644
index d9a8291b..00000000
--- a/packages/oc-docs/e2e/tests/routing/routing.spec.ts
+++ /dev/null
@@ -1,93 +0,0 @@
-import { test, expect } from '../../playwright';
-
-const FIXTURE = '/?fixture=folders';
-const page$ = (s: string) => `${FIXTURE}#/${s}`;
-
-test.describe('page-based navigation', () => {
- test('deep-link to a nested request renders only that page on fresh load', async ({ page }) => {
- await page.goto(page$('bookings/lifecycle/create-booking'));
-
- const active = page.getByTestId('page');
- await expect(active).toHaveAttribute('data-page-slug', 'bookings/lifecycle/create-booking');
- await expect(active).toHaveAttribute('data-page-type', 'request');
- await expect(page.getByRole('heading', { name: 'Create Booking', level: 1 })).toBeVisible();
-
- await expect(page.getByRole('heading', { name: 'Login', level: 1 })).toHaveCount(0);
- });
-
- test('breadcrumb reflects the folder hierarchy', async ({ page }) => {
- await page.goto(page$('bookings/lifecycle/create-booking'));
- const bc = page.getByTestId('request-breadcrumb');
- await expect(bc).toContainText('Hotel API');
- await expect(bc).toContainText('Bookings');
- await expect(bc).toContainText('Lifecycle');
- await expect(page.getByRole('heading', { name: 'Create Booking', level: 1 })).toBeVisible();
- });
-
- test('auto-expands ancestor folders so the deep-linked item is visible in the sidebar', async ({ page }) => {
- await page.goto(page$('bookings/lifecycle/create-booking'));
- await expect(page.getByTestId('sidebar-item').filter({ hasText: 'Cancel Booking' })).toBeVisible();
- });
-
- test('prev/next walks the hierarchy in sequence order', async ({ page }) => {
- await page.goto(page$('bookings/lifecycle/create-booking'));
-
- const next = page.getByTestId('next-link');
- await expect(next).toContainText('Confirm Booking');
- await next.click();
-
- await expect(page.getByTestId('page')).toHaveAttribute(
- 'data-page-slug',
- 'bookings/lifecycle/confirm-booking'
- );
- await expect(page.getByTestId('prev-link')).toContainText('Create Booking');
- await expect(page.getByTestId('next-link')).toContainText('Cancel Booking');
- });
-
- test('slug URL is stable across reload', async ({ page }) => {
- await page.goto(page$('authentication/login'));
- await expect(page.getByRole('heading', { name: 'Login', level: 1 })).toBeVisible();
-
- await page.reload();
- await expect(page).toHaveURL(/#\/authentication\/login$/);
- await expect(page.getByRole('heading', { name: 'Login', level: 1 })).toBeVisible();
- });
-
- test('a script item renders as its own script page', async ({ page }) => {
- await page.goto(page$('setup-script'));
- const active = page.getByTestId('page');
- await expect(active).toHaveAttribute('data-page-slug', 'setup-script');
- await expect(active).toHaveAttribute('data-page-type', 'script');
- await expect(page.getByRole('heading', { name: 'Setup Script', level: 1 })).toBeVisible();
- });
-
- test('a folder whose name has special characters resolves via its encoded slug', async ({ page }) => {
- // "Customers/%$" -> the slash/percent/dollar are percent-encoded, so the
- // folder keeps its own page instead of colliding or collapsing.
- await page.goto(page$('customers%2F%25%24'));
- const active = page.getByTestId('page');
- await expect(active).toHaveAttribute('data-page-slug', 'customers%2F%25%24');
- await expect(active).toHaveAttribute('data-page-type', 'folder');
- await expect(page.getByTestId('folder-title')).toHaveText('Customers/%$');
- });
-
- test('a request inside a special-character folder deep-links (encoded parent + separator)', async ({ page }) => {
- await page.goto(page$('customers%2F%25%24/list-customers'));
- const active = page.getByTestId('page');
- await expect(active).toHaveAttribute('data-page-slug', 'customers%2F%25%24/list-customers');
- await expect(active).toHaveAttribute('data-page-type', 'request');
- await expect(page.getByTestId('request-title')).toHaveText('List customers');
- });
-
- test('unknown slug redirects to the overview', async ({ page }) => {
- await page.goto(page$('does/not/exist'));
- await expect(page.getByTestId('page')).toHaveAttribute('data-page-type', 'overview');
- });
-
- test('clicking a sidebar item navigates to its slug route', async ({ page }) => {
- await page.goto(FIXTURE);
- await page.locator('[data-testid="sidebar-item"][data-slug="authentication"]').click();
- await expect(page.getByTestId('page')).toHaveAttribute('data-page-slug', 'authentication');
- await expect(page).toHaveURL(/#\/authentication$/);
- });
-});
diff --git a/packages/oc-docs/e2e/tests/script/script.spec.ts b/packages/oc-docs/e2e/tests/script/script.spec.ts
deleted file mode 100644
index 875d1acc..00000000
--- a/packages/oc-docs/e2e/tests/script/script.spec.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import { test, expect } from '../../playwright';
-
-const BILLING_SCRIPT_PATH = ['billing', 'Script.js'];
-
-test.describe('Script page', () => {
- test.beforeEach(async ({ scriptPage }) => {
- await scriptPage.open(BILLING_SCRIPT_PATH);
- });
-
- test('shows the script name as the page title', async ({ scriptPage }) => {
- await expect(scriptPage.title).toHaveText('Script');
- });
-
- test('shows the folder path to the script as a breadcrumb', async ({ scriptPage }) => {
- await expect(scriptPage.breadcrumb.segment('billing')).toBeVisible();
- await expect(scriptPage.breadcrumb.current).toHaveText('Script');
- });
-
- test('renders the script source as a read-only code block', async ({ scriptPage }) => {
- const { content } = scriptPage;
- await expect(content.root).toBeVisible();
- await expect(content.code).toContainText('user@example.com');
- await expect(content.code).toContainText('password123');
- });
-
- test('offers a button to copy the script', async ({ scriptPage }) => {
- await expect(scriptPage.content.copyButton).toBeVisible();
- });
-});
diff --git a/packages/oc-docs/e2e/tests/scripts/code-editor-copy.spec.ts b/packages/oc-docs/e2e/tests/scripts/code-editor-copy.spec.ts
deleted file mode 100644
index c3e7b251..00000000
--- a/packages/oc-docs/e2e/tests/scripts/code-editor-copy.spec.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import { test, expect } from '../../playwright';
-
-test.describe('Monaco editor copy button', () => {
- test('reveals a copy button on hover and copies the editor content', async ({ page, playground, context }) => {
- await context.grantPermissions(['clipboard-read', 'clipboard-write']);
-
- await page.goto('/#/?pg=1&dock=bottom');
- await playground.openSidebarItem('get users');
- await playground.selectTab('scripts');
-
- const editor = playground.preRequestScriptEditor;
- await editor.focus();
- await page.keyboard.type('const answer = 42;');
- await page.keyboard.press('Escape');
-
- const copyBtn = editor.copyButton;
-
- await test.step('hidden until the editor is hovered', async () => {
- await page.mouse.move(0, 0); // move off the editor (clicking it left the pointer over it)
- await expect(copyBtn).toHaveCSS('opacity', '0');
- });
-
- await test.step('revealed on hover (top-right)', async () => {
- await editor.root.hover();
- await expect(copyBtn).toHaveCSS('opacity', '1');
- });
-
- await test.step('clicking it copies the editor content', async () => {
- await copyBtn.click();
- await expect
- .poll(() => page.evaluate(() => navigator.clipboard.readText()))
- .toContain('const answer = 42;');
- });
- });
-});
diff --git a/packages/oc-docs/e2e/tests/scripts/scripts-autocomplete.spec.ts b/packages/oc-docs/e2e/tests/scripts/scripts-autocomplete.spec.ts
deleted file mode 100644
index e64b98c1..00000000
--- a/packages/oc-docs/e2e/tests/scripts/scripts-autocomplete.spec.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import { test, expect } from '../../playwright';
-
-test.describe('Scripts editor autocomplete', () => {
- test.beforeEach(async ({ page, playground }) => {
- await page.goto('/#/?pg=1&dock=bottom');
- await playground.openSidebarItem('get users');
- await expect(page).toHaveURL(/pgReq=/);
- await playground.selectTab('scripts');
- });
-
- test('offers req/bru completions in the pre-request script editor', async ({ page, playground }) => {
- const editor = playground.preRequestScriptEditor;
- await editor.focus();
- await page.keyboard.type('bru.getEnvVar');
-
- await expect(editor.suggestions).toBeVisible();
- await expect(editor.suggestions).toContainText('getEnvVar(key)');
- });
-
- test('offers res completions in the post-response script editor', async ({ page, playground }) => {
- await playground.selectScriptTab('post-response');
-
- const editor = playground.postResponseScriptEditor;
- await editor.focus();
- await page.keyboard.type('res.getBody');
-
- await expect(editor.suggestions).toBeVisible();
- await expect(editor.suggestions).toContainText('getBody()');
- });
-});
diff --git a/packages/oc-docs/e2e/tests/search/search.spec.ts b/packages/oc-docs/e2e/tests/search/search.spec.ts
deleted file mode 100644
index 137dda67..00000000
--- a/packages/oc-docs/e2e/tests/search/search.spec.ts
+++ /dev/null
@@ -1,283 +0,0 @@
-import { test, expect } from '../../playwright';
-
-/**
- * The endpoint search palette: a header-anchored combobox whose listbox drops
- * below the field. Inline on desktop; revealed by a Topbar icon below desktop.
- */
-test.use({ colorScheme: 'light' });
-
-const DESKTOP = { width: 1280, height: 900 };
-const TABLET = { width: 900, height: 800 };
-const MOBILE = { width: 390, height: 800 };
-const FIXTURE = '/?fixture=folders';
-
-test.describe('Search palette', () => {
- test('expands in place on focus (combobox, not a dialog)', async ({ page, search }) => {
- await page.setViewportSize(DESKTOP);
- await page.goto('/');
-
- await expect(search.field).toBeVisible();
- await expect(search.openPanel).toHaveCount(0);
- await expect(page.getByRole('dialog')).toHaveCount(0);
-
- await search.field.click();
- await expect(search.openPanel).toBeVisible();
- await expect(search.filters).toBeVisible();
-
- const box = await search.openPanel.boundingBox();
- expect(box, 'panel has no bounding box').not.toBeNull();
- expect(box?.y).toBeLessThan(80);
- });
-
- test('platform shortcut focuses and opens the field', async ({ page, search }) => {
- await page.setViewportSize(DESKTOP);
- await page.goto('/');
-
- const isMac = await page.evaluate(() => /Mac|iPhone|iPad|iPod/.test(navigator.platform));
- await page.keyboard.press(isMac ? 'Meta+k' : 'Control+k');
-
- await expect(search.openPanel).toBeVisible();
- await expect(search.field).toBeFocused();
- });
-
- test('platform shortcut refocuses the field when the panel is already open', async ({ page, search }) => {
- await page.setViewportSize(DESKTOP);
- await page.goto('/');
-
- const isMac = await page.evaluate(() => /Mac|iPhone|iPad|iPod/.test(navigator.platform));
- const hotkey = isMac ? 'Meta+k' : 'Control+k';
-
- await search.field.click();
- await expect(search.field).toBeFocused();
-
- await search.field.blur();
- await expect(search.field).not.toBeFocused();
-
- await page.keyboard.press(hotkey);
- await expect(search.field).toBeFocused();
- });
-
- test('shows the initial empty state before typing', async ({ page, search }) => {
- await page.setViewportSize(DESKTOP);
- await page.goto('/');
- await search.field.click();
-
- await expect(search.panel).toContainText('Search the collection');
- await expect(search.panel).toContainText('Find any request by name, endpoint, or folder.');
- });
-
- test('typing fuzzy-matches over request names', async ({ page, search }) => {
- await page.setViewportSize(DESKTOP);
- await page.goto(FIXTURE);
- await search.field.click();
- await search.field.fill('login');
-
- await expect(search.results.first()).toBeVisible();
- await expect(search.panel).toContainText('Login');
- });
-
- test('corrects a typo (adjacent letter swap) to the intended request', async ({ page, search }) => {
- await page.setViewportSize(DESKTOP);
- await page.goto(FIXTURE);
- await search.field.click();
- await search.field.fill('lgoin'); // "login" with the o/g swapped
-
- await expect(search.results.first()).toBeVisible();
- await expect(search.panel).toContainText('Login');
- });
-
- test('matches on the folder chain typed as text (not only the filter dropdown)', async ({ page, search }) => {
- await page.setViewportSize(DESKTOP);
- await page.goto(FIXTURE);
- await search.field.click();
- await search.field.fill('authentication'); // the folder Login lives under
-
- await expect(search.results.first()).toBeVisible();
- await expect(search.panel).toContainText('Login');
- });
-
- test('a single character keeps the initial prompt (below the match threshold)', async ({ page, search }) => {
- await page.setViewportSize(DESKTOP);
- await page.goto(FIXTURE);
- await search.field.click();
- await search.field.fill('l');
-
- await expect(search.panel).toContainText('Search the collection');
- await expect(search.resultsList).toHaveCount(0);
- });
-
- test('selecting a result navigates and closes the panel', async ({ page, search }) => {
- await page.setViewportSize(DESKTOP);
- await page.goto(FIXTURE);
- await search.field.click();
- await search.field.fill('login');
- await search.result('Login').first().click();
-
- await expect(search.openPanel).toHaveCount(0);
- await expect(page.getByRole('heading', { name: 'Login', level: 1 })).toBeVisible();
- // focus leaves the palette after selecting, so the caret doesn't linger
- await expect(search.field).not.toBeFocused();
- });
-
- test('selecting a result clears the query (nothing lingers)', async ({ page, search }) => {
- await page.setViewportSize(DESKTOP);
- await page.goto(FIXTURE);
- await search.field.click();
- await search.field.fill('login');
- await search.result('Login').first().click();
-
- await expect(search.openPanel).toHaveCount(0);
- await search.field.click();
- await expect(search.field).toHaveValue('');
- });
-
- test('shows an empty state when nothing matches', async ({ page, search }) => {
- await page.setViewportSize(DESKTOP);
- await page.goto(FIXTURE);
- await search.field.click();
- await search.field.fill('zzzqqq-nomatch');
-
- await expect(search.panel).toContainText('No matching requests');
- await expect(search.resultsList).toHaveCount(0);
- });
-
- test('Escape clears and closes', async ({ page, search }) => {
- await page.setViewportSize(DESKTOP);
- await page.goto(FIXTURE);
- await search.field.click();
- await search.field.fill('login');
- await page.keyboard.press('Escape');
-
- await expect(search.openPanel).toHaveCount(0);
- // focus stays on the input after closing, so it's ready to type again
- await expect(search.field).toBeFocused();
-
- // and clicking the still-focused field reopens the panel
- await search.field.click();
- await expect(search.openPanel).toBeVisible();
- });
-
- test('clicking outside closes the panel', async ({ page, search, pageHeader }) => {
- await page.setViewportSize(DESKTOP);
- await page.goto('/');
- await search.field.click();
- await expect(search.openPanel).toBeVisible();
-
- await pageHeader.brandName.click();
- await expect(search.openPanel).toHaveCount(0);
- });
-
- test('method chip filters results to that method', async ({ page, search }) => {
- await page.setViewportSize(DESKTOP);
- await page.goto(FIXTURE);
- await search.field.click();
- await search.methodChip('GET').click();
-
- await expect(search.results.first()).toBeVisible();
- const count = await search.resultMethods.count();
- expect(count).toBeGreaterThan(0);
- for (let i = 0; i < count; i++) {
- await expect(search.resultMethods.nth(i)).toHaveText('GET');
- }
- });
-
- test('a non-primary method chip (PATCH) filters results to that method', async ({ page, search }) => {
- await page.setViewportSize(DESKTOP);
- await page.goto(FIXTURE);
- await search.field.click();
-
- await search.methodChip('PATCH').click();
-
- await expect(search.results.first()).toBeVisible();
- const count = await search.resultMethods.count();
- expect(count).toBeGreaterThan(0);
- for (let i = 0; i < count; i++) {
- await expect(search.resultMethods.nth(i)).toHaveText('PATCH');
- }
- });
-
- test('arrow-key navigation keeps the highlighted option within the scroll area', async ({ page, search }) => {
- await page.setViewportSize(DESKTOP);
- await page.goto(FIXTURE);
- await search.field.click();
- await search.methodChip('GET').click(); // enough GET results to overflow the list
-
- await expect(search.results.first()).toBeVisible();
- for (let i = 0; i < 12; i++) await page.keyboard.press('ArrowDown');
-
- await expect(search.activeOption).toBeVisible();
- const opt = await search.activeOption.boundingBox();
- const box = await search.resultsScroll.boundingBox();
- expect(opt, 'active option has no bounding box').not.toBeNull();
- expect(box, 'results scroll has no bounding box').not.toBeNull();
- // the highlighted option stays inside the visible scroll area
- expect(opt?.y).toBeGreaterThanOrEqual((box?.y ?? 0) - 1);
- expect((opt?.y ?? 0) + (opt?.height ?? 0)).toBeLessThanOrEqual((box?.y ?? 0) + (box?.height ?? 0) + 1);
- });
-
- test('folder dropdown closes on an outside click', async ({ page, search }) => {
- await page.setViewportSize(DESKTOP);
- await page.goto(FIXTURE);
- await search.field.click();
-
- await search.folderButton.click();
- await expect(search.folderMenu).toBeVisible();
-
- await search.field.click(); // click outside the dropdown
- await expect(search.folderMenu).toHaveCount(0);
- });
-
- test('folder filter scopes results to the chosen folder', async ({ page, search }) => {
- await page.setViewportSize(DESKTOP);
- await page.goto(FIXTURE);
- await search.field.click();
-
- await search.folderButton.click();
- await search.folderOption('Authentication').click();
-
- await expect(search.panel).toContainText('Login');
- await expect(search.panel).not.toContainText('Create Booking');
- });
-
- test('tablet: the toggle reveals a panel that stays within the viewport', async ({ page, search }) => {
- await page.setViewportSize(TABLET);
- await page.goto('/');
-
- await expect(search.toggleIcon).toBeVisible();
- await search.toggleIcon.click();
- await expect(search.openPanel).toBeVisible();
-
- const box = await search.openPanel.boundingBox();
- expect(box, 'panel has no bounding box').not.toBeNull();
- expect(box?.x).toBeGreaterThanOrEqual(0);
- expect((box?.x ?? 0) + (box?.width ?? 0)).toBeLessThanOrEqual(TABLET.width);
- });
-
- test('mobile: the toggle opens the panel without growing the header', async ({ page, search, pageHeader }) => {
- await page.setViewportSize(MOBILE);
- await page.goto('/');
-
- const before = await pageHeader.root.boundingBox();
- expect(before, 'header has no bounding box').not.toBeNull();
-
- await search.toggleIcon.click();
- await expect(search.openPanel).toBeVisible();
- await expect(search.field).toBeVisible();
-
- const after = await pageHeader.root.boundingBox();
- expect(after, 'header has no bounding box').not.toBeNull();
- expect(after?.height).toBe(before?.height);
- });
-
- test('mobile: closing returns to just the toggle icon', async ({ page, search }) => {
- await page.setViewportSize(MOBILE);
- await page.goto('/');
-
- await search.toggleIcon.click();
- await expect(search.field).toBeVisible();
-
- await search.clearButton.click();
- await expect(search.field).toHaveCount(0);
- await expect(search.toggleIcon).toBeVisible();
- });
-});
diff --git a/packages/oc-docs/e2e/tests/sidebar/sidebar-examples.spec.ts b/packages/oc-docs/e2e/tests/sidebar/sidebar-examples.spec.ts
deleted file mode 100644
index 805602de..00000000
--- a/packages/oc-docs/e2e/tests/sidebar/sidebar-examples.spec.ts
+++ /dev/null
@@ -1,87 +0,0 @@
-import { test, expect } from '../../playwright';
-
-const GET_ALL_CUSTOMERS = ['billing', 'customers', 'Get All Customers'];
-const OK_EXAMPLE = '200 OK - first page';
-const BAD_REQUEST_EXAMPLE = '400 Bad Request - invalid per_page';
-const REQUEST_PATH = '#/billing/customers/get-all-customers';
-const OK_EXAMPLE_SLUG = '200-ok-first-page';
-const OK_EXAMPLE_URL = `/${REQUEST_PATH}/${OK_EXAMPLE_SLUG}`;
-
-test.describe('Sidebar - Examples (docs)', () => {
- test.beforeEach(async ({ requestPage }) => {
- await requestPage.open(GET_ALL_CUSTOMERS);
- });
-
- test('keeps a request with examples collapsed until its toggle is expanded', async ({ sidebar }) => {
- await expect(sidebar.exampleToggle('Get All Customers')).toBeVisible();
- await expect(sidebar.exampleRow(OK_EXAMPLE)).toHaveCount(0);
-
- await sidebar.toggleExamples('Get All Customers');
- await expect(sidebar.exampleRow(OK_EXAMPLE)).toBeVisible();
- await expect(sidebar.exampleRow(BAD_REQUEST_EXAMPLE)).toBeVisible();
- });
-
- test('clicking an example navigates to the parent request page and highlights the matching example card', async ({
- sidebar,
- requestPage,
- page
- }) => {
- await sidebar.toggleExamples('Get All Customers');
- await sidebar.exampleRow(OK_EXAMPLE).click();
-
- await expect(page.getByTestId('page')).toHaveAttribute('data-page-type', 'request');
- await expect(page).toHaveURL(/#\/billing\/customers\/get-all-customers\/200-ok-first-page$/);
-
- const activeCard = requestPage.examples.activeCard;
- await expect(activeCard).toBeVisible();
- await expect(activeCard).toContainText(OK_EXAMPLE);
- await expect(sidebar.exampleRow(OK_EXAMPLE)).toHaveClass(/active/);
- // Only the example row is active, not its parent request row.
- await expect(sidebar.item('Get All Customers')).not.toHaveClass(/active/);
- });
-
- test('switching to a different example moves the highlight to it', async ({ sidebar, requestPage }) => {
- await sidebar.toggleExamples('Get All Customers');
- await sidebar.exampleRow(OK_EXAMPLE).click();
- await expect(requestPage.examples.activeCard).toContainText(OK_EXAMPLE);
-
- await sidebar.exampleRow(BAD_REQUEST_EXAMPLE).click();
-
- const activeCard = requestPage.examples.activeCard;
- await expect(activeCard).toContainText(BAD_REQUEST_EXAMPLE);
- await expect(activeCard).not.toContainText(OK_EXAMPLE);
- await expect(sidebar.exampleRow(BAD_REQUEST_EXAMPLE)).toHaveClass(/active/);
- });
-
- test('deep-links the example: opening its url (share) and reloading restore the highlight', async ({
- page,
- requestPage
- }) => {
- await page.goto(OK_EXAMPLE_URL);
- await expect(page.getByTestId('page')).toHaveAttribute('data-page-type', 'request');
- await expect(requestPage.examples.activeCard).toContainText(OK_EXAMPLE);
-
- await page.reload();
- await expect(requestPage.examples.activeCard).toContainText(OK_EXAMPLE);
- });
-
- test('browser back and forward move the highlight between examples', async ({ sidebar, requestPage, page }) => {
- await sidebar.toggleExamples('Get All Customers');
- await sidebar.exampleRow(OK_EXAMPLE).click();
- await expect(requestPage.examples.activeCard).toContainText(OK_EXAMPLE);
- await sidebar.exampleRow(BAD_REQUEST_EXAMPLE).click();
- await expect(requestPage.examples.activeCard).toContainText(BAD_REQUEST_EXAMPLE);
-
- await page.goBack();
- await expect(requestPage.examples.activeCard).toContainText(OK_EXAMPLE);
- await page.goForward();
- await expect(requestPage.examples.activeCard).toContainText(BAD_REQUEST_EXAMPLE);
- });
-
- test('an unknown example slug falls back to the request page with no highlight', async ({ page, requestPage }) => {
- await page.goto(`/${REQUEST_PATH}/does-not-exist`);
- await expect(page.getByTestId('page')).toHaveAttribute('data-page-type', 'request');
- await expect(requestPage.examples.activeCard).toHaveCount(0);
- });
-
-});
diff --git a/packages/oc-docs/e2e/tests/sidebar/sidebar-resize.spec.ts b/packages/oc-docs/e2e/tests/sidebar/sidebar-resize.spec.ts
deleted file mode 100644
index fef3b84a..00000000
--- a/packages/oc-docs/e2e/tests/sidebar/sidebar-resize.spec.ts
+++ /dev/null
@@ -1,109 +0,0 @@
-import { test, expect } from '../../playwright';
-
-const FOLDERS = '/?fixture=folders';
-const DESKTOP = { width: 1280, height: 900 };
-
-// The resize handle sits at the sidebar's right edge (left: var(--sidebar-width),
-// default 260px), and the drag is delta-based from where it is grabbed, so moving
-// the pointer to an absolute x lands the width near that x. Collapse fires when the
-// pointer is dragged ~100px past the 200px min (i.e. below x=100); re-expand fires
-// once it climbs back to the min (x>=200) within the same held gesture.
-
-test.describe('docs sidebar - resize (desktop)', () => {
- test.use({ viewport: DESKTOP });
-
- test('widens when the handle is dragged right', async ({ page, sidebar }) => {
- await page.goto(FOLDERS);
- await expect(sidebar.inline).toBeVisible();
- const before = await sidebar.width();
-
- await sidebar.grabResizer();
- await sidebar.movePointerToX(400);
- await sidebar.releasePointer();
-
- const after = await sidebar.width();
- expect(after).toBeGreaterThan(before);
- expect(after).toBeGreaterThan(360);
- });
-
- test('clamps to the max width (480px)', async ({ page, sidebar }) => {
- await page.goto(FOLDERS);
- await sidebar.grabResizer();
- await sidebar.movePointerToX(900);
- await sidebar.releasePointer();
-
- const after = await sidebar.width();
- expect(after).toBeGreaterThan(470);
- expect(after).toBeLessThanOrEqual(482);
- });
-
- test('persists the resized width across a reload (sessionStorage)', async ({ page, sidebar }) => {
- await page.goto(FOLDERS);
- await sidebar.grabResizer();
- await sidebar.movePointerToX(380);
- await sidebar.releasePointer();
- const resized = await sidebar.width();
- expect(resized).toBeGreaterThan(360);
-
- await page.reload();
- await expect(sidebar.inline).toBeVisible();
- expect(Math.abs((await sidebar.width()) - resized)).toBeLessThan(5);
- });
-
- test('collapses when dragged past the min, and can be re-opened', async ({ page, sidebar }) => {
- await page.goto(FOLDERS);
- await sidebar.grabResizer();
- await sidebar.movePointerToX(60);
- await sidebar.releasePointer();
-
- await expect(sidebar.inline).toHaveCount(0);
- await expect(sidebar.expandButton).toBeVisible();
-
- await sidebar.expand();
- await expect(sidebar.inline).toBeVisible();
- });
-
- test('re-expands within the same held drag after collapsing', async ({ page, sidebar }) => {
- await page.goto(FOLDERS);
- await sidebar.grabResizer();
-
- await sidebar.movePointerToX(60);
- await expect(sidebar.inline).toHaveCount(0);
-
- await sidebar.movePointerToX(320);
- await expect(sidebar.inline).toBeVisible();
-
- await sidebar.releasePointer();
- await expect(sidebar.inline).toBeVisible();
- });
-});
-
-test.describe('playground sidebar - resize (bottom dock)', () => {
- test.use({ viewport: DESKTOP });
-
- test('widens when the handle is dragged right', async ({ playground }) => {
- await playground.open('bottom');
- await expect(playground.sidebarPanel).toBeVisible();
- const before = await playground.sidebarWidth();
-
- await playground.grabSidebarResizer();
- await playground.movePointerToX(400);
- await playground.releasePointer();
-
- expect(await playground.sidebarWidth()).toBeGreaterThan(before);
- });
-
- test('collapses when dragged past the min, and re-opens from the toggle', async ({ playground }) => {
- await playground.open('bottom');
- await expect(playground.sidebarPanel).toBeVisible();
-
- await playground.grabSidebarResizer();
- await playground.movePointerToX(60);
- await playground.releasePointer();
-
- await expect(playground.sidebarPanel).toHaveCount(0);
-
- await playground.sidebarToggle.click();
- await expect(playground.sidebarPanel).toBeVisible();
- });
-});
diff --git a/packages/oc-docs/e2e/tests/sidebar/sidebar.spec.ts b/packages/oc-docs/e2e/tests/sidebar/sidebar.spec.ts
deleted file mode 100644
index 88c46cc8..00000000
--- a/packages/oc-docs/e2e/tests/sidebar/sidebar.spec.ts
+++ /dev/null
@@ -1,77 +0,0 @@
-import { test, expect } from '../../playwright';
-
-const FOLDERS = '/?fixture=folders';
-const DESKTOP = { width: 1280, height: 900 };
-const MOBILE = { width: 390, height: 800 };
-
-test.describe('sidebar - desktop (inline, collapsible)', () => {
- test.use({ viewport: DESKTOP });
-
- test('renders inline with the overview link, no hamburger or drawer', async ({ page, sidebar }) => {
- await page.goto(FOLDERS);
- await expect(sidebar.inline).toBeVisible();
- await expect(sidebar.overview).toBeVisible();
- await expect(sidebar.hamburger).toHaveCount(0);
- await expect(sidebar.drawer).toHaveCount(0);
- });
-
- test('collapses the whole panel and re-opens it', async ({ page, sidebar }) => {
- await page.goto(FOLDERS);
- await sidebar.collapse();
- await expect(sidebar.inline).toHaveCount(0);
- await expect(sidebar.expandButton).toBeVisible();
- await sidebar.expand();
- await expect(sidebar.inline).toBeVisible();
- });
-
- test('keeps folders expanded across navigation', async ({ page, sidebar }) => {
- await page.goto(`${FOLDERS}#/bookings/lifecycle/create-booking`);
- await expect(sidebar.item('Cancel Booking')).toBeVisible();
- await sidebar.overview.click();
- await expect(page.getByTestId('page')).toHaveAttribute('data-page-type', 'overview');
- await expect(sidebar.item('Cancel Booking')).toBeVisible();
- });
-
- test('collapses a folder holding the active item without changing the view', async ({ page, sidebar }) => {
- await page.goto(`${FOLDERS}#/bookings/lifecycle/create-booking`);
- await expect(page.getByTestId('page')).toHaveAttribute('data-page-type', 'request');
- await expect(sidebar.folderChevron('Lifecycle')).toHaveClass(/expanded/);
- await expect(sidebar.item('Cancel Booking')).toBeVisible();
-
- await sidebar.toggleFolder('Lifecycle');
-
- await expect(sidebar.folderChevron('Lifecycle')).not.toHaveClass(/expanded/);
- await expect(sidebar.item('Cancel Booking')).toHaveCount(0);
- await expect(page.getByTestId('page')).toHaveAttribute('data-page-type', 'request');
- await expect(page).toHaveURL(/#\/bookings\/lifecycle\/create-booking$/);
- });
-});
-
-test.describe('sidebar - mobile (off-canvas drawer)', () => {
- test.use({ viewport: MOBILE });
-
- test('has no inline panel and opens the drawer from the hamburger', async ({ page, sidebar }) => {
- await page.goto(FOLDERS);
- await expect(sidebar.inline).toHaveCount(0);
- await expect(sidebar.backdrop).toBeHidden();
- await sidebar.openDrawer();
- await expect(sidebar.backdrop).toBeVisible();
- await expect(sidebar.drawer).toHaveAttribute('aria-hidden', 'false');
- });
-
- test('closes the drawer when a nav item is tapped', async ({ page, sidebar }) => {
- await page.goto(FOLDERS);
- await sidebar.openDrawer();
- await expect(sidebar.backdrop).toBeVisible();
- await sidebar.overview.click();
- await expect(sidebar.backdrop).toBeHidden();
- });
-
- test('closes the drawer when the backdrop is tapped', async ({ page, sidebar }) => {
- await page.goto(FOLDERS);
- await sidebar.openDrawer();
- await expect(sidebar.backdrop).toBeVisible();
- await sidebar.closeDrawerViaBackdrop();
- await expect(sidebar.backdrop).toBeHidden();
- });
-});
diff --git a/packages/oc-docs/e2e/tests/theming/theme-toggle.spec.ts b/packages/oc-docs/e2e/tests/theming/theme-toggle.spec.ts
deleted file mode 100644
index 0559d4c3..00000000
--- a/packages/oc-docs/e2e/tests/theming/theme-toggle.spec.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import { test, expect } from '../../playwright';
-
-/**
- * The header has one button that flips the whole app between light and dark.
- */
-test.describe('Theme switcher', () => {
- test.use({ colorScheme: 'light' });
-
- test.beforeEach(async ({ page }) => {
- await page.goto('/');
- });
-
- test('starts in light mode, with the toggle offering "Switch to dark theme"', async ({ page, themeToggle }) => {
- await expect(page.locator('html')).toHaveAttribute('data-theme', 'light');
- await expect(themeToggle.button).toHaveAccessibleName('Switch to dark theme');
- });
-
- test('switches the whole app to dark mode when the toggle is clicked', async ({ page, themeToggle }) => {
- await themeToggle.toggle();
-
- await expect(page.locator('html')).toHaveAttribute('data-theme', 'dark');
- // The toggle now offers the opposite action.
- await expect(themeToggle.button).toHaveAccessibleName('Switch to light theme');
- });
-
- test('switches back to light mode when the toggle is clicked again', async ({ page, themeToggle }) => {
- await themeToggle.toggle();
- await themeToggle.toggle();
-
- await expect(page.locator('html')).toHaveAttribute('data-theme', 'light');
- });
-
- test('remembers the chosen theme across a page reload', async ({ page, themeToggle }) => {
- await themeToggle.toggle();
- await page.reload();
-
- await expect(page.locator('html')).toHaveAttribute('data-theme', 'dark');
- });
-});
diff --git a/packages/oc-docs/e2e/tests/tooltip/truncation-tooltip.spec.ts b/packages/oc-docs/e2e/tests/tooltip/truncation-tooltip.spec.ts
deleted file mode 100644
index a6ae99b7..00000000
--- a/packages/oc-docs/e2e/tests/tooltip/truncation-tooltip.spec.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import { test, expect } from '../../playwright';
-
-const GET_ALL_CUSTOMERS = ['billing', 'customers', 'Get All Customers'];
-
-test.describe('Truncation tooltips', () => {
- test('reveals the full text in a tooltip when a value is truncated (narrow viewport)', async ({
- requestPage,
- tooltip,
- page
- }) => {
- await requestPage.open(GET_ALL_CUSTOMERS);
- await page.setViewportSize({ width: 280, height: 800 });
-
- const clippedCell = await tooltip.findFirstClippedCell();
- expect(clippedCell, 'expected at least one truncated cell at 280px').not.toBeNull();
-
- await tooltip.hoverCell(clippedCell!.index);
- await expect(tooltip.popup).toBeVisible();
- await expect(tooltip.popup).toHaveText(clippedCell!.fullText);
- });
-
- test('does not attach a tooltip to text that fits (wide viewport)', async ({ requestPage, tooltip, page }) => {
- await requestPage.open(GET_ALL_CUSTOMERS);
- await page.setViewportSize({ width: 1400, height: 900 });
-
- const unclippedCellIndex = await tooltip.findFirstUnclippedCellIndex();
- test.skip(unclippedCellIndex < 0, 'no non-truncated text found to check');
-
- await tooltip.hoverCell(unclippedCellIndex);
- await expect(tooltip.popup).toHaveCount(0);
- });
-});
diff --git a/packages/oc-docs/e2e/tests/variableInfoPopup/variableInfoPopup.spec.ts b/packages/oc-docs/e2e/tests/variableInfoPopup/variableInfoPopup.spec.ts
deleted file mode 100644
index 6f660e5a..00000000
--- a/packages/oc-docs/e2e/tests/variableInfoPopup/variableInfoPopup.spec.ts
+++ /dev/null
@@ -1,317 +0,0 @@
-import { test, expect } from '../../playwright';
-
-const REQUEST = '/?fixture=vars#/customers/variables-demo';
-
-test.describe('Variable hover card', () => {
- test.beforeEach(async ({ requestPage, envSwitcher }) => {
- await requestPage.goto(REQUEST);
- await envSwitcher.selectEnvironment('Dev');
- });
-
- test('resolves an environment variable with its scope badge and value', async ({ requestPage }) => {
- const { variableCard } = requestPage;
- await variableCard.hoverToken('host');
-
- await expect(variableCard.card).toBeVisible();
- await expect(variableCard.name).toHaveText('host');
- await expect(variableCard.scopeBadge).toHaveText('Environment');
- await expect(variableCard.value).toHaveText('https://api.dev.example.com');
- });
-
- test('badges collection, folder and request scopes correctly', async ({ page, requestPage }) => {
- const { variableCard } = requestPage;
- await variableCard.hoverToken('apiVersion');
- await expect(variableCard.scopeBadge).toHaveText('Collection');
- await expect(variableCard.value).toHaveText('2024-01');
-
- await page.mouse.move(0, 0);
- await expect(variableCard.card).toHaveCount(0);
-
- await variableCard.hoverToken('folderScope');
- await expect(variableCard.scopeBadge).toHaveText('Folder');
- await expect(variableCard.value).toHaveText('from-folder');
-
- await page.mouse.move(0, 0);
- await expect(variableCard.card).toHaveCount(0);
-
- await variableCard.hoverToken('userId');
- await expect(variableCard.scopeBadge).toHaveText('Request');
- await expect(variableCard.value).toHaveText('req-42');
- });
-
- test('resolves a value that references other variables', async ({ requestPage }) => {
- const { variableCard } = requestPage;
- await variableCard.hoverToken('endpoint');
-
- await expect(variableCard.card).toBeVisible();
- await expect(variableCard.value).toHaveText('https://api.dev.example.com/v1');
- });
-
- test('shows the card for a variable used in an example request URL', async ({ requestPage }) => {
- const { variableCard } = requestPage;
- await variableCard.hoverToken('exampleOnly');
-
- await expect(variableCard.card).toBeVisible();
- await expect(variableCard.scopeBadge).toHaveText('Collection');
- await expect(variableCard.value).toHaveText('example-value');
- });
-
- test('shows the card for a variable used in the request body', async ({ requestPage }) => {
- const { bodyVariableCard: variableCard } = requestPage;
- await variableCard.hoverToken('host');
-
- await expect(variableCard.card).toBeVisible();
- await expect(variableCard.scopeBadge).toHaveText('Environment');
- await expect(variableCard.value).toHaveText('https://api.dev.example.com');
- });
-
- test('shows a (Secret) placeholder for a secret referenced in the request body', async ({ requestPage }) => {
- const { bodyVariableCard: variableCard } = requestPage;
- await variableCard.hoverToken('bearer_token');
-
- await expect(variableCard.card).toBeVisible();
- await expect(variableCard.scopeBadge).toHaveText('Environment');
- await expect(variableCard.value).toHaveText('(Secret)');
- await expect(variableCard.copyButton).toHaveCount(0);
- });
-
- test('shows an (empty) placeholder with no copy for a defined variable that has no value', async ({ requestPage }) => {
- const { variableCard } = requestPage;
- await variableCard.hoverToken('emptyValue');
-
- await expect(variableCard.card).toBeVisible();
- await expect(variableCard.scopeBadge).toHaveText('Environment');
- await expect(variableCard.value).toHaveText('(empty)');
- await expect(variableCard.copyButton).toHaveCount(0);
- });
-
- test('pretty-prints an object-typed value', async ({ requestPage }) => {
- const { variableCard } = requestPage;
- await variableCard.hoverToken('profile');
-
- await expect(variableCard.card).toBeVisible();
- await expect(variableCard.value).toContainText('NYC');
- await expect(variableCard.value).toContainText('zip');
- });
-
- test('marks process.env and dynamic references read-only, without a value', async ({ page, requestPage }) => {
- const { variableCard } = requestPage;
- await variableCard.hoverToken('process.env.HOME');
-
- await expect(variableCard.scopeBadge).toHaveText('Process Env');
- await expect(variableCard.note).toHaveText('read-only');
-
- await page.mouse.move(0, 0);
- await expect(variableCard.card).toHaveCount(0);
-
- await variableCard.hoverToken('$randomInt');
-
- await expect(variableCard.scopeBadge).toHaveText('Dynamic');
- await expect(variableCard.note).toContainText('random value');
- });
-
- test('shows a (Secret) placeholder with no reveal or copy, never exposing the value', async ({ requestPage }) => {
- const { variableCard } = requestPage;
- await variableCard.pinToken('bearer_token');
-
- await expect(variableCard.card).toBeVisible();
- await expect(variableCard.scopeBadge).toHaveText('Environment');
- await expect(variableCard.value).toHaveText('(Secret)');
- await expect(variableCard.card).not.toContainText('super-secret-token');
- await expect(variableCard.revealToggle).toHaveCount(0);
- await expect(variableCard.copyButton).toHaveCount(0);
- });
-
- test('copies the resolved value from the copy button', async ({ page, requestPage }) => {
- const { variableCard } = requestPage;
- await page.context().grantPermissions(['clipboard-read', 'clipboard-write']);
-
- await variableCard.pinToken('apiVersion');
- await expect(variableCard.card).toBeVisible();
-
- await variableCard.copyButton.click();
- await expect.poll(() => page.evaluate(() => navigator.clipboard.readText())).toBe('2024-01');
- });
-
- test('is read-only — no editor inside the card', async ({ requestPage }) => {
- const { variableCard } = requestPage;
- await variableCard.pinToken('host');
-
- await expect(variableCard.card).toBeVisible();
- await expect(variableCard.editors).toHaveCount(0);
- });
-
- test('stays open while hovering the card, then closes after the pointer leaves', async ({ page, requestPage }) => {
- const { variableCard } = requestPage;
- await variableCard.hoverToken('host');
- await expect(variableCard.card).toBeVisible();
-
- await variableCard.card.hover();
- await expect(variableCard.card).toBeVisible();
-
- await page.mouse.move(0, 0);
- await expect(variableCard.card).toBeHidden();
- });
-
- test('pins on click; Escape and outside click dismiss it', async ({ page, requestPage }) => {
- const { variableCard } = requestPage;
- await variableCard.pinToken('host');
- await expect(variableCard.card).toBeVisible();
-
- // Pinned: leaving does not close it.
- await page.mouse.move(0, 0);
- await expect(variableCard.card).toBeVisible();
-
- await page.keyboard.press('Escape');
- await expect(variableCard.card).toBeHidden();
-
- await variableCard.pinToken('host');
- await expect(variableCard.card).toBeVisible();
-
- await page.mouse.click(2, 2);
- await expect(variableCard.card).toBeHidden();
- });
-
- test.describe('touch', () => {
- test.use({ hasTouch: true });
-
- test('opens on tap', async ({ requestPage }) => {
- const { variableCard } = requestPage;
- await variableCard.token('host').tap();
-
- await expect(variableCard.card).toBeVisible();
- await expect(variableCard.scopeBadge).toHaveText('Environment');
- });
- });
-
- test.describe('narrow (mobile) viewport', () => {
- test.use({ viewport: { width: 280, height: 700 } });
-
- test('keeps the hover card within a narrow viewport instead of overflowing off-screen', async ({ requestPage }) => {
- const { variableCard } = requestPage;
- await variableCard.hoverToken('endpoint');
- await expect(variableCard.card).toBeVisible();
-
- const box = await variableCard.card.boundingBox();
- if (!box) throw new Error('hover card has no bounding box');
-
- expect(box.x).toBeGreaterThanOrEqual(0);
- expect(box.x + box.width).toBeLessThanOrEqual(280);
- });
- });
-});
-
-// The card also works on the Overview and Folder pages (the collection/folder
-// config sections render header values through VariableText), degrading to the
-// scopes those pages can see (no request scope on Overview/Folder).
-test.describe('Variable hover card — Overview page', () => {
- test.beforeEach(async ({ overviewPage, envSwitcher }) => {
- await overviewPage.goto('/?fixture=vars');
- await envSwitcher.selectEnvironment('Dev');
- });
-
- test('shows the card for a variable used in a collection header (Collection scope)', async ({ overviewPage }) => {
- const { variableCard } = overviewPage;
- await variableCard.hoverToken('apiVersion');
-
- await expect(variableCard.card).toBeVisible();
- await expect(variableCard.scopeBadge).toHaveText('Collection');
- await expect(variableCard.value).toHaveText('2024-01');
- });
-
- test('shows a (Secret) placeholder for a secret referenced in a collection header', async ({ overviewPage }) => {
- const { variableCard } = overviewPage;
- await variableCard.hoverToken('bearer_token');
-
- await expect(variableCard.card).toBeVisible();
- await expect(variableCard.scopeBadge).toHaveText('Environment');
- await expect(variableCard.value).toHaveText('(Secret)');
- });
-});
-
-test.describe('Variable hover card — Folder page', () => {
- test.beforeEach(async ({ folderPage, envSwitcher }) => {
- await folderPage.goto('/?fixture=vars#/customers');
- await envSwitcher.selectEnvironment('Dev');
- });
-
- test('shows the card for a variable used in a folder header (Folder scope)', async ({ folderPage }) => {
- const { variableCard } = folderPage;
- await variableCard.hoverToken('folderScope');
-
- await expect(variableCard.card).toBeVisible();
- await expect(variableCard.scopeBadge).toHaveText('Folder');
- await expect(variableCard.value).toHaveText('from-folder');
- });
-});
-
-test.describe('Variable hover card — Code snippet', () => {
- test.beforeEach(async ({ requestPage, envSwitcher }) => {
- await requestPage.goto(REQUEST);
- await envSwitcher.selectEnvironment('Dev');
- });
-
- test('shows the hover card for a variable inside the generated code', async ({ requestPage }) => {
- const { variableCard } = requestPage;
- await requestPage.codeSnippet.variableToken('host').hover();
-
- await expect(variableCard.card).toBeVisible();
- await expect(variableCard.scopeBadge).toHaveText('Environment');
- await expect(variableCard.value).toHaveText('https://api.dev.example.com');
- });
-
- test('replaces a variable with its resolved value when show variables is on', async ({ requestPage, envSwitcher }) => {
- const host = requestPage.codeSnippet.variableToken('host');
- await expect(host).toHaveText('{{host}}');
-
- await envSwitcher.toggle();
- await expect(host).toHaveText('https://api.dev.example.com');
- });
-
- test('never resolves a secret into the code, even when show variables is on', async ({ requestPage, envSwitcher }) => {
- await envSwitcher.toggle();
- await expect(requestPage.codeSnippet.variableToken('bearer_token')).toHaveText('{{bearer_token}}');
- });
-
- test('copy writes the revealed snippet to the clipboard when show variables is on', async ({ page, requestPage, envSwitcher }) => {
- await page.context().grantPermissions(['clipboard-read', 'clipboard-write']);
- await envSwitcher.toggle();
- await requestPage.codeSnippet.copyButton.click();
-
- await expect
- .poll(() => page.evaluate(() => navigator.clipboard.readText()))
- .toContain('https://api.dev.example.com/customers/req-42?v=2024-01');
-
- const copied = await page.evaluate(() => navigator.clipboard.readText());
- expect(copied).not.toContain('{{host}}/customers');
- expect(copied).toContain('{{bearer_token}}');
- });
-
- test('toggling show variables while a card is open does not crash the page', async ({ page, requestPage, envSwitcher }) => {
- const { variableCard } = requestPage;
- const errors: string[] = [];
- page.on('pageerror', (error) => errors.push(error.message));
-
- await requestPage.codeSnippet.variableToken('host').hover();
- await expect(variableCard.card).toBeVisible();
-
- await envSwitcher.toggle();
- await expect(requestPage.codeSnippet.variableToken('host')).toHaveText('https://api.dev.example.com');
- await expect(variableCard.card).toHaveCount(0);
- expect(errors).toEqual([]);
- });
-
- test('hover card renders above the expanded code-snippet modal', async ({ requestPage }) => {
- const { variableCard } = requestPage;
- await requestPage.codeSnippet.openExpandedView();
- await requestPage.codeSnippet.modalVariableToken('host').hover();
- await expect(variableCard.card).toBeVisible();
-
- const onTop = await variableCard.card.evaluate((el) => {
- const rect = el.getBoundingClientRect();
- const hit = document.elementFromPoint(rect.left + rect.width / 2, rect.top + rect.height / 2);
- return el.contains(hit);
- });
- expect(onTop).toBe(true);
- });
-});
diff --git a/packages/oc-docs/e2e/tsconfig.json b/packages/oc-docs/e2e/tsconfig.json
deleted file mode 100644
index 6238ba7c..00000000
--- a/packages/oc-docs/e2e/tsconfig.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "extends": "../tsconfig.json",
- "compilerOptions": {
- "noEmit": true
- },
- "include": ["**/*.ts"]
-}
diff --git a/packages/oc-docs/eslint.config.js b/packages/oc-docs/eslint.config.js
deleted file mode 100644
index 1f5adec3..00000000
--- a/packages/oc-docs/eslint.config.js
+++ /dev/null
@@ -1,39 +0,0 @@
-import js from '@eslint/js';
-import globals from 'globals';
-import reactHooks from 'eslint-plugin-react-hooks';
-import reactRefresh from 'eslint-plugin-react-refresh';
-import tseslint from 'typescript-eslint';
-
-export default tseslint.config(
- { ignores: ['dist', 'dist-standalone', 'dist-server'] },
- {
- extends: [js.configs.recommended, ...tseslint.configs.recommended],
- files: ['**/*.{ts,tsx}'],
- languageOptions: {
- ecmaVersion: 2020,
- globals: globals.browser,
- },
- plugins: {
- 'react-hooks': reactHooks,
- 'react-refresh': reactRefresh,
- },
- rules: {
- ...reactHooks.configs.recommended.rules,
- 'react-refresh/only-export-components': [
- 'warn',
- { allowConstantExport: true },
- ],
- '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
- '@typescript-eslint/no-explicit-any': 'warn',
- },
- },
- {
- // Playwright e2e tests are not React: the fixture `use` argument is not a hook,
- // and the files export page-object/component classes, not React components.
- files: ['e2e/**/*.ts'],
- rules: {
- 'react-hooks/rules-of-hooks': 'off',
- 'react-refresh/only-export-components': 'off',
- },
- },
-);
\ No newline at end of file
diff --git a/packages/oc-docs/index.html b/packages/oc-docs/index.html
deleted file mode 100644
index fc817fb1..00000000
--- a/packages/oc-docs/index.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
- OpenCollection Docs - Development
-
-
-
-
-
-
diff --git a/packages/oc-docs/package.json b/packages/oc-docs/package.json
deleted file mode 100644
index 39bb3e26..00000000
--- a/packages/oc-docs/package.json
+++ /dev/null
@@ -1,136 +0,0 @@
-{
- "name": "@opencollection/docs",
- "version": "0.0.1",
- "description": "Interactive API documentation component for OpenCollection - supports both React components and standalone JavaScript",
- "type": "module",
- "main": "dist/oc-playground.umd.js",
- "module": "dist/oc-playground.es.js",
- "types": "dist/index.d.ts",
- "exports": {
- ".": {
- "types": "./dist/index.d.ts",
- "import": "./dist/oc-playground.es.js",
- "require": "./dist/oc-playground.umd.js"
- },
- "./standalone": {
- "types": "./standalone.d.ts",
- "import": "./dist-standalone/playground.es.js",
- "require": "./dist-standalone/playground.umd.js"
- },
- "./express": {
- "types": "./dist/express.d.ts",
- "import": "./dist/express.js",
- "require": "./dist/express.js"
- },
- "./server": {
- "types": "./dist/server.d.ts",
- "import": "./dist/server.js",
- "require": "./dist/server.js"
- }
- },
- "files": [
- "dist",
- "dist-standalone",
- "standalone.d.ts"
- ],
- "scripts": {
- "gen:theme": "vite-node scripts/generate-theme-css.ts",
- "predev": "npm run gen:theme && npm run build:lib-bundle",
- "dev": "vite",
- "server": "node server.js",
- "dev:all": "concurrently \"npm run dev\" \"npm run server\"",
- "build:lib-bundle": "vite build --config vite.config.libraries-bundle.ts",
- "prebuild": "npm run gen:theme && npm run build:lib-bundle",
- "build": "npm run clean && tsc -p tsconfig.build.json --emitDeclarationOnly && vite build",
- "build:standalone": "npm run clean:standalone && vite build --config vite.config.standalone.ts",
- "build:all": "npm run build && npm run build:standalone",
- "prepublishOnly": "npm run build:all",
- "lint": "eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
- "preview": "vite preview",
- "test": "vitest",
- "test:run": "vitest run",
- "test:e2e": "playwright test",
- "test:e2e:ui": "playwright test --ui",
- "clean": "rimraf dist",
- "clean:standalone": "rimraf dist-standalone"
- },
- "dependencies": {
- "@emotion/css": "^11.13.5",
- "@emotion/react": "^11.14.0",
- "@emotion/styled": "^11.14.1",
- "@faker-js/faker": "^9.7.0",
- "@mintlify/httpsnippet": "^1.0.10",
- "@monaco-editor/react": "^4.7.0",
- "@opencollection/types": "0.12.0",
- "@prantlf/jsonlint": "^16.0.0",
- "@reduxjs/toolkit": "^2.10.1",
- "@tabler/icons": "^1.46.0",
- "@tailwindcss/vite": "^4.0.9",
- "@tippyjs/react": "^4.2.6",
- "@types/js-yaml": "^4.0.9",
- "@types/markdown-it": "^14.1.2",
- "@types/prismjs": "^1.26.5",
- "ajv": "^8.12.0",
- "codemirror": "^6.0.2",
- "fuse.js": "^7.5.0",
- "js-yaml": "^4.1.0",
- "jshint": "^2.13.6",
- "markdown-it": "^14.1.0",
- "monaco-editor": "^0.53.0",
- "nanoid": "~3.3.11",
- "prismjs": "^1.29.0",
- "quickjs-emscripten": "~0.31.0",
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react-markdown": "^10.0.0",
- "react-redux": "^9.2.0",
- "react-router-dom": "^7.3.0",
- "remark-gfm": "^4.0.1",
- "strip-json-comments": "^3.1.1"
- },
- "devDependencies": {
- "@emotion/babel-plugin": "~11.13.5",
- "@eslint/js": "^9.21.0",
- "@playwright/test": "^1.52.0",
- "@tailwindcss/postcss": "^4.1.13",
- "@tailwindcss/typography": "^0.5.10",
- "@types/express": "^4.17.21",
- "@types/lodash-es": "~4.17.12",
- "@types/prismjs": "^1.26.3",
- "@types/react": "^19.0.10",
- "@types/react-dom": "^19.0.4",
- "@types/uuid": "^10.0.0",
- "@vitejs/plugin-react": "^4.3.4",
- "autoprefixer": "^10.4.20",
- "chai": "~5.3.3",
- "concurrently": "^9.1.2",
- "eslint": "^9.21.0",
- "eslint-plugin-react-hooks": "^5.1.0",
- "eslint-plugin-react-refresh": "^0.4.19",
- "globals": "^15.15.0",
- "lodash-es": "~4.17.21",
- "node-html-parser": "^8.0.4",
- "postcss": "^8.5.3",
- "rimraf": "^6.0.1",
- "rollup": "^4.50.2",
- "tailwindcss": "^4.0.9",
- "terser": "^5.44.0",
- "typescript": "~5.7.2",
- "typescript-eslint": "^8.24.1",
- "vite": "^6.2.0",
- "vitest": "^2.1.8"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
- },
- "keywords": [
- "opencollection",
- "api",
- "documentation",
- "playground",
- "interactive"
- ],
- "author": "OpenCollection",
- "license": "MIT"
-}
diff --git a/packages/oc-docs/playwright.config.ts b/packages/oc-docs/playwright.config.ts
deleted file mode 100644
index 02942c61..00000000
--- a/packages/oc-docs/playwright.config.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import { defineConfig, devices } from '@playwright/test';
-import { appConfig } from './e2e/config/app.config';
-
-export default defineConfig({
- testDir: './e2e',
- tsconfig: './e2e/tsconfig.json',
- fullyParallel: true,
- forbidOnly: !!process.env.CI,
- retries: process.env.CI ? 2 : 0,
- workers: process.env.CI ? 1 : undefined,
- reporter: [
- ['list'],
- ['html'],
- ['json', { outputFile: 'playwright-report/results.json' }],
- ],
- use: {
- baseURL: appConfig.baseURL,
- trace: 'on-first-retry',
- },
- projects: [
- {
- name: 'chromium',
- use: { ...devices['Desktop Chrome'] },
- },
- ],
- webServer: {
- command: appConfig.webServerCommand,
- url: appConfig.baseURL,
- reuseExistingServer: !process.env.CI,
- },
-});
diff --git a/packages/oc-docs/postcss.config.cjs b/packages/oc-docs/postcss.config.cjs
deleted file mode 100644
index 90c78136..00000000
--- a/packages/oc-docs/postcss.config.cjs
+++ /dev/null
@@ -1,6 +0,0 @@
-module.exports = {
- plugins: {
- '@tailwindcss/postcss': {},
- autoprefixer: {},
- },
-}
\ No newline at end of file
diff --git a/packages/oc-docs/scripts/generate-theme-css.ts b/packages/oc-docs/scripts/generate-theme-css.ts
deleted file mode 100644
index 611b2f98..00000000
--- a/packages/oc-docs/scripts/generate-theme-css.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import { writeFileSync } from 'node:fs';
-import { dirname, resolve } from 'node:path';
-import { fileURLToPath } from 'node:url';
-import { flattenTheme } from '../src/theme/flatten';
-import { breakpoints } from '../src/theme/tokens/breakpoints';
-import { light } from '../src/theme/tokens/light';
-import { dark } from '../src/theme/tokens/dark';
-
-const block = (selector: string, vars: Record) =>
- `${selector} {\n${Object.entries(vars).map(([k, v]) => ` ${k}: ${v};`).join('\n')}\n}\n`;
-
-const bpVars = Object.fromEntries(Object.entries(breakpoints).map(([k, v]) => [`--oc-breakpoint-${k}`, v]));
-
-const css = [
- '/* AUTO-GENERATED by scripts/generate-theme-css.ts. Do not edit by hand. */',
- '/* Run: npm run gen:theme */',
- '/*',
- ' * Tokens are ported 1:1 from the Bruno app themes (src/theme/tokens/light.ts,',
- ' * dark.ts). The full Bruno set is emitted for fidelity and future component',
- ' * reuse, so some variables are not consumed by the docs UI yet — e.g.',
- ' * --oc-notifications-*, --oc-grpc-*, --oc-console-*, --oc-deprecation-warning-*.',
- ' * These are intentional and safe to keep; prune/refine them later if needed.',
- ' */',
- block(':root', bpVars),
- // Light is also the :root default, so colours resolve even if the root has no
- // data-theme attribute (e.g. applyTheme() never ran) — degrades to light
- // instead of unstyled.
- block(':root,\n[data-theme="light"]', flattenTheme(light as unknown as Record)),
- block('[data-theme="dark"]', flattenTheme(dark as unknown as Record)),
-].join('\n');
-
-const __dirname = dirname(fileURLToPath(import.meta.url));
-
-writeFileSync(resolve(__dirname, '../src/styles/theme.generated.css'), css);
-console.log('theme.generated.css written');
diff --git a/packages/oc-docs/src/assets/icons/BookIcon.tsx b/packages/oc-docs/src/assets/icons/BookIcon.tsx
deleted file mode 100644
index 819d0fb9..00000000
--- a/packages/oc-docs/src/assets/icons/BookIcon.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import React from 'react';
-import { baseIconProps } from './baseIconProps';
-
-export const BookIcon: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/BrunoGlyph.tsx b/packages/oc-docs/src/assets/icons/BrunoGlyph.tsx
deleted file mode 100644
index 2f3eabac..00000000
--- a/packages/oc-docs/src/assets/icons/BrunoGlyph.tsx
+++ /dev/null
@@ -1,107 +0,0 @@
-import React from 'react';
-
-/** Bruno mascot — fixed brand colours (a brand mark, not a themeable surface).
- * Used inside the Open-in-Bruno CTA. */
-export const BrunoGlyph: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/CaretIcon.tsx b/packages/oc-docs/src/assets/icons/CaretIcon.tsx
deleted file mode 100644
index d6111236..00000000
--- a/packages/oc-docs/src/assets/icons/CaretIcon.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-import React from 'react';
-
-/** Small downward caret; fills its container (e.g. the variable data-type select). */
-export const CaretIcon: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/CheckIcon.tsx b/packages/oc-docs/src/assets/icons/CheckIcon.tsx
deleted file mode 100644
index 20bad838..00000000
--- a/packages/oc-docs/src/assets/icons/CheckIcon.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import React from 'react';
-import { baseIconProps } from './baseIconProps';
-
-interface CheckIconProps {
- className?: string;
- width?: number;
- height?: number;
-}
-
-export const CheckIcon: React.FC = ({ className, width=24, height=24 }) => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/ChevronDownIcon.tsx b/packages/oc-docs/src/assets/icons/ChevronDownIcon.tsx
deleted file mode 100644
index 108b99af..00000000
--- a/packages/oc-docs/src/assets/icons/ChevronDownIcon.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import React from 'react';
-import { baseIconProps } from './baseIconProps';
-
-/** Chevron down, the search palette's folder filter dropdown. */
-export const ChevronDownIcon: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/ChevronLeftIcon.tsx b/packages/oc-docs/src/assets/icons/ChevronLeftIcon.tsx
deleted file mode 100644
index c2eb543a..00000000
--- a/packages/oc-docs/src/assets/icons/ChevronLeftIcon.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-import React from 'react';
-import { baseIconProps } from './baseIconProps';
-
-export const ChevronLeftIcon: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/ChevronRightIcon.tsx b/packages/oc-docs/src/assets/icons/ChevronRightIcon.tsx
deleted file mode 100644
index b1ea8a28..00000000
--- a/packages/oc-docs/src/assets/icons/ChevronRightIcon.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-import React from 'react';
-import { baseIconProps } from './baseIconProps';
-
-export const ChevronRightIcon: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/ChevronsRightIcon.tsx b/packages/oc-docs/src/assets/icons/ChevronsRightIcon.tsx
deleted file mode 100644
index 44630e24..00000000
--- a/packages/oc-docs/src/assets/icons/ChevronsRightIcon.tsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import React from 'react';
-
-export const ChevronsRightIcon: React.FC<{ size?: number }> = ({ size = 18 }) => (
-
-);
-
-export default ChevronsRightIcon;
diff --git a/packages/oc-docs/src/assets/icons/CloseIcon.tsx b/packages/oc-docs/src/assets/icons/CloseIcon.tsx
deleted file mode 100644
index 0f46475b..00000000
--- a/packages/oc-docs/src/assets/icons/CloseIcon.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-import React from 'react';
-import { baseIconProps } from './baseIconProps';
-
-export const CloseIcon: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/CubeIcon.tsx b/packages/oc-docs/src/assets/icons/CubeIcon.tsx
deleted file mode 100644
index 451d0963..00000000
--- a/packages/oc-docs/src/assets/icons/CubeIcon.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import React from 'react';
-import { baseIconProps } from './baseIconProps';
-
-export const CubeIcon: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/DockBottomIcon.tsx b/packages/oc-docs/src/assets/icons/DockBottomIcon.tsx
deleted file mode 100644
index 6ba98693..00000000
--- a/packages/oc-docs/src/assets/icons/DockBottomIcon.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import React from 'react';
-import { baseIconProps } from './baseIconProps';
-
-export const DockBottomIcon: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/DockInlineIcon.tsx b/packages/oc-docs/src/assets/icons/DockInlineIcon.tsx
deleted file mode 100644
index 5537be71..00000000
--- a/packages/oc-docs/src/assets/icons/DockInlineIcon.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import React from 'react';
-import { baseIconProps } from './baseIconProps';
-
-export const DockInlineIcon: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/DockModalIcon.tsx b/packages/oc-docs/src/assets/icons/DockModalIcon.tsx
deleted file mode 100644
index bff13e97..00000000
--- a/packages/oc-docs/src/assets/icons/DockModalIcon.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-import React from 'react';
-import { baseIconProps } from './baseIconProps';
-
-export const DockModalIcon: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/DotIcon.tsx b/packages/oc-docs/src/assets/icons/DotIcon.tsx
deleted file mode 100644
index 9eab4afb..00000000
--- a/packages/oc-docs/src/assets/icons/DotIcon.tsx
+++ /dev/null
@@ -1,26 +0,0 @@
-import React from 'react';
-
-export const DotIcon: React.FC<{ width?: number | string }> = ({ width = 10 }) => (
-
-);
-
-export default DotIcon;
diff --git a/packages/oc-docs/src/assets/icons/ExampleIcon.spec.tsx b/packages/oc-docs/src/assets/icons/ExampleIcon.spec.tsx
deleted file mode 100644
index 9989b40e..00000000
--- a/packages/oc-docs/src/assets/icons/ExampleIcon.spec.tsx
+++ /dev/null
@@ -1,12 +0,0 @@
-import React from 'react';
-import { describe, it, expect } from 'vitest';
-import { ExampleIcon } from './ExampleIcon';
-import { useRenderToDom } from '../../hooks/useRenderToDom';
-import { query } from '../../test-utils/dom';
-
-describe('ExampleIcon', () => {
- it('renders a decorative svg glyph', () => {
- const root = useRenderToDom();
- expect(query(root, 'svg').getAttribute('aria-hidden')).toBe('true');
- });
-});
diff --git a/packages/oc-docs/src/assets/icons/ExampleIcon.tsx b/packages/oc-docs/src/assets/icons/ExampleIcon.tsx
deleted file mode 100644
index 5ef6cf71..00000000
--- a/packages/oc-docs/src/assets/icons/ExampleIcon.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import React from 'react';
-
-export const ExampleIcon: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/ExpandIcon.tsx b/packages/oc-docs/src/assets/icons/ExpandIcon.tsx
deleted file mode 100644
index 05c4b9a5..00000000
--- a/packages/oc-docs/src/assets/icons/ExpandIcon.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import React from 'react';
-import { baseIconProps } from './baseIconProps';
-
-export const ExpandIcon: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/EyeIcon.tsx b/packages/oc-docs/src/assets/icons/EyeIcon.tsx
deleted file mode 100644
index e6912c55..00000000
--- a/packages/oc-docs/src/assets/icons/EyeIcon.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import React from 'react';
-import { baseIconProps } from './baseIconProps';
-
-export const EyeIcon: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/EyeOffIcon.tsx b/packages/oc-docs/src/assets/icons/EyeOffIcon.tsx
deleted file mode 100644
index 4f071e98..00000000
--- a/packages/oc-docs/src/assets/icons/EyeOffIcon.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import React from 'react';
-import { baseIconProps } from './baseIconProps';
-
-export const EyeOffIcon: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/FileIcon.tsx b/packages/oc-docs/src/assets/icons/FileIcon.tsx
deleted file mode 100644
index 6df3b18f..00000000
--- a/packages/oc-docs/src/assets/icons/FileIcon.tsx
+++ /dev/null
@@ -1,12 +0,0 @@
-import React from 'react';
-import { baseIconProps } from './baseIconProps';
-
-export const FileIcon: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/FileNotFoundIcon.tsx b/packages/oc-docs/src/assets/icons/FileNotFoundIcon.tsx
deleted file mode 100644
index 25e0aa73..00000000
--- a/packages/oc-docs/src/assets/icons/FileNotFoundIcon.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import React from 'react';
-import { baseIconProps } from './baseIconProps';
-
-export const FileNotFoundIcon: React.FC = () => (
-
-);
-
-export default FileNotFoundIcon;
diff --git a/packages/oc-docs/src/assets/icons/FolderIcon.tsx b/packages/oc-docs/src/assets/icons/FolderIcon.tsx
deleted file mode 100644
index ad3d48dd..00000000
--- a/packages/oc-docs/src/assets/icons/FolderIcon.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import React from 'react';
-import { baseIconProps } from './baseIconProps';
-
-/** Folder outline, the search palette's folder filter options. */
-export const FolderIcon: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/GlobeIcon.tsx b/packages/oc-docs/src/assets/icons/GlobeIcon.tsx
deleted file mode 100644
index e0d76292..00000000
--- a/packages/oc-docs/src/assets/icons/GlobeIcon.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import React from 'react';
-import { baseIconProps } from './baseIconProps';
-
-export const GlobeIcon: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/HamburgerIcon.tsx b/packages/oc-docs/src/assets/icons/HamburgerIcon.tsx
deleted file mode 100644
index 7765242c..00000000
--- a/packages/oc-docs/src/assets/icons/HamburgerIcon.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import React from 'react';
-import { baseIconProps } from './baseIconProps';
-
-/** Three bars — Topbar sidebar (hamburger) toggle. */
-export const HamburgerIcon: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/OverflowIcon.tsx b/packages/oc-docs/src/assets/icons/OverflowIcon.tsx
deleted file mode 100644
index d105d0a0..00000000
--- a/packages/oc-docs/src/assets/icons/OverflowIcon.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import React from 'react';
-
-/** Vertical ellipsis — Topbar mobile overflow trigger. */
-export const OverflowIcon: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/PlayIcon.tsx b/packages/oc-docs/src/assets/icons/PlayIcon.tsx
deleted file mode 100644
index 5f589492..00000000
--- a/packages/oc-docs/src/assets/icons/PlayIcon.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-import React from 'react';
-
-export const PlayIcon: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/RefreshIcon.tsx b/packages/oc-docs/src/assets/icons/RefreshIcon.tsx
deleted file mode 100644
index d76b8093..00000000
--- a/packages/oc-docs/src/assets/icons/RefreshIcon.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import React from 'react';
-import { baseIconProps } from './baseIconProps';
-
-export const RefreshIcon: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/SearchIcon.tsx b/packages/oc-docs/src/assets/icons/SearchIcon.tsx
deleted file mode 100644
index 4a31c171..00000000
--- a/packages/oc-docs/src/assets/icons/SearchIcon.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import React from 'react';
-import { baseIconProps } from './baseIconProps';
-
-/** Magnifying glass — Topbar search toggle. */
-export const SearchIcon: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/SendIcon.tsx b/packages/oc-docs/src/assets/icons/SendIcon.tsx
deleted file mode 100644
index 739e5c5d..00000000
--- a/packages/oc-docs/src/assets/icons/SendIcon.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import React from 'react';
-import { baseIconProps } from './baseIconProps';
-
-interface SendIconProps {
- width?: number;
- height?: number;
-}
-
-/** Paper-plane "send" icon used by the Try action. */
-export const SendIcon: React.FC = ({ width = 11, height = 11 }) => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/SettingsIcon.tsx b/packages/oc-docs/src/assets/icons/SettingsIcon.tsx
deleted file mode 100644
index 7e482279..00000000
--- a/packages/oc-docs/src/assets/icons/SettingsIcon.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import React from 'react';
-import { baseIconProps } from './baseIconProps';
-
-export const SettingsIcon: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/SidebarToggleIcon.tsx b/packages/oc-docs/src/assets/icons/SidebarToggleIcon.tsx
deleted file mode 100644
index 40329bf9..00000000
--- a/packages/oc-docs/src/assets/icons/SidebarToggleIcon.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import React from 'react';
-import { baseIconProps } from './baseIconProps';
-
-interface SidebarToggleIconProps {
- /** Fills the sidebar column when the playground sidebar is open. */
- active?: boolean;
-}
-
-export const SidebarToggleIcon: React.FC = ({ active = false }) => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/TrashIcon.tsx b/packages/oc-docs/src/assets/icons/TrashIcon.tsx
deleted file mode 100644
index 59df4350..00000000
--- a/packages/oc-docs/src/assets/icons/TrashIcon.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import React from 'react';
-import { baseIconProps } from './baseIconProps';
-
-export const TrashIcon: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/WarningIcon.tsx b/packages/oc-docs/src/assets/icons/WarningIcon.tsx
deleted file mode 100644
index 6f705314..00000000
--- a/packages/oc-docs/src/assets/icons/WarningIcon.tsx
+++ /dev/null
@@ -1,19 +0,0 @@
-import React from 'react';
-
-/** Warning circle with an exclamation mark; sized by its container. */
-export const WarningIcon: React.FC = () => (
-
-);
diff --git a/packages/oc-docs/src/assets/icons/baseIconProps.ts b/packages/oc-docs/src/assets/icons/baseIconProps.ts
deleted file mode 100644
index 4e96f1c7..00000000
--- a/packages/oc-docs/src/assets/icons/baseIconProps.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import type { SVGProps } from 'react';
-
-/** Shared stroke styling. `currentColor` lets the icon inherit the surrounding
- * theme colour, so it adapts when the theme changes. */
-export const baseIconProps: SVGProps = {
- width: 20,
- height: 20,
- viewBox: '0 0 24 24',
- fill: 'none',
- stroke: 'currentColor',
- strokeWidth: 2,
- strokeLinecap: 'round',
- strokeLinejoin: 'round',
- 'aria-hidden': true
-};
diff --git a/packages/oc-docs/src/assets/icons/index.ts b/packages/oc-docs/src/assets/icons/index.ts
deleted file mode 100644
index 12d225de..00000000
--- a/packages/oc-docs/src/assets/icons/index.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-export * from './SearchIcon';
-export * from './WarningIcon';
-export * from './CaretIcon';
-export * from './CloseIcon';
-export * from './FolderIcon';
-export * from './ChevronDownIcon';
-export * from './HamburgerIcon';
-export * from './OverflowIcon';
-export * from './BrunoGlyph';
-export * from './GlobeIcon';
-export * from './CubeIcon';
-export * from './ChevronLeftIcon';
-export * from './ChevronRightIcon';
-export * from './BookIcon';
-export * from './ExpandIcon';
-export * from './PlayIcon';
-export * from './SendIcon';
-export * from './EyeIcon';
-export * from './EyeOffIcon';
-export * from './FileIcon';
-export * from './FileNotFoundIcon';
-export * from './RefreshIcon';
-export * from './DockInlineIcon';
-export * from './DockBottomIcon';
-export * from './DockModalIcon';
-export * from './SidebarToggleIcon';
-export * from './SettingsIcon';
-export * from './TrashIcon';
-export * from './ExampleIcon';
-export * from './DotIcon';
-export * from './ChevronsRightIcon';
-export * from './CheckIcon';
diff --git a/packages/oc-docs/src/assets/opencollection-logo.svg b/packages/oc-docs/src/assets/opencollection-logo.svg
deleted file mode 100644
index 62f1dc76..00000000
--- a/packages/oc-docs/src/assets/opencollection-logo.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
diff --git a/packages/oc-docs/src/assets/react.svg b/packages/oc-docs/src/assets/react.svg
deleted file mode 100644
index 6c87de9b..00000000
--- a/packages/oc-docs/src/assets/react.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/oc-docs/src/components/AppShell/AppShell.tsx b/packages/oc-docs/src/components/AppShell/AppShell.tsx
deleted file mode 100644
index 398802e9..00000000
--- a/packages/oc-docs/src/components/AppShell/AppShell.tsx
+++ /dev/null
@@ -1,188 +0,0 @@
-import React, { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';
-import { useLocation } from 'react-router-dom';
-import Topbar from '../Topbar/Topbar';
-import EnvSwitcher from '../EnvSwitcher/EnvSwitcher';
-import ShowVarsToggle from '../ShowVarsToggle/ShowVarsToggle';
-import ThemeToggle from '../ThemeToggle/ThemeToggle';
-import Sidebar from '../Docs/Sidebar/Sidebar';
-import SidebarDrawer from '../SidebarDrawer/SidebarDrawer';
-import IconButton from '../../ui/IconButton/IconButton';
-import { ChevronLeftIcon, ChevronRightIcon } from '../../assets/icons';
-import PageRouter from '../PageRouter/PageRouter';
-import Playground from '../Playground/Playground';
-import SearchBar from '../Search/SearchBar/SearchBar';
-import { useSearchHotkey, usePlaygroundUrlState, useElementWidth, useResizableSidebar } from '../../hooks';
-import { useAppSelector } from '../../store/hooks';
-import { selectDocsCollection } from '../../store/slices/docs';
-import { selectGitCollectionUrl } from '../../store/slices/app';
-import { useActiveResolution } from '../../routing/hooks';
-import { layoutModeForWidth } from '../../hooks/useTopbarLayout';
-import { buildFetchInBrunoUrl } from '../../utils/buildFetchInBrunoUrl';
-import { StyledWrapper } from './StyledWrapper';
-
-interface AppShellProps {
- logo?: React.ReactNode;
- testId?: string;
-}
-
-const AppShell: React.FC = ({ logo, testId = 'app-shell' }) => {
- const collection = useAppSelector(selectDocsCollection);
- const gitCollectionUrl = useAppSelector(selectGitCollectionUrl);
- const resolution = useActiveResolution();
-
- // Single source of truth for search-open, shared by the Topbar (icon + row)
- // and the SearchBar panel so they never disagree. ⌘K / Ctrl+K is mounted here
- // so it works regardless of the Topbar's responsive layout.
- const [searchOpen, setSearchOpen] = useState(false);
- // Bumped on every hotkey press so the field refocuses even when the panel is
- // already open (open state alone wouldn't change, so it can't drive focus).
- const [searchFocusNonce, setSearchFocusNonce] = useState(0);
- const openSearch = useCallback(() => {
- setSearchOpen(true);
- setSearchFocusNonce((n) => n + 1);
- }, []);
- useSearchHotkey(openSearch);
-
- // Responsive mode follows the docs area width, not the window: when the inline
- // playground takes part of the row, the docs column (`.appshell-body`) shrinks
- // and the docs chrome (topbar + sidebar) should go tablet/mobile accordingly.
- // In the other docks the shell is a column, so this equals the window width.
- const bodyRef = useRef(null);
- const contentRef = useRef(null);
- const bodyWidth = useElementWidth(bodyRef);
- const mode = layoutModeForWidth(bodyWidth || (typeof window !== 'undefined' ? window.innerWidth : 1024));
- const isDesktop = mode === 'desktop';
- const [sidebarCollapsed, setSidebarCollapsed] = useState(false);
- const [drawerOpen, setDrawerOpen] = useState(false);
- const { width: sidebarWidth, dragging: sidebarDragging, startDrag: startSidebarResize } = useResizableSidebar(
- 'oc-docs:docsSidebarWidth',
- () => setSidebarCollapsed(true),
- () => setSidebarCollapsed(false)
- );
- const { pathname } = useLocation();
-
- const { open: playgroundOpen, dock: playgroundDock, openPlayground } = usePlaygroundUrlState();
- // Bumped on every Try click so the bottom sheet re-expands from collapsed even
- // when the requested slug is unchanged (a slug change alone wouldn't signal it).
- const [playgroundOpenNonce, setPlaygroundOpenNonce] = useState(0);
-
- useEffect(() => {
- setDrawerOpen(false);
- }, [pathname]);
-
- useLayoutEffect(() => {
- const content = contentRef.current;
- if (content) content.scrollTop = 0;
- }, [pathname]);
-
- // Close the mobile drawer when moving to desktop, so it doesn't reappear on
- // its own if the viewport shrinks back to mobile.
- useEffect(() => {
- if (isDesktop) setDrawerOpen(false);
- }, [isDesktop]);
-
- const closeDrawer = useCallback(() => setDrawerOpen(false), []);
- const toggleSidebar = useCallback(() => {
- if (mode === 'desktop') setSidebarCollapsed((collapsed) => !collapsed);
- else setDrawerOpen((open) => !open);
- }, [mode]);
-
- const handleOpenPlayground = useCallback(() => {
- openPlayground(resolution?.entry.slug);
- setPlaygroundOpenNonce((nonce) => nonce + 1);
- }, [openPlayground, resolution]);
-
- return (
-
-
-
- }
- searchOpen={searchOpen}
- onSearchOpenChange={setSearchOpen}
- onToggleSidebar={toggleSidebar}
- envSwitcherSlot={
- <>
-
-
- >
- }
- openInBrunoHref={buildFetchInBrunoUrl(gitCollectionUrl)}
- themeToggleSlot={
}
- />
-
-
-
- {isDesktop && !sidebarCollapsed && (
- <>
-
-
-
setSidebarCollapsed(true)}
- >
-
-
- >
- )}
- {isDesktop && sidebarCollapsed && (
-
setSidebarCollapsed(false)}
- >
-
-
- )}
-
-
-
-
-
-
-
- {playgroundOpen && }
-
- {!isDesktop && (
-
-
-
- )}
-
- );
-};
-
-export default AppShell;
diff --git a/packages/oc-docs/src/components/AppShell/StyledWrapper.ts b/packages/oc-docs/src/components/AppShell/StyledWrapper.ts
deleted file mode 100644
index f53b8815..00000000
--- a/packages/oc-docs/src/components/AppShell/StyledWrapper.ts
+++ /dev/null
@@ -1,145 +0,0 @@
-import styled from '@emotion/styled';
-
-export const StyledWrapper = styled.div`
- display: flex;
- flex-direction: column;
- height: 100vh;
- box-sizing: border-box;
-
- &[data-dock='inline'] {
- flex-direction: row;
- }
-
- .appshell-body {
- display: flex;
- flex-direction: column;
- flex: 1;
- min-width: 0;
- min-height: 0;
- overflow: hidden;
- container-type: inline-size;
- container-name: docs;
- }
-
- .appshell-main {
- display: flex;
- flex-direction: column;
- flex: 1;
- min-height: 0;
- }
-
- .appshell-row {
- display: flex;
- flex: 1;
- min-height: 0;
- position: relative;
- }
-
- .appshell-sidebar {
- width: var(--sidebar-width);
- flex-shrink: 0;
- height: 100%;
- overflow: hidden;
- border-right: 1px solid var(--oc-border-border0);
- background-color: var(--oc-background-base);
- }
-
- .appshell-sidebar-resizer {
- position: absolute;
- top: 0;
- bottom: 0;
- left: var(--sidebar-width);
- width: 0.5625rem;
- transform: translateX(-0.25rem);
- z-index: calc(var(--z-sidebar, 5) + 1);
- cursor: col-resize;
- touch-action: none;
- }
-
- .appshell-sidebar-resizer::before {
- content: '';
- position: absolute;
- top: 0;
- bottom: 0;
- left: 50%;
- width: 0.0625rem;
- transform: translateX(-50%);
- background-color: transparent;
- }
-
- .appshell-sidebar-resizer:hover::before,
- .appshell-sidebar-resizer[data-dragging='true']::before {
- width: 0.125rem;
- background-color: var(--oc-border-border2);
- }
-
- .appshell-content {
- flex: 1;
- min-width: 0;
- height: 100%;
- overflow-y: auto;
- overscroll-behavior-y: contain;
- scrollbar-width: thin;
- scrollbar-color: var(--oc-scrollbar-color) transparent;
- }
-
- .appshell-content::-webkit-scrollbar {
- width: 6px;
- }
-
- .appshell-content::-webkit-scrollbar-track {
- background: transparent;
- }
-
- .appshell-content::-webkit-scrollbar-thumb {
- background-color: var(--oc-scrollbar-color);
- border-radius: 20px;
- }
-
- .appshell-content::-webkit-scrollbar-thumb:hover {
- background-color: color-mix(in srgb, var(--oc-text) 20%, transparent);
- }
-
- .appshell-collapse,
- .appshell-reopen {
- position: absolute;
- z-index: calc(var(--z-sidebar, 5) + 1);
- width: 22px;
- height: 22px;
- border: 1px solid var(--oc-border-border0);
- border-radius: var(--oc-radius);
- background-color: var(--oc-background-base);
- color: var(--oc-colors-text-subtext0);
- }
-
- .appshell-collapse svg,
- .appshell-reopen svg {
- width: 14px;
- height: 14px;
- }
-
- .appshell-collapse:hover,
- .appshell-reopen:hover {
- background-color: var(--oc-background-surface0);
- color: var(--text-secondary);
- }
-
- .appshell-collapse {
- top: 14px;
- left: calc(var(--sidebar-width) - 12px);
- opacity: 0;
- pointer-events: none;
- transition: opacity 0.15s ease;
- }
-
- .appshell-sidebar:hover ~ .appshell-collapse,
- .appshell-collapse:hover {
- opacity: 1;
- pointer-events: auto;
- }
-
- .appshell-reopen {
- top: 14px;
- left: 12px;
- }
-`;
diff --git a/packages/oc-docs/src/components/AuthDetails/AuthDetails.spec.tsx b/packages/oc-docs/src/components/AuthDetails/AuthDetails.spec.tsx
deleted file mode 100644
index 04e605dc..00000000
--- a/packages/oc-docs/src/components/AuthDetails/AuthDetails.spec.tsx
+++ /dev/null
@@ -1,220 +0,0 @@
-import React from 'react';
-import { renderToStaticMarkup } from 'react-dom/server';
-import { parse } from 'node-html-parser';
-import { describe, it, expect } from 'vitest';
-import { AuthDetails } from './AuthDetails';
-import { AUTH_MODE_LABELS } from '../../constants';
-import { SECRET_MASK } from '../../constants';
-
-const renderAuth = (ui: React.ReactElement) => {
- const html = renderToStaticMarkup(ui);
- const root = parse(html);
- // Strip emotion's inline