diff --git a/docs/logo_pandino.png b/docs/logo_pandino.png new file mode 100644 index 00000000..1dae9bd1 Binary files /dev/null and b/docs/logo_pandino.png differ diff --git a/examples/README.md b/examples/README.md index d96206f6..643990e1 100644 --- a/examples/README.md +++ b/examples/README.md @@ -33,3 +33,7 @@ or in certain cases install them via NPM! Using CDNs is not mandatory. ## Activator Resolvers - [umd-bundle-ts](./umd-bundle-ts) + +## React integration + +- [react-systemjs](./react-systemjs) diff --git a/examples/custom-elements-web-ts/package-lock.json b/examples/custom-elements-web-ts/package-lock.json index a26d443f..6b3befb5 100644 --- a/examples/custom-elements-web-ts/package-lock.json +++ b/examples/custom-elements-web-ts/package-lock.json @@ -12,8 +12,8 @@ "./packages/*" ], "devDependencies": { - "@lerna-lite/cli": "^1.12.0", - "@lerna-lite/run": "^1.12.0", + "@lerna-lite/cli": "^1.13.0", + "@lerna-lite/run": "^1.13.0", "@rollup/plugin-node-resolve": "^15.0.1", "@rollup/plugin-terser": "^0.1.0", "@rollup/plugin-typescript": "^9.0.2", @@ -216,24 +216,23 @@ } }, "node_modules/@lerna-lite/cli": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/@lerna-lite/cli/-/cli-1.12.0.tgz", - "integrity": "sha512-XOyEe2OEMGKOAj/uDOIAnK2+cit9VFw6R/KYQrxyW6X79hANscpdkSmAU4stIBRvsb4RdLbK3Cjuu97DqfNe+Q==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@lerna-lite/cli/-/cli-1.15.1.tgz", + "integrity": "sha512-tpR/NPdX65AzprU6F1IH3hsAullmnYaO4MJOk3f6HCEfxcqUchbTLtzBonSYFNTgEc005Bt8EfejLz+o4zlKyQ==", "dev": true, "dependencies": { - "@lerna-lite/core": "1.12.0", - "@lerna-lite/info": "1.12.0", - "@lerna-lite/init": "1.12.0", - "@lerna-lite/listable": "1.12.0", - "@lerna-lite/publish": "1.12.0", - "@lerna-lite/version": "1.12.0", + "@lerna-lite/core": "1.15.1", + "@lerna-lite/init": "1.15.1", + "@lerna-lite/listable": "1.15.1", + "@lerna-lite/publish": "1.15.1", + "@lerna-lite/version": "1.15.1", "dedent": "^0.7.0", "dotenv": "^16.0.3", "import-local": "^3.1.0", "load-json-file": "^6.2.0", - "npmlog": "^7.0.0", + "npmlog": "^7.0.1", "path": "^0.12.7", - "yargs": "^17.6.0" + "yargs": "^17.6.2" }, "bin": { "lerna": "dist/cli.js" @@ -244,50 +243,34 @@ } }, "node_modules/@lerna-lite/core": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/@lerna-lite/core/-/core-1.12.0.tgz", - "integrity": "sha512-G3TLN69IVVJyYFX/QxUr7nkRg2YR+hfaSI+mBcUv/gPvJpoWfIdPKS4ewcI8vUO0jyobNxz5vj16hmYPHgAmJA==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@lerna-lite/core/-/core-1.15.1.tgz", + "integrity": "sha512-NRg2OZ44j+RHtWFC6tqzweO3gB+c1kU7EYsh5OCDUid0/U3+2OAxbq/WLaq/u0GUnLeXqVmCcb3231vi1noSCg==", "dev": true, "dependencies": { - "@npmcli/run-script": "^5.0.0", - "@octokit/plugin-enterprise-rest": "^6.0.1", - "@octokit/rest": "^19.0.5", + "@npmcli/run-script": "^6.0.0", "chalk": "^4.1.2", "clone-deep": "^4.0.1", "config-chain": "^1.1.13", - "conventional-changelog-angular": "^5.0.13", - "conventional-changelog-core": "^4.2.4", - "conventional-changelog-writer": "^5.0.1", - "conventional-commits-parser": "^3.2.4", - "conventional-recommended-bump": "^6.1.0", - "cosmiconfig": "^7.0.1", + "cosmiconfig": "^8.0.0", "dedent": "^0.7.0", "execa": "^5.1.1", - "fs-extra": "^10.1.0", - "get-stream": "^6.0.1", - "git-url-parse": "^13.1.0", + "fs-extra": "^11.1.0", "glob-parent": "^6.0.2", "globby": "^11.1.0", - "graceful-fs": "^4.2.10", "inquirer": "^8.2.4", "is-ci": "^3.0.1", - "is-stream": "^2.0.1", "load-json-file": "^6.2.0", - "make-dir": "^3.1.0", - "minimatch": "^5.1.0", - "node-fetch": "^2.6.7", - "npm-package-arg": "^9.1.2", - "npmlog": "^7.0.0", + "minimatch": "^6.1.6", + "npm-package-arg": "^10.1.0", + "npmlog": "^7.0.1", "p-map": "^4.0.0", "p-queue": "^6.6.2", "path": "^0.12.7", - "pify": "^5.0.0", "resolve-from": "^5.0.0", "semver": "^7.3.8", "slash": "^3.0.0", "strong-log-transformer": "^2.1.0", - "temp-dir": "^1.0.0", - "uuid": "^9.0.0", "write-file-atomic": "^5.0.0", "write-json-file": "^4.3.0", "write-pkg": "^4.0.0" @@ -301,14 +284,15 @@ "url": "https://ko-fi.com/ghiscoding" } }, - "node_modules/@lerna-lite/info": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/@lerna-lite/info/-/info-1.12.0.tgz", - "integrity": "sha512-3jMyJOjwhbkWp5SEA612hMBiG49f3VDk5agtCTbCiiMFXEBkQ99Z17hrVPetrMRDuGYlnB2ltWdmQyGnKxy+LQ==", + "node_modules/@lerna-lite/filter-packages": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@lerna-lite/filter-packages/-/filter-packages-1.15.1.tgz", + "integrity": "sha512-3jsKGkCvoUOOdOxKdBpSQqR3bYWaq00jkziB+i8Vs3eY/6l6LZSScioc3+LGc1etqUvvgrVFzdddM+b0BpFcsQ==", "dev": true, "dependencies": { - "@lerna-lite/core": "1.12.0", - "envinfo": "^7.8.1" + "@lerna-lite/core": "1.15.1", + "multimatch": "^5.0.0", + "npmlog": "^7.0.1" }, "engines": { "node": ">=14.17.0", @@ -316,13 +300,13 @@ } }, "node_modules/@lerna-lite/init": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/@lerna-lite/init/-/init-1.12.0.tgz", - "integrity": "sha512-b1m0pKdEhJmE4kV3vsP85wuU6LdCTVS5ZEmbzubH7Yu778JCYl6aBRnRwXTSQ3Rkxuz2t2Uv3QRZ7h34FMBxXA==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@lerna-lite/init/-/init-1.15.1.tgz", + "integrity": "sha512-DOPTGT8tU9pETTjDgzBLVrKksC5CHiKnccIcurShHZ53SiA2t59MTD7dQ9rvnh4UQNyfnuAkWy+gNKnqR1IL5Q==", "dev": true, "dependencies": { - "@lerna-lite/core": "1.12.0", - "fs-extra": "^10.1.0", + "@lerna-lite/core": "1.15.1", + "fs-extra": "^11.1.0", "p-map": "^4.0.0", "path": "^0.12.7", "write-json-file": "^4.3.0" @@ -333,12 +317,12 @@ } }, "node_modules/@lerna-lite/listable": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/@lerna-lite/listable/-/listable-1.12.0.tgz", - "integrity": "sha512-4oY9j4gcZ2dsy0wDljvUE6rsu4IxlcNPWdA5PYqm9aEdoM+hNF+696V9sYL406VRPN4lB90q7XehbNWStGE5Yg==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@lerna-lite/listable/-/listable-1.15.1.tgz", + "integrity": "sha512-XXBYjYDLVX/AZ92mu9RuJaXTjk/ly5SMSIezGiN1s7DwYGJO0bBK27Ev2xdn0H7TfXnptkT+G2k0cl8GMVVbhA==", "dev": true, "dependencies": { - "@lerna-lite/core": "1.12.0", + "@lerna-lite/core": "1.15.1", "chalk": "^4.1.2", "columnify": "^1.6.0" }, @@ -347,16 +331,15 @@ "npm": ">=8.0.0" } }, - "node_modules/@lerna-lite/optional-cmd-common": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/@lerna-lite/optional-cmd-common/-/optional-cmd-common-1.12.0.tgz", - "integrity": "sha512-ljtehC46icG29bzGlDoytoUNWzqCM07A4PkiKLEbWBlG0pM6+8dGCE3Dw4KIudQwS/DudPTIrgWqUK7t4BdzNQ==", + "node_modules/@lerna-lite/profiler": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@lerna-lite/profiler/-/profiler-1.15.1.tgz", + "integrity": "sha512-OxMwhSFn2i8AvZJMItbc0n/K7mRWQRo2SK1b8yzYIb+kEbtxxXuce1ehO9Y2zDYcWukhMd9+JAz5gfQl/Ht56g==", "dev": true, "dependencies": { - "@lerna-lite/core": "1.12.0", - "fs-extra": "^10.1.0", - "multimatch": "^5.0.0", - "npmlog": "^7.0.0", + "@lerna-lite/core": "1.15.1", + "fs-extra": "^11.1.0", + "npmlog": "^7.0.1", "upath": "^2.0.1" }, "engines": { @@ -365,34 +348,36 @@ } }, "node_modules/@lerna-lite/publish": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/@lerna-lite/publish/-/publish-1.12.0.tgz", - "integrity": "sha512-kCgCZA5XLYvVJScw7DYPlRfHm/4NZkKLdPPDSioT+KWcUh5jYZdPtRBcvSC3U3GZtwbwBORrUZ31OSSS7bIKGQ==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@lerna-lite/publish/-/publish-1.15.1.tgz", + "integrity": "sha512-QlkElCvFTXN++gXjBRigGpWfOihNUJs4+O49Rhk2hvHzjw66VEYCGuXogGASbbuPz5tCNbH/toIqEM6664KtAg==", "dev": true, "dependencies": { - "@lerna-lite/core": "1.12.0", - "@lerna-lite/version": "1.12.0", - "@npmcli/arborist": "^5.6.2", + "@lerna-lite/core": "1.15.1", + "@lerna-lite/version": "1.15.1", + "@npmcli/arborist": "^6.2.2", "byte-size": "^7.0.1", "chalk": "^4.1.2", "columnify": "^1.6.0", - "fs-extra": "^10.1.0", + "fs-extra": "^11.1.0", + "glob": "^7.2.3", "has-unicode": "^2.0.1", - "libnpmaccess": "^6.0.4", - "libnpmpublish": "^6.0.5", - "npm-package-arg": "^9.1.2", - "npm-packlist": "^7.0.0", - "npm-registry-fetch": "^14.0.0", - "npmlog": "^7.0.0", + "libnpmaccess": "^7.0.2", + "libnpmpublish": "^7.0.8", + "npm-package-arg": "^10.1.0", + "npm-packlist": "^7.0.4", + "npm-registry-fetch": "^14.0.3", + "npmlog": "^7.0.1", "p-map": "^4.0.0", "p-pipe": "^3.1.0", - "pacote": "^15.0.0", + "pacote": "^15.0.8", "path": "^0.12.7", "pify": "^5.0.0", "read-package-json": "^6.0.0", "semver": "^7.3.8", - "ssri": "^10.0.0", - "tar": "^6.1.11" + "ssri": "^10.0.1", + "tar": "^6.1.13", + "temp-dir": "^2.0.0" }, "engines": { "node": ">=14.17.0", @@ -400,16 +385,17 @@ } }, "node_modules/@lerna-lite/run": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/@lerna-lite/run/-/run-1.12.0.tgz", - "integrity": "sha512-KfLLhPbtj7UYqXmKb2czrvLdn2i+g1NfcsO21PWRL5GeLv8pe0W28ejqsdQu7h8Ilf5e3n5WtrriY5bgdtMTgg==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@lerna-lite/run/-/run-1.15.1.tgz", + "integrity": "sha512-9ARNzWejZ4zYrKvnX3nZkEXnTDrkgk62TiPNE4JQi2nA9EFEf5mxJZ/mH8D96SaEjfIgBBZBCg8ZlY9bvtpoKA==", "dev": true, "dependencies": { - "@lerna-lite/core": "1.12.0", - "@lerna-lite/optional-cmd-common": "1.12.0", + "@lerna-lite/core": "1.15.1", + "@lerna-lite/filter-packages": "1.15.1", + "@lerna-lite/profiler": "1.15.1", "chalk": "^4.1.2", - "fs-extra": "^10.1.0", - "npmlog": "^7.0.0", + "fs-extra": "^11.1.0", + "npmlog": "^7.0.1", "p-map": "^4.0.0" }, "engines": { @@ -418,24 +404,42 @@ } }, "node_modules/@lerna-lite/version": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/@lerna-lite/version/-/version-1.12.0.tgz", - "integrity": "sha512-dI2HE9u3RIWKU89+KhGrXHgCChgdOLCtVWUujCUQeUHOa/UnB4TfBqTD1bvswLZMrMgA+L8/dZqeJ3nuKJRTlg==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@lerna-lite/version/-/version-1.15.1.tgz", + "integrity": "sha512-jFrGdPEeqAILsqbSX7H96qP0XUBSdCgM6xDo4hj6dWSyMbm3ekhtkUOMrQpoEXSYRWylVQTzhXDJH46lTO/Ylw==", "dev": true, "dependencies": { - "@lerna-lite/core": "1.12.0", + "@lerna-lite/core": "1.15.1", + "@octokit/plugin-enterprise-rest": "^6.0.1", + "@octokit/rest": "^19.0.7", "chalk": "^4.1.2", + "conventional-changelog-angular": "^5.0.13", + "conventional-changelog-core": "^4.2.4", + "conventional-changelog-writer": "^5.0.1", + "conventional-commits-parser": "^3.2.4", + "conventional-recommended-bump": "^6.1.0", "dedent": "^0.7.0", + "fs-extra": "^11.1.0", + "get-stream": "^6.0.1", + "git-url-parse": "^13.1.0", + "graceful-fs": "^4.2.10", + "is-stream": "^2.0.1", "load-json-file": "^6.2.0", - "minimatch": "^5.1.0", + "make-dir": "^3.1.0", + "minimatch": "^6.1.6", "new-github-release-url": "^1.0.0", - "npmlog": "^7.0.0", + "node-fetch": "^2.6.7", + "npm-package-arg": "^10.1.0", + "npmlog": "^7.0.1", "p-map": "^4.0.0", "p-pipe": "^3.1.0", "p-reduce": "^2.1.0", "path": "^0.12.7", + "pify": "^5.0.0", "semver": "^7.3.8", "slash": "^3.0.0", + "temp-dir": "^1.0.0", + "uuid": "^9.0.0", "write-json-file": "^4.3.0" }, "engines": { @@ -443,6 +447,15 @@ "npm": ">=8.0.0" } }, + "node_modules/@lerna-lite/version/node_modules/temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -479,830 +492,295 @@ } }, "node_modules/@npmcli/arborist": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-5.6.3.tgz", - "integrity": "sha512-/7hbqEM6YuRjwTcQXkK1+xKslEblY5kFQe0tZ7jKyMlIR6x4iOmhLErIkBBGtTKvYxRKdpcxnFXjCobg3UqmsA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-6.2.2.tgz", + "integrity": "sha512-cjK9CuA1cEovr4E1ljdgYU1UBdKJb4KvvULAEYOM1/qU0Que2X4DKyjIDBEy8MSWRY6PyaQ8oLGhwYIh8gUEEA==", "dev": true, "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/map-workspaces": "^2.0.3", - "@npmcli/metavuln-calculator": "^3.0.1", - "@npmcli/move-file": "^2.0.0", - "@npmcli/name-from-folder": "^1.0.1", - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/package-json": "^2.0.0", - "@npmcli/query": "^1.2.0", - "@npmcli/run-script": "^4.1.3", - "bin-links": "^3.0.3", - "cacache": "^16.1.3", + "@npmcli/fs": "^3.1.0", + "@npmcli/installed-package-contents": "^2.0.0", + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/metavuln-calculator": "^5.0.0", + "@npmcli/name-from-folder": "^2.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^3.0.0", + "@npmcli/query": "^3.0.0", + "@npmcli/run-script": "^6.0.0", + "bin-links": "^4.0.1", + "cacache": "^17.0.4", "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^5.2.1", - "json-parse-even-better-errors": "^2.3.1", + "hosted-git-info": "^6.1.1", + "json-parse-even-better-errors": "^3.0.0", "json-stringify-nice": "^1.1.4", - "minimatch": "^5.1.0", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^6.0.0", - "npm-install-checks": "^5.0.0", - "npm-package-arg": "^9.0.0", - "npm-pick-manifest": "^7.0.2", - "npm-registry-fetch": "^13.0.0", - "npmlog": "^6.0.2", - "pacote": "^13.6.1", - "parse-conflict-json": "^2.0.1", - "proc-log": "^2.0.0", + "minimatch": "^6.1.6", + "nopt": "^7.0.0", + "npm-install-checks": "^6.0.0", + "npm-package-arg": "^10.1.0", + "npm-pick-manifest": "^8.0.1", + "npm-registry-fetch": "^14.0.3", + "npmlog": "^7.0.1", + "pacote": "^15.0.8", + "parse-conflict-json": "^3.0.0", + "proc-log": "^3.0.0", "promise-all-reject-late": "^1.0.0", "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^2.0.2", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", + "read-package-json-fast": "^3.0.2", "semver": "^7.3.7", - "ssri": "^9.0.0", - "treeverse": "^2.0.0", + "ssri": "^10.0.1", + "treeverse": "^3.0.0", "walk-up-path": "^1.0.0" }, "bin": { "arborist": "bin/index.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/@npmcli/git": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", - "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", + "node_modules/@npmcli/arborist/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.0.3.tgz", + "integrity": "sha512-8cXNkDIbnXPVbhXMmQ7/bklCAjtmPaXfI9aEM4iH+xSuEHINLMHhlfESvVwdqmHJRJkR48vNJTSUvoF6GRPSFA==", "dev": true, "dependencies": { - "@npmcli/promise-spawn": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", "lru-cache": "^7.4.4", "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", "semver": "^7.3.5", - "which": "^2.0.2" + "which": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/@npmcli/promise-spawn": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", - "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", + "node_modules/@npmcli/installed-package-contents": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.1.tgz", + "integrity": "sha512-GIykAFdOVK31Q1/zAtT5MbxqQL2vyl9mvFJv+OGu01zxbhL3p0xc8gJjdNGX1mWmUT43aEKVO2L6V/2j4TOsAA==", "dev": true, "dependencies": { - "infer-owner": "^1.0.4" + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "lib/index.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/@npmcli/run-script": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz", - "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==", + "node_modules/@npmcli/map-workspaces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.2.tgz", + "integrity": "sha512-bCEC4PG7HbadtAYkW/TTUVNEOSr5Dhfmv6yGLgByJgCvdCqq7teq09cjvJ1LhzJU/euWjvYMcQxsfj7yDD2ikg==", "dev": true, "dependencies": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3", - "which": "^2.0.2" + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^8.0.1", + "minimatch": "^6.1.6", + "read-package-json-fast": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "node_modules/@npmcli/map-workspaces/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@npmcli/arborist/node_modules/gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "node_modules/@npmcli/map-workspaces/node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" } }, - "node_modules/@npmcli/arborist/node_modules/ignore-walk": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", - "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", + "node_modules/@npmcli/metavuln-calculator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-5.0.0.tgz", + "integrity": "sha512-BBFQx4M12wiEuVwCgtX/Depx0B/+NHMwDWOlXT41/Pdy5W/1Fenk+hibUlMSrFWwASbX+fY90UbILAEIYH02/A==", "dev": true, "dependencies": { - "minimatch": "^5.0.1" + "cacache": "^17.0.0", + "json-parse-even-better-errors": "^3.0.0", + "pacote": "^15.0.0", + "semver": "^7.3.5" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/normalize-package-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", - "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "node_modules/@npmcli/metavuln-calculator/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", "dev": true, - "dependencies": { - "hosted-git-info": "^5.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/npm-bundled": { + "node_modules/@npmcli/move-file": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", - "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", "dev": true, "dependencies": { - "npm-normalize-package-bin": "^2.0.0" + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/npm-normalize-package-bin": { + "node_modules/@npmcli/name-from-folder": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", - "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", + "integrity": "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==", "dev": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/npm-packlist": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", - "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", + "node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", "dev": true, - "dependencies": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0" - }, - "bin": { - "npm-packlist": "bin/index.js" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/npm-registry-fetch": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", - "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", + "node_modules/@npmcli/package-json": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-3.0.0.tgz", + "integrity": "sha512-NnuPuM97xfiCpbTEJYtEuKz6CFbpUHtaT0+5via5pQeI25omvQDFbp1GcGJ/c4zvL/WX0qbde6YiLgfZbWFgvg==", "dev": true, "dependencies": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" + "json-parse-even-better-errors": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "node_modules/@npmcli/package-json/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", "dev": true, - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/pacote": { - "version": "13.6.2", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", - "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", + "node_modules/@npmcli/promise-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", "dev": true, "dependencies": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^4.1.0", - "cacache": "^16.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^5.1.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^5.0.0", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" + "which": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/read-package-json": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz", - "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==", + "node_modules/@npmcli/query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-3.0.0.tgz", + "integrity": "sha512-MFNDSJNgsLZIEBVZ0Q9w9K7o07j5N4o4yjtdz2uEpuCZlXGMuPENiRaFYk0vRqAA64qVuUQwC05g27fRtfUgnA==", "dev": true, "dependencies": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^2.3.1", - "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^2.0.0" + "postcss-selector-parser": "^6.0.10" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "node_modules/@npmcli/run-script": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.0.tgz", + "integrity": "sha512-ql+AbRur1TeOdl1FY+RAwGW9fcr4ZwiVKabdvm93mujGREVuVLbdkXRJDrkTXSdCjaxYydr1wlA2v67jxWG5BQ==", "dev": true, "dependencies": { - "minipass": "^3.1.1" + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/@octokit/auth-token": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.3.tgz", + "integrity": "sha512-/aFM2M4HVDBT/jjDBa84sJniv1t9Gm/rLkalaz9htOm+L+8JMj1k9w0CkUdcxNyNxZPlTxKPVko+m1VlM58ZVA==", "dev": true, "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "@octokit/types": "^9.0.0" }, "engines": { - "node": ">= 8" - } - }, - "node_modules/@npmcli/fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", - "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", - "dev": true, - "dependencies": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/git": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.0.3.tgz", - "integrity": "sha512-8cXNkDIbnXPVbhXMmQ7/bklCAjtmPaXfI9aEM4iH+xSuEHINLMHhlfESvVwdqmHJRJkR48vNJTSUvoF6GRPSFA==", - "dev": true, - "dependencies": { - "@npmcli/promise-spawn": "^6.0.0", - "lru-cache": "^7.4.4", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^8.0.0", - "proc-log": "^3.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dev": true, - "dependencies": { - "lru-cache": "^7.5.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git/node_modules/npm-install-checks": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.0.0.tgz", - "integrity": "sha512-SBU9oFglRVZnfElwAtF14NivyulDqF1VKqqwNsFW9HDcbHMAPHpRSsVFgKuwFGq/hVvWZExz62Th0kvxn/XE7Q==", - "dev": true, - "dependencies": { - "semver": "^7.1.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git/node_modules/npm-normalize-package-bin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.0.tgz", - "integrity": "sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git/node_modules/npm-package-arg": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.0.0.tgz", - "integrity": "sha512-7dkh8mRp7s0KwVHKIVJnFCJQ2B34gOGnzgBjDGyprycmARq/82SX/lhilQ95ZuacP/G/1gsS345iAkKmxWBQ2Q==", - "dev": true, - "dependencies": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git/node_modules/npm-pick-manifest": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz", - "integrity": "sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==", - "dev": true, - "dependencies": { - "npm-install-checks": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^10.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git/node_modules/proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git/node_modules/validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", - "dev": true, - "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/installed-package-contents": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", - "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", - "dev": true, - "dependencies": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "installed-package-contents": "index.js" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@npmcli/map-workspaces": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-2.0.4.tgz", - "integrity": "sha512-bMo0aAfwhVwqoVM5UzX1DJnlvVvzDCHae821jv48L1EsrYwfOZChlqWYXEtto/+BkBXetPbEWgau++/brh4oVg==", - "dev": true, - "dependencies": { - "@npmcli/name-from-folder": "^1.0.1", - "glob": "^8.0.1", - "minimatch": "^5.0.1", - "read-package-json-fast": "^2.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-3.1.1.tgz", - "integrity": "sha512-n69ygIaqAedecLeVH3KnO39M6ZHiJ2dEv5A7DGvcqCB8q17BGUgW8QaanIkbWUo2aYGZqJaOORTLAlIvKjNDKA==", - "dev": true, - "dependencies": { - "cacache": "^16.0.0", - "json-parse-even-better-errors": "^2.3.1", - "pacote": "^13.0.3", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/@npmcli/git": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", - "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", - "dev": true, - "dependencies": { - "@npmcli/promise-spawn": "^3.0.0", - "lru-cache": "^7.4.4", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/@npmcli/promise-spawn": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", - "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", - "dev": true, - "dependencies": { - "infer-owner": "^1.0.4" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/@npmcli/run-script": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz", - "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==", - "dev": true, - "dependencies": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3", - "which": "^2.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/ignore-walk": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", - "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", - "dev": true, - "dependencies": { - "minimatch": "^5.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/normalize-package-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", - "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", - "dev": true, - "dependencies": { - "hosted-git-info": "^5.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/npm-bundled": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", - "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", - "dev": true, - "dependencies": { - "npm-normalize-package-bin": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", - "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", - "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/npm-packlist": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", - "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", - "dev": true, - "dependencies": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0" - }, - "bin": { - "npm-packlist": "bin/index.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/npm-registry-fetch": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", - "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", - "dev": true, - "dependencies": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/pacote": { - "version": "13.6.2", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", - "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", - "dev": true, - "dependencies": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^4.1.0", - "cacache": "^16.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^5.1.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^5.0.0", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/read-package-json": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz", - "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==", - "dev": true, - "dependencies": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^2.3.1", - "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "dev": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/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, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@npmcli/move-file": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", - "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", - "deprecated": "This functionality has been moved to @npmcli/fs", - "dev": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/name-from-folder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz", - "integrity": "sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==", - "dev": true - }, - "node_modules/@npmcli/node-gyp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", - "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", - "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/package-json": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-2.0.0.tgz", - "integrity": "sha512-42jnZ6yl16GzjWSH7vtrmWyJDGVa/LXPdpN2rcUWolFjc9ON2N3uz0qdBbQACfmhuJZ2lbKYtmK5qx68ZPLHMA==", - "dev": true, - "dependencies": { - "json-parse-even-better-errors": "^2.3.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/promise-spawn": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.1.tgz", - "integrity": "sha512-+hcUpxgx0vEpDJI9Cn+lkTdKLoqKBXFCVps5H7FujEU2vLOp6KwqjLlxbnz8Wzgm8oEqW/u5FeNAXSFjLdCD0A==", - "dev": true, - "dependencies": { - "which": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/query": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-1.2.0.tgz", - "integrity": "sha512-uWglsUM3PjBLgTSmZ3/vygeGdvWEIZ3wTUnzGFbprC/RtvQSaT+GAXu1DXmSFj2bD3oOZdcRm1xdzsV2z1YWdw==", - "dev": true, - "dependencies": { - "npm-package-arg": "^9.1.0", - "postcss-selector-parser": "^6.0.10", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/run-script": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-5.1.1.tgz", - "integrity": "sha512-mqj/KPVhahTNvmzk5+YsKuqYnPPh1kOJ4/rA2FR5VhPgfJtCbPuBZrlkYUI0A+z5DKzpE5TITCdlgPllpKcd/Q==", - "dev": true, - "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/promise-spawn": "^6.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^3.0.0", - "which": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/run-script/node_modules/@npmcli/node-gyp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", - "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/run-script/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/run-script/node_modules/npm-normalize-package-bin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.0.tgz", - "integrity": "sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/run-script/node_modules/read-package-json-fast": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.1.tgz", - "integrity": "sha512-8+HW7Yo+cjfF+md8DqsZHgats2mxf7gGYow/+2JjxrftoHFZz9v4dzd0EubzYbkNaLxrTVcnllHwklXN2+7aTQ==", - "dev": true, - "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@octokit/auth-token": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.2.tgz", - "integrity": "sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q==", - "dev": true, - "dependencies": { - "@octokit/types": "^8.0.0" - }, - "engines": { - "node": ">= 14" + "node": ">= 14" } }, "node_modules/@octokit/core": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.1.0.tgz", - "integrity": "sha512-Czz/59VefU+kKDy+ZfDwtOIYIkFjExOKf+HA92aiTZJ6EfWpFzYQWw0l54ji8bVmyhc+mGaLUbSUmXazG7z5OQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.0.tgz", + "integrity": "sha512-AgvDRUg3COpR82P7PBdGZF/NNqGmtMq2NiPqeSsDIeCfYFOZ9gddqWNQHnFdEUf+YwOj4aZYmJnlPp7OXmDIDg==", "dev": true, "dependencies": { "@octokit/auth-token": "^3.0.0", "@octokit/graphql": "^5.0.0", "@octokit/request": "^6.0.0", "@octokit/request-error": "^3.0.0", - "@octokit/types": "^8.0.0", + "@octokit/types": "^9.0.0", "before-after-hook": "^2.2.0", "universal-user-agent": "^6.0.0" }, @@ -1311,12 +789,12 @@ } }, "node_modules/@octokit/endpoint": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.3.tgz", - "integrity": "sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.5.tgz", + "integrity": "sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA==", "dev": true, "dependencies": { - "@octokit/types": "^8.0.0", + "@octokit/types": "^9.0.0", "is-plain-object": "^5.0.0", "universal-user-agent": "^6.0.0" }, @@ -1325,13 +803,13 @@ } }, "node_modules/@octokit/graphql": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.4.tgz", - "integrity": "sha512-amO1M5QUQgYQo09aStR/XO7KAl13xpigcy/kI8/N1PnZYSS69fgte+xA4+c2DISKqUZfsh0wwjc2FaCt99L41A==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.5.tgz", + "integrity": "sha512-Qwfvh3xdqKtIznjX9lz2D458r7dJPP8l6r4GQkIdWQouZwHQK0mVT88uwiU2bdTU2OtT1uOlKpRciUWldpG0yQ==", "dev": true, "dependencies": { "@octokit/request": "^6.0.0", - "@octokit/types": "^8.0.0", + "@octokit/types": "^9.0.0", "universal-user-agent": "^6.0.0" }, "engines": { @@ -1339,9 +817,9 @@ } }, "node_modules/@octokit/openapi-types": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", - "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-16.0.0.tgz", + "integrity": "sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==", "dev": true }, "node_modules/@octokit/plugin-enterprise-rest": { @@ -1351,12 +829,12 @@ "dev": true }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-5.0.1.tgz", - "integrity": "sha512-7A+rEkS70pH36Z6JivSlR7Zqepz3KVucEFVDnSrgHXzG7WLAzYwcHZbKdfTXHwuTHbkT1vKvz7dHl1+HNf6Qyw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.0.0.tgz", + "integrity": "sha512-Sq5VU1PfT6/JyuXPyt04KZNVsFOSBaYOAq2QRZUwzVlI10KFvcbUo8lR258AAQL1Et60b0WuVik+zOWKLuDZxw==", "dev": true, "dependencies": { - "@octokit/types": "^8.0.0" + "@octokit/types": "^9.0.0" }, "engines": { "node": ">= 14" @@ -1375,12 +853,12 @@ } }, "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.7.0.tgz", - "integrity": "sha512-orxQ0fAHA7IpYhG2flD2AygztPlGYNAdlzYz8yrD8NDgelPfOYoRPROfEyIe035PlxvbYrgkfUZIhSBKju/Cvw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.0.1.tgz", + "integrity": "sha512-pnCaLwZBudK5xCdrR823xHGNgqOzRnJ/mpC/76YPpNP7DybdsJtP7mdOwh+wYZxK5jqeQuhu59ogMI4NRlBUvA==", "dev": true, "dependencies": { - "@octokit/types": "^8.0.0", + "@octokit/types": "^9.0.0", "deprecation": "^2.3.1" }, "engines": { @@ -1391,14 +869,14 @@ } }, "node_modules/@octokit/request": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.2.tgz", - "integrity": "sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.3.tgz", + "integrity": "sha512-TNAodj5yNzrrZ/VxP+H5HiYaZep0H3GU0O7PaF+fhDrt8FPrnkei9Aal/txsN/1P7V3CPiThG0tIvpPDYUsyAA==", "dev": true, "dependencies": { "@octokit/endpoint": "^7.0.0", "@octokit/request-error": "^3.0.0", - "@octokit/types": "^8.0.0", + "@octokit/types": "^9.0.0", "is-plain-object": "^5.0.0", "node-fetch": "^2.6.7", "universal-user-agent": "^6.0.0" @@ -1408,12 +886,12 @@ } }, "node_modules/@octokit/request-error": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.2.tgz", - "integrity": "sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", + "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", "dev": true, "dependencies": { - "@octokit/types": "^8.0.0", + "@octokit/types": "^9.0.0", "deprecation": "^2.0.0", "once": "^1.4.0" }, @@ -1422,27 +900,35 @@ } }, "node_modules/@octokit/rest": { - "version": "19.0.5", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.5.tgz", - "integrity": "sha512-+4qdrUFq2lk7Va+Qff3ofREQWGBeoTKNqlJO+FGjFP35ZahP+nBenhZiGdu8USSgmq4Ky3IJ/i4u0xbLqHaeow==", + "version": "19.0.7", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.7.tgz", + "integrity": "sha512-HRtSfjrWmWVNp2uAkEpQnuGMJsu/+dBr47dRc5QVgsCbnIc1+GFEaoKBWkYG+zjrsHpSqcAElMio+n10c0b5JA==", "dev": true, "dependencies": { "@octokit/core": "^4.1.0", - "@octokit/plugin-paginate-rest": "^5.0.0", + "@octokit/plugin-paginate-rest": "^6.0.0", "@octokit/plugin-request-log": "^1.0.4", - "@octokit/plugin-rest-endpoint-methods": "^6.7.0" + "@octokit/plugin-rest-endpoint-methods": "^7.0.0" }, "engines": { "node": ">= 14" } }, "node_modules/@octokit/types": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.0.0.tgz", - "integrity": "sha512-65/TPpOJP1i3K4lBJMnWqPUJ6zuOtzhtagDvydAWbEXpbFYA0oMKKyLb95NFZZP0lSh/4b6K+DQlzvYQJQQePg==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.0.0.tgz", + "integrity": "sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==", "dev": true, "dependencies": { - "@octokit/openapi-types": "^14.0.0" + "@octokit/openapi-types": "^16.0.0" + } + }, + "node_modules/@pandino/bundle-installer-dom": { + "version": "0.8.22", + "resolved": "file:../../packages/@pandino/bundle-installer-dom", + "license": "EPL-2.0", + "engines": { + "node": ">=14.9.0" } }, "node_modules/@pandino/loader-configuration-dom": { @@ -1642,12 +1128,6 @@ "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", "dev": true }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, "node_modules/@types/resolve": { "version": "1.20.2", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", @@ -1655,10 +1135,13 @@ "dev": true }, "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, "node_modules/abort-controller": { "version": "3.0.0", @@ -1826,6 +1309,12 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "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==", + "dev": true + }, "node_modules/array-differ": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", @@ -1859,12 +1348,6 @@ "node": ">=0.10.0" } }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1898,42 +1381,18 @@ "dev": true }, "node_modules/bin-links": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-3.0.3.tgz", - "integrity": "sha512-zKdnMPWEdh4F5INR07/eBrodC7QrF5JKvqskjz/ZZRXg5YSAZIbn8zGhbhUrElzHBZ2fvEQdOU59RHcTG3GiwA==", - "dev": true, - "dependencies": { - "cmd-shim": "^5.0.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0", - "read-cmd-shim": "^3.0.0", - "rimraf": "^3.0.0", - "write-file-atomic": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/bin-links/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", - "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", - "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/bin-links/node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-4.0.1.tgz", + "integrity": "sha512-bmFEM39CyX336ZGGRsGPlc6jZHriIoHacOQcTt72MktIjpPhZoP4te2jOyUXF3BLILmJ8aNLncoPVeIIFlrDeA==", "dev": true, "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" + "cmd-shim": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "read-cmd-shim": "^4.0.0", + "write-file-atomic": "^5.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/bl": { @@ -2029,44 +1488,58 @@ } }, "node_modules/cacache": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", - "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "version": "17.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.4.tgz", + "integrity": "sha512-Z/nL3gU+zTUjz5pCA5vVjYM8pmaw2kxM7JEiE0fv3w77Wj+sFbi70CrBruUWH0uNcEdvLDixFpgA2JM4F4DBjA==", "dev": true, "dependencies": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", "glob": "^8.0.1", - "infer-owner": "^1.0.4", "lru-cache": "^7.7.1", - "minipass": "^3.1.6", + "minipass": "^4.0.0", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", "p-map": "^4.0.0", "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", + "ssri": "^10.0.0", "tar": "^6.1.11", - "unique-filename": "^2.0.0" + "unique-filename": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/cacache/node_modules/ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "node_modules/cacache/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, "dependencies": { - "minipass": "^3.1.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" } }, "node_modules/callsites": { @@ -2136,10 +1609,16 @@ } }, "node_modules/ci-info": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.6.1.tgz", - "integrity": "sha512-up5ggbaDqOqJ4UqLKZ2naVkyqSJQgJi5lwD6b6mM748ysrghDBX0bx/qJTUHzw7zu6Mq4gycviSF5hJnwceD8w==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "engines": { "node": ">=8" } @@ -2236,15 +1715,12 @@ } }, "node_modules/cmd-shim": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-5.0.0.tgz", - "integrity": "sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.1.tgz", + "integrity": "sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q==", "dev": true, - "dependencies": { - "mkdirp-infer-owner": "^2.0.0" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/color-convert": { @@ -2493,19 +1969,18 @@ "dev": true }, "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.0.0.tgz", + "integrity": "sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==", "dev": true, "dependencies": { - "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "path-type": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" } }, "node_modules/cross-spawn": { @@ -2584,15 +2059,6 @@ } } }, - "node_modules/debuglog": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", - "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", @@ -2680,18 +2146,8 @@ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/dezalgo": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", - "dev": true, - "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" + "engines": { + "node": ">=8" } }, "node_modules/dir-glob": { @@ -2771,18 +2227,6 @@ "node": ">=6" } }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/err-code": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", @@ -2961,9 +2405,9 @@ } }, "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -2971,19 +2415,19 @@ "universalify": "^2.0.0" }, "engines": { - "node": ">=12" + "node": ">=14.14" } }, "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.1.tgz", + "integrity": "sha512-MhaJDcFRTuLidHrIttu0RDGyyXs/IYHVmlcxfLAEFIWjc1vdLAkdwT7Ace2u7DbitWC0toKMl5eJZRYNVreIMw==", "dev": true, "dependencies": { - "minipass": "^3.0.0" + "minipass": "^4.0.0" }, "engines": { - "node": ">= 8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/fs.realpath": { @@ -3258,19 +2702,20 @@ } }, "node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=12" + "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -3288,6 +2733,28 @@ "node": ">=10.13.0" } }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -3372,21 +2839,21 @@ "dev": true }, "node_modules/hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", "dev": true, "dependencies": { "lru-cache": "^7.5.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", "dev": true }, "node_modules/http-proxy-agent": { @@ -3476,12 +2943,12 @@ } }, "node_modules/ignore-walk": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.0.tgz", - "integrity": "sha512-bTf9UWe/UP1yxG3QUrj/KOvEhTAUWPcv+WvbFZ28LcqznXabp7Xu6o9y1JEC18+oqODuS7VhTpekV5XvFwsxJg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.1.tgz", + "integrity": "sha512-/c8MxUAqpRccq+LyDOecwF+9KqajueJHh8fz7g3YqjMZt+NSfJzx05zrKiXwa2sKwFCzaiZ5qUVfRj0pmxixEA==", "dev": true, "dependencies": { - "minimatch": "^5.0.1" + "minimatch": "^6.1.6" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -3819,6 +3286,18 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -3884,15 +3363,15 @@ } }, "node_modules/just-diff": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-5.1.1.tgz", - "integrity": "sha512-u8HXJ3HlNrTzY7zrYYKjNEfBlyjqhdBkoyTVdjtn7p02RJD5NvR8rIClzeGA7t+UYP1/7eAkWNLU0+P3QrEqKQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-5.2.0.tgz", + "integrity": "sha512-6ufhP9SHjb7jibNFrNxyFZ6od3g+An6Ai9mhGRvcYe8UJlH0prseN64M+6ZBBUoKYHZsitDP42gAJ8+eVWr3lw==", "dev": true }, "node_modules/just-diff-apply": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.4.1.tgz", - "integrity": "sha512-AAV5Jw7tsniWwih8Ly3fXxEZ06y+6p5TwQMsw0dzZ/wPKilzyDgdAnL0Ug4NNIquPUOh1vfFWEHbmXUqM5+o8g==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.5.0.tgz", + "integrity": "sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==", "dev": true }, "node_modules/kind-of": { @@ -3905,97 +3384,49 @@ } }, "node_modules/libnpmaccess": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-6.0.4.tgz", - "integrity": "sha512-qZ3wcfIyUoW0+qSFkMBovcTrSGJ3ZeyvpR7d5N9pEYv/kXs8sHP2wiqEIXBKLFrZlmM0kR0RJD7mtfLngtlLag==", - "dev": true, - "dependencies": { - "aproba": "^2.0.0", - "minipass": "^3.1.1", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/libnpmaccess/node_modules/npm-registry-fetch": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", - "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-7.0.2.tgz", + "integrity": "sha512-vHBVMw1JFMTgEk15zRsJuSAg7QtGGHpUSEfnbcRL1/gTBag9iEfJbyjpDmdJmwMhvpoLoNBtdAUCdGnaP32hhw==", "dev": true, "dependencies": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" + "npm-package-arg": "^10.1.0", + "npm-registry-fetch": "^14.0.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/libnpmpublish": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-6.0.5.tgz", - "integrity": "sha512-LUR08JKSviZiqrYTDfywvtnsnxr+tOvBU0BF8H+9frt7HMvc6Qn6F8Ubm72g5hDTHbq8qupKfDvDAln2TVPvFg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-7.1.0.tgz", + "integrity": "sha512-AAw/84u6aLo6IzXFhf3s+VCg5/eqICRZFJgRfBpnbCjubRY33WXJh57aWYP0WPlqnFI3E2M1adIqQDbYVyRwgA==", "dev": true, "dependencies": { - "normalize-package-data": "^4.0.0", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0", + "ci-info": "^3.6.1", + "normalize-package-data": "^5.0.0", + "npm-package-arg": "^10.1.0", + "npm-registry-fetch": "^14.0.3", "semver": "^7.3.7", - "ssri": "^9.0.0" + "sigstore": "^1.0.0", + "ssri": "^10.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/libnpmpublish/node_modules/normalize-package-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", - "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", "dev": true, "dependencies": { - "hosted-git-info": "^5.0.0", + "hosted-git-info": "^6.0.0", "is-core-module": "^2.8.1", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/libnpmpublish/node_modules/npm-registry-fetch": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", - "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", - "dev": true, - "dependencies": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/libnpmpublish/node_modules/ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "dev": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/lines-and-columns": { @@ -4069,9 +3500,9 @@ } }, "node_modules/lru-cache": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", - "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.16.1.tgz", + "integrity": "sha512-9kkuMZHnLH/8qXARvYSjNvq8S1GYFFzynQTAfKeaJ0sIrR3PUPuu37Z+EiIANiZBvpfTf2B5y8ecDLSMWlLv+w==", "dev": true, "engines": { "node": ">=12" @@ -4128,6 +3559,103 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/make-fetch-happen/node_modules/@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/make-fetch-happen/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/make-fetch-happen/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-fetch-happen/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/make-fetch-happen/node_modules/ssri": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", @@ -4140,6 +3668,30 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/make-fetch-happen/node_modules/unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dev": true, + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/map-obj": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", @@ -4313,21 +3865,24 @@ } }, "node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", + "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4348,13 +3903,10 @@ } }, "node_modules/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.3.tgz", + "integrity": "sha512-OW2r4sQ0sI+z5ckEt5c1Tri4xTgZwYDxpE54eqWlQloQRoWtXjqt9udJ5Z4dSv7wK+nfFI7FRXyCpBSft+gpFw==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, "engines": { "node": ">=8" } @@ -4371,6 +3923,18 @@ "node": ">= 8" } }, + "node_modules/minipass-collect/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/minipass-fetch": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", @@ -4388,6 +3952,18 @@ "encoding": "^0.1.13" } }, + "node_modules/minipass-fetch/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/minipass-flush": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", @@ -4397,7 +3973,19 @@ "minipass": "^3.0.0" }, "engines": { - "node": ">= 8" + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/minipass-json-stream": { @@ -4410,6 +3998,18 @@ "minipass": "^3.0.0" } }, + "node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/minipass-pipeline": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", @@ -4422,6 +4022,18 @@ "node": ">=8" } }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/minipass-sized": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", @@ -4434,6 +4046,18 @@ "node": ">=8" } }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", @@ -4447,6 +4071,18 @@ "node": ">= 8" } }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -4459,20 +4095,6 @@ "node": ">=10" } }, - "node_modules/mkdirp-infer-owner": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", - "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", - "dev": true, - "dependencies": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/modify-values": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", @@ -4581,9 +4203,9 @@ } }, "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", "dev": true, "dependencies": { "whatwg-url": "^5.0.0" @@ -4601,9 +4223,9 @@ } }, "node_modules/node-gyp": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.0.tgz", - "integrity": "sha512-A6rJWfXFz7TQNjpldJ915WFb1LnhO4lIve3ANPbWreuEoLoKlFT3sxIepPBkLhM27crW8YmN+pjlgbasH6cH/Q==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.1.tgz", + "integrity": "sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg==", "dev": true, "dependencies": { "env-paths": "^2.2.0", @@ -4621,9 +4243,15 @@ "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": "^12.22 || ^14.13 || >=16" + "node": "^12.13 || ^14.13 || >=16" } }, + "node_modules/node-gyp/node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, "node_modules/node-gyp/node_modules/are-we-there-yet": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", @@ -4637,16 +4265,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/node-gyp/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/node-gyp/node_modules/gauge": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", @@ -4666,36 +4284,19 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/node-gyp/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "node_modules/node-gyp/node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", "dev": true, "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": "*" + "abbrev": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/node-gyp/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" + "bin": { + "nopt": "bin/nopt.js" }, "engines": { - "node": "*" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/node-gyp/node_modules/npmlog": { @@ -4729,18 +4330,18 @@ } }, "node_modules/nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.0.0.tgz", + "integrity": "sha512-e6Qw1rcrGoSxEH0hQ4GBSdUjkMOtXGhGFXdNT/3ZR0S37eR9DMj5za3dEDWE6o1T3/DP8ZOsPP4MIiky0c3QeA==", "dev": true, "dependencies": { - "abbrev": "^1.0.0" + "abbrev": "^2.0.0" }, "bin": { "nopt": "bin/nopt.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/normalize-package-data": { @@ -4783,51 +4384,57 @@ } }, "node_modules/npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", + "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", "dev": true, "dependencies": { - "npm-normalize-package-bin": "^1.0.1" + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm-install-checks": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", - "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.0.0.tgz", + "integrity": "sha512-SBU9oFglRVZnfElwAtF14NivyulDqF1VKqqwNsFW9HDcbHMAPHpRSsVFgKuwFGq/hVvWZExz62Th0kvxn/XE7Q==", "dev": true, "dependencies": { "semver": "^7.1.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.0.tgz", + "integrity": "sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, "node_modules/npm-package-arg": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", - "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", "dev": true, "dependencies": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" + "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm-packlist": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.2.tgz", - "integrity": "sha512-d2+7RMySjVXssww23rV5NuIq1NzGvM04OlI5kwnvtYKfFTAPVs6Zxmxns2HRtJEA1oNj7D/BbFXeVAOLmW3N3Q==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", + "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", "dev": true, "dependencies": { "ignore-walk": "^6.0.0" @@ -4837,197 +4444,79 @@ } }, "node_modules/npm-pick-manifest": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz", - "integrity": "sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw==", - "dev": true, - "dependencies": { - "npm-install-checks": "^5.0.0", - "npm-normalize-package-bin": "^2.0.0", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm-pick-manifest/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", - "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", - "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm-registry-fetch": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.2.tgz", - "integrity": "sha512-TMenrMagFA9KF81E2bkS5XRyzERK4KXu70vgXt5+i8FcrFeLNgNsc6e5hekTqjDwPDkL3HGn/holWcXDMfnFgw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz", + "integrity": "sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==", "dev": true, "dependencies": { - "make-fetch-happen": "^11.0.0", - "minipass": "^3.1.6", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", "npm-package-arg": "^10.0.0", - "proc-log": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-registry-fetch/node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", - "dev": true, - "dependencies": { "semver": "^7.3.5" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } - }, - "node_modules/npm-registry-fetch/node_modules/cacache": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.2.tgz", - "integrity": "sha512-rYUs2x4OjSgCQND7nTrh21AHIBFgd7s/ctAYvU3a8u+nK+R5YaX/SFPDYz4Azz7SGL6+6L9ZZWI4Kawpb7grzQ==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-registry-fetch/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dev": true, - "dependencies": { - "lru-cache": "^7.5.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.0.1.tgz", - "integrity": "sha512-clv3IblugXn2CDUmqFhNzii3rjKa46u5wNeivc+QlLXkGI5FjLX3rGboo+y2kwf1pd8W0iDiC384cemeDtw9kw==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-registry-fetch/node_modules/minipass-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.0.tgz", - "integrity": "sha512-NSx3k5gR4Q5Ts2poCM/19d45VwhVLBtJZ6ypYcthj2BwmDx/e7lW8Aadnyt3edd2W0ecb+b0o7FYLRYE2AGcQg==", - "dev": true, - "dependencies": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/npm-registry-fetch/node_modules/npm-package-arg": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.0.0.tgz", - "integrity": "sha512-7dkh8mRp7s0KwVHKIVJnFCJQ2B34gOGnzgBjDGyprycmARq/82SX/lhilQ95ZuacP/G/1gsS345iAkKmxWBQ2Q==", - "dev": true, - "dependencies": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-registry-fetch/node_modules/proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-registry-fetch/node_modules/unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + }, + "node_modules/npm-registry-fetch": { + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.3.tgz", + "integrity": "sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA==", "dev": true, "dependencies": { - "unique-slug": "^4.0.0" + "make-fetch-happen": "^11.0.0", + "minipass": "^4.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-registry-fetch/node_modules/unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.0.3.tgz", + "integrity": "sha512-oPLh5m10lRNNZDjJ2kP8UpboUx2uFXVaVweVe/lWut4iHWcQEmfqSVJt2ihZsFI8HbpwyyocaXbCAWf0g1ukIA==", "dev": true, "dependencies": { - "imurmurhash": "^0.1.4" + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^4.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-registry-fetch/node_modules/validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "node_modules/npm-registry-fetch/node_modules/minipass-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.1.tgz", + "integrity": "sha512-t9/wowtf7DYkwz8cfMSt0rMwiyNIBXf5CKZ3S5ZMqRqMYT0oLTp0x1WorMI9WTwvaPg21r1JbFxJMum8JrLGfw==", "dev": true, "dependencies": { - "builtins": "^5.0.0" + "minipass": "^4.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" } }, "node_modules/npm-run-path": { @@ -5104,369 +4593,151 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-pipe": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", - "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-reduce": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", - "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dev": true, - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pacote": { - "version": "15.0.6", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.0.6.tgz", - "integrity": "sha512-dQwcz/sME7QIL+cdrw/jftQfMMXxSo17i2kJ/gnhBhUvvBAsxoBu1lw9B5IzCH/Ce8CvEkG/QYZ6txzKfn0bTw==", - "dev": true, - "dependencies": { - "@npmcli/git": "^4.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/promise-spawn": "^6.0.1", - "@npmcli/run-script": "^6.0.0", - "cacache": "^17.0.0", - "fs-minipass": "^2.1.0", - "minipass": "^3.1.6", - "npm-package-arg": "^10.0.0", - "npm-packlist": "^7.0.0", - "npm-pick-manifest": "^8.0.0", - "npm-registry-fetch": "^14.0.0", - "proc-log": "^3.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^6.0.0", - "read-package-json-fast": "^3.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", - "dev": true, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/@npmcli/installed-package-contents": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.1.tgz", - "integrity": "sha512-GIykAFdOVK31Q1/zAtT5MbxqQL2vyl9mvFJv+OGu01zxbhL3p0xc8gJjdNGX1mWmUT43aEKVO2L6V/2j4TOsAA==", - "dev": true, - "dependencies": { - "npm-bundled": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "bin": { - "installed-package-contents": "lib/index.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/@npmcli/node-gyp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", - "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/@npmcli/run-script": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.0.tgz", - "integrity": "sha512-ql+AbRur1TeOdl1FY+RAwGW9fcr4ZwiVKabdvm93mujGREVuVLbdkXRJDrkTXSdCjaxYydr1wlA2v67jxWG5BQ==", - "dev": true, - "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/promise-spawn": "^6.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^3.0.0", - "which": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/cacache": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.2.tgz", - "integrity": "sha512-rYUs2x4OjSgCQND7nTrh21AHIBFgd7s/ctAYvU3a8u+nK+R5YaX/SFPDYz4Azz7SGL6+6L9ZZWI4Kawpb7grzQ==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, - "dependencies": { - "lru-cache": "^7.5.1" - }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/pacote/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "dev": true, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/pacote/node_modules/npm-bundled": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", - "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { - "npm-normalize-package-bin": "^3.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pacote/node_modules/npm-install-checks": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.0.0.tgz", - "integrity": "sha512-SBU9oFglRVZnfElwAtF14NivyulDqF1VKqqwNsFW9HDcbHMAPHpRSsVFgKuwFGq/hVvWZExz62Th0kvxn/XE7Q==", + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "semver": "^7.1.1" + "p-limit": "^2.2.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/pacote/node_modules/npm-normalize-package-bin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.0.tgz", - "integrity": "sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==", + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pacote/node_modules/npm-package-arg": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.0.0.tgz", - "integrity": "sha512-7dkh8mRp7s0KwVHKIVJnFCJQ2B34gOGnzgBjDGyprycmARq/82SX/lhilQ95ZuacP/G/1gsS345iAkKmxWBQ2Q==", + "node_modules/p-pipe": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", + "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", "dev": true, - "dependencies": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pacote/node_modules/npm-pick-manifest": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz", - "integrity": "sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==", + "node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", "dev": true, "dependencies": { - "npm-install-checks": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^10.0.0", - "semver": "^7.3.5" + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pacote/node_modules/proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "node_modules/p-reduce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", "dev": true, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/pacote/node_modules/read-package-json-fast": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.1.tgz", - "integrity": "sha512-8+HW7Yo+cjfF+md8DqsZHgats2mxf7gGYow/+2JjxrftoHFZz9v4dzd0EubzYbkNaLxrTVcnllHwklXN2+7aTQ==", + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", "dev": true, "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" + "p-finally": "^1.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/pacote/node_modules/unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, - "dependencies": { - "unique-slug": "^4.0.0" - }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/pacote/node_modules/unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "node_modules/pacote": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.1.0.tgz", + "integrity": "sha512-FFcjtIl+BQNfeliSm7MZz5cpdohvUV1yjGnqgVM4UnVF7JslRY0ImXAygdaCDV0jjUADEWu4y5xsDV8brtrTLg==", "dev": true, "dependencies": { - "imurmurhash": "^0.1.4" + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^4.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", - "dev": true, - "dependencies": { - "builtins": "^5.0.0" + "bin": { + "pacote": "lib/bin.js" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -5485,17 +4756,26 @@ } }, "node_modules/parse-conflict-json": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-2.0.2.tgz", - "integrity": "sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-3.0.0.tgz", + "integrity": "sha512-ipcKLCmZbAj7n+h9qQREvdvsBUMPetGk9mM4ljCvs5inZznAlkHPk5XPc7ROtknUKw7kO6Jnz10Y3Eec7tky/A==", "dev": true, "dependencies": { - "json-parse-even-better-errors": "^2.3.1", + "json-parse-even-better-errors": "^3.0.0", "just-diff": "^5.0.1", "just-diff-apply": "^5.2.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/parse-conflict-json/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/parse-json": { @@ -5623,9 +4903,9 @@ } }, "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==", + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -5651,12 +4931,12 @@ } }, "node_modules/proc-log": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", - "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", "dev": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/process": { @@ -5763,12 +5043,12 @@ } }, "node_modules/read-cmd-shim": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-3.0.1.tgz", - "integrity": "sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz", + "integrity": "sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==", "dev": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/read-package-json": { @@ -5787,28 +5067,44 @@ } }, "node_modules/read-package-json-fast": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", - "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", "dev": true, "dependencies": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/read-package-json/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "node_modules/read-package-json-fast/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, "dependencies": { - "lru-cache": "^7.5.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/read-package-json/node_modules/json-parse-even-better-errors": { @@ -5820,6 +5116,18 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/read-package-json/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/read-package-json/node_modules/normalize-package-data": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", @@ -5835,15 +5143,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/read-package-json/node_modules/npm-normalize-package-bin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.0.tgz", - "integrity": "sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -6037,19 +5336,6 @@ "node": ">= 6" } }, - "node_modules/readdir-scoped-modules": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", - "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", - "deprecated": "This functionality has been moved to @npmcli/fs", - "dev": true, - "dependencies": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" - } - }, "node_modules/redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", @@ -6139,66 +5425,24 @@ "dev": true, "engines": { "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node": ">=0.10.0" } }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "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" + "glob": "^7.1.3" }, - "engines": { - "node": "*" + "bin": { + "rimraf": "bin.js" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rimraf/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/rollup": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.3.0.tgz", @@ -6224,48 +5468,6 @@ "rimraf": "^2.6.2" } }, - "node_modules/rollup-plugin-clear/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/rollup-plugin-clear/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "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/rollup-plugin-clear/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/rollup-plugin-clear/node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -6294,16 +5496,6 @@ "node": ">=8.3" } }, - "node_modules/rollup-plugin-copy/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/rollup-plugin-copy/node_modules/fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -6318,26 +5510,6 @@ "node": ">=6 <7 || >=8" } }, - "node_modules/rollup-plugin-copy/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "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/rollup-plugin-copy/node_modules/globby": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz", @@ -6375,18 +5547,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/rollup-plugin-copy/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/rollup-plugin-copy/node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -6429,9 +5589,9 @@ } }, "node_modules/rxjs": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", "dev": true, "dependencies": { "tslib": "^2.1.0" @@ -6535,6 +5695,65 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/sigstore": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.0.0.tgz", + "integrity": "sha512-e+qfbn/zf1+rCza/BhIA//Awmf0v1pa5HQS8Xk8iXrn9bgytytVLqYD0P7NSqZ6IELTgq+tcDvLPkQjNHyWLNg==", + "dev": true, + "dependencies": { + "make-fetch-happen": "^11.0.1", + "tuf-js": "^1.0.0" + }, + "bin": { + "sigstore": "bin/sigstore.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sigstore/node_modules/make-fetch-happen": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.0.3.tgz", + "integrity": "sha512-oPLh5m10lRNNZDjJ2kP8UpboUx2uFXVaVweVe/lWut4iHWcQEmfqSVJt2ihZsFI8HbpwyyocaXbCAWf0g1ukIA==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^4.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sigstore/node_modules/minipass-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.1.tgz", + "integrity": "sha512-t9/wowtf7DYkwz8cfMSt0rMwiyNIBXf5CKZ3S5ZMqRqMYT0oLTp0x1WorMI9WTwvaPg21r1JbFxJMum8JrLGfw==", + "dev": true, + "dependencies": { + "minipass": "^4.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -6679,12 +5898,12 @@ } }, "node_modules/ssri": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.0.tgz", - "integrity": "sha512-64ghGOpqW0k+jh7m5jndBGdVEoPikWwGQmBNN5ks6jyUSMymzHDTlnNHOvzp+6MmHOljr2MokUzvRksnTwG0Iw==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.1.tgz", + "integrity": "sha512-WVy6di9DlPOeBWEjMScpNipeSX2jIZBGEn5Uuo8Q7aIuFEuDX0pw8RxcOjlD1TWP4obi24ki7m/13+nFpcbXrw==", "dev": true, "dependencies": { - "minipass": "^3.1.1" + "minipass": "^4.0.0" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -6797,14 +6016,14 @@ } }, "node_modules/tar": { - "version": "6.1.12", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz", - "integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==", + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", "dev": true, "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", + "minipass": "^4.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" @@ -6813,13 +6032,37 @@ "node": ">=10" } }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/terser": { @@ -6895,12 +6138,12 @@ "dev": true }, "node_modules/treeverse": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-2.0.0.tgz", - "integrity": "sha512-N5gJCkLu1aXccpOTtqV6ddSEi6ZmGkh3hjmbu1IjcavJK4qyOVQmi0myQKM7z5jVGmD68SJoliaVrMmVObhj6A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-3.0.0.tgz", + "integrity": "sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==", "dev": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/trim-newlines": { @@ -6918,6 +6161,62 @@ "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", "dev": true }, + "node_modules/tuf-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.0.0.tgz", + "integrity": "sha512-1dxsQwESDzACJjTdYHQ4wJ1f/of7jALWKfJEHSBWUQB/5UTJUx9SW6GHXp4mZ1KvdBRJCpGjssoPFGi4hvw8/A==", + "dev": true, + "dependencies": { + "make-fetch-happen": "^11.0.1", + "minimatch": "^6.1.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/tuf-js/node_modules/make-fetch-happen": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.0.3.tgz", + "integrity": "sha512-oPLh5m10lRNNZDjJ2kP8UpboUx2uFXVaVweVe/lWut4iHWcQEmfqSVJt2ihZsFI8HbpwyyocaXbCAWf0g1ukIA==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^4.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/tuf-js/node_modules/minipass-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.1.tgz", + "integrity": "sha512-t9/wowtf7DYkwz8cfMSt0rMwiyNIBXf5CKZ3S5ZMqRqMYT0oLTp0x1WorMI9WTwvaPg21r1JbFxJMum8JrLGfw==", + "dev": true, + "dependencies": { + "minipass": "^4.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, "node_modules/type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", @@ -6972,27 +6271,27 @@ } }, "node_modules/unique-filename": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", - "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", "dev": true, "dependencies": { - "unique-slug": "^3.0.0" + "unique-slug": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/unique-slug": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", - "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "dev": true, "dependencies": { "imurmurhash": "^0.1.4" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/universal-user-agent": { @@ -7061,15 +6360,15 @@ } }, "node_modules/validate-npm-package-name": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", - "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", "dev": true, "dependencies": { "builtins": "^5.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/walk-up-path": { @@ -7337,15 +6636,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, "node_modules/yargs": { "version": "17.6.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", @@ -7395,12 +6685,13 @@ "name": "@custom-elements-web-ts/app", "version": "1.0.0", "dependencies": { - "@pandino/loader-configuration-dom": "^0.8.19", - "@pandino/pandino": "^0.8.19" + "@pandino/bundle-installer-dom": "file:../../../../packages/@pandino/bundle-installer-dom", + "@pandino/loader-configuration-dom": "file:../../../../packages/@pandino/loader-configuration-dom", + "@pandino/pandino": "file:../../../../packages/@pandino/pandino" }, "devDependencies": { "@custom-elements-web-ts/contract": "^1.0.0", - "@pandino/pandino-api": "^0.8.19", + "@pandino/pandino-api": "file:../../../../packages/@pandino/pandino-api", "rollup-plugin-copy": "^3.4.0" } }, @@ -7413,8 +6704,8 @@ "version": "1.0.0", "devDependencies": { "@custom-elements-web-ts/contract": "^1.0.0", - "@pandino/pandino-api": "^0.8.19", - "@pandino/rollup-plugin-generate-manifest": "^0.8.19" + "@pandino/pandino-api": "file:../../../../packages/@pandino/pandino-api", + "@pandino/rollup-plugin-generate-manifest": "file:../../../../packages/@pandino/rollup-plugin-generate-manifest" } } } diff --git a/examples/custom-elements-web-ts/package.json b/examples/custom-elements-web-ts/package.json index 47e8e7d8..74a6b690 100644 --- a/examples/custom-elements-web-ts/package.json +++ b/examples/custom-elements-web-ts/package.json @@ -9,8 +9,7 @@ "scripts": { "build": "lerna run build", "build:dev": "lerna run build:dev", - "format": "prettier --config .prettierrc \"packages/*/src/**/*.{js,ts,tsx}\" --write", - "start": "lerna run --scope app start --stream" + "format": "prettier --config .prettierrc \"packages/*/src/**/*.{js,ts,tsx}\" --write" }, "keywords": [], "author": "", diff --git a/examples/custom-elements-web-ts/packages/app/package.json b/examples/custom-elements-web-ts/packages/app/package.json index c633a76a..a9f712b5 100644 --- a/examples/custom-elements-web-ts/packages/app/package.json +++ b/examples/custom-elements-web-ts/packages/app/package.json @@ -14,11 +14,12 @@ "build:dev": "rollup -c" }, "dependencies": { - "@pandino/pandino": "^0.8.19", - "@pandino/loader-configuration-dom": "^0.8.19" + "@pandino/pandino": "file:../../../../packages/@pandino/pandino", + "@pandino/loader-configuration-dom": "file:../../../../packages/@pandino/loader-configuration-dom", + "@pandino/bundle-installer-dom": "file:../../../../packages/@pandino/bundle-installer-dom" }, "devDependencies": { - "@pandino/pandino-api": "^0.8.19", + "@pandino/pandino-api": "file:../../../../packages/@pandino/pandino-api", "@custom-elements-web-ts/contract": "^1.0.0", "rollup-plugin-copy": "^3.4.0" }, diff --git a/examples/custom-elements-web-ts/packages/app/rollup.config.js b/examples/custom-elements-web-ts/packages/app/rollup.config.js index 837bb278..272c38cd 100644 --- a/examples/custom-elements-web-ts/packages/app/rollup.config.js +++ b/examples/custom-elements-web-ts/packages/app/rollup.config.js @@ -23,6 +23,9 @@ export default { copy({ targets: [ { src: 'assets/*', dest: 'dist' }, + { src: '../../node_modules/@pandino/bundle-installer-dom/dist/esm/*.*', dest: 'dist' }, + { src: '../hidden-page/dist/*.(json|mjs)', dest: 'dist' }, + { src: '../about-page/dist/*.(json|mjs)', dest: 'dist' }, ] }), ], diff --git a/examples/custom-elements-web-ts/packages/app/src/AppWire.ts b/examples/custom-elements-web-ts/packages/app/src/AppWire.ts index f2676519..034169e7 100644 --- a/examples/custom-elements-web-ts/packages/app/src/AppWire.ts +++ b/examples/custom-elements-web-ts/packages/app/src/AppWire.ts @@ -44,7 +44,11 @@ export class AppWire extends HTMLElement { const svc = this.context.getService(ref); const serviceId = ref.getProperty(SERVICE_ID); if (typeof svc.getMenuInfo === 'function') { - this.addMenu(serviceId, svc.getMenuInfo()); + const menuInfo = svc.getMenuInfo(); + + if (menuInfo) { + this.addMenu(serviceId, menuInfo); + } } this.addRoute(serviceId, svc.getRoutePath(), svc.getPageComponent()); } diff --git a/examples/custom-elements-web-ts/packages/app/src/index.ts b/examples/custom-elements-web-ts/packages/app/src/index.ts index 87fcf75f..6a1e7802 100644 --- a/examples/custom-elements-web-ts/packages/app/src/index.ts +++ b/examples/custom-elements-web-ts/packages/app/src/index.ts @@ -14,7 +14,7 @@ await pandino.start(); await pandino .getBundleContext() - .installBundle('https://unpkg.com/@pandino/bundle-installer-dom/dist/bundle-installer-dom-manifest.json'); + .installBundle('./bundle-installer-dom-manifest.json'); pandino.getBundleContext().registerService(PAGE_INTERFACE_KEY, new DashboardService()); diff --git a/examples/custom-elements-web-ts/packages/hidden-page/package.json b/examples/custom-elements-web-ts/packages/hidden-page/package.json index 2276b903..c732b315 100644 --- a/examples/custom-elements-web-ts/packages/hidden-page/package.json +++ b/examples/custom-elements-web-ts/packages/hidden-page/package.json @@ -14,8 +14,8 @@ "build:dev": "rollup -c" }, "devDependencies": { - "@pandino/pandino-api": "^0.8.19", - "@pandino/rollup-plugin-generate-manifest": "^0.8.19", + "@pandino/pandino-api": "file:../../../../packages/@pandino/pandino-api", + "@pandino/rollup-plugin-generate-manifest": "file:../../../../packages/@pandino/rollup-plugin-generate-manifest", "@custom-elements-web-ts/contract": "^1.0.0" }, "pandino": { diff --git a/examples/package-lock.json b/examples/package-lock.json new file mode 100644 index 00000000..94f11647 --- /dev/null +++ b/examples/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "examples", + "lockfileVersion": 3, + "requires": true, + "packages": {} +} diff --git a/examples/react-systemjs/.prettierrc b/examples/react-systemjs/.prettierrc new file mode 100644 index 00000000..f2614ff1 --- /dev/null +++ b/examples/react-systemjs/.prettierrc @@ -0,0 +1,8 @@ +{ + "tabWidth": 2, + "useTabs": false, + "semi": true, + "trailingComma": "all", + "singleQuote": true, + "printWidth": 120 +} diff --git a/examples/react-systemjs/README.md b/examples/react-systemjs/README.md new file mode 100644 index 00000000..0a345967 --- /dev/null +++ b/examples/react-systemjs/README.md @@ -0,0 +1,50 @@ +# React SystemJS + +## Scripts + +- `npm run build` +- `npm run preview` + +## packages + +- app: application project +- component-api: abstraction for N number of implementations +- component-one: example implementation of `component-api` + +## Why SystemJS? + +When we are dealing with JSX, the JSX code gets transpiled in a way where +bundlers include additional imports for e.g.: `react/jsx-runtime`. + +Due to this nature, we need a module system which is capable to handle "static" +imports. Our choice is [SystemJS](https://github.com/systemjs/systemjs). + +The other reason why we need this is because we are building standalone packages, and are not "splitting" code +from a central source-code folder therefore again, we need a more sophisticated module manager. + +> Fun fact: we wouldn't need SystemJS if all browsers would support [import-maps](https://github.com/WICG/import-maps). + +## Architecture + +Since we are working with SystemJS and third party dependency imports need to be handled +properly (eliminate potential duplicate evaluation of same code) the current architecture +relies on: + +- copied UMD modules such as `react` +- and additional manually re-packaged dependencies such as `react/jsx-runtime`, and `react-dom` + +This re-packaging is done via dedicated `rollup` entry-points, e.g.: `generateRepackagedOutput('react-jsx-runtime', 'react/react-jsx-runtime'),` + +Since the `app` project is our main entry point, the re-packaging is done here, but this is not mandatory. + +### Re-packaging third party dependencies + +Please check the `generateRepackagedOutput` helper function in `packages/app/rollup/helpers.mjs` for details. + +> This is a super simple task to do in most cases, don't be afraid, no real black-magic is applied! + +The generated sources are copied to `packages/app/dist` + +When re-packaging third-party libraries, it is super important to pay attention to what is being imported from where! +The reason why we are not only `export * from 'whatever';` in all repackaged content is precisely this. To eliminate +redundant code evaluation. diff --git a/examples/react-systemjs/lerna.json b/examples/react-systemjs/lerna.json new file mode 100644 index 00000000..b9eedf16 --- /dev/null +++ b/examples/react-systemjs/lerna.json @@ -0,0 +1,14 @@ +{ + "$schema": "node_modules/@lerna-lite/cli/schemas/lerna-schema.json", + "packages": [ + "packages/*" + ], + "npmClient": "npm", + "version": "1.0.0", + "ignoreChanges": [ + "**/__fixtures__/**", + "**/__tests__/**", + "**/helpers/**", + "**/*.md" + ] +} diff --git a/examples/react-systemjs/package-lock.json b/examples/react-systemjs/package-lock.json new file mode 100644 index 00000000..d9deb407 --- /dev/null +++ b/examples/react-systemjs/package-lock.json @@ -0,0 +1,7084 @@ +{ + "name": "@react-systemjs/root", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@react-systemjs/root", + "version": "1.0.0", + "license": "MIT", + "workspaces": [ + "packages/*" + ], + "devDependencies": { + "@lerna-lite/cli": "^1.13.0", + "@lerna-lite/run": "^1.13.0", + "@rollup/plugin-commonjs": "^24.0.0", + "@rollup/plugin-json": "^6.0.0", + "@rollup/plugin-node-resolve": "^15.0.1", + "@rollup/plugin-replace": "^5.0.2", + "@rollup/plugin-terser": "^0.1.0", + "@rollup/plugin-typescript": "^9.0.2", + "@types/node": "^16.18.4", + "cross-env": "^7.0.3", + "dotenv": "^16.0.3", + "prettier": "^2.7.1", + "rollup": "^3.3.0", + "rollup-plugin-clear": "^2.0.7", + "rollup-plugin-copy": "^3.4.0", + "rollup-plugin-esbuild": "^5.0.0", + "serve": "^14.1.2", + "typescript": "^4.9.3" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.10", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@hutson/parse-repository-url": { + "version": "3.0.2", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "dev": true, + "license": "ISC" + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@lerna-lite/cli": { + "version": "1.15.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna-lite/core": "1.15.1", + "@lerna-lite/init": "1.15.1", + "@lerna-lite/listable": "1.15.1", + "@lerna-lite/publish": "1.15.1", + "@lerna-lite/version": "1.15.1", + "dedent": "^0.7.0", + "dotenv": "^16.0.3", + "import-local": "^3.1.0", + "load-json-file": "^6.2.0", + "npmlog": "^7.0.1", + "path": "^0.12.7", + "yargs": "^17.6.2" + }, + "bin": { + "lerna": "dist/cli.js" + }, + "engines": { + "node": ">=14.17.0", + "npm": ">=8.0.0" + } + }, + "node_modules/@lerna-lite/core": { + "version": "1.15.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@npmcli/run-script": "^6.0.0", + "chalk": "^4.1.2", + "clone-deep": "^4.0.1", + "config-chain": "^1.1.13", + "cosmiconfig": "^8.0.0", + "dedent": "^0.7.0", + "execa": "^5.1.1", + "fs-extra": "^11.1.0", + "glob-parent": "^6.0.2", + "globby": "^11.1.0", + "inquirer": "^8.2.4", + "is-ci": "^3.0.1", + "load-json-file": "^6.2.0", + "minimatch": "^6.1.6", + "npm-package-arg": "^10.1.0", + "npmlog": "^7.0.1", + "p-map": "^4.0.0", + "p-queue": "^6.6.2", + "path": "^0.12.7", + "resolve-from": "^5.0.0", + "semver": "^7.3.8", + "slash": "^3.0.0", + "strong-log-transformer": "^2.1.0", + "write-file-atomic": "^5.0.0", + "write-json-file": "^4.3.0", + "write-pkg": "^4.0.0" + }, + "engines": { + "node": ">=14.17.0", + "npm": ">=8.0.0" + }, + "funding": { + "type": "ko_fi", + "url": "https://ko-fi.com/ghiscoding" + } + }, + "node_modules/@lerna-lite/filter-packages": { + "version": "1.15.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna-lite/core": "1.15.1", + "multimatch": "^5.0.0", + "npmlog": "^7.0.1" + }, + "engines": { + "node": ">=14.17.0", + "npm": ">=8.0.0" + } + }, + "node_modules/@lerna-lite/init": { + "version": "1.15.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna-lite/core": "1.15.1", + "fs-extra": "^11.1.0", + "p-map": "^4.0.0", + "path": "^0.12.7", + "write-json-file": "^4.3.0" + }, + "engines": { + "node": ">=14.17.0", + "npm": ">=8.0.0" + } + }, + "node_modules/@lerna-lite/listable": { + "version": "1.15.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna-lite/core": "1.15.1", + "chalk": "^4.1.2", + "columnify": "^1.6.0" + }, + "engines": { + "node": ">=14.17.0", + "npm": ">=8.0.0" + } + }, + "node_modules/@lerna-lite/profiler": { + "version": "1.15.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna-lite/core": "1.15.1", + "fs-extra": "^11.1.0", + "npmlog": "^7.0.1", + "upath": "^2.0.1" + }, + "engines": { + "node": ">=14.17.0", + "npm": ">=8.0.0" + } + }, + "node_modules/@lerna-lite/publish": { + "version": "1.15.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna-lite/core": "1.15.1", + "@lerna-lite/version": "1.15.1", + "@npmcli/arborist": "^6.2.2", + "byte-size": "^7.0.1", + "chalk": "^4.1.2", + "columnify": "^1.6.0", + "fs-extra": "^11.1.0", + "glob": "^7.2.3", + "has-unicode": "^2.0.1", + "libnpmaccess": "^7.0.2", + "libnpmpublish": "^7.0.8", + "npm-package-arg": "^10.1.0", + "npm-packlist": "^7.0.4", + "npm-registry-fetch": "^14.0.3", + "npmlog": "^7.0.1", + "p-map": "^4.0.0", + "p-pipe": "^3.1.0", + "pacote": "^15.0.8", + "path": "^0.12.7", + "pify": "^5.0.0", + "read-package-json": "^6.0.0", + "semver": "^7.3.8", + "ssri": "^10.0.1", + "tar": "^6.1.13", + "temp-dir": "^2.0.0" + }, + "engines": { + "node": ">=14.17.0", + "npm": ">=8.0.0" + } + }, + "node_modules/@lerna-lite/run": { + "version": "1.15.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna-lite/core": "1.15.1", + "@lerna-lite/filter-packages": "1.15.1", + "@lerna-lite/profiler": "1.15.1", + "chalk": "^4.1.2", + "fs-extra": "^11.1.0", + "npmlog": "^7.0.1", + "p-map": "^4.0.0" + }, + "engines": { + "node": ">=14.17.0", + "npm": ">=8.0.0" + } + }, + "node_modules/@lerna-lite/version": { + "version": "1.15.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna-lite/core": "1.15.1", + "@octokit/plugin-enterprise-rest": "^6.0.1", + "@octokit/rest": "^19.0.7", + "chalk": "^4.1.2", + "conventional-changelog-angular": "^5.0.13", + "conventional-changelog-core": "^4.2.4", + "conventional-changelog-writer": "^5.0.1", + "conventional-commits-parser": "^3.2.4", + "conventional-recommended-bump": "^6.1.0", + "dedent": "^0.7.0", + "fs-extra": "^11.1.0", + "get-stream": "^6.0.1", + "git-url-parse": "^13.1.0", + "graceful-fs": "^4.2.10", + "is-stream": "^2.0.1", + "load-json-file": "^6.2.0", + "make-dir": "^3.1.0", + "minimatch": "^6.1.6", + "new-github-release-url": "^1.0.0", + "node-fetch": "^2.6.7", + "npm-package-arg": "^10.1.0", + "npmlog": "^7.0.1", + "p-map": "^4.0.0", + "p-pipe": "^3.1.0", + "p-reduce": "^2.1.0", + "path": "^0.12.7", + "pify": "^5.0.0", + "semver": "^7.3.8", + "slash": "^3.0.0", + "temp-dir": "^1.0.0", + "uuid": "^9.0.0", + "write-json-file": "^4.3.0" + }, + "engines": { + "node": ">=14.17.0", + "npm": ">=8.0.0" + } + }, + "node_modules/@lerna-lite/version/node_modules/temp-dir": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "dev": true, + "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", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/arborist": { + "version": "6.2.2", + "dev": true, + "license": "ISC", + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/fs": "^3.1.0", + "@npmcli/installed-package-contents": "^2.0.0", + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/metavuln-calculator": "^5.0.0", + "@npmcli/name-from-folder": "^2.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^3.0.0", + "@npmcli/query": "^3.0.0", + "@npmcli/run-script": "^6.0.0", + "bin-links": "^4.0.1", + "cacache": "^17.0.4", + "common-ancestor-path": "^1.0.1", + "hosted-git-info": "^6.1.1", + "json-parse-even-better-errors": "^3.0.0", + "json-stringify-nice": "^1.1.4", + "minimatch": "^6.1.6", + "nopt": "^7.0.0", + "npm-install-checks": "^6.0.0", + "npm-package-arg": "^10.1.0", + "npm-pick-manifest": "^8.0.1", + "npm-registry-fetch": "^14.0.3", + "npmlog": "^7.0.1", + "pacote": "^15.0.8", + "parse-conflict-json": "^3.0.0", + "proc-log": "^3.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.1", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "ssri": "^10.0.1", + "treeverse": "^3.0.0", + "walk-up-path": "^1.0.0" + }, + "bin": { + "arborist": "bin/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/fs": { + "version": "3.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git": { + "version": "4.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^6.0.0", + "lru-cache": "^7.4.4", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "2.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "lib/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/map-workspaces": { + "version": "3.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^8.0.1", + "minimatch": "^6.1.6", + "read-package-json-fast": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/map-workspaces/node_modules/glob": { + "version": "8.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/map-workspaces/node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/metavuln-calculator": { + "version": "5.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "cacache": "^17.0.0", + "json-parse-even-better-errors": "^3.0.0", + "pacote": "^15.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/name-from-folder": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/package-json": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/query": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@octokit/auth-token": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^9.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/core": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/auth-token": "^3.0.0", + "@octokit/graphql": "^5.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^9.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/endpoint": { + "version": "7.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^9.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/graphql": { + "version": "5.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/request": "^6.0.0", + "@octokit/types": "^9.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "16.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/plugin-enterprise-rest": { + "version": "6.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^9.0.0" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": ">=4" + } + }, + "node_modules/@octokit/plugin-request-log": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^9.0.0", + "deprecation": "^2.3.1" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/request": { + "version": "6.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/endpoint": "^7.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^9.0.0", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/request-error": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^9.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/rest": { + "version": "19.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/core": "^4.1.0", + "@octokit/plugin-paginate-rest": "^6.0.0", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^7.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/types": { + "version": "9.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^16.0.0" + } + }, + "node_modules/@pandino/bundle-installer-dom": { + "version": "0.8.22", + "resolved": "file:../../packages/@pandino/bundle-installer-dom", + "license": "EPL-2.0", + "engines": { + "node": ">=14.9.0" + } + }, + "node_modules/@pandino/loader-configuration-dom": { + "version": "0.8.22", + "resolved": "file:../../packages/@pandino/loader-configuration-dom", + "license": "EPL-2.0", + "engines": { + "node": ">=14.9.0" + } + }, + "node_modules/@pandino/manifest-generator": { + "version": "0.8.22", + "resolved": "https://registry.npmjs.org/@pandino/manifest-generator/-/manifest-generator-0.8.22.tgz", + "integrity": "sha512-2i3q6TZ7/rpr0RoYuOUooxecbyO2F2n4vWy13tiE9Kza3jErfQ/UTIdOznpLz+0wnLTybDU9/k43E27Z2lycPA==", + "dev": true, + "engines": { + "node": ">=14.9.0" + } + }, + "node_modules/@pandino/pandino": { + "version": "0.8.22", + "resolved": "file:../../packages/@pandino/pandino", + "license": "EPL-2.0", + "engines": { + "node": ">=14.9.0" + } + }, + "node_modules/@pandino/pandino-api": { + "version": "0.8.22", + "resolved": "file:../../packages/@pandino/pandino-api", + "dev": true, + "license": "EPL-2.0", + "engines": { + "node": ">=14.9.0" + } + }, + "node_modules/@pandino/react-hooks": { + "version": "0.8.22", + "resolved": "file:../../packages/@pandino/react-hooks", + "license": "EPL-2.0", + "engines": { + "node": ">=14.9.0" + } + }, + "node_modules/@pandino/rollup-plugin-generate-manifest": { + "version": "0.8.22", + "resolved": "file:../../packages/@pandino/rollup-plugin-generate-manifest", + "dev": true, + "license": "EPL-2.0", + "dependencies": { + "@pandino/manifest-generator": "^0.8.22" + }, + "engines": { + "node": ">=14.9.0" + } + }, + "node_modules/@react-systemjs/app": { + "resolved": "packages/app", + "link": true + }, + "node_modules/@react-systemjs/component-api": { + "resolved": "packages/component-api", + "link": true + }, + "node_modules/@react-systemjs/component-one": { + "resolved": "packages/component-one", + "link": true + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "24.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "glob": "^8.0.3", + "is-reference": "1.2.1", + "magic-string": "^0.27.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/glob": { + "version": "8.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/minimatch": { + "version": "5.1.6", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@rollup/plugin-html": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-json": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.2.0", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "5.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "magic-string": "^0.27.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-terser": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "terser": "^5.15.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.x || ^3.x" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-typescript": { + "version": "9.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.14.0||^3.0.0", + "tslib": "*", + "typescript": ">=3.7.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + }, + "tslib": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/estree": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/fs-extra": { + "version": "8.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/minimist": { + "version": "1.2.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "16.18.12", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.0.28", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.0.11", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/scheduler": { + "version": "0.16.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@zeit/schemas": { + "version": "2.29.0", + "dev": true, + "license": "MIT" + }, + "node_modules/abbrev": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.8.2", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/add-stream": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/agent-base": { + "version": "6.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.11.0", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/arch": { + "version": "2.2.0", + "dev": true, + "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/are-we-there-yet": { + "version": "4.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^4.1.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/are-we-there-yet/node_modules/buffer": { + "version": "6.0.3", + "dev": true, + "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": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-differ": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array-ify": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/array-union": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "dev": true, + "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/before-after-hook": { + "version": "2.2.3", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/bin-links": { + "version": "4.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "cmd-shim": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "read-cmd-shim": "^4.0.0", + "write-file-atomic": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/boxen": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^7.0.0", + "chalk": "^5.0.1", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.0.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/boxen/node_modules/ansi-styles": { + "version": "6.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/boxen/node_modules/camelcase": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/chalk": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/boxen/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "license": "MIT" + }, + "node_modules/boxen/node_modules/string-width": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/strip-ansi": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/boxen/node_modules/type-fest": { + "version": "2.19.0", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/wrap-ansi": { + "version": "8.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "dev": true, + "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": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/builtins": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/byte-size": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/bytes": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "17.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^8.0.1", + "lru-cache": "^7.7.1", + "minipass": "^4.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "8.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "5.1.6", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk-template": { + "version": "0.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/chalk-template?sponsor=1" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "dev": true, + "license": "MIT" + }, + "node_modules/chownr": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.8.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.7.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 10" + } + }, + "node_modules/clipboardy": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "arch": "^2.2.0", + "execa": "^5.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cmd-shim": { + "version": "6.0.1", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/color-support": { + "version": "1.1.3", + "dev": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colorette": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/columnify": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "dev": true, + "license": "MIT" + }, + "node_modules/common-ancestor-path": { + "version": "1.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/commondir": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/compare-func": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "2.0.0", + "dev": true, + "engines": [ + "node >= 6.0" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/config-chain": { + "version": "1.1.13", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "dev": true, + "license": "ISC" + }, + "node_modules/content-disposition": { + "version": "0.5.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/conventional-changelog-angular": { + "version": "5.0.13", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core": { + "version": "4.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^5.0.0", + "conventional-commits-parser": "^3.2.0", + "dateformat": "^3.0.0", + "get-pkg-repo": "^4.0.0", + "git-raw-commits": "^2.0.8", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^4.1.1", + "lodash": "^4.17.15", + "normalize-package-data": "^3.0.0", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "through2": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-preset-loader": { + "version": "2.3.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "conventional-commits-filter": "^2.0.7", + "dateformat": "^3.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer/node_modules/semver": { + "version": "6.3.0", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/conventional-commits-filter": { + "version": "2.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-parser": { + "version": "3.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-recommended-bump": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "concat-stream": "^2.0.0", + "conventional-changelog-preset-loader": "^2.3.4", + "conventional-commits-filter": "^2.0.7", + "conventional-commits-parser": "^3.2.0", + "git-raw-commits": "^2.0.8", + "git-semver-tags": "^4.1.1", + "meow": "^8.0.0", + "q": "^1.5.1" + }, + "bin": { + "conventional-recommended-bump": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "8.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/cross-env": { + "version": "7.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/dargs": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/dateformat": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dedent": { + "version": "0.7.0", + "dev": true, + "license": "MIT" + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deepmerge": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/depd": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/deprecation": { + "version": "2.3.1", + "dev": true, + "license": "ISC" + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "16.0.3", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/encoding": { + "version": "0.1.13", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/error-ex": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-module-lexer": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.17.10", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "peer": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.10", + "@esbuild/android-arm64": "0.17.10", + "@esbuild/android-x64": "0.17.10", + "@esbuild/darwin-arm64": "0.17.10", + "@esbuild/darwin-x64": "0.17.10", + "@esbuild/freebsd-arm64": "0.17.10", + "@esbuild/freebsd-x64": "0.17.10", + "@esbuild/linux-arm": "0.17.10", + "@esbuild/linux-arm64": "0.17.10", + "@esbuild/linux-ia32": "0.17.10", + "@esbuild/linux-loong64": "0.17.10", + "@esbuild/linux-mips64el": "0.17.10", + "@esbuild/linux-ppc64": "0.17.10", + "@esbuild/linux-riscv64": "0.17.10", + "@esbuild/linux-s390x": "0.17.10", + "@esbuild/linux-x64": "0.17.10", + "@esbuild/netbsd-x64": "0.17.10", + "@esbuild/openbsd-x64": "0.17.10", + "@esbuild/sunos-x64": "0.17.10", + "@esbuild/win32-arm64": "0.17.10", + "@esbuild/win32-ia32": "0.17.10", + "@esbuild/win32-x64": "0.17.10" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "dev": true, + "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", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-url-parser": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^1.3.2" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-extra": { + "version": "11.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs-minipass": { + "version": "3.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "dev": 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.1", + "dev": true, + "license": "MIT" + }, + "node_modules/gauge": { + "version": "5.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-pkg-repo": { + "version": "4.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@hutson/parse-repository-url": "^3.0.0", + "hosted-git-info": "^4.0.0", + "through2": "^2.0.0", + "yargs": "^16.2.0" + }, + "bin": { + "get-pkg-repo": "src/cli.js" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-pkg-repo/node_modules/cliui": { + "version": "7.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/get-pkg-repo/node_modules/hosted-git-info": { + "version": "4.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/get-pkg-repo/node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/get-pkg-repo/node_modules/readable-stream": { + "version": "2.3.7", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/get-pkg-repo/node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/get-pkg-repo/node_modules/through2": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/get-pkg-repo/node_modules/yargs": { + "version": "16.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/git-raw-commits": { + "version": "2.0.11", + "dev": true, + "license": "MIT", + "dependencies": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-remote-origin-url": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-remote-origin-url/node_modules/pify": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/git-semver-tags": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "meow": "^8.0.0", + "semver": "^6.0.0" + }, + "bin": { + "git-semver-tags": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-semver-tags/node_modules/semver": { + "version": "6.3.0", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/git-up": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-ssh": "^1.4.0", + "parse-url": "^8.1.0" + } + }, + "node_modules/git-url-parse": { + "version": "13.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "git-up": "^7.0.0" + } + }, + "node_modules/gitconfiglocal": { + "version": "1.0.0", + "dev": true, + "license": "BSD", + "dependencies": { + "ini": "^1.3.2" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "dev": true, + "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", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "dev": true, + "license": "ISC" + }, + "node_modules/handlebars": { + "version": "4.7.7", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/hosted-git-info": { + "version": "6.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "dev": true, + "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": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.2.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "6.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "minimatch": "^6.1.6" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "dev": true, + "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/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "dev": true, + "license": "ISC" + }, + "node_modules/inflight": { + "version": "1.0.6", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "dev": true, + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "dev": true, + "license": "ISC" + }, + "node_modules/inquirer": { + "version": "8.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/ip": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "dev": true, + "license": "MIT" + }, + "node_modules/is-builtin-module": { + "version": "3.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-ci": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/is-module": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/is-number": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-port-reachable": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-reference": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/is-ssh": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "protocols": "^2.0.1" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-text-path": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "text-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/joycon": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stringify-nice": { + "version": "1.1.4", + "dev": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "dev": true, + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/just-diff": { + "version": "5.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/just-diff-apply": { + "version": "5.5.0", + "dev": true, + "license": "MIT" + }, + "node_modules/kind-of": { + "version": "6.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/libnpmaccess": { + "version": "7.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^10.1.0", + "npm-registry-fetch": "^14.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/libnpmpublish": { + "version": "7.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "ci-info": "^3.6.1", + "normalize-package-data": "^5.0.0", + "npm-package-arg": "^10.1.0", + "npm-registry-fetch": "^14.0.3", + "semver": "^7.3.7", + "sigstore": "^1.0.0", + "ssri": "^10.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/libnpmpublish/node_modules/normalize-package-data": { + "version": "5.0.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "dev": true, + "license": "MIT" + }, + "node_modules/load-json-file": { + "version": "6.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.15", + "parse-json": "^5.0.0", + "strip-bom": "^4.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/load-json-file/node_modules/type-fest": { + "version": "0.6.0", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.ismatch": { + "version": "4.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "7.16.1", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/magic-string": { + "version": "0.27.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-fetch-happen": { + "version": "10.2.1", + "dev": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/@npmcli/fs": { + "version": "2.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/cacache": { + "version": "16.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/fs-minipass": { + "version": "2.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/make-fetch-happen/node_modules/glob": { + "version": "8.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/make-fetch-happen/node_modules/minimatch": { + "version": "5.1.6", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-fetch-happen/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/make-fetch-happen/node_modules/ssri": { + "version": "9.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/unique-filename": { + "version": "2.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/unique-slug": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/map-obj": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow": { + "version": "8.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/hosted-git-info": { + "version": "2.8.9", + "dev": true, + "license": "ISC" + }, + "node_modules/meow/node_modules/read-pkg": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg-up": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "6.2.0", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minipass": { + "version": "4.0.3", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-collect/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-fetch": { + "version": "2.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-fetch/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-json-stream": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/modify-values": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/multimatch": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/multimatch/node_modules/arrify": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/multimatch/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/multimatch/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "dev": true, + "license": "ISC" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/new-github-release-url": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.4.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/new-github-release-url/node_modules/type-fest": { + "version": "0.4.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=6" + } + }, + "node_modules/node-fetch": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp": { + "version": "9.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.13 || ^14.13 || >=16" + } + }, + "node_modules/node-gyp/node_modules/abbrev": { + "version": "1.1.1", + "dev": true, + "license": "ISC" + }, + "node_modules/node-gyp/node_modules/are-we-there-yet": { + "version": "3.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/gauge": { + "version": "4.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/nopt": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/npmlog": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "2.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/nopt": { + "version": "7.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "4.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-package-data/node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-bundled": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-install-checks": { + "version": "6.0.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg": { + "version": "10.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-packlist": { + "version": "7.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "ignore-walk": "^6.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-pick-manifest": { + "version": "8.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^10.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch": { + "version": "14.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "make-fetch-happen": "^11.0.0", + "minipass": "^4.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { + "version": "11.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^4.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/minipass-fetch": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^4.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npmlog": { + "version": "7.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^4.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^5.0.0", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-pipe": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue": { + "version": "6.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-reduce": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/p-timeout": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pacote": { + "version": "15.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^4.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-conflict-json": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "just-diff": "^5.0.1", + "just-diff-apply": "^5.2.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "dev": true, + "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/parse-json/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "dev": true, + "license": "MIT" + }, + "node_modules/parse-path": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "protocols": "^2.0.0" + } + }, + "node_modules/parse-url": { + "version": "8.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-path": "^7.0.0" + } + }, + "node_modules/path": { + "version": "0.12.7", + "dev": true, + "license": "MIT", + "dependencies": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "dev": true, + "license": "(WTFPL OR MIT)" + }, + "node_modules/path-key": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "2.2.1", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.11", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prettier": { + "version": "2.8.4", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/proc-log": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/promise-all-reject-late": { + "version": "1.0.1", + "dev": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/promise-call-limit": { + "version": "1.0.1", + "dev": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "dev": true, + "license": "ISC" + }, + "node_modules/protocols": { + "version": "2.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/punycode": { + "version": "1.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/q": { + "version": "1.5.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "dev": true, + "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/quick-lru": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/range-parser": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/react": { + "version": "18.2.0", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/read-cmd-shim": { + "version": "4.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^8.0.1", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json-fast": { + "version": "3.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json/node_modules/glob": { + "version": "8.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/read-package-json/node_modules/minimatch": { + "version": "5.1.6", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-package-json/node_modules/normalize-package-data": { + "version": "5.0.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-try": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "dev": true, + "license": "ISC" + }, + "node_modules/read-pkg/node_modules/load-json-file": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/parse-json": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/pify": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/read-pkg/node_modules/strip-bom": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/registry-auth-token": { + "version": "3.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/registry-url": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "rc": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.17.2", + "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/rollup-plugin-clear": { + "version": "2.0.7", + "dev": true, + "license": "ISC", + "dependencies": { + "rimraf": "^2.6.2" + } + }, + "node_modules/rollup-plugin-clear/node_modules/rimraf": { + "version": "2.7.1", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/rollup-plugin-copy": { + "version": "3.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/fs-extra": "^8.0.1", + "colorette": "^1.1.0", + "fs-extra": "^8.1.0", + "globby": "10.0.1", + "is-plain-object": "^3.0.0" + }, + "engines": { + "node": ">=8.3" + } + }, + "node_modules/rollup-plugin-copy/node_modules/fs-extra": { + "version": "8.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/rollup-plugin-copy/node_modules/globby": { + "version": "10.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/rollup-plugin-copy/node_modules/is-plain-object": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rollup-plugin-copy/node_modules/jsonfile": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/rollup-plugin-copy/node_modules/universalify": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/rollup-plugin-esbuild": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "debug": "^4.3.4", + "es-module-lexer": "^1.0.5", + "joycon": "^3.1.1", + "jsonc-parser": "^3.2.0" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "peerDependencies": { + "esbuild": ">=0.10.1", + "rollup": "^1.20.0 || ^2.0.0 || ^3.0.0" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "dev": true, + "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.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/scheduler": { + "version": "0.23.0", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "7.3.8", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serve": { + "version": "14.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@zeit/schemas": "2.29.0", + "ajv": "8.11.0", + "arg": "5.0.2", + "boxen": "7.0.0", + "chalk": "5.0.1", + "chalk-template": "0.4.0", + "clipboardy": "3.0.0", + "compression": "1.7.4", + "is-port-reachable": "4.0.0", + "serve-handler": "6.1.5", + "update-check": "1.5.4" + }, + "bin": { + "serve": "build/main.js" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/serve-handler": { + "version": "6.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "fast-url-parser": "1.1.3", + "mime-types": "2.1.18", + "minimatch": "3.1.2", + "path-is-inside": "1.0.2", + "path-to-regexp": "2.2.1", + "range-parser": "1.2.0" + } + }, + "node_modules/serve-handler/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/serve-handler/node_modules/mime-db": { + "version": "1.33.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-handler/node_modules/mime-types": { + "version": "2.1.18", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "~1.33.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-handler/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/serve/node_modules/chalk": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "dev": true, + "license": "ISC" + }, + "node_modules/sigstore": { + "version": "1.0.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "make-fetch-happen": "^11.0.1", + "tuf-js": "^1.0.0" + }, + "bin": { + "sigstore": "bin/sigstore.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sigstore/node_modules/make-fetch-happen": { + "version": "11.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^4.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sigstore/node_modules/minipass-fetch": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^4.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sort-keys": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sort-keys/node_modules/is-plain-obj": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/split": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/split2": { + "version": "3.2.2", + "dev": true, + "license": "ISC", + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/ssri": { + "version": "10.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "dev": true, + "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/string-width": { + "version": "4.2.3", + "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/strip-ansi": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strong-log-transformer": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "duplexer": "^0.1.1", + "minimist": "^1.2.0", + "through": "^2.3.4" + }, + "bin": { + "sl-log-transformer": "bin/sl-log-transformer.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/systemjs": { + "version": "6.13.0", + "license": "MIT" + }, + "node_modules/tar": { + "version": "6.1.13", + "dev": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^4.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/terser": { + "version": "5.16.4", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/text-extensions": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/through": { + "version": "2.3.8", + "dev": true, + "license": "MIT" + }, + "node_modules/through2": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "dev": true, + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/treeverse": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tslib": { + "version": "2.5.0", + "dev": true, + "license": "0BSD" + }, + "node_modules/tuf-js": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "make-fetch-happen": "^11.0.1", + "minimatch": "^6.1.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/tuf-js/node_modules/make-fetch-happen": { + "version": "11.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^4.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/tuf-js/node_modules/minipass-fetch": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^4.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unique-filename": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-slug": { + "version": "4.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/universal-user-agent": { + "version": "6.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/universalify": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/upath": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-check": { + "version": "1.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "registry-auth-token": "3.3.2", + "registry-url": "3.1.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/util": { + "version": "0.10.4", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "dev": true, + "license": "ISC" + }, + "node_modules/uuid": { + "version": "9.0.0", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "5.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/walk-up-path": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/widest-line": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/widest-line/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/widest-line/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "license": "MIT" + }, + "node_modules/widest-line/node_modules/string-width": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/widest-line/node_modules/strip-ansi": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "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", + "dev": true, + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "5.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/write-json-file": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-indent": "^6.0.0", + "graceful-fs": "^4.1.15", + "is-plain-obj": "^2.0.0", + "make-dir": "^3.0.0", + "sort-keys": "^4.0.0", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">=8.3" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/write-json-file/node_modules/is-plain-obj": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/write-json-file/node_modules/write-file-atomic": { + "version": "3.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/write-pkg": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "sort-keys": "^2.0.0", + "type-fest": "^0.4.1", + "write-json-file": "^3.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/write-pkg/node_modules/detect-indent": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/write-pkg/node_modules/make-dir": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/write-pkg/node_modules/pify": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/write-pkg/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/write-pkg/node_modules/sort-keys": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/write-pkg/node_modules/type-fest": { + "version": "0.4.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=6" + } + }, + "node_modules/write-pkg/node_modules/write-file-atomic": { + "version": "2.4.3", + "dev": true, + "license": "ISC", + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/write-pkg/node_modules/write-json-file": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-indent": "^5.0.0", + "graceful-fs": "^4.1.15", + "make-dir": "^2.1.0", + "pify": "^4.0.1", + "sort-keys": "^2.0.0", + "write-file-atomic": "^2.4.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/yargs": { + "version": "17.7.0", + "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": "20.2.9", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "packages/app": { + "name": "@react-systemjs/app", + "version": "1.0.0", + "dependencies": { + "@pandino/bundle-installer-dom": "file:../../../../packages/@pandino/bundle-installer-dom", + "@pandino/loader-configuration-dom": "file:../../../../packages/@pandino/loader-configuration-dom", + "@pandino/pandino": "file:../../../../packages/@pandino/pandino", + "@pandino/react-hooks": "file:../../../../packages/@pandino/react-hooks", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "systemjs": "^6.13.0" + }, + "devDependencies": { + "@pandino/pandino-api": "file:../../../../packages/@pandino/pandino-api", + "@react-systemjs/component-api": "1.0.0", + "@rollup/plugin-html": "^1.0.2", + "@types/react": "^18.0.26", + "@types/react-dom": "^18.0.9" + } + }, + "packages/component-api": { + "name": "@react-systemjs/component-api", + "version": "1.0.0", + "devDependencies": { + "@types/react": "^18.0.26" + } + }, + "packages/component-one": { + "name": "@react-systemjs/component-one", + "version": "1.0.0", + "dependencies": { + "react": "^18.2.0" + }, + "devDependencies": { + "@pandino/pandino-api": "file:../../../../packages/@pandino/pandino-api", + "@pandino/rollup-plugin-generate-manifest": "file:../../../../packages/@pandino/rollup-plugin-generate-manifest", + "@react-systemjs/component-api": "1.0.0", + "@types/react": "^18.0.26" + } + } + } +} diff --git a/examples/react-systemjs/package.json b/examples/react-systemjs/package.json new file mode 100644 index 00000000..67ae6b61 --- /dev/null +++ b/examples/react-systemjs/package.json @@ -0,0 +1,39 @@ +{ + "name": "@react-systemjs/root", + "version": "1.0.0", + "description": "", + "type": "module", + "workspaces": [ + "packages/*" + ], + "scripts": { + "build": "lerna run build --stream", + "build:dev": "lerna run build:dev --stream", + "build:ci": "lerna run build:ci --stream", + "format": "prettier --config .prettierrc \"packages/*/src/**/*.{js,ts,tsx}\" --write", + "preview": "lerna run --scope @react-systemjs/app preview --stream" + }, + "keywords": [], + "author": "", + "license": "MIT", + "devDependencies": { + "@lerna-lite/cli": "^1.13.0", + "@lerna-lite/run": "^1.13.0", + "@rollup/plugin-commonjs": "^24.0.0", + "@rollup/plugin-json": "^6.0.0", + "@rollup/plugin-node-resolve": "^15.0.1", + "@rollup/plugin-replace": "^5.0.2", + "@rollup/plugin-terser": "^0.1.0", + "@rollup/plugin-typescript": "^9.0.2", + "@types/node": "^16.18.4", + "cross-env": "^7.0.3", + "dotenv": "^16.0.3", + "prettier": "^2.7.1", + "rollup": "^3.3.0", + "rollup-plugin-clear": "^2.0.7", + "rollup-plugin-copy": "^3.4.0", + "rollup-plugin-esbuild": "^5.0.0", + "serve": "^14.1.2", + "typescript": "^4.9.3" + } +} diff --git a/examples/react-systemjs/packages/app/package.json b/examples/react-systemjs/packages/app/package.json new file mode 100644 index 00000000..9db7abc1 --- /dev/null +++ b/examples/react-systemjs/packages/app/package.json @@ -0,0 +1,36 @@ +{ + "name": "@react-systemjs/app", + "version": "1.0.0", + "private": true, + "type": "module", + "scripts": { + "build": "cross-env NODE_ENV=production rollup -c", + "build:ci": "cross-env NODE_ENV=production tsc && rollup -c", + "build:dev": "rollup -c", + "preview": "serve", + "watch": "rollup -c -w", + "format": "prettier --config .prettierrc \"src/**/*.{js,jsx,ts,tsx}\" --write --loglevel error", + "tsc": "tsc" + }, + "dependencies": { + "@pandino/bundle-installer-dom": "file:../../../../packages/@pandino/bundle-installer-dom", + "@pandino/loader-configuration-dom": "file:../../../../packages/@pandino/loader-configuration-dom", + "@pandino/pandino": "file:../../../../packages/@pandino/pandino", + "@pandino/react-hooks": "file:../../../../packages/@pandino/react-hooks", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "systemjs": "^6.13.0" + }, + "devDependencies": { + "@pandino/pandino-api": "file:../../../../packages/@pandino/pandino-api", + "@react-systemjs/component-api": "1.0.0", + "@rollup/plugin-html": "^1.0.2", + "@types/react": "^18.0.26", + "@types/react-dom": "^18.0.9" + }, + "pandino": { + "bundle-installer-dom": { + "bundles": ["./component-one-manifest.json"] + } + } +} diff --git a/examples/react-systemjs/packages/app/repackaged/react-dom-client.tsx b/examples/react-systemjs/packages/app/repackaged/react-dom-client.tsx new file mode 100644 index 00000000..74ad4a69 --- /dev/null +++ b/examples/react-systemjs/packages/app/repackaged/react-dom-client.tsx @@ -0,0 +1,6 @@ +import * as client from 'react-dom/client'; + +const c = client as any; + +export const createRoot = c.createRoot; +export const hydrateRoot = c.hydrateRoot; diff --git a/examples/react-systemjs/packages/app/repackaged/react-is.tsx b/examples/react-systemjs/packages/app/repackaged/react-is.tsx new file mode 100644 index 00000000..75b91ee6 --- /dev/null +++ b/examples/react-systemjs/packages/app/repackaged/react-is.tsx @@ -0,0 +1 @@ +export * from 'react-is'; diff --git a/examples/react-systemjs/packages/app/repackaged/react-jsx-runtime.tsx b/examples/react-systemjs/packages/app/repackaged/react-jsx-runtime.tsx new file mode 100644 index 00000000..cdfe1297 --- /dev/null +++ b/examples/react-systemjs/packages/app/repackaged/react-jsx-runtime.tsx @@ -0,0 +1,14 @@ +import * as jsxRuntime from 'react/jsx-runtime'; + +const runtime = jsxRuntime as any; + +export const jsxs = runtime.jsxs; +export const jsx = runtime.jsx; +export const Fragment = runtime.Fragment; + +// default export for sub-optimally written third party libraries which import with `* as`... +export default { + jsx, + jsxs, + Fragment, +}; diff --git a/examples/react-systemjs/packages/app/rollup.config.mjs b/examples/react-systemjs/packages/app/rollup.config.mjs new file mode 100644 index 00000000..2531dd8b --- /dev/null +++ b/examples/react-systemjs/packages/app/rollup.config.mjs @@ -0,0 +1,60 @@ +import * as dotenv from 'dotenv'; +import replace from '@rollup/plugin-replace'; +import clear from 'rollup-plugin-clear'; +import copy from 'rollup-plugin-copy'; +import esbuild from 'rollup-plugin-esbuild'; +import html from '@rollup/plugin-html'; +import nodeResolve from '@rollup/plugin-node-resolve'; +import commonjs from '@rollup/plugin-commonjs'; +import {customTemplate, generateRepackagedOutput} from "./rollup/helpers.mjs"; + +dotenv.config(); + +const ENV = process.env.NODE_ENV; + +export default [ + { + input: 'src/main.tsx', + output: { + dir: 'dist', + format: 'system', + sourcemap: ENV === 'production', + }, + external: ['react', 'react-dom', 'react-dom/client', 'react/jsx-runtime', '@pandino/pandino'], + plugins: [ + clear({ + targets: ['dist'], + }), + replace({ + preventAssignment: false, + values: { + 'process.env.NODE_ENV': JSON.stringify('production'), + }, + }), + nodeResolve(), + commonjs(), + esbuild({ + minify: ENV === 'production', + }), + copy({ + targets: [ + {src: '../component-one/dist/*', dest: 'dist'}, + {src: '../../node_modules/systemjs/dist/*', dest: 'dist/systemjs'}, + {src: '../../node_modules/react/umd/*', dest: 'dist/react'}, + {src: '../../node_modules/@pandino/pandino/dist/system/*.*', dest: 'dist/@pandino/pandino/system'}, + { + src: '../../node_modules/@pandino/bundle-installer-dom/dist/system/*.*', + dest: 'dist/@pandino/bundle-installer-dom/system' + }, + ], + }), + html({ + title: 'React + Pandino', + template: customTemplate, + }), + ], + }, + generateRepackagedOutput('react-jsx-runtime', 'react/react-jsx-runtime'), + generateRepackagedOutput('react-is', 'react/react-is'), + generateRepackagedOutput('react-dom-client', 'react/react-dom-client'), +]; diff --git a/examples/react-systemjs/packages/app/rollup/helpers.mjs b/examples/react-systemjs/packages/app/rollup/helpers.mjs new file mode 100644 index 00000000..e016034c --- /dev/null +++ b/examples/react-systemjs/packages/app/rollup/helpers.mjs @@ -0,0 +1,101 @@ +import {EOL} from 'node:os'; +import * as dotenv from 'dotenv'; +import replace from '@rollup/plugin-replace'; +import nodeResolve from '@rollup/plugin-node-resolve'; +import commonjs from '@rollup/plugin-commonjs'; +import esbuild from 'rollup-plugin-esbuild'; + +dotenv.config(); + +const ENV = process.env.NODE_ENV; + +const makeHtmlAttributes = (attributes) => { + if (!attributes) { + return ''; + } + const keys = Object.keys(attributes); + return keys.reduce((result, key) => (result += ` ${key}="${attributes[key]}"`), ''); +}; + +export const customTemplate = ({attributes, files, meta, publicPath, title}) => { + // const scripts = (files.js || []) + // .map(({ fileName }) => { + // const attrs = makeHtmlAttributes(attributes.script); + // return ``; + // }) + // .join(EOL); + + const links = (files.css || []) + .map(({fileName}) => { + const attrs = makeHtmlAttributes(attributes.link); + return ``; + }) + .join(EOL); + + const metas = meta + .map((input) => { + const attrs = makeHtmlAttributes(input); + return ``; + }) + .join(EOL); + + return ` + + + + ${metas} + ${title} + ${links} + + + + + + +
+ + +`; +}; + +const repackagedConfig = { + plugins: [ + replace({ + preventAssignment: false, + values: { + 'process.env.NODE_ENV': JSON.stringify('production'), + }, + }), + nodeResolve(), + commonjs(), + esbuild({ + minify: ENV === 'production', + }), + ], +}; + +export const generateRepackagedOutput = (inputName, targetName) => { + return { + input: `repackaged/${inputName}.tsx`, + output: { + file: `dist/${targetName}.system.js`, + format: 'system', + sourcemap: ENV === 'production', + }, + external: ['react'], + ...repackagedConfig, + }; +}; diff --git a/examples/react-systemjs/packages/app/serve.json b/examples/react-systemjs/packages/app/serve.json new file mode 100644 index 00000000..ce6c2346 --- /dev/null +++ b/examples/react-systemjs/packages/app/serve.json @@ -0,0 +1,6 @@ +{ + "public": "dist", + "rewrites": [ + { "source": "**", "destination": "/index.html" } + ] +} diff --git a/examples/react-systemjs/packages/app/src/App.tsx b/examples/react-systemjs/packages/app/src/App.tsx new file mode 100644 index 00000000..0db61bf7 --- /dev/null +++ b/examples/react-systemjs/packages/app/src/App.tsx @@ -0,0 +1,15 @@ +import type { FC } from 'react'; +import { useState } from 'react'; +import { OBJECTCLASS } from '@pandino/pandino-api'; +import { ComponentProxy } from '@pandino/react-hooks'; +import { CUSTOM_COMPONENT_INTERFACE_KEY } from '@react-systemjs/component-api'; + +export const App: FC = () => { + const [firstName] = useState('John'); + + return ( + +
fallback for: {firstName}
+
+ ); +}; diff --git a/examples/react-systemjs/packages/app/src/main.tsx b/examples/react-systemjs/packages/app/src/main.tsx new file mode 100644 index 00000000..501c2e3b --- /dev/null +++ b/examples/react-systemjs/packages/app/src/main.tsx @@ -0,0 +1,30 @@ +import { createRoot } from 'react-dom/client'; +import Pandino from '@pandino/pandino'; +import loaderConfiguration from '@pandino/loader-configuration-dom'; +import { PandinoProvider } from '@pandino/react-hooks'; +import { App } from './App'; + +const root = createRoot(document.querySelector('#root')!); + +const pandino = new Pandino({ + ...loaderConfiguration, +}); + +await pandino.init(); +await pandino.start(); + +(async () => { + const componentOneBundle = await pandino.getBundleContext().installBundle('./component-one.system-manifest.json'); + window.setTimeout(() => { + pandino.uninstallBundle(componentOneBundle as any); + window.setTimeout(() => { + pandino.getBundleContext().installBundle('./component-one.system-manifest.json'); + }, 2000); + }, 2000); +})(); + +root.render( + + + , +); diff --git a/examples/react-systemjs/packages/app/tsconfig.json b/examples/react-systemjs/packages/app/tsconfig.json new file mode 100644 index 00000000..ac57ec22 --- /dev/null +++ b/examples/react-systemjs/packages/app/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": false, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx" + }, + "include": [ + "src" + ] +} diff --git a/examples/react-systemjs/packages/component-api/package.json b/examples/react-systemjs/packages/component-api/package.json new file mode 100644 index 00000000..968b860e --- /dev/null +++ b/examples/react-systemjs/packages/component-api/package.json @@ -0,0 +1,23 @@ +{ + "name": "@react-systemjs/component-api", + "version": "1.0.0", + "private": true, + "type": "module", + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "default": "./dist/index.js" + } + }, + "scripts": { + "build:types": "tsc --emitDeclarationOnly --declaration --project tsconfig.json", + "build": "cross-env NODE_ENV=production rollup -c && npm run build:types", + "build:ci": "cross-env NODE_ENV=production tsc && npm run build", + "build:dev": "rollup -c && npm run build:types" + }, + "keywords": [], + "devDependencies": { + "@types/react": "^18.0.26" + } +} diff --git a/examples/react-systemjs/packages/component-api/rollup.config.js b/examples/react-systemjs/packages/component-api/rollup.config.js new file mode 100644 index 00000000..f8603cf0 --- /dev/null +++ b/examples/react-systemjs/packages/component-api/rollup.config.js @@ -0,0 +1,26 @@ +import * as dotenv from 'dotenv'; +import clear from 'rollup-plugin-clear'; +import esbuild from 'rollup-plugin-esbuild'; + +dotenv.config(); + +const ENV = process.env.NODE_ENV; + +export default [ + { + input: 'src/index.ts', + output: { + dir: 'dist', + format: 'esm', + sourcemap: ENV === 'production', + }, + plugins: [ + clear({ + targets: ['dist'], + }), + esbuild({ + minify: ENV === 'production', + }), + ], + }, +]; diff --git a/examples/react-systemjs/packages/component-api/src/index.ts b/examples/react-systemjs/packages/component-api/src/index.ts new file mode 100644 index 00000000..c18eff50 --- /dev/null +++ b/examples/react-systemjs/packages/component-api/src/index.ts @@ -0,0 +1,10 @@ +import type { FC } from 'react'; + +export const CUSTOM_COMPONENT_INTERFACE_KEY = '@react-systemjs/component-api/CustomComponent'; + +export interface CustomComponent extends FC {} + +export interface ComponentProps { + firstName: string; + lastName?: string; +} diff --git a/examples/react-systemjs/packages/component-api/tsconfig.json b/examples/react-systemjs/packages/component-api/tsconfig.json new file mode 100644 index 00000000..d73f830a --- /dev/null +++ b/examples/react-systemjs/packages/component-api/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": false, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + "isolatedModules": true, + "declaration": true, + "declarationDir": "dist", + "jsx": "react-jsx" + }, + "include": [ + "src" + ] +} diff --git a/examples/react-systemjs/packages/component-one/package.json b/examples/react-systemjs/packages/component-one/package.json new file mode 100644 index 00000000..16532fca --- /dev/null +++ b/examples/react-systemjs/packages/component-one/package.json @@ -0,0 +1,32 @@ +{ + "name": "@react-systemjs/component-one", + "version": "1.0.0", + "private": true, + "type": "module", + "module": "./dist/component-one.mjs", + "exports": { + ".": { + "default": "./dist/component-one.mjs" + } + }, + "scripts": { + "build": "cross-env NODE_ENV=production rollup -c", + "build:ci": "cross-env NODE_ENV=production tsc && rollup -c", + "build:dev": "rollup -c" + }, + "keywords": [], + "devDependencies": { + "@pandino/pandino-api": "file:../../../../packages/@pandino/pandino-api", + "@pandino/rollup-plugin-generate-manifest": "file:../../../../packages/@pandino/rollup-plugin-generate-manifest", + "@react-systemjs/component-api": "1.0.0", + "@types/react": "^18.0.26" + }, + "dependencies": { + "react": "^18.2.0" + }, + "pandino": { + "manifest": { + "Provide-Capability": "@react-esm/component-api/CustomComponent;name:=ComponentOne" + } + } +} diff --git a/examples/react-systemjs/packages/component-one/rollup.config.mjs b/examples/react-systemjs/packages/component-one/rollup.config.mjs new file mode 100644 index 00000000..d17544ee --- /dev/null +++ b/examples/react-systemjs/packages/component-one/rollup.config.mjs @@ -0,0 +1,37 @@ +import * as dotenv from 'dotenv'; +import clear from 'rollup-plugin-clear'; +import esbuild from 'rollup-plugin-esbuild'; +import generateManifest from '@pandino/rollup-plugin-generate-manifest'; +import nodeResolve from '@rollup/plugin-node-resolve'; +import commonjs from '@rollup/plugin-commonjs'; + +dotenv.config(); + +const ENV = process.env.NODE_ENV; + +export default [ + { + input: 'src/index.tsx', + output: { + file: 'dist/component-one.system.js', + format: 'system', + sourcemap: ENV === 'production', + }, + plugins: [ + clear({ + targets: ['dist'], + }), + nodeResolve(), + commonjs(), + esbuild({ + minify: ENV === 'production', + }), + generateManifest(), + ], + external: [ + 'react/jsx-runtime', + 'react-dom/client', + 'react', + ], + }, +]; diff --git a/examples/react-systemjs/packages/component-one/src/ComponentOne.tsx b/examples/react-systemjs/packages/component-one/src/ComponentOne.tsx new file mode 100644 index 00000000..b3a199be --- /dev/null +++ b/examples/react-systemjs/packages/component-one/src/ComponentOne.tsx @@ -0,0 +1,14 @@ +import { useState } from 'react'; +import type { CustomComponent } from '@react-systemjs/component-api'; + +export const ComponentOne: CustomComponent = (props) => { + const [data, setData] = useState<{ firstName: string; lastName?: string }>({ ...props }); + + return ( +
+

Component One

+

FirstName: {data.firstName}

+

LastName: {data.lastName}

+
+ ); +}; diff --git a/examples/react-systemjs/packages/component-one/src/index.tsx b/examples/react-systemjs/packages/component-one/src/index.tsx new file mode 100644 index 00000000..533ba0b5 --- /dev/null +++ b/examples/react-systemjs/packages/component-one/src/index.tsx @@ -0,0 +1,16 @@ +import type { BundleActivator, BundleContext, ServiceRegistration } from '@pandino/pandino-api'; +import { CUSTOM_COMPONENT_INTERFACE_KEY } from '@react-systemjs/component-api'; +import type { CustomComponent } from '@react-systemjs/component-api'; +import { ComponentOne } from './ComponentOne'; + +export default class AboutPageActivator implements BundleActivator { + private componentRegistration?: ServiceRegistration; + + async start(context: BundleContext) { + this.componentRegistration = context.registerService(CUSTOM_COMPONENT_INTERFACE_KEY, ComponentOne); + } + + async stop(context: BundleContext) { + this.componentRegistration?.unregister(); + } +} diff --git a/examples/react-systemjs/packages/component-one/tsconfig.json b/examples/react-systemjs/packages/component-one/tsconfig.json new file mode 100644 index 00000000..ac57ec22 --- /dev/null +++ b/examples/react-systemjs/packages/component-one/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": false, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx" + }, + "include": [ + "src" + ] +} diff --git a/examples/umd-bundle-ts/package-lock.json b/examples/umd-bundle-ts/package-lock.json index e21bd49d..91a0b00b 100644 --- a/examples/umd-bundle-ts/package-lock.json +++ b/examples/umd-bundle-ts/package-lock.json @@ -9,18 +9,15 @@ "version": "1.0.0", "license": "ISC", "devDependencies": { - "@pandino/pandino-api": "file:../../../packages/@pandino/pandino-api", + "@pandino/pandino-api": "file:../../packages/@pandino/pandino-api", "clean-webpack-plugin": "^4.0.0", "copy-webpack-plugin": "^11.0.0", "ts-loader": "^9.4.1", - "typescript": "^4.7.4", + "typescript": "^4.9.3", "webpack": "^5.74.0", - "webpack-cli": "^4.10.0" + "webpack-cli": "^5.0.0" } }, - "../../../packages/@pandino/pandino-api": { - "dev": true - }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", @@ -124,8 +121,13 @@ } }, "node_modules/@pandino/pandino-api": { - "resolved": "../../../packages/@pandino/pandino-api", - "link": true + "version": "0.8.22", + "resolved": "file:../../packages/@pandino/pandino-api", + "dev": true, + "license": "EPL-2.0", + "engines": { + "node": ">=14.9.0" + } }, "node_modules/@types/eslint": { "version": "8.4.6", @@ -328,34 +330,42 @@ } }, "node_modules/@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.0.1.tgz", + "integrity": "sha512-njsdJXJSiS2iNbQVS0eT8A/KPnmyH4pv1APj2K0d1wrZcBLw+yppxOy4CGqa0OxDJkzfL/XELDhD8rocnIwB5A==", "dev": true, + "engines": { + "node": ">=14.15.0" + }, "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" } }, "node_modules/@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.1.tgz", + "integrity": "sha512-fE1UEWTwsAxRhrJNikE7v4EotYflkEhBL7EbajfkPlf6E37/2QshOy/D48Mw8G5XMFlQtS6YV42vtbG9zBpIQA==", "dev": true, - "dependencies": { - "envinfo": "^7.7.3" + "engines": { + "node": ">=14.15.0" }, "peerDependencies": { - "webpack-cli": "4.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" } }, "node_modules/@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.1.tgz", + "integrity": "sha512-0G7tNyS+yW8TdgHwZKlDWYXFA6OJQnoLCQvYKkQP0Q2X205PSQ6RNUj0M+1OB/9gRQaUZ/ccYfaxd0nhaWKfjw==", "dev": true, + "engines": { + "node": ">=14.15.0" + }, "peerDependencies": { - "webpack-cli": "4.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" }, "peerDependenciesMeta": { "webpack-dev-server": { @@ -1144,18 +1154,18 @@ "dev": true }, "node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, "node_modules/is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -1614,15 +1624,15 @@ } }, "node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, "dependencies": { - "resolve": "^1.9.0" + "resolve": "^1.20.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/require-from-string": { @@ -1963,9 +1973,9 @@ } }, "node_modules/typescript": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -2071,44 +2081,42 @@ } }, "node_modules/webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.0.1.tgz", + "integrity": "sha512-S3KVAyfwUqr0Mo/ur3NzIp6jnerNpo7GUO6so51mxLi1spqsA17YcMXy0WOIJtBSnj748lthxC6XLbNKh/ZC+A==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", + "@webpack-cli/configtest": "^2.0.1", + "@webpack-cli/info": "^2.0.1", + "@webpack-cli/serve": "^2.0.1", "colorette": "^2.0.14", - "commander": "^7.0.0", + "commander": "^9.4.1", "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", "webpack-merge": "^5.7.3" }, "bin": { "webpack-cli": "bin/cli.js" }, "engines": { - "node": ">=10.13.0" + "node": ">=14.15.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "4.x.x || 5.x.x" + "webpack": "5.x.x" }, "peerDependenciesMeta": { "@webpack-cli/generators": { "optional": true }, - "@webpack-cli/migrate": { - "optional": true - }, "webpack-bundle-analyzer": { "optional": true }, @@ -2118,12 +2126,12 @@ } }, "node_modules/webpack-cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "dev": true, "engines": { - "node": ">= 10" + "node": "^12.20.0 || >=14" } }, "node_modules/webpack-merge": { @@ -2265,7 +2273,8 @@ } }, "@pandino/pandino-api": { - "version": "file:../../../packages/@pandino/pandino-api" + "version": "0.8.22", + "dev": true }, "@types/eslint": { "version": "8.4.6", @@ -2468,25 +2477,23 @@ } }, "@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.0.1.tgz", + "integrity": "sha512-njsdJXJSiS2iNbQVS0eT8A/KPnmyH4pv1APj2K0d1wrZcBLw+yppxOy4CGqa0OxDJkzfL/XELDhD8rocnIwB5A==", "dev": true, "requires": {} }, "@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.1.tgz", + "integrity": "sha512-fE1UEWTwsAxRhrJNikE7v4EotYflkEhBL7EbajfkPlf6E37/2QshOy/D48Mw8G5XMFlQtS6YV42vtbG9zBpIQA==", "dev": true, - "requires": { - "envinfo": "^7.7.3" - } + "requires": {} }, "@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.1.tgz", + "integrity": "sha512-0G7tNyS+yW8TdgHwZKlDWYXFA6OJQnoLCQvYKkQP0Q2X205PSQ6RNUj0M+1OB/9gRQaUZ/ccYfaxd0nhaWKfjw==", "dev": true, "requires": {} }, @@ -3078,15 +3085,15 @@ "dev": true }, "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true }, "is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, "requires": { "has": "^1.0.3" @@ -3420,12 +3427,12 @@ } }, "rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, "requires": { - "resolve": "^1.9.0" + "resolve": "^1.20.0" } }, "require-from-string": { @@ -3633,9 +3640,9 @@ } }, "typescript": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true }, "update-browserslist-db": { @@ -3700,29 +3707,30 @@ } }, "webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.0.1.tgz", + "integrity": "sha512-S3KVAyfwUqr0Mo/ur3NzIp6jnerNpo7GUO6so51mxLi1spqsA17YcMXy0WOIJtBSnj748lthxC6XLbNKh/ZC+A==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", + "@webpack-cli/configtest": "^2.0.1", + "@webpack-cli/info": "^2.0.1", + "@webpack-cli/serve": "^2.0.1", "colorette": "^2.0.14", - "commander": "^7.0.0", + "commander": "^9.4.1", "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", "webpack-merge": "^5.7.3" }, "dependencies": { "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "dev": true } } diff --git a/examples/umd-bundle-ts/package.json b/examples/umd-bundle-ts/package.json index de677447..1174dbd0 100644 --- a/examples/umd-bundle-ts/package.json +++ b/examples/umd-bundle-ts/package.json @@ -10,7 +10,7 @@ "author": "", "license": "ISC", "devDependencies": { - "@pandino/pandino-api": "file:../../../packages/@pandino/pandino-api", + "@pandino/pandino-api": "file:../../packages/@pandino/pandino-api", "clean-webpack-plugin": "^4.0.0", "copy-webpack-plugin": "^11.0.0", "ts-loader": "^9.4.1", diff --git a/examples/umd-bundle-ts/public/index.html b/examples/umd-bundle-ts/public/index.html index 6d2850f8..d987ba3d 100644 --- a/examples/umd-bundle-ts/public/index.html +++ b/examples/umd-bundle-ts/public/index.html @@ -15,9 +15,9 @@

Hello!

] diff --git a/examples/umd-bundle-ts/public/pandino.mjs b/examples/umd-bundle-ts/public/pandino.mjs deleted file mode 100644 index 6b693bbb..00000000 --- a/examples/umd-bundle-ts/public/pandino.mjs +++ /dev/null @@ -1,5827 +0,0 @@ -/** - * PANDINO - */ -const DEPLOYMENT_ROOT_PROP = 'pandino.deployment.root'; -const LOG_LEVEL_PROP = 'pandino.log.level'; -const LOG_LOGGER_PROP = 'pandino.log.logger'; -const PANDINO_BUNDLE_IMPORTER_PROP = 'pandino.bundle.importer'; -const PANDINO_MANIFEST_FETCHER_PROP = 'pandino.manifest.fetcher'; -const PANDINO_ACTIVATOR_RESOLVERS = 'pandino.activator.resolvers'; -const BUNDLE_NAMESPACE = 'pandino.wiring.bundle'; -const IDENTITY_NAMESPACE = 'pandino.identity'; -const TYPE_BUNDLE = 'pandino.bundle'; -const TYPE_FRAGMENT = 'pandino.fragment'; -const SYSTEMBUNDLE_ACTIVATORS_PROP = 'pandino.systembundle.activators'; -const PACKAGE_NAMESPACE = 'pandino.wiring.package'; -const HOST_NAMESPACE = 'pandino.wiring.host'; -/** - * Location identifier of the Pandino system bundle , which is defined to be "System Bundle". - */ -const SYSTEM_BUNDLE_LOCATION = 'System Bundle'; -/** - * Manifest header identifying the bundle's name. - */ -const BUNDLE_NAME = 'Bundle-Name'; -/** - * Manifest header containing a brief description of the bundle's functionality. - */ -const BUNDLE_DESCRIPTION = 'Bundle-Description'; -/** - * Manifest header identifying the bundle's version. - * - * (Required attribute) - */ -const BUNDLE_VERSION = 'Bundle-Version'; -/** - * Manifest header identifying the bundle's type. - * - * Valid options are: - * - esm - * - umd - * - * Default: esm - * - * Warning! Given that UMD modules are loaded onto the `window`, Pandino cannot guarantee that they cannot be tempered - * with. Re-loading the same bundle multiple times may cause issues. - */ -const BUNDLE_TYPE = 'Bundle-Type'; -/** - * If the corresponding value is a path string, then the value MUST be a relative path calculated from the - * {@link DEPLOYMENT_ROOT_PROP}'s value! - * - * (Required attribute) - */ -const BUNDLE_ACTIVATOR = 'Bundle-Activator'; -/** - * Manifest header identifying the bundle's activation policy. - * - * (Not yet implemented) - */ -const BUNDLE_ACTIVATIONPOLICY = 'Bundle-ActivationPolicy'; -/** - * Manifest header identifying the bundle's symbolic name. - * - * (Required attribute) - */ -const BUNDLE_SYMBOLICNAME = 'Bundle-SymbolicName'; -/** - * Manifest header identifying the bundle manifest version. A bundle manifest may express the version of the syntax in - * which it is written by specifying a bundle manifest version. - * - * (Required attribute) - */ -const BUNDLE_MANIFESTVERSION = 'Bundle-ManifestVersion'; -/** - * Manifest header identifying the bundle's copyright information. - */ -const BUNDLE_COPYRIGHT = 'Bundle-Copyright'; -/** - * Manifest header identifying the symbolic names of other bundles required by the bundle. - * - * (Not yet implemented) - */ -const REQUIRE_BUNDLE = 'Require-Bundle'; -/** - * Manifest header identifying the capabilities that the bundle offers to provide to other bundles. - */ -const PROVIDE_CAPABILITY = 'Provide-Capability'; -/** - * Manifest header identifying the capabilities on which the bundle depends. - */ -const REQUIRE_CAPABILITY = 'Require-Capability'; -/** - * Manifest header directive value identifying an optional resolution type. An optional resolution type indicates that - * the import, require bundle or require capability is optional and the bundle may be resolved without the import, - * require bundle or require capability being resolved. If the import, require bundle or require capability is not - * resolved when the bundle is resolved, the import, require bundle or require capability may not be resolved until the - * bundle is refreshed. - * - * (Not yet implemented) - */ -const RESOLUTION_OPTIONAL = 'optional'; -const SYSTEM_BUNDLE_SYMBOLICNAME = '@pandino/pandino'; -/** - * Bundle activation policy declaring the bundle must be activated when the first class load is made from the bundle. - * - *

- * A bundle with the lazy activation policy that is started with the "START_ACTIVATION_POLICY" option will wait in the - * "STARTING" state until the first class load from the bundle occurs. The bundle will then be activated before the - * class is returned to the requester. - * - * (Not yet implemented) - */ -const ACTIVATION_LAZY = 'lazy'; -/** - * Manifest header identifying the symbolic name of another bundle for which that the bundle is a fragment. - * - * (Not yet implemented) - */ -const FRAGMENT_HOST = 'Fragment-Host'; -const FRAMEWORK_LOGGER = '@pandino/pandino/Logger'; -const FRAMEWORK_MANIFEST_FETCHER = '@pandino/pandino/ManifestFetcher'; -const FRAMEWORK_BUNDLE_IMPORTER = '@pandino/pandino/BundleImporter'; -const FRAMEWORK_FILTER_PARSER = '@pandino/pandino/FilterParser'; -const FRAMEWORK_SEMVER_FACTORY = '@pandino/pandino/SemVerFactory'; -const SERVICE_DEFAULT_RANK = 0; -/** - * Service property identifying a service's registration number. The value of this property must be of type - * {@code number}. - * - *

- * The value of this property is assigned by the Framework when a service is registered. The Framework assigns a unique, - * non-negative value that is larger than all previously assigned values since the Framework was started. These values - * are NOT persistent across restarts of the Framework. - */ -const SERVICE_ID = 'service.id'; -/** - * Service property identifying a service's ranking number. - * - *

- * This property may be supplied in the {@code properties Record} object passed to the - * {@code BundleContext.registerService} method. The value of this property must be of type {@code number}. - * - *

- * The service ranking is used by the Framework to determine the natural order of services, see - * {@link ServiceReference#compareTo(Object)}, and the default service to be returned from a call to the - * {@link BundleContext#getServiceReference(Class)} or - * {@link BundleContext#getServiceReference(String)} method. - * - *

- * The default ranking is zero (0). A service with a ranking of {@code Number.MAX_VALUE} is very likely to be returned - * as the default service, whereas a service with a ranking of {@code Number.MIN_VALUE} is very unlikely to be - * returned. - */ -const SERVICE_RANKING = 'service.ranking'; -/** - * Service property identifying the {@link Bundle#getBundleId() bundle id} of the {@link ServiceReference#getBundle() - * bundle registering the service}. - * - *

- * This property is set by the Framework when a service is registered. The value of this property must be of type - * {@code number}. - */ -const SERVICE_BUNDLEID = 'service.bundleid'; -/** - * Service property identifying a service's description. - */ -const SERVICE_DESCRIPTION = 'service.description'; -/** - * Service property identifying a service's scope. - * - *

- * This property is set by the Framework when a service is registered. If the registered object implements - * {@link PrototypeServiceFactory}, then the value of this service property will be {@link #SCOPE_PROTOTYPE}. Otherwise, - * if the registered object implements {@link ServiceFactory}, then the value of this service property will be - * {@link #SCOPE_BUNDLE}. Otherwise, the value of this service property will be {@link #SCOPE_SINGLETON}. - */ -const SERVICE_SCOPE = 'service.scope'; -/** - * Service scope is singleton. All bundles using the service receive the same service object. - */ -const SCOPE_SINGLETON = 'singleton'; -/** - * Service scope is bundle. Each bundle using the service receives a customized service object. - */ -const SCOPE_BUNDLE = 'bundle'; -/** - * Service scope is prototype. Each bundle using the service receives either a customized service object or can request - * multiple customized service objects. - */ -const SCOPE_PROTOTYPE = 'prototype'; -/** - * Service property identifying all of the class names under which a service was registered in the Framework. The value - * of this property must be of type {@code string | string[]}. - * - *

- * This property is set by the Framework when a service is registered. - */ -const OBJECTCLASS = 'objectClass'; -/** - * Manifest header attribute identifying a range of versions for a bundle specified in the {@code Require-Bundle} or - * {@code Fragment-Host} manifest headers. The default value is {@code 0.0.0}. - */ -const BUNDLE_VERSION_ATTRIBUTE = 'bundle-version'; -/** - * The capability attribute identifying the {@code SemVer} of the resource if one is specified or {@code 0.0.0} if not - * specified. The value of this attribute must be of type {@code SemVer}. - */ -const CAPABILITY_VERSION_ATTRIBUTE = 'version'; -/** - * The capability attribute that contains a human readable copyright notice for the resource. See the - * {@code Bundle-Copyright} manifest header. - */ -const CAPABILITY_COPYRIGHT_ATTRIBUTE = 'copyright'; -/** - * The capability attribute identifying the resource type. If the resource has no type then the value - * {@link #TYPE_UNKNOWN unknown} must be used for the attribute. - */ -const CAPABILITY_TYPE_ATTRIBUTE = 'type'; -/** - * The capability attribute that contains a human readable description for the resource. See the - * {@code Bundle-Description} manifest header. - */ -const CAPABILITY_DESCRIPTION_ATTRIBUTE = 'description'; -/** - * Manifest header directive identifying a list of packages that an exported package or provided capability uses. - */ -const USES_DIRECTIVE = 'uses'; -/** - * Manifest header directive identifying names of matching attributes which must be specified by matching Import-Package - * statements in the Export-Package manifest header. - */ -const MANDATORY_DIRECTIVE = 'mandatory'; -/** - * Manifest header directive identifying the capability filter specified in the Require-Capability manifest header. - */ -const FILTER_DIRECTIVE = 'filter'; -/** - * Manifest header directive identifying a list of classes to include in the exported package. - * - *

- * This directive is used by the Export-Package manifest header to identify a list of classes of the specified package - * which must be allowed to be exported. - */ -const INCLUDE_DIRECTIVE = 'include'; -/** - * Manifest header directive identifying a list of classes to exclude in the exported package.. - *

- * This directive is used by the Export-Package manifest header to identify a list of classes of the specified package - * which must not be allowed to be exported. - */ -const EXCLUDE_DIRECTIVE = 'exclude'; -/** - * Manifest header directive identifying the resolution type in the Import-Package, Require-Bundle or Require-Capability - * manifest header. The default value is {@link #RESOLUTION_MANDATORY mandatory}. - */ -const RESOLUTION_DIRECTIVE = 'resolution'; -/** - * Manifest header directive identifying whether a bundle is a singleton. The default value is {@code false}. - */ -const SINGLETON_DIRECTIVE = 'singleton'; -/** - * The capability directive identifying if the resource is a singleton. A {@code string} value of "true" - * indicates the resource is a singleton; any other value or {@code undefined} indicates the resource is not a - * singleton. - */ -const CAPABILITY_SINGLETON_DIRECTIVE = 'singleton'; -/** - * Manifest header directive identifying the effective time of the provided capability. The default value is - * {@link #EFFECTIVE_RESOLVE resolve}. - */ -const EFFECTIVE_DIRECTIVE = 'effective'; -/** - * Manifest header directive value identifying a capability that is effective at resolve time. Capabilities with an - * effective time of resolve are the only capabilities which are processed by the resolver. - */ -const EFFECTIVE_RESOLVE = 'resolve'; -var LogLevel; -(function (LogLevel) { - LogLevel[LogLevel["TRACE"] = 5] = "TRACE"; - LogLevel[LogLevel["DEBUG"] = 4] = "DEBUG"; - LogLevel[LogLevel["LOG"] = 3] = "LOG"; - LogLevel[LogLevel["INFO"] = 2] = "INFO"; - LogLevel[LogLevel["WARN"] = 1] = "WARN"; - LogLevel[LogLevel["ERROR"] = 0] = "ERROR"; -})(LogLevel || (LogLevel = {})); - -function isAnyMissing(...parameters) { - for (const param of parameters) { - if (param === null || param === undefined) { - return true; - } - } - return false; -} -function isAllPresent(...parameters) { - return !isAnyMissing(...parameters); -} - -class BundleCapabilityImpl { - revision; - namespace; - dirs = {}; - attrs = {}; - uses = []; - mandatory = new Set(); - constructor(revision, namespace, dirs = {}, attrs = {}) { - this.revision = revision; - this.namespace = namespace; - this.dirs = dirs; - this.attrs = attrs; - let value = this.dirs[USES_DIRECTIVE]; - if (value !== null && value !== undefined) { - const uses = value.split(',').map((i) => i.trim()); - for (const u of uses) { - this.uses.push(u); - } - } - let mandatory = new Set(); - value = this.dirs[MANDATORY_DIRECTIVE]; - if (value !== null && value !== undefined) { - const names = ManifestParserImpl.parseDelimitedString(value, ','); - for (let name of names) { - if (this.attrs.hasOwnProperty(name)) { - mandatory.add(name); - } - else { - throw new Error("Mandatory attribute '" + name + "' does not exist."); - } - } - } - this.mandatory = mandatory; - } - equals(other) { - if (isAnyMissing(other) || !(other instanceof BundleCapabilityImpl)) { - return false; - } - if (this.revision.getVersion().compare(other.revision.getVersion()) === 0 && - this.getNamespace() === other.getNamespace()) { - return true; - } - return false; - } - getAttributes() { - return this.attrs; - } - getDirectives() { - return this.dirs; - } - getNamespace() { - return this.namespace; - } - getResource() { - return this.revision; - } - getRevision() { - return this.revision; - } - isAttributeMandatory(name) { - return this.mandatory.size > 0 && this.mandatory.has(name); - } - getUses() { - return this.uses; - } - toString() { - if (isAnyMissing(this.revision)) { - return this.stringifyAttributes(); - } - return '[' + this.revision + '] ' + this.namespace + '; ' + this.stringifyAttributes(); - } - stringifyAttributes() { - const list = Object.keys(this.attrs).map((key) => `${key}=${this.attrs[key]}`); - return `${list.join('; ')}`; - } -} - -class ParsedHeaderClause { - paths; - dirs; - attrs; - types; - constructor(paths, dirs, attrs, types) { - this.paths = paths; - this.dirs = dirs; - this.attrs = attrs; - this.types = types; - } -} - -/* istanbul ignore file */ -function peg$subclass(child, parent) { - function ctor() { - this.constructor = child; - } - ctor.prototype = parent.prototype; - // @ts-ignore - child.prototype = new ctor(); -} -function peg$SyntaxError(message, expected, found, location) { - this.message = message; - this.expected = expected; - this.found = found; - this.location = location; - this.name = 'SyntaxError'; - if (typeof Error.captureStackTrace === 'function') { - Error.captureStackTrace(this, peg$SyntaxError); - } -} -peg$subclass(peg$SyntaxError, Error); -function peg$parse(input) { - let options = arguments.length > 1 ? arguments[1] : {}, peg$FAILED = {}, peg$startRuleFunctions = { start: peg$parsestart }, peg$startRuleFunction = peg$parsestart, peg$c0 = function (filter) { - return filter; - }, peg$c1 = function (filter) { - filter.value = filter.value.replace(/ +$/, ''); - return filter; - }, peg$c2 = '(', peg$c3 = { type: 'literal', value: '(', description: '"("' }, peg$c4 = ')', peg$c5 = { type: 'literal', value: ')', description: '")"' }, peg$c6 = '&', peg$c7 = { type: 'literal', value: '&', description: '"&"' }, peg$c8 = function (filters) { - return Filter.AND(filters); - }, peg$c9 = '|', peg$c10 = { type: 'literal', value: '|', description: '"|"' }, peg$c11 = function (filters) { - return Filter.OR(filters); - }, peg$c12 = '!', peg$c13 = { type: 'literal', value: '!', description: '"!"' }, peg$c14 = function (filter) { - return Filter.NOT(filter); - }, peg$c15 = function (attr, comp, value) { - return new Filter(attr.attribute, comp, value); - }, peg$c16 = '=', peg$c17 = { type: 'literal', value: '=', description: '"="' }, peg$c18 = '~=', peg$c19 = { type: 'literal', value: '~=', description: '"~="' }, peg$c20 = '>=', peg$c21 = { type: 'literal', value: '>=', description: '">="' }, peg$c22 = '<=', peg$c23 = { type: 'literal', value: '<=', description: '"<="' }, peg$c24 = '=*', peg$c25 = { type: 'literal', value: '=*', description: '"=*"' }, peg$c26 = function (attr) { - return Filter.attribute(attr.attribute).present(); - }, peg$c27 = function (attr, value) { - return new Filter(attr.attribute, FilterComp.EQ, value); - }, peg$c28 = '*', peg$c29 = { type: 'literal', value: '*', description: '"*"' }, peg$c30 = { type: 'other', description: 'attribute description' }, peg$c31 = ';', peg$c32 = { type: 'literal', value: ';', description: '";"' }, peg$c33 = function (attr, opts) { - if (opts) { - opts.shift(); - opts = opts.shift(); - opts = opts.split(';'); - } - attr.options = opts || []; - return attr; - }, peg$c34 = { type: 'other', description: 'attribute Type' }, peg$c35 = function (oid) { - return { - type: 'oid', - attribute: oid, - }; - }, peg$c36 = function (name) { - return { - type: 'attribute', - attribute: name, - }; - }, peg$c37 = { type: 'other', description: 'attribute type chars' }, peg$c38 = '-', peg$c39 = { type: 'literal', value: '-', description: '"-"' }, peg$c40 = { type: 'other', description: 'OID' }, peg$c41 = '.', peg$c42 = { type: 'literal', value: '.', description: '"."' }, peg$c43 = { type: 'other', description: 'attribute options' }, peg$c44 = { type: 'other', description: 'attribute option' }, peg$c45 = /^[^)]/, peg$c46 = { type: 'class', value: '[^\\x29]', description: '[^\\x29]' }, peg$c47 = '\\', peg$c48 = { type: 'literal', value: '\\', description: '"\\\\"' }, peg$c49 = function (char) { - return String.fromCharCode(char); - }, peg$c50 = function (value) { - return parseInt(value, 16); - }, peg$c51 = /^[a-fA-F0-9]/, peg$c52 = { type: 'class', value: '[a-fA-F0-9]', description: '[a-fA-F0-9]' }, peg$c53 = { type: 'other', description: 'WHITESPACE' }, peg$c54 = { type: 'other', description: 'SPACE' }, peg$c55 = /^[ ]/, peg$c56 = { type: 'class', value: '[\\x20]', description: '[\\x20]' }, peg$c57 = { type: 'other', description: 'TAB' }, peg$c58 = /^[\t]/, peg$c59 = { type: 'class', value: '[\\x09]', description: '[\\x09]' }, peg$c60 = { type: 'other', description: 'DIGIT' }, peg$c61 = /^[0-9]/, peg$c62 = { type: 'class', value: '[0-9]', description: '[0-9]' }, peg$c63 = { type: 'other', description: 'ALPHA' }, peg$c64 = /^[a-zA-Z]/, peg$c65 = { type: 'class', value: '[a-zA-Z]', description: '[a-zA-Z]' }, peg$c66 = { type: 'other', description: 'NEWLINE' }, peg$c67 = '\r\n', peg$c68 = { type: 'literal', value: '\r\n', description: '"\\r\\n"' }, peg$c69 = '\n', peg$c70 = { type: 'literal', value: '\n', description: '"\\n"' }, peg$currPos = 0, peg$posDetailsCache = [{ line: 1, column: 1, seenCR: false }], peg$maxFailPos = 0, peg$maxFailExpected = [], peg$silentFails = 0, peg$result; - if ('startRule' in options) { - if (!(options.startRule in peg$startRuleFunctions)) { - throw new Error('Can\'t start parsing from rule "' + options.startRule + '".'); - } - peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; - } - function peg$computePosDetails(pos) { - let details = peg$posDetailsCache[pos], p, ch; - if (details) { - return details; - } - else { - p = pos - 1; - while (!peg$posDetailsCache[p]) { - p--; - } - details = peg$posDetailsCache[p]; - details = { - line: details.line, - column: details.column, - seenCR: details.seenCR, - }; - while (p < pos) { - ch = input.charAt(p); - if (ch === '\n') { - if (!details.seenCR) { - details.line++; - } - details.column = 1; - details.seenCR = false; - } - else if (ch === '\r' || ch === '\u2028' || ch === '\u2029') { - details.line++; - details.column = 1; - details.seenCR = true; - } - else { - details.column++; - details.seenCR = false; - } - p++; - } - peg$posDetailsCache[pos] = details; - return details; - } - } - function peg$computeLocation(startPos, endPos) { - let startPosDetails = peg$computePosDetails(startPos), endPosDetails = peg$computePosDetails(endPos); - return { - start: { - offset: startPos, - line: startPosDetails.line, - column: startPosDetails.column, - }, - end: { - offset: endPos, - line: endPosDetails.line, - column: endPosDetails.column, - }, - }; - } - function peg$fail(expected) { - if (peg$currPos < peg$maxFailPos) { - return; - } - if (peg$currPos > peg$maxFailPos) { - peg$maxFailPos = peg$currPos; - peg$maxFailExpected = []; - } - peg$maxFailExpected.push(expected); - } - function peg$buildException(message, expected, found, location) { - function cleanupExpected(expected) { - let i = 1; - expected.sort(function (a, b) { - if (a.description < b.description) { - return -1; - } - else if (a.description > b.description) { - return 1; - } - else { - return 0; - } - }); - while (i < expected.length) { - if (expected[i - 1] === expected[i]) { - expected.splice(i, 1); - } - else { - i++; - } - } - } - function buildMessage(expected, found) { - function stringEscape(s) { - function hex(ch) { - return ch.charCodeAt(0).toString(16).toUpperCase(); - } - return s - .replace(/\\/g, '\\\\') - .replace(/"/g, '\\"') - .replace(/\x08/g, '\\b') - .replace(/\t/g, '\\t') - .replace(/\n/g, '\\n') - .replace(/\f/g, '\\f') - .replace(/\r/g, '\\r') - .replace(/[\x00-\x07\x0B\x0E\x0F]/g, function (ch) { - return '\\x0' + hex(ch); - }) - .replace(/[\x10-\x1F\x80-\xFF]/g, function (ch) { - return '\\x' + hex(ch); - }) - .replace(/[\u0100-\u0FFF]/g, function (ch) { - return '\\u0' + hex(ch); - }) - .replace(/[\u1000-\uFFFF]/g, function (ch) { - return '\\u' + hex(ch); - }); - } - let expectedDescs = new Array(expected.length), expectedDesc, foundDesc, i; - for (i = 0; i < expected.length; i++) { - expectedDescs[i] = expected[i].description; - } - expectedDesc = - expected.length > 1 - ? expectedDescs.slice(0, -1).join(', ') + ' or ' + expectedDescs[expected.length - 1] - : expectedDescs[0]; - foundDesc = found ? '"' + stringEscape(found) + '"' : 'end of input'; - return 'Expected ' + expectedDesc + ' but ' + foundDesc + ' found.'; - } - if (expected !== null) { - cleanupExpected(expected); - } - // @ts-ignore - return new peg$SyntaxError(message !== null ? message : buildMessage(expected, found), expected, found, location); - } - function peg$parsestart() { - let s0, s1, s2; - s0 = peg$currPos; - s1 = peg$parsefilter(); - if (s1 !== peg$FAILED) { - s1 = peg$c0(s1); - } - s0 = s1; - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = []; - s2 = peg$parseFILL(); - while (s2 !== peg$FAILED) { - s1.push(s2); - s2 = peg$parseFILL(); - } - if (s1 !== peg$FAILED) { - s2 = peg$parseitem(); - if (s2 !== peg$FAILED) { - s1 = peg$c1(s2); - s0 = s1; - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - return s0; - } - function peg$parsefilter() { - let s0, s1, s2, s3, s4, s5, s6; - s0 = peg$currPos; - s1 = []; - s2 = peg$parseFILL(); - while (s2 !== peg$FAILED) { - s1.push(s2); - s2 = peg$parseFILL(); - } - if (s1 !== peg$FAILED) { - if (input.charCodeAt(peg$currPos) === 40) { - s2 = peg$c2; - peg$currPos++; - } - else { - s2 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c3); - } - } - if (s2 !== peg$FAILED) { - s3 = peg$parsefiltercomp(); - if (s3 !== peg$FAILED) { - if (input.charCodeAt(peg$currPos) === 41) { - s4 = peg$c4; - peg$currPos++; - } - else { - s4 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c5); - } - } - if (s4 !== peg$FAILED) { - s5 = []; - s6 = peg$parseFILL(); - while (s6 !== peg$FAILED) { - s5.push(s6); - s6 = peg$parseFILL(); - } - if (s5 !== peg$FAILED) { - s1 = peg$c0(s3); - s0 = s1; - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - return s0; - } - function peg$parsefiltercomp() { - let s0; - s0 = peg$parseand(); - if (s0 === peg$FAILED) { - s0 = peg$parseor(); - if (s0 === peg$FAILED) { - s0 = peg$parsenot(); - if (s0 === peg$FAILED) { - s0 = peg$parseitem(); - } - } - } - return s0; - } - function peg$parseand() { - let s0, s1, s2, s3, s4, s5; - s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 38) { - s1 = peg$c6; - peg$currPos++; - } - else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c7); - } - } - if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$parseFILL(); - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$parseFILL(); - } - if (s2 !== peg$FAILED) { - s3 = peg$parsefilterlist(); - if (s3 !== peg$FAILED) { - s4 = []; - s5 = peg$parseFILL(); - while (s5 !== peg$FAILED) { - s4.push(s5); - s5 = peg$parseFILL(); - } - if (s4 !== peg$FAILED) { - s1 = peg$c8(s3); - s0 = s1; - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - return s0; - } - function peg$parseor() { - let s0, s1, s2, s3, s4, s5; - s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 124) { - s1 = peg$c9; - peg$currPos++; - } - else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c10); - } - } - if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$parseFILL(); - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$parseFILL(); - } - if (s2 !== peg$FAILED) { - s3 = peg$parsefilterlist(); - if (s3 !== peg$FAILED) { - s4 = []; - s5 = peg$parseFILL(); - while (s5 !== peg$FAILED) { - s4.push(s5); - s5 = peg$parseFILL(); - } - if (s4 !== peg$FAILED) { - s1 = peg$c11(s3); - s0 = s1; - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - return s0; - } - function peg$parsenot() { - let s0, s1, s2, s3, s4, s5; - s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 33) { - s1 = peg$c12; - peg$currPos++; - } - else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c13); - } - } - if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$parseFILL(); - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$parseFILL(); - } - if (s2 !== peg$FAILED) { - s3 = peg$parsefilter(); - if (s3 !== peg$FAILED) { - s4 = []; - s5 = peg$parseFILL(); - while (s5 !== peg$FAILED) { - s4.push(s5); - s5 = peg$parseFILL(); - } - if (s4 !== peg$FAILED) { - s1 = peg$c14(s3); - s0 = s1; - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - return s0; - } - function peg$parsefilterlist() { - let s0, s1; - s0 = []; - s1 = peg$parsefilter(); - if (s1 !== peg$FAILED) { - while (s1 !== peg$FAILED) { - s0.push(s1); - s1 = peg$parsefilter(); - } - } - else { - s0 = peg$FAILED; - } - return s0; - } - function peg$parseitem() { - let s0; - s0 = peg$parsesubstring(); - if (s0 === peg$FAILED) { - s0 = peg$parsesimple(); - if (s0 === peg$FAILED) { - s0 = peg$parsepresent(); - } - } - return s0; - } - function peg$parsesimple() { - let s0, s1, s2, s3; - s0 = peg$currPos; - s1 = peg$parseAttributeDescription(); - if (s1 !== peg$FAILED) { - s2 = peg$parsefiltertype(); - if (s2 !== peg$FAILED) { - s3 = peg$parsevalue(); - if (s3 !== peg$FAILED) { - s1 = peg$c15(s1, s2, s3); - s0 = s1; - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - return s0; - } - function peg$parsefiltertype() { - let s0; - s0 = peg$parseequal(); - if (s0 === peg$FAILED) { - s0 = peg$parseapprox(); - if (s0 === peg$FAILED) { - s0 = peg$parsegreater(); - if (s0 === peg$FAILED) { - s0 = peg$parseless(); - } - } - } - return s0; - } - function peg$parseequal() { - let s0; - if (input.charCodeAt(peg$currPos) === 61) { - s0 = peg$c16; - peg$currPos++; - } - else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c17); - } - } - return s0; - } - function peg$parseapprox() { - let s0; - if (input.substr(peg$currPos, 2) === peg$c18) { - s0 = peg$c18; - peg$currPos += 2; - } - else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c19); - } - } - return s0; - } - function peg$parsegreater() { - let s0; - if (input.substr(peg$currPos, 2) === peg$c20) { - s0 = peg$c20; - peg$currPos += 2; - } - else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c21); - } - } - return s0; - } - function peg$parseless() { - let s0; - if (input.substr(peg$currPos, 2) === peg$c22) { - s0 = peg$c22; - peg$currPos += 2; - } - else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c23); - } - } - return s0; - } - function peg$parsepresent() { - let s0, s1, s2; - s0 = peg$currPos; - s1 = peg$parseAttributeDescription(); - if (s1 !== peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c24) { - s2 = peg$c24; - peg$currPos += 2; - } - else { - s2 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c25); - } - } - if (s2 !== peg$FAILED) { - s1 = peg$c26(s1); - s0 = s1; - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - return s0; - } - function peg$parsesubstring() { - let s0, s1, s2, s3, s4, s5, s6, s7; - s0 = peg$currPos; - s1 = peg$parseAttributeDescription(); - if (s1 !== peg$FAILED) { - s2 = peg$parseequal(); - if (s2 !== peg$FAILED) { - s3 = peg$currPos; - s4 = peg$currPos; - s5 = peg$parsevalue(); - if (s5 === peg$FAILED) { - s5 = null; - } - if (s5 !== peg$FAILED) { - s6 = peg$parseany(); - if (s6 !== peg$FAILED) { - s7 = peg$parsevalue(); - if (s7 === peg$FAILED) { - s7 = null; - } - if (s7 !== peg$FAILED) { - s5 = [s5, s6, s7]; - s4 = s5; - } - else { - peg$currPos = s4; - s4 = peg$FAILED; - } - } - else { - peg$currPos = s4; - s4 = peg$FAILED; - } - } - else { - peg$currPos = s4; - s4 = peg$FAILED; - } - if (s4 !== peg$FAILED) { - s3 = input.substring(s3, peg$currPos); - } - else { - s3 = s4; - } - if (s3 !== peg$FAILED) { - s1 = peg$c27(s1, s3); - s0 = s1; - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - return s0; - } - function peg$parseany() { - let s0, s1, s2, s3, s4, s5; - s0 = peg$currPos; - s1 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 42) { - s2 = peg$c28; - peg$currPos++; - } - else { - s2 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c29); - } - } - if (s2 !== peg$FAILED) { - s1 = input.substring(s1, peg$currPos); - } - else { - s1 = s2; - } - if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$currPos; - s4 = peg$parsevalue(); - if (s4 !== peg$FAILED) { - if (input.charCodeAt(peg$currPos) === 42) { - s5 = peg$c28; - peg$currPos++; - } - else { - s5 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c29); - } - } - if (s5 !== peg$FAILED) { - s4 = [s4, s5]; - s3 = s4; - } - else { - peg$currPos = s3; - s3 = peg$FAILED; - } - } - else { - peg$currPos = s3; - s3 = peg$FAILED; - } - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$currPos; - s4 = peg$parsevalue(); - if (s4 !== peg$FAILED) { - if (input.charCodeAt(peg$currPos) === 42) { - s5 = peg$c28; - peg$currPos++; - } - else { - s5 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c29); - } - } - if (s5 !== peg$FAILED) { - s4 = [s4, s5]; - s3 = s4; - } - else { - peg$currPos = s3; - s3 = peg$FAILED; - } - } - else { - peg$currPos = s3; - s3 = peg$FAILED; - } - } - if (s2 !== peg$FAILED) { - s1 = [s1, s2]; - s0 = s1; - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - return s0; - } - function peg$parsevalue() { - let s0, s1, s2; - s0 = peg$currPos; - s1 = []; - s2 = peg$parseAttributeValue(); - if (s2 !== peg$FAILED) { - while (s2 !== peg$FAILED) { - s1.push(s2); - s2 = peg$parseAttributeValue(); - } - } - else { - s1 = peg$FAILED; - } - if (s1 !== peg$FAILED) { - s0 = input.substring(s0, peg$currPos); - } - else { - s0 = s1; - } - return s0; - } - function peg$parseAttributeDescription() { - let s0, s1, s2, s3, s4; - peg$silentFails++; - s0 = peg$currPos; - s1 = peg$parseAttributeType(); - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 59) { - s3 = peg$c31; - peg$currPos++; - } - else { - s3 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c32); - } - } - if (s3 !== peg$FAILED) { - s4 = peg$parseoptions(); - if (s4 !== peg$FAILED) { - s3 = [s3, s4]; - s2 = s3; - } - else { - peg$currPos = s2; - s2 = peg$FAILED; - } - } - else { - peg$currPos = s2; - s2 = peg$FAILED; - } - if (s2 === peg$FAILED) { - s2 = null; - } - if (s2 !== peg$FAILED) { - s1 = peg$c33(s1, s2); - s0 = s1; - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - peg$silentFails--; - if (s0 === peg$FAILED) { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c30); - } - } - return s0; - } - function peg$parseAttributeType() { - let s0, s1, s2, s3, s4, s5; - peg$silentFails++; - s0 = peg$currPos; - s1 = peg$parseLDAP_OID(); - if (s1 !== peg$FAILED) { - s1 = peg$c35(s1); - } - s0 = s1; - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = peg$currPos; - s2 = peg$currPos; - s3 = peg$parseALPHA(); - if (s3 !== peg$FAILED) { - s4 = []; - s5 = peg$parseAttrTypeChars(); - while (s5 !== peg$FAILED) { - s4.push(s5); - s5 = peg$parseAttrTypeChars(); - } - if (s4 !== peg$FAILED) { - s3 = [s3, s4]; - s2 = s3; - } - else { - peg$currPos = s2; - s2 = peg$FAILED; - } - } - else { - peg$currPos = s2; - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - s1 = input.substring(s1, peg$currPos); - } - else { - s1 = s2; - } - if (s1 !== peg$FAILED) { - s1 = peg$c36(s1); - } - s0 = s1; - } - peg$silentFails--; - if (s0 === peg$FAILED) { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c34); - } - } - return s0; - } - function peg$parseAttrTypeChars() { - let s0; - peg$silentFails++; - s0 = peg$parseALPHA(); - if (s0 === peg$FAILED) { - s0 = peg$parseDIGIT(); - if (s0 === peg$FAILED) { - if (input.charCodeAt(peg$currPos) === 45) { - s0 = peg$c38; - peg$currPos++; - } - else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c39); - } - } - } - } - peg$silentFails--; - if (s0 === peg$FAILED) { - if (peg$silentFails === 0) { - peg$fail(peg$c37); - } - } - return s0; - } - function peg$parseLDAP_OID() { - let s0, s1, s2, s3, s4, s5, s6, s7; - peg$silentFails++; - s0 = peg$currPos; - s1 = peg$currPos; - s2 = []; - s3 = peg$parseDIGIT(); - if (s3 !== peg$FAILED) { - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$parseDIGIT(); - } - } - else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - s3 = []; - s4 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 46) { - s5 = peg$c41; - peg$currPos++; - } - else { - s5 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c42); - } - } - if (s5 !== peg$FAILED) { - s6 = []; - s7 = peg$parseDIGIT(); - if (s7 !== peg$FAILED) { - while (s7 !== peg$FAILED) { - s6.push(s7); - s7 = peg$parseDIGIT(); - } - } - else { - s6 = peg$FAILED; - } - if (s6 !== peg$FAILED) { - s5 = [s5, s6]; - s4 = s5; - } - else { - peg$currPos = s4; - s4 = peg$FAILED; - } - } - else { - peg$currPos = s4; - s4 = peg$FAILED; - } - while (s4 !== peg$FAILED) { - s3.push(s4); - s4 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 46) { - s5 = peg$c41; - peg$currPos++; - } - else { - s5 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c42); - } - } - if (s5 !== peg$FAILED) { - s6 = []; - s7 = peg$parseDIGIT(); - if (s7 !== peg$FAILED) { - while (s7 !== peg$FAILED) { - s6.push(s7); - s7 = peg$parseDIGIT(); - } - } - else { - s6 = peg$FAILED; - } - if (s6 !== peg$FAILED) { - s5 = [s5, s6]; - s4 = s5; - } - else { - peg$currPos = s4; - s4 = peg$FAILED; - } - } - else { - peg$currPos = s4; - s4 = peg$FAILED; - } - } - if (s3 !== peg$FAILED) { - s2 = [s2, s3]; - s1 = s2; - } - else { - peg$currPos = s1; - s1 = peg$FAILED; - } - } - else { - peg$currPos = s1; - s1 = peg$FAILED; - } - if (s1 !== peg$FAILED) { - s0 = input.substring(s0, peg$currPos); - } - else { - s0 = s1; - } - peg$silentFails--; - if (s0 === peg$FAILED) { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c40); - } - } - return s0; - } - function peg$parseoptions() { - let s0, s1, s2, s3, s4; - peg$silentFails++; - s0 = peg$currPos; - s1 = peg$currPos; - s2 = peg$parseoption(); - if (s2 !== peg$FAILED) { - if (input.charCodeAt(peg$currPos) === 59) { - s3 = peg$c31; - peg$currPos++; - } - else { - s3 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c32); - } - } - if (s3 !== peg$FAILED) { - s4 = peg$parseoptions(); - if (s4 !== peg$FAILED) { - s2 = [s2, s3, s4]; - s1 = s2; - } - else { - peg$currPos = s1; - s1 = peg$FAILED; - } - } - else { - peg$currPos = s1; - s1 = peg$FAILED; - } - } - else { - peg$currPos = s1; - s1 = peg$FAILED; - } - if (s1 !== peg$FAILED) { - s0 = input.substring(s0, peg$currPos); - } - else { - s0 = s1; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = peg$parseoption(); - if (s1 !== peg$FAILED) { - s0 = input.substring(s0, peg$currPos); - } - else { - s0 = s1; - } - } - peg$silentFails--; - if (s0 === peg$FAILED) { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c43); - } - } - return s0; - } - function peg$parseoption() { - let s0, s1; - peg$silentFails++; - s0 = []; - s1 = peg$parseAttrTypeChars(); - if (s1 !== peg$FAILED) { - while (s1 !== peg$FAILED) { - s0.push(s1); - s1 = peg$parseAttrTypeChars(); - } - } - else { - s0 = peg$FAILED; - } - peg$silentFails--; - if (s0 === peg$FAILED) { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c44); - } - } - return s0; - } - function peg$parseAttributeValue() { - let s0; - s0 = peg$parseEscapedCharacter(); - if (s0 === peg$FAILED) { - if (peg$c45.test(input.charAt(peg$currPos))) { - s0 = input.charAt(peg$currPos); - peg$currPos++; - } - else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c46); - } - } - } - return s0; - } - function peg$parseEscapedCharacter() { - let s0, s1, s2; - s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 92) { - s1 = peg$c47; - peg$currPos++; - } - else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c48); - } - } - if (s1 !== peg$FAILED) { - s2 = peg$parseASCII_VALUE(); - if (s2 !== peg$FAILED) { - s1 = peg$c49(s2); - s0 = s1; - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - else { - peg$currPos = s0; - s0 = peg$FAILED; - } - return s0; - } - function peg$parseASCII_VALUE() { - let s0, s1, s2, s3, s4; - s0 = peg$currPos; - s1 = peg$currPos; - s2 = peg$currPos; - s3 = peg$parseHEX_CHAR(); - if (s3 !== peg$FAILED) { - s4 = peg$parseHEX_CHAR(); - if (s4 !== peg$FAILED) { - s3 = [s3, s4]; - s2 = s3; - } - else { - peg$currPos = s2; - s2 = peg$FAILED; - } - } - else { - peg$currPos = s2; - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - s1 = input.substring(s1, peg$currPos); - } - else { - s1 = s2; - } - if (s1 !== peg$FAILED) { - s1 = peg$c50(s1); - } - s0 = s1; - return s0; - } - function peg$parseHEX_CHAR() { - let s0; - if (peg$c51.test(input.charAt(peg$currPos))) { - s0 = input.charAt(peg$currPos); - peg$currPos++; - } - else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c52); - } - } - return s0; - } - function peg$parseFILL() { - let s0; - peg$silentFails++; - s0 = peg$parseSPACE(); - if (s0 === peg$FAILED) { - s0 = peg$parseTAB(); - if (s0 === peg$FAILED) { - s0 = peg$parseSEP(); - } - } - peg$silentFails--; - if (s0 === peg$FAILED) { - if (peg$silentFails === 0) { - peg$fail(peg$c53); - } - } - return s0; - } - function peg$parseSPACE() { - let s0; - peg$silentFails++; - if (peg$c55.test(input.charAt(peg$currPos))) { - s0 = input.charAt(peg$currPos); - peg$currPos++; - } - else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c56); - } - } - peg$silentFails--; - if (s0 === peg$FAILED) { - if (peg$silentFails === 0) { - peg$fail(peg$c54); - } - } - return s0; - } - function peg$parseTAB() { - let s0; - peg$silentFails++; - if (peg$c58.test(input.charAt(peg$currPos))) { - s0 = input.charAt(peg$currPos); - peg$currPos++; - } - else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c59); - } - } - peg$silentFails--; - if (s0 === peg$FAILED) { - if (peg$silentFails === 0) { - peg$fail(peg$c57); - } - } - return s0; - } - function peg$parseDIGIT() { - let s0, s1; - peg$silentFails++; - s0 = peg$currPos; - if (peg$c61.test(input.charAt(peg$currPos))) { - s1 = input.charAt(peg$currPos); - peg$currPos++; - } - else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c62); - } - } - if (s1 !== peg$FAILED) { - s0 = input.substring(s0, peg$currPos); - } - else { - s0 = s1; - } - peg$silentFails--; - if (s0 === peg$FAILED) { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c60); - } - } - return s0; - } - function peg$parseALPHA() { - let s0, s1; - peg$silentFails++; - s0 = peg$currPos; - if (peg$c64.test(input.charAt(peg$currPos))) { - s1 = input.charAt(peg$currPos); - peg$currPos++; - } - else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c65); - } - } - if (s1 !== peg$FAILED) { - s0 = input.substring(s0, peg$currPos); - } - else { - s0 = s1; - } - peg$silentFails--; - if (s0 === peg$FAILED) { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c63); - } - } - return s0; - } - function peg$parseSEP() { - let s0; - peg$silentFails++; - if (input.substr(peg$currPos, 2) === peg$c67) { - s0 = peg$c67; - peg$currPos += 2; - } - else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c68); - } - } - if (s0 === peg$FAILED) { - if (input.charCodeAt(peg$currPos) === 10) { - s0 = peg$c69; - peg$currPos++; - } - else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c70); - } - } - } - peg$silentFails--; - if (s0 === peg$FAILED) { - if (peg$silentFails === 0) { - peg$fail(peg$c66); - } - } - return s0; - } - peg$result = peg$startRuleFunction(); - if (peg$result !== peg$FAILED && peg$currPos === input.length) { - return peg$result; - } - else { - if (peg$result !== peg$FAILED && peg$currPos < input.length) { - peg$fail({ type: 'end', description: 'end of input' }); - } - throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, peg$maxFailPos < input.length - ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) - : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)); - } -} - -/** - * The original PegPARSE built Filter cannot handle dots (.) Needs to be fixed later... - */ -const replaceMap = new Map([ - [SERVICE_ID, 'serviceId'], - [SERVICE_RANKING, 'serviceRanking'], - [SERVICE_BUNDLEID, 'serviceBundleid'], - [SERVICE_SCOPE, 'serviceScope'], - [SERVICE_DESCRIPTION, 'serviceDescription'], -]); -const inverseMap = new Map([ - ['serviceId', SERVICE_ID], - ['serviceRanking', SERVICE_RANKING], - ['serviceBundleid', SERVICE_BUNDLEID], - ['serviceScope', SERVICE_SCOPE], - ['serviceDescription', SERVICE_DESCRIPTION], -]); - -var FilterComp; -(function (FilterComp) { - FilterComp["NOT"] = "!"; - FilterComp["AND"] = "&"; - FilterComp["OR"] = "|"; - FilterComp["EQ"] = "="; - FilterComp["LTE"] = "<="; - FilterComp["GTE"] = ">="; - FilterComp["APPROX"] = "~="; - FilterComp["MATCH_ALL"] = "*"; - FilterComp["PRESENT"] = "=*"; -})(FilterComp || (FilterComp = {})); -class Filter { - attrib; - comp; - value; - filters; - type = 'filter'; - constructor(attrib, comp, value, filters = []) { - this.attrib = attrib; - this.comp = comp; - this.value = value; - this.filters = filters; - } - static attribute(name) { - return new Attribute(name); - } - static parse(input) { - if (input === '(*)') { - return new Filter(undefined, FilterComp.MATCH_ALL, undefined); - } - let newInput = input; - for (const [original, replaceVal] of replaceMap.entries()) { - newInput = newInput.replace(new RegExp(original, 'g'), replaceVal); - } - const originalFilter = peg$parse(newInput); - return Filter.recursiveReplace(originalFilter, inverseMap); - } - static recursiveReplace(filter, inverseMap) { - for (const [original, replaceVal] of inverseMap.entries()) { - if (filter.attrib) { - filter.attrib = filter.attrib.replace(new RegExp(original, 'g'), replaceVal); - } - } - for (const f of filter.filters) { - Filter.recursiveReplace(f, inverseMap); - } - return filter; - } - static convert(attrs) { - const filters = []; - for (let [_, value] of Object.entries(attrs)) { - filters.push(Filter.parse(value.toString())); - } - let filter; - if (filters.length === 1) { - filter = filters[0]; - } - else if (Object.keys(attrs).length > 1) { - filter = new Filter(null, FilterComp.AND, filters); - } - else if (filters.length === 0) { - filter = new Filter(null, FilterComp.MATCH_ALL, null); - } - return filter; - } - match(data) { - const value = this.value; - const attrv = data[this.attrib]; - switch (this.comp) { - case '!': - return Filter.NOT(this.filters)._match(data); - case '&': - return Filter.AND(this.filters)._match(data); - case '|': - return Filter.OR(this.filters)._match(data); - case '=': - if (value === '*' && attrv) { - return true; - } - return Filter.matchString(attrv, value); - case '<=': - return Filter.matchLTE(attrv, value); - case '>=': - return Filter.matchGTE(attrv, value); - default: - throw new Error('Unsupported comparison type'); - } - } - simplify() { - if (this.filters) { - if (this.filters.length == 1) { - return this.filters[0].simplify(); - } - else { - this.filters = this.filters.map((filter) => filter.simplify()); - } - } - return this; - } - _indent(indent, level, id_char) { - const _i = parseInt(indent); - if (indent === true) { - indent = Filter.indent; - } - else if (!isNaN(_i)) { - indent = _i; - } - else { - return ''; - } - if (id_char !== undefined && typeof id_char != 'string') { - throw new Error('Indent string must be string'); - } - level = level || 0; - id_char = id_char || Filter.indent_char; - if (typeof id_char === 'number') { - id_char = id_char.toString(); - } - return id_char.repeat(level * indent); - } - toString(indent, level, id_char) { - return [this._indent(indent, level, id_char), '(', this.attrib, this.comp, this.value, ')'].join(''); - } - static escapeChars = ['*', '(', ')', '\\', String.fromCharCode(0)]; - static indent = 4; - static indent_char = ' '; - static collapse_not = true; - static escape(value) { - if (!value) - return ''; - return value - .split('') - .map((c) => { - return Filter.escapeChars.indexOf(c) >= 0 ? '\\' + c.charCodeAt(0).toString(16) : c; - }) - .join(''); - } - static unescape(data) { - const chars = data.split(''); - const out = []; - let tmp; - while (chars.length) { - tmp = chars.shift(); - if (tmp == '\\') { - tmp = chars.shift() + chars.shift(); - tmp = parseInt(tmp, 16); - tmp = String.fromCharCode(tmp); - } - out.push(tmp); - } - return out.join(''); - } - static matchString(data, filter) { - if (!data) - return false; - const match = Array.isArray(data) ? data : [data]; - if (filter.indexOf('*') < 0) { - return match.some((cv) => { - if (cv) { - return cv.toLowerCase() === Filter.unescape(filter).toLowerCase(); - } - }); - } - return Filter.matchSubstring(data, filter); - } - static matchSubstring(data, filter) { - const match = Array.isArray(data) ? data : [data]; - let pattern = filter.replace(/\*/g, '.*'); - pattern = pattern.replace(/\\([0-9a-fA-F]{2,2})/g, (m, $1) => { - let s = String.fromCharCode(parseInt($1, 16)); - if (['(', ')', '\\', '*'].indexOf(s) >= 0) { - s = '\\x' + $1.toUpperCase(); - } - return s; - }); - const regex = new RegExp('^' + pattern + '$', 'i'); - return match.some((cv) => cv.match(regex)); - } - static matchLTE(data, filter) { - const match = Array.isArray(data) ? data : [data]; - return match.some((cv) => cv <= filter); - } - static matchGTE(data, filter) { - const match = Array.isArray(data) ? data : [data]; - return match.some((cv) => cv >= filter); - } - static AND(filters) { - return new GroupAnd(filters); - } - static OR(filters) { - return new GroupOr(filters); - } - static NOT(filter) { - if (!Array.isArray(filter)) { - filter = [filter]; - } - if (filter.length != 1) { - throw new Error('NOT must wrap single filter'); - } - return new GroupNot(filter); - } -} -class Group extends Filter { - type = 'group'; - constructor(comp, filters = []) { - super(null, comp, null, filters); - } - match(data) { - return super.match(data); - } - toString(indent, level, id_char) { - level = level || 0; - let id_str = this._indent(indent, level, id_char); - let id_str2 = id_str; - let nl = indent ? '\n' : ''; - if (this.comp === '!') { - nl = ''; - id_str2 = ''; - indent = 0; - } - return [ - id_str, - '(', - this.comp, - nl, - this.filters.map((item) => item.toString(indent, level + 1, id_char)).join(nl), - nl, - id_str2, - ')', - ].join(''); - } -} -class GroupOr extends Group { - constructor(filters = []) { - super(FilterComp.OR, filters); - } - _match(data) { - return this.filters.some((cv) => cv.match(data)); - } -} -class GroupAnd extends Group { - constructor(filters = []) { - super(FilterComp.AND, filters); - } - _match(data) { - return this.filters.every((cv) => cv.match(data)); - } -} -class GroupNot extends Group { - constructor(filters = []) { - super(FilterComp.NOT, filters); - } - _match(data) { - return this.filters.every((cv) => { - if (cv && typeof cv.match === 'function') { - return !!!cv.match(data); - } - }); - } - simplify() { - return this; - } -} -class Attribute { - name; - escapeChars = ['*', '(', ')', '\\', String.fromCharCode(0)]; - constructor(name) { - this.name = name; - } - present() { - return new Filter(this.name, FilterComp.EQ, '*'); - } - raw(value) { - return new Filter(this.name, FilterComp.EQ, value); - } - equalTo(value) { - return new Filter(this.name, FilterComp.EQ, this.escape(value)); - } - endsWith(value) { - return new Filter(this.name, FilterComp.EQ, '*' + this.escape(value)); - } - startsWith(value) { - return new Filter(this.name, FilterComp.EQ, this.escape(value) + '*'); - } - contains(value) { - return new Filter(this.name, FilterComp.EQ, '*' + this.escape(value) + '*'); - } - approx(value) { - return new Filter(this.name, FilterComp.APPROX, this.escape(value)); - } - lte(value) { - return new Filter(this.name, FilterComp.LTE, this.escape(value)); - } - gte(value) { - return new Filter(this.name, FilterComp.GTE, this.escape(value)); - } - escape(value) { - if (typeof value === 'number') { - value = value.toString(); - } - const rv = []; - for (let i = 0, l = value.length; i < l; i++) { - rv.push(this.escapeChars.indexOf(value[i]) >= 0 ? '\\' + value.charCodeAt(i).toString(16) : value[i]); - } - return rv.join(''); - } -} - -const MAX_LENGTH = 256; -const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; -// 正则标识 -// 数字,禁止纯数字补 0 -const NUMERIC_IDENTIFIER = '0|[1-9]\\d*'; -const BUILD_IDENTIFIER = `[0-9A-Za-z-]+`; -// 数字和字母组合,达到禁止纯数字补0的目的 -const NON_NUMERIC_IDENTIFIER = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'; -const MAIN_VERSION_IDENTIFIER = `(${NUMERIC_IDENTIFIER})\\.(${NUMERIC_IDENTIFIER})\\.(${NUMERIC_IDENTIFIER})`; -// 先行版本号,由 ASCII 码的英数字和连接号 [0-9A-Za-z-] 组成, -// 且“禁止 MUST NOT ”留白。数字型的标识符号“禁止 MUST NOT ”在前方补零 -const PRERELEASE_IDENTIFIER = `(?:${NUMERIC_IDENTIFIER}|${NON_NUMERIC_IDENTIFIER})`; -const PRERELEASE = `(?:\\-(${PRERELEASE_IDENTIFIER}(?:\\.${PRERELEASE_IDENTIFIER})*))`; -// 编译版本号 -const BUILD = `(?:\\+(${BUILD_IDENTIFIER}(?:\\.${BUILD_IDENTIFIER})*))`; -const FULL_VERSION_IDENTIFIER = `^v?${MAIN_VERSION_IDENTIFIER}${PRERELEASE}?${BUILD}?$`; -const REGEX_FULL_VERSION = new RegExp(FULL_VERSION_IDENTIFIER); -const REGEX_NUMERIC = /^[0-9]+$/; -class SemverVersion { - rawVersion; - major; - minor; - patch; - prereleaseArray; - prerelease; - build; - mainVersion; - version; - constructor(version) { - if (version instanceof SemverVersion) { - return version; - } - else if (typeof version !== 'string') { - throw new TypeError('Invalid Version: ' + version); - } - if (version.length > MAX_LENGTH) { - throw new TypeError(`version is longer than ${MAX_LENGTH} characters`); - } - if (!(this instanceof SemverVersion)) { - return new SemverVersion(version); - } - const matches = version.trim().match(REGEX_FULL_VERSION); - this.rawVersion = version; - this.major = +matches[1]; - this.minor = +matches[2]; - this.patch = +matches[3]; - this._isThrowVersionNumericError(this.major, 'major'); - this._isThrowVersionNumericError(this.minor, 'minor'); - this._isThrowVersionNumericError(this.patch, 'patch'); - if (matches[4]) { - this.prereleaseArray = matches[4].split('.').map(function (id) { - if (REGEX_NUMERIC.test(id)) { - var num = +id; - if (num >= 0 && num < MAX_SAFE_INTEGER) { - return num; - } - } - return id; - }); - } - else { - this.prereleaseArray = []; - } - //this.build = matches[5] ? matches[5].split('.') : []; - this.prerelease = matches[4]; - this.build = matches[5]; - this.mainVersion = [this.major, this.minor, this.patch].join('.'); - this.version = - this.mainVersion + (this.prerelease ? `-${this.prerelease}` : '') + (this.build ? `+${this.build}` : ''); - } - _isThrowVersionNumericError(versionNumber, versionName) { - if (versionNumber > MAX_SAFE_INTEGER || this.major < 0) { - throw new TypeError(`Invalid ${versionName} version`); - } - } - _isNumeric(numeric) { - return REGEX_NUMERIC.test(numeric); - } - _padNumber(num, fill) { - const length = ('' + num).length; - return Array(fill > length ? fill - length + 1 || 0 : 0).join(0) + num; - } - static validate(version) { - return REGEX_FULL_VERSION.test(version); - } - mainVersionToNumeric(digit) { - const numericStr = [ - this._padNumber(this.major, digit), - this._padNumber(this.minor, digit), - this._padNumber(this.patch, digit), - ].join(''); - return parseInt(numericStr); - } - compare(other, needCompareBuildVersion = false) { - let otherSemver = other; - if (!(other instanceof SemverVersion)) { - otherSemver = new SemverVersion(other); - } - const result = this.compareMainVersion(otherSemver) || this.comparePreReleaseVersion(otherSemver); - if (!result && needCompareBuildVersion) { - return this.compareBuildVersion(otherSemver); - } - else { - return result; - } - } - // 比较数字 - compareNumeric(a, b) { - return a > b ? 1 : a < b ? -1 : 0; - } - compareIdentifiers(a, b) { - const aIsNumeric = this._isNumeric(a); - const bIsNumeric = this._isNumeric(b); - if (aIsNumeric && bIsNumeric) { - a = +a; - b = +b; - } - // 字符比数字大 - if (aIsNumeric && !bIsNumeric) { - return -1; - } - else if (bIsNumeric && !aIsNumeric) { - return 1; - } - else { - return this.compareNumeric(a, b); - } - } - compareMainVersion(otherSemver) { - return (this.compareNumeric(this.major, otherSemver.major) || - this.compareNumeric(this.minor, otherSemver.minor) || - this.compareNumeric(this.patch, otherSemver.patch)); - } - comparePreReleaseVersion(otherSemver) { - if (this.prereleaseArray.length && !otherSemver.prereleaseArray.length) { - return -1; - } - else if (!this.prereleaseArray.length && otherSemver.prereleaseArray.length) { - return 1; - } - else if (!this.prereleaseArray.length && !otherSemver.prereleaseArray.length) { - return 0; - } - let i = 0; - do { - const a = this.prereleaseArray[i]; - const b = otherSemver.prereleaseArray[i]; - if (a === undefined && b === undefined) { - return 0; - } - else if (b === undefined) { - return 1; - } - else if (a === undefined) { - return -1; - } - else if (a === b) { - continue; - } - else { - return this.compareIdentifiers(a, b); - } - } while (++i); - } - compareBuildVersion(otherSemver) { - if (this.build && !otherSemver.build) { - return 1; - } - else if (!this.build && otherSemver.build) { - return -1; - } - else { - return this.compareIdentifiers(this.build, otherSemver.build); - } - } -} - -const compare = (a, b, needCompareBuildVersion) => { - return new SemverVersion(a).compare(new SemverVersion(b), needCompareBuildVersion); -}; -const gte = (a, b, needCompareBuildVersion) => { - const result = compare(a, b, needCompareBuildVersion); - return result === 1 || result === 0; -}; -const lte = (a, b, needCompareBuildVersion) => { - const result = compare(a, b, needCompareBuildVersion); - return result === -1 || result === 0; -}; -const equal = (a, b, needCompareBuildVersion) => { - const result = compare(a, b, needCompareBuildVersion); - return result === 0; -}; - -class SemVerImpl { - version; - constructor(version) { - this.version = version; - } - toString() { - return this.version.toString(); - } - compare(other) { - return compare(this.version, other.toString()); - } - equal(other) { - return equal(this.version, other); - } - lte(other) { - return lte(this.version, other); - } - gte(other) { - return gte(this.version, other); - } - neq(other) { - return !this.equal(other); - } -} - -class CapabilitySet { - indices = {}; - capSet = new Set(); - constructor(indexProps = []) { - for (const indexProp in indexProps) { - this.indices[indexProp] = {}; - } - } - match(sf, obeyMandatory) { - const matches = this.matchCapSet(this.capSet, sf); - return obeyMandatory ? CapabilitySet.matchMandatoryCapSet(matches, sf) : matches; - } - addCapability(cap) { - this.capSet.add(cap); - for (const [key, value] of Object.entries(this.indices)) { - let value = cap.getAttributes()[key]; - if (isAllPresent(value)) { - const index = value; - if (Array.isArray(value)) { - const c = value; - for (const o of c) { - CapabilitySet.indexCapability(index, cap, o); - } - } - else { - CapabilitySet.indexCapability(index, cap, value); - } - } - } - } - removeCapability(cap) { - const hadCap = this.capSet.has(cap); - this.capSet.delete(cap); - if (hadCap) { - for (const [key, eValue] of Object.entries(this.indices)) { - let value = cap.getAttributes()[key]; - if (isAllPresent(value)) { - const index = eValue; - if (Array.isArray(value)) { - const c = value; - for (const o of c) { - CapabilitySet.deindexCapability(index, cap, o); - } - } - else { - CapabilitySet.deindexCapability(index, cap, value); - } - } - } - } - } - static matches(cap, sf) { - return CapabilitySet.matchesInternal(cap, sf) && CapabilitySet.matchMandatory(cap, sf); - } - static matchMandatory(cap, sf) { - if (isAnyMissing(sf)) { - return false; - } - const attrs = cap.getAttributes(); - for (const key of Object.keys(attrs)) { - if (cap.isAttributeMandatory(key) && !CapabilitySet.matchMandatoryAttribute(key, sf)) { - return false; - } - } - return true; - } - static matchMandatoryAttribute(attrName, sf) { - if (!sf) { - return false; - } - if (sf.attrib !== null && sf.attrib !== undefined && sf.attrib === attrName) { - return true; - } - else if (sf.comp === FilterComp.AND) { - let list = sf.filters; - for (let i = 0; i < list.length; i++) { - let sf2 = list[i]; - if (sf2.attrib !== null && sf.attrib !== undefined && sf2.attrib === attrName) { - return true; - } - } - } - return false; - } - static compare(lhs, rhsUnknown, cmp) { - if (isAnyMissing(lhs)) { - return false; - } - if (cmp === FilterComp.PRESENT) { - return true; - } - const rhs = typeof rhsUnknown === 'string' ? rhsUnknown.trim() : rhsUnknown; - if (typeof lhs === 'boolean') { - switch (cmp) { - case FilterComp.EQ: - case FilterComp.GTE: - case FilterComp.LTE: - return lhs === (rhs === 'true'); - default: - throw new Error('Unsupported comparison operator: ' + cmp); - } - } - if (typeof lhs === 'number') { - switch (cmp) { - case FilterComp.EQ: - return lhs === Number(rhs); - case FilterComp.GTE: - return lhs >= Number(rhs); - case FilterComp.LTE: - return lhs <= Number(rhs); - default: - throw new Error('Unsupported comparison operator: ' + cmp); - } - } - if (lhs instanceof SemVerImpl) { - switch (cmp) { - case FilterComp.EQ: - return equal(lhs.toString(), rhs.toString()); - case FilterComp.NOT: - return !equal(lhs.toString(), rhs.toString()); - case FilterComp.GTE: - return gte(lhs.toString(), rhs.toString()); - case FilterComp.LTE: - return lte(lhs.toString(), rhs.toString()); - default: - throw new Error('Unsupported comparison operator: ' + cmp); - } - } - if (typeof lhs === 'string') { - switch (cmp) { - case FilterComp.EQ: - return lhs === rhs; - case FilterComp.NOT: - return lhs !== rhs; - default: - throw new Error('Unsupported comparison operator: ' + cmp); - } - } - if (Array.isArray(lhs)) { - for (let a of lhs) { - if (CapabilitySet.compare(a, rhsUnknown, cmp)) { - return true; - } - } - return false; - } - return false; - } - static indexCapability(index, cap, capValue) { - let caps = new Set(); - const prevVal = index[capValue]; - if (!prevVal) { - index[capValue] = caps; - } - if (isAllPresent(prevVal)) { - caps = prevVal; - } - caps.add(cap); - } - static deindexCapability(index, cap, value) { - let caps = index[value]; - if (isAllPresent(caps)) { - caps.delete(cap); - if (caps.size === 0) { - delete index[value]; - } - } - } - static matchMandatoryCapSet(caps, sf) { - for (const cap of caps) { - if (!CapabilitySet.matchMandatory(cap, sf)) { - caps.delete(cap); - } - } - return caps; - } - matchCapSet(caps, sf) { - let matches = new Set(); - if (sf.comp === FilterComp.MATCH_ALL) { - caps.forEach((c) => matches.add(c)); - } - else if (sf.comp === FilterComp.AND) { - const sfs = sf.filters; - for (let i = 0; caps.size > 0 && i < sfs.length; i++) { - matches = this.matchCapSet(caps, sfs[i]); - caps = matches; - } - } - else if (sf.comp === FilterComp.OR) { - const sfs = sf.filters; - for (let i = 0; i < sfs.length; i++) { - this.matchCapSet(caps, sfs[i]).forEach((c) => matches.add(c)); - } - } - else if (sf.comp === FilterComp.NOT) { - caps.forEach((c) => matches.add(c)); - const sfs = sf.filters; - for (let i = 0; i < sfs.length; i++) { - const ms = this.matchCapSet(caps, sfs[i]); - ms.forEach((c) => matches.delete(c)); - } - } - else { - const index = this.indices[sf.attrib]; - if (sf.comp === FilterComp.EQ && isAllPresent(index)) { - const existingCaps = index[sf.attrib]; - if (isAllPresent(existingCaps)) { - existingCaps.forEach((c) => matches.add(c)); - if (caps !== this.capSet) { - caps.forEach((c) => { - if (!matches.has(c)) { - matches.delete(c); - } - }); - } - } - } - else { - for (const cap of caps) { - const lhs = cap.getAttributes()[sf.attrib]; - if (isAllPresent(lhs)) { - if (CapabilitySet.compare(lhs, sf.value, sf.comp)) { - matches.add(cap); - } - } - } - } - } - return matches; - } - static matchesInternal(cap, sf) { - let matched = true; - if (isAnyMissing(sf)) { - matched = false; - } - else if (sf.comp === FilterComp.MATCH_ALL) { - matched = true; - } - else if (sf.comp === FilterComp.AND) { - const sfs = sf.filters; - for (let i = 0; matched && i < sfs.length; i++) { - matched = CapabilitySet.matchesInternal(cap, sfs[i]); - } - } - else if (sf.comp === FilterComp.OR) { - matched = false; - const sfs = sf.filters; - for (let i = 0; !matched && i < sfs.length; i++) { - matched = CapabilitySet.matchesInternal(cap, sfs[i]); - } - } - else if (sf.comp === FilterComp.NOT) { - const sfs = sf.filters; - for (let i = 0; i < sfs.length; i++) { - matched = !CapabilitySet.matchesInternal(cap, sfs[i]); - } - } - else { - matched = false; - const lhs = cap.getAttributes()[sf.attrib]; - if (lhs !== null && lhs !== undefined) { - matched = CapabilitySet.compare(lhs, sf.value, sf.comp); - } - } - return matched; - } -} - -class BundleRequirementImpl { - revision; - namespace; - filter; - optional; - dirs = {}; - attrs = {}; - constructor(revision, namespace, dirs = {}, attrs = {}, filter) { - this.revision = revision; - this.namespace = namespace; - this.dirs = dirs; - this.attrs = attrs; - this.filter = filter || Filter.convert(this.attrs); - this.optional = - this.dirs.hasOwnProperty(RESOLUTION_DIRECTIVE) && this.dirs[RESOLUTION_DIRECTIVE] === RESOLUTION_OPTIONAL; - } - getAttributes() { - return this.attrs; - } - getDirectives() { - return this.dirs; - } - getNamespace() { - return this.namespace; - } - getResource() { - return this.revision; - } - getRevision() { - return this.revision; - } - matches(capability) { - return CapabilitySet.matches(capability, this.getFilter()); - } - isOptional() { - return this.optional; - } - getFilter() { - return this.filter; - } - toString() { - return '[' + this.revision + '] ' + this.namespace + '; ' + this.getFilter()?.toString(); - } -} - -class ManifestParserImpl { - configMap; - headerMap; - requirements = []; - capabilities = []; - bundleSymbolicName; - bundleVersion; - activationIncludeDir; - activationExcludeDir; - activationPolicy = 'EAGER_ACTIVATION'; - static EMPTY_VERSION = new SemVerImpl('0.0.0'); - constructor(configMap, owner, headerMap) { - this.configMap = configMap; - this.headerMap = headerMap; - const capList = []; - // Parse bundle version. - this.bundleVersion = ManifestParserImpl.EMPTY_VERSION; - if (headerMap[BUNDLE_VERSION] !== null && headerMap[BUNDLE_VERSION] !== undefined) { - try { - this.bundleVersion = new SemVerImpl(headerMap[BUNDLE_VERSION]); - } - catch (ex) { - if (this.getManifestVersion() === '2') { - throw ex; - } - this.bundleVersion = ManifestParserImpl.EMPTY_VERSION; - } - } - // Parse bundle symbolic name. - const bundleCap = ManifestParserImpl.parseBundleSymbolicName(owner, this.headerMap); - if (bundleCap) { - this.bundleSymbolicName = bundleCap.getAttributes()[BUNDLE_NAMESPACE]; - if (!headerMap[FRAGMENT_HOST]) { - capList.push(bundleCap); - } - capList.push(ManifestParserImpl.addIdentityCapability(owner, headerMap, bundleCap)); - } - // Verify that bundle symbolic name is specified. - if (this.getManifestVersion() === '2' && !this.bundleSymbolicName) { - throw new Error('R4 bundle manifests must include bundle symbolic name.'); - } - // Parse Require-Bundle - let rbClauses = ManifestParserImpl.parseStandardHeader(headerMap[REQUIRE_BUNDLE]); - rbClauses = ManifestParserImpl.normalizeRequireClauses(rbClauses, this.getManifestVersion()); - const rbReqs = ManifestParserImpl.convertRequires(rbClauses, owner); - // Parse Require-Capability. - const requireCaps = []; - if (Array.isArray(headerMap[REQUIRE_CAPABILITY])) { - for (const part of headerMap[REQUIRE_CAPABILITY]) { - requireCaps.push(...ManifestParserImpl.getRequiredClauses(part.trim(), owner)); - } - } - else if (typeof headerMap[REQUIRE_CAPABILITY] === 'string') { - requireCaps.push(...ManifestParserImpl.getRequiredClauses(headerMap[REQUIRE_CAPABILITY].trim(), owner)); - } - // Parse Provide-Capability. - const provideCaps = []; - if (Array.isArray(headerMap[PROVIDE_CAPABILITY])) { - for (const part of headerMap[PROVIDE_CAPABILITY]) { - provideCaps.push(...ManifestParserImpl.getProviderClauses(part.trim(), owner)); - } - } - else if (typeof headerMap[PROVIDE_CAPABILITY] === 'string') { - provideCaps.push(...ManifestParserImpl.getProviderClauses(headerMap[PROVIDE_CAPABILITY].trim(), owner)); - } - // Combine all requirements. - this.requirements = []; - this.requirements.push(...rbReqs); - this.requirements.push(...requireCaps); - // Combine all capabilities. - this.capabilities = []; - this.capabilities.push(...capList); - this.capabilities.push(...provideCaps); - // Parse activation policy. - this.parseActivationPolicy(headerMap); - } - static getProviderClauses(part, owner) { - let provideClauses = ManifestParserImpl.parseStandardHeader(part); - provideClauses = ManifestParserImpl.normalizeCapabilityClauses(provideClauses); - return ManifestParserImpl.convertProvideCapabilities(provideClauses, owner); - } - static getRequiredClauses(part, owner) { - let provideClauses = ManifestParserImpl.parseStandardHeader(part); - provideClauses = ManifestParserImpl.normalizeCapabilityClauses(provideClauses); - return ManifestParserImpl.convertRequireCapabilities(provideClauses, owner); - } - getActivationIncludeDirective() { - return this.activationIncludeDir; - } - getActivationExcludeDirective() { - return this.activationExcludeDir; - } - getActivationPolicy() { - return this.activationPolicy; - } - getSymbolicName() { - return this.bundleSymbolicName; - } - getBundleVersion() { - return this.bundleVersion; - } - getName(path) { - const idx = path.lastIndexOf('/'); - return idx > -1 ? path.substring(idx) : path; - } - getCapabilities() { - return this.capabilities; - } - getRequirements() { - return this.requirements; - } - static parseDelimitedString(value, delim, trim = true) { - if (isAnyMissing(value)) { - value = ''; - } - const list = []; - const CHAR = 1; - const DELIMITER = 2; - const STARTQUOTE = 4; - const ENDQUOTE = 8; - let sb = ''; - let expecting = CHAR | DELIMITER | STARTQUOTE; - let isEscaped = false; - for (let i = 0; i < value.length; i++) { - const c = value.charAt(i); - const isDelimiter = delim.indexOf(c) >= 0; - if (!isEscaped && c == '\\') { - isEscaped = true; - continue; - } - if (isEscaped) { - sb += c; - } - else if (isDelimiter && (expecting & DELIMITER) > 0) { - if (trim) { - list.push(sb.toString().trim()); - } - else { - list.push(sb.toString()); - } - sb = ''; - expecting = CHAR | DELIMITER | STARTQUOTE; - } - else if (c == '"' && (expecting & STARTQUOTE) > 0) { - sb += c; - expecting = CHAR | ENDQUOTE; - } - else if (c == '"' && (expecting & ENDQUOTE) > 0) { - sb += c; - expecting = CHAR | STARTQUOTE | DELIMITER; - } - else if ((expecting & CHAR) > 0) { - sb += c; - } - else { - throw new Error('Invalid delimited string: ' + value); - } - isEscaped = false; - } - if (sb.length > 0) { - if (trim) { - list.push(sb.toString().trim()); - } - else { - list.push(sb.toString()); - } - } - return list; - } - getManifestVersion() { - const manifestVersion = ManifestParserImpl.getManifestVersion(this.headerMap); - return isAnyMissing(manifestVersion) ? '1' : manifestVersion; - } - static getManifestVersion(headerMap) { - const manifestVersion = headerMap[BUNDLE_MANIFESTVERSION]; - return isAnyMissing(manifestVersion) ? null : manifestVersion.trim(); - } - static parseBundleSymbolicName(owner, headerMap) { - const clauses = this.normalizeCapabilityClauses(this.parseStandardHeader(headerMap[BUNDLE_SYMBOLICNAME])); - if (clauses.length > 0) { - if (clauses.length > 1) { - throw new Error('Cannot have multiple symbolic names: ' + headerMap[BUNDLE_SYMBOLICNAME]); - } - else if (clauses[0].paths.length > 1) { - throw new Error('Cannot have multiple symbolic names: ' + headerMap[BUNDLE_SYMBOLICNAME]); - } - else if (clauses[0].attrs.hasOwnProperty(BUNDLE_VERSION)) { - throw new Error('Cannot have a bundle version: ' + headerMap[BUNDLE_VERSION]); - } - // Get bundle version. - let bundleVersion = this.EMPTY_VERSION; - if (headerMap[BUNDLE_VERSION] !== null && headerMap[BUNDLE_VERSION] !== undefined) { - try { - bundleVersion = new SemVerImpl(headerMap[BUNDLE_VERSION]); - } - catch (ex) { - let mv = this.getManifestVersion(headerMap); - if (mv !== null && mv !== undefined) { - throw ex; - } - bundleVersion = this.EMPTY_VERSION; - } - } - // Create a require capability and return it. - const symName = clauses[0].paths[0]; - clauses[0].attrs[BUNDLE_NAMESPACE] = symName; - clauses[0].attrs[BUNDLE_VERSION_ATTRIBUTE] = bundleVersion; - return new BundleCapabilityImpl(owner, BUNDLE_NAMESPACE, clauses[0].dirs, clauses[0].attrs); - } - return undefined; - } - static parseStandardHeader(header) { - const clauses = []; - if (isAnyMissing(header)) { - return clauses; - } - if (!header.match(/[,;:=]/)) { - const clause = new ParsedHeaderClause([header], {}, {}, {}); - clauses.push(clause); - return clauses; - } - const semiColons = header.split(';'); - let clause; - let dirs = {}; - let attrs = {}; - let types = {}; - semiColons.forEach((value, index) => { - const trimValue = value.trim(); - if (index === 0 && !trimValue.match(/[:=]/)) { - clause = new ParsedHeaderClause([trimValue], dirs, attrs, types); - } - const isDirective = trimValue.includes(':='); - const isAttribute = trimValue.includes('='); - if (isDirective) { - const [dirKey, dirValue] = trimValue.split(':='); - dirs[dirKey] = dirValue.trim().replace(/"|\\"/g, '').toString(); - } - else if (isAttribute) { - const [attrKey, attrValue] = trimValue.split('='); - const valueEscaped = attrValue.trim().replace(/"|\\"/g, '').toString(); - const isCasted = attrKey.includes(':'); - if (!isCasted) { - attrs[attrKey] = valueEscaped; - } - else { - const [attrKeyTyped, attrType] = attrKey.split(':'); - types[attrKeyTyped] = attrType; - if (attrType === 'number') { - attrs[attrKeyTyped] = Number(valueEscaped); - } - else if (attrType === 'boolean') { - attrs[attrKeyTyped] = valueEscaped === 'true'; - } - else if (attrType === 'SemVer') { - attrs[attrKeyTyped] = new SemVerImpl(valueEscaped); - } - else if (attrType.startsWith('Array')) { - attrs[attrKeyTyped] = valueEscaped; - } - else { - attrs[attrKeyTyped] = valueEscaped; - } - } - } - }); - clauses.push(clause); - return clauses; - } - static normalizeCapabilityClauses(clauses) { - for (const clause of clauses) { - for (const [key, type] of Object.entries(clause.types)) { - if (type !== 'string') { - if (type === 'number') { - clause.attrs[key] = Number(clause.attrs[key].toString().trim()); - } - else if (type === 'SemVer') { - clause.attrs[key] = new SemVerImpl(clause.attrs[key].toString().trim()); - } - else if (type.startsWith('Array')) { - let startIdx = type.indexOf('<'); - let endIdx = type.indexOf('>'); - if ((startIdx > 0 && endIdx <= startIdx) || (startIdx < 0 && endIdx > 0)) { - throw new Error("Invalid Provide-Capability attribute list type for '" + key + "' : " + type); - } - let listType = 'string'; - if (endIdx > startIdx) { - listType = type.substring(startIdx + 1, endIdx).trim(); - } - const tokens = ManifestParserImpl.parseDelimitedString(clause.attrs[key].toString().trim(), ',', false); - const values = []; - for (let token of tokens) { - if (listType === 'string') { - values.push(token); - } - else if (listType === 'number') { - values.push(Number(token.trim())); - } - else if (listType === 'SemVer') { - values.push(new SemVerImpl(token.trim())); - } - else { - throw new Error("Unknown Provide-Capability attribute list type for '" + key + "' : " + type); - } - } - clause.attrs[key] = values; - } - else { - throw new Error("Unknown Provide-Capability attribute type for '" + key + "' : " + type); - } - } - } - } - return clauses; - } - static addIdentityCapability(owner, headerMap, bundleCap) { - const attrs = { ...bundleCap.getAttributes() }; - attrs[IDENTITY_NAMESPACE] = bundleCap.getAttributes()[BUNDLE_NAMESPACE]; - attrs[CAPABILITY_TYPE_ATTRIBUTE] = !headerMap[FRAGMENT_HOST] ? TYPE_BUNDLE : TYPE_FRAGMENT; - attrs[CAPABILITY_VERSION_ATTRIBUTE] = bundleCap.getAttributes()[BUNDLE_VERSION_ATTRIBUTE]; - if (headerMap[BUNDLE_COPYRIGHT]) { - attrs[CAPABILITY_COPYRIGHT_ATTRIBUTE] = headerMap[BUNDLE_COPYRIGHT]; - } - if (headerMap[BUNDLE_DESCRIPTION]) { - attrs[CAPABILITY_DESCRIPTION_ATTRIBUTE] = headerMap[BUNDLE_DESCRIPTION]; - } - let dirs; - if (bundleCap.getDirectives()[SINGLETON_DIRECTIVE]) { - dirs = { [CAPABILITY_SINGLETON_DIRECTIVE]: bundleCap.getDirectives()[SINGLETON_DIRECTIVE] }; - } - else { - dirs = {}; - } - return new BundleCapabilityImpl(owner, IDENTITY_NAMESPACE, dirs, attrs); - } - static normalizeRequireClauses(clauses, mv) { - if (mv !== '2') { - clauses.length = 0; - } - else { - for (const clause of clauses) { - let value = clause.attrs[BUNDLE_VERSION_ATTRIBUTE]; - if (value !== null && value !== undefined) { - clause.attrs[BUNDLE_VERSION_ATTRIBUTE] = new SemVerImpl(value.toString()); - } - } - } - return clauses; - } - static convertRequires(clauses, owner) { - const reqList = []; - for (const clause of clauses) { - for (const path of clause.paths) { - const attrs = clause.attrs; - const newAttrs = { - [BUNDLE_NAMESPACE]: path, - ...attrs, - [BUNDLE_NAMESPACE]: path, // ensure it's not overwritten - }; - const sf = Filter.convert(newAttrs); - const dirs = clause.dirs; - const newDirs = { - ...dirs, - FILTER_DIRECTIVE: sf.toString(), - }; - reqList.push(new BundleRequirementImpl(owner, BUNDLE_NAMESPACE, newDirs, newAttrs)); - } - } - return reqList; - } - static convertRequireCapabilities(clauses, owner) { - const reqList = []; - for (const clause of clauses) { - try { - let filterStr = clause.dirs[FILTER_DIRECTIVE]; - const sf = !!filterStr - ? Filter.parse(filterStr.trim().replace(/"|\\"/g, '').toString()) - : new Filter(null, FilterComp.MATCH_ALL, null, []); - for (const path of clause.paths) { - if (path.startsWith('pandino.wiring.')) { - throw new Error("Manifest cannot use Require-Capability for '" + path + "' namespace."); - } - reqList.push(new BundleRequirementImpl(owner, path, clause.dirs, clause.attrs, sf)); - } - } - catch (ex) { - throw new Error('Error creating requirement: ' + ex); - } - } - return reqList; - } - static convertProvideCapabilities(clauses, owner) { - const capList = []; - for (const clause of clauses) { - for (const path of clause.paths) { - if (path.startsWith('pandino.wiring.')) { - throw new Error("Manifest cannot use Provide-Capability for '" + path + "' namespace."); - } - capList.push(new BundleCapabilityImpl(owner, path, clause.dirs, clause.attrs)); - } - } - return capList; - } - parseActivationPolicy(headerMap) { - this.activationPolicy = 'EAGER_ACTIVATION'; - const clauses = ManifestParserImpl.parseStandardHeader(headerMap[BUNDLE_ACTIVATIONPOLICY]); - if (clauses.length > 0) { - for (const path of clauses[0].paths) { - if (path === ACTIVATION_LAZY) { - this.activationPolicy = 'LAZY_ACTIVATION'; - for (const [key, value] of Object.entries(clauses[0].dirs)) { - if (key.toLowerCase() === INCLUDE_DIRECTIVE.toLowerCase()) { - this.activationIncludeDir = value; - } - else if (key.toLowerCase() === EXCLUDE_DIRECTIVE.toLowerCase()) { - this.activationExcludeDir = value; - } - } - break; - } - } - } - } -} - -class BundleRevisionImpl { - id; - headerMap; - manifestVersion; - symbolicName; - version; - declaredCaps = []; - declaredReqs = []; - bundle; - declaredActivationPolicy; - wiring; - constructor(bundle, id, headerMap) { - this.bundle = bundle; - this.id = id; - this.headerMap = headerMap; - const mp = new ManifestParserImpl(bundle.getFramework().getConfig(), this, headerMap); - this.manifestVersion = mp.getManifestVersion(); - this.version = mp.getBundleVersion(); - this.declaredCaps = mp.getCapabilities(); - this.declaredReqs = mp.getRequirements(); - this.declaredActivationPolicy = mp.getActivationPolicy(); - this.symbolicName = mp.getSymbolicName(); - } - getDeclaredActivationPolicy() { - return this.declaredActivationPolicy; - } - equals(other) { - if (isAnyMissing(other) || !(other instanceof BundleRevisionImpl)) { - return false; - } - return this.getSymbolicName() === other.getSymbolicName() && this.getVersion().compare(other.getVersion()) === 0; - } - getBundle() { - return this.bundle; - } - getCapabilities(namespace) { - let result = this.declaredCaps; - if (!isAnyMissing(namespace)) { - result = this.declaredCaps.filter((cap) => cap.getNamespace() === namespace); - } - return result; - } - getDeclaredCapabilities(namespace) { - let result = this.declaredCaps; - if (!isAnyMissing(namespace)) { - result = this.declaredCaps.filter((cap) => cap.getNamespace() === namespace); - } - return result; - } - getDeclaredRequirements(namespace) { - let result = this.declaredReqs; - if (isAllPresent(namespace)) { - result = this.declaredReqs.filter((req) => req.getNamespace() === namespace); - } - return result; - } - getRequirements(namespace) { - return this.getDeclaredRequirements(namespace); - } - getSymbolicName() { - return this.symbolicName; - } - getVersion() { - return this.version; - } - getWiring() { - return this.wiring; - } - getHeaders() { - return { ...this.headerMap }; - } - getManifestVersion() { - return this.manifestVersion; - } - getId() { - return this.id; - } - resolve(wiring) { - this.wiring = wiring; - } - toString() { - return this.bundle + ' (R ' + this.id + ')'; - } -} - -class BundleImpl { - id; - manifestLocation; - deploymentRoot; - headers; - pandino; - installingBundle; - useDeclaredActivationPolicy; - activator; - context; - state; - revisions = []; - currentRevision; - logger; - constructor(logger, id, headers, manifestLocation, deploymentRoot, pandino, installingBundle) { - this.logger = logger; - this.id = id; - this.deploymentRoot = deploymentRoot; - this.manifestLocation = manifestLocation; - this.useDeclaredActivationPolicy = false; - this.state = 'INSTALLED'; - this.headers = headers; - this.pandino = pandino; - this.installingBundle = installingBundle; - if (isAllPresent(headers[BUNDLE_ACTIVATOR]) && - typeof headers[BUNDLE_ACTIVATOR].start === 'function') { - this.activator = headers[BUNDLE_ACTIVATOR]; - } - if (isAllPresent(pandino)) { - const revision = this.createRevision(); - this.addRevision(revision); - } - } - getRegisteredServices() { - return this.getFramework().getBundleRegisteredServices(this); - } - getServicesInUse() { - throw new Error('Method not implemented.'); - } - getBundleId() { - return this.id; - } - getBundleContext() { - return this.context; - } - setBundleContext(context) { - this.context = context; - } - getHeaders() { - return this.headers; - } - getState() { - return this.state; - } - setState(state) { - this.state = state; - } - getSymbolicName() { - return this.getCurrentRevision().getSymbolicName(); - } - getVersion() { - return this.getCurrentRevision().getVersion(); - } - async start(options) { - await this.getFramework().startBundle(this); - } - async stop(options) { - await this.getFramework().stopBundle(this); - } - async uninstall() { - return this.getFramework().uninstallBundle(this); - } - async update(headers, bundle) { - await this.getFramework().updateBundle(this, headers, bundle); - } - getUniqueIdentifier() { - return this.getSymbolicName() + '-' + this.getVersion().toString(); - } - getActivator() { - return this.activator; - } - setActivator(activator) { - this.activator = activator; - } - getDeploymentRoot() { - return this.deploymentRoot; - } - revise(headers) { - const updatedRevision = this.createRevision(headers); - this.addRevision(updatedRevision); - } - async refresh() { - const current = this.getCurrentRevision(); - if (this.isRemovalPending()) { - this.closeRevisions(); - } - else { - this.getFramework().getResolver().removeRevision(current); - current.resolve(null); - } - this.revisions.length = 0; - this.addRevision(current); - this.state = 'INSTALLED'; - } - createRevision(headers) { - const revision = new BundleRevisionImpl(this, this.getBundleId() + '.' + this.revisions.length, headers || this.headers); - let bundleVersion = revision.getVersion(); - bundleVersion = isAnyMissing(bundleVersion) ? new SemVerImpl('0.0.0') : bundleVersion; - const symName = revision.getSymbolicName(); - const collisionCandidates = []; - const bundles = this.getFramework().getBundles(); - for (let i = 0; Array.isArray(bundles) && i < bundles.length; i++) { - const id = bundles[i].getBundleId(); - if (id !== this.getBundleId()) { - if (symName === bundles[i].getSymbolicName() && equal(bundleVersion, bundles[i].getVersion())) { - collisionCandidates.push(bundles[i]); - } - } - } - if (collisionCandidates.length && isAllPresent(this.installingBundle)) { - throw new Error('Bundle symbolic name and version are not unique: ' + symName + ':' + bundleVersion); - } - return revision; - } - closeRevisions() { - for (const br of this.revisions) { - this.getFramework().getResolver().removeRevision(br); - } - } - isRemovalPending() { - return this.state === 'UNINSTALLED' || this.revisions.length > 1; - } - addRevision(revision) { - this.revisions.unshift(revision); - this.currentRevision = revision; - this.getFramework().getResolver().addRevision(revision); - } - getFramework() { - return this.pandino; - } - getCurrentRevision() { - return this.currentRevision; - } - getRevisions() { - return this.revisions; - } - getLocation() { - return this.manifestLocation; - } - toString() { - return `${this.getSymbolicName()}: ${this.getVersion().toString()}`; - } -} - -class ListenerInfo { - bundle; - context; - listener; - filter; - constructor(info, bundle, context, listener, filter) { - if (info) { - this.bundle = info.bundle; - this.context = info.context; - this.listener = info.listener; - this.filter = info.filter; - } - else { - this.bundle = bundle; - this.context = context; - this.listener = listener; - this.filter = filter; - } - } - getBundle() { - return this.bundle; - } - getBundleContext() { - return this.context; - } - getListener() { - return this.listener; - } - getParsedFilter() { - return this.filter; - } - getFilter() { - if (!!this.filter) { - return this.filter.toString(); - } - return undefined; - } -} - -class ServiceEventImpl { - type; - reference; - constructor(type, reference) { - this.type = type; - this.reference = reference; - } - getServiceReference() { - return this.reference; - } - getType() { - return this.type; - } - toString() { - return `Service: ${this.reference.getProperty(SERVICE_ID)} changed state to: ${this.type}.`; - } -} - -class EventDispatcher { - logger; - svcListeners = new Map(); - bndListeners = new Map(); - fwkListeners = new Map(); - constructor(logger) { - this.logger = logger; - } - fireServiceEvent(event, oldProps) { - const listeners = new Map(this.svcListeners.entries()); - EventDispatcher.fireEventImmediately('SERVICE', listeners, event, oldProps); - } - fireFrameworkEvent(event, source) { - const listeners = new Map(this.fwkListeners.entries()); - EventDispatcher.fireEventImmediately('FRAMEWORK', listeners, event, source); - } - fireBundleEvent(event, source) { - const listeners = new Map(this.bndListeners.entries()); - EventDispatcher.fireEventImmediately('BUNDLE', listeners, event, source); - } - static fireEventImmediately(type, listeners, event, oldProps) { - for (let [ctx, lstnrs] of listeners.entries()) { - for (let info of lstnrs) { - const bundle = info.getBundle(); - const listener = info.getListener(); - const filter = info.getParsedFilter(); - switch (type) { - case 'FRAMEWORK': - EventDispatcher.invokeFrameworkListenerCallback(bundle, listener, event); - break; - case 'BUNDLE': - EventDispatcher.invokeBundleListenerCallback(bundle, listener, event); - break; - case 'SERVICE': - EventDispatcher.invokeServiceListenerCallback(bundle, listener, event, filter, oldProps); - break; - default: - throw new Error(`Unhandled event type: ${type}!`); - } - } - } - } - static invokeServiceListenerCallback(bundle, listener, event, filter, oldProps) { - const validBundleStateTypes = ['STARTING', 'STOPPING', 'ACTIVE']; - if (!validBundleStateTypes.includes(bundle.getState())) { - return; - } - let matched = isAnyMissing(filter) || - CapabilitySet.matches(event.getServiceReference(), filter); - if (matched) { - listener.serviceChanged(event); - } - else if (event.getType() == 'MODIFIED') { - if (!!filter && filter.match(oldProps)) { - let se = new ServiceEventImpl('MODIFIED_ENDMATCH', event.getServiceReference()); - if (listener.isSync) { - listener.serviceChanged(se); - } - else { - setTimeout(() => listener.serviceChanged(se), 0); - } - } - } - } - static invokeBundleListenerCallback(bundle, listener, event) { - const validSyncEventBundleStateTypes = ['STARTING', 'STOPPING', 'ACTIVE']; - if (validSyncEventBundleStateTypes.includes(bundle.getState())) { - if (listener.isSync) { - listener.bundleChanged(event); - } - else { - setTimeout(() => listener.bundleChanged(event), 0); - } - } - } - static invokeFrameworkListenerCallback(bundle, listener, event) { - const validBundleStateTypes = ['STARTING', 'ACTIVE']; - if (validBundleStateTypes.includes(bundle.getState())) { - if (listener.isSync) { - listener.frameworkEvent(event); - } - else { - setTimeout(() => listener.frameworkEvent(event), 0); - } - } - } - addListener(bc, type, listener, filter) { - if (!listener) { - throw new Error('Listener is missing'); - } - const oldFilter = this.updateListener(bc, type, listener, filter); - if (oldFilter) { - return oldFilter; - } - try { - bc.getBundle(); - } - catch (ex) { - // Bundle context is no longer valid, so just return. - return undefined; - } - let listeners = null; - if (type === 'FRAMEWORK') { - listeners = this.fwkListeners; - } - else if (type === 'BUNDLE') { - listeners = this.bndListeners; - } - else if (type === 'SERVICE') { - listeners = this.svcListeners; - } - else { - throw new Error('Unknown listener: ' + type); - } - const info = new ListenerInfo(null, bc.getBundle(), bc, listener, filter); - listeners = EventDispatcher.addListenerInfo(listeners, info); - if (type === 'FRAMEWORK') { - this.fwkListeners = listeners; - } - else if (type === 'BUNDLE') { - this.bndListeners = listeners; - } - else if (type === 'SERVICE') { - this.svcListeners = listeners; - } - return undefined; - } - removeListener(bc, type, listener) { - let listeners = null; - if (!listener) { - throw new Error('Listener is missing'); - } - if (type === 'FRAMEWORK') { - listeners = this.fwkListeners; - } - else if (type === 'BUNDLE') { - listeners = this.bndListeners; - } - else if (type === 'SERVICE') { - listeners = this.svcListeners; - } - else { - throw new Error('Unknown listener: ' + type); - } - // Try to find the instance in our list. - let idx = -1; - for (let [bc, infos] of listeners.entries()) { - for (let i = 0; i < infos.length; i++) { - let info = infos[i]; - if (info.getBundleContext().equals(bc) && info.getListener() === listener) { - idx = i; - break; - } - } - } - if (idx >= 0) { - listeners = EventDispatcher.removeListenerInfo(listeners, bc, idx); - } - if (type === 'FRAMEWORK') { - this.fwkListeners = listeners; - } - else if (type === 'BUNDLE') { - this.bndListeners = listeners; - } - else if (type === 'SERVICE') { - this.svcListeners = listeners; - } - } - removeListeners(bc) { - this.fwkListeners = EventDispatcher.removeListenerInfos(this.fwkListeners, bc); - this.bndListeners = EventDispatcher.removeListenerInfos(this.bndListeners, bc); - this.svcListeners = EventDispatcher.removeListenerInfos(this.svcListeners, bc); - } - static removeListenerInfos(listeners, bc) { - const copy = new Map(listeners.entries()); - copy.delete(bc); - return copy; - } - static removeListenerInfo(listeners, bc, idx) { - const copy = new Map(listeners.entries()); - const infos = [...copy.get(bc)]; - copy.delete(bc); - if (Array.isArray(infos)) { - infos.splice(idx, 1); - if (infos.length > 0) { - copy.set(bc, infos); - } - return copy; - } - return listeners; - } - updateListener(bc, type, listener, filter) { - if (type === 'SERVICE') { - // Verify that the bundle context is still valid. - try { - bc.getBundle(); - } - catch (err) { - return undefined; - } - const infos = this.svcListeners.get(bc); - for (let i = 0; isAllPresent(infos) && i < infos.length; i++) { - const info = infos[i]; - if (info.getBundleContext().equals(bc) && info.getListener() === listener) { - // The spec says to update the filter in this case. - const oldFilter = info.getParsedFilter(); - const newInfo = new ListenerInfo(null, info.getBundle(), info.getBundleContext(), info.getListener(), filter); - this.svcListeners = EventDispatcher.updateListenerInfo(this.svcListeners, i, newInfo); - return oldFilter; - } - } - } - return undefined; - } - static updateListenerInfo(listeners, idx, info) { - let copy = new Map(listeners); - let infos = copy.get(info.getBundleContext()); - copy.delete(info.getBundleContext()); - if (isAllPresent(infos)) { - infos = [...infos]; - infos[idx] = info; - copy.set(info.getBundleContext(), infos); - return copy; - } - return listeners; - } - static addListenerInfo(listeners, info) { - if (!listeners.has(info.getBundleContext())) { - listeners.set(info.getBundleContext(), []); - } - const infos = listeners.get(info.getBundleContext()); - infos.push(info); - return listeners; - } -} - -class ServiceObjectsImpl { - ref; - context; - pandino; - constructor(ref, context, pandino) { - this.ref = ref; - this.context = context; - this.pandino = pandino; - } - getService() { - this.context.checkValidity(); - return this.pandino.getService(this.context.getBundle(), this.ref, true); - } - getServiceReference() { - return this.ref; - } - ungetService(service) { - this.context.checkValidity(); - if (isAllPresent(this.ref.getBundle()) && !this.pandino.ungetService(this.ref.getBundle(), this.ref, service)) { - throw new Error(`Cannot unget service: ${service}`); - } - } -} - -class AbstractTracked { - closed = false; - trackingCount = 0; - tracked = new Map(); - adding = []; - initial = []; - setInitial(list = []) { - for (const item of list) { - if (!item) { - continue; - } - this.initial.push(item); - } - } - trackInitial() { - while (true) { - let item; - if (this.closed || this.initial.length === 0) { - return; - } - item = this.initial[0]; - this.initial.splice(0, 1); - if (this.tracked.get(item)) { - continue; - } - if (this.adding.includes(item)) { - continue; - } - this.adding.push(item); - this.trackAdding(item, undefined); - } - } - close() { - this.closed = true; - } - track(item, related) { - let object; - if (this.closed) { - return; - } - object = this.tracked.get(item); - if (isAnyMissing(object)) { - if (this.adding.includes(item)) { - return; - } - this.adding.push(item); - } - else { - this.modified(); - } - if (isAnyMissing(object)) { - this.trackAdding(item, related); - } - else { - this.customizerModified(item, object, related); - } - } - untrack(item, related) { - let object; - const initialIdx = this.initial.findIndex((i) => i === item); - if (initialIdx > -1) { - this.initial.splice(initialIdx, 1); - return; - } - const addingIdx = this.adding.findIndex((a) => a === item); - if (addingIdx > -1) { - this.adding.splice(addingIdx, 1); - return; - } - object = this.tracked.get(item); - this.tracked.delete(item); - if (isAnyMissing(object)) { - return; - } - this.modified(); - this.customizerRemoved(item, object, related); - } - size() { - return this.tracked.size; - } - isEmpty() { - return this.size() === 0; - } - getCustomizedObject(item) { - return this.tracked.get(item); - } - copyKeys(list) { - return [...list, ...Array.from(this.tracked.keys())]; - } - modified() { - this.trackingCount++; - } - getTrackingCount() { - return this.trackingCount; - } - trackAdding(item, related) { - let object; - let becameUntracked = false; - try { - object = this.customizerAdding(item, related); - } - finally { - const idx = this.adding.findIndex((a) => a === item); - if (idx > -1 && !this.closed) { - this.adding.splice(idx, 1); - if (object) { - this.tracked.set(item, object); - this.modified(); - } - } - else { - becameUntracked = true; - } - } - if (becameUntracked && object) { - this.customizerRemoved(item, object, related); - } - } -} - -class BundleTrackerImpl { - customizer; - context; - trackedStates = []; - tracked; - constructor(context, trackedStates, customizer) { - this.context = context; - this.trackedStates = trackedStates; - this.customizer = customizer || this; - } - open() { - if (isAllPresent(this.tracked)) { - return; - } - const t = new Tracked$1(this); - this.context.addBundleListener(t); - const bundles = this.context.getBundles(); - if (bundles && bundles.length) { - const length = bundles.length; - for (let i = 0; i < length; i++) { - const state = bundles[i].getState(); - if (this.getTrackedStates().includes(state)) { - /* undefined out bundles whose states are not interesting */ - bundles[i] = undefined; - } - } - /* set tracked with the initial bundles */ - t.setInitial(bundles); - } - this.tracked = t; - t.trackInitial(); - } - close() { - const outgoing = this.tracked; - let bundles; - if (isAnyMissing(outgoing)) { - return; - } - outgoing.close(); - bundles = this.getBundles(); - this.tracked = undefined; - try { - this.context.removeBundleListener(outgoing); - } - catch (_) { - /* In case the context was stopped. */ - } - if (Array.isArray(bundles)) { - for (const bundle of bundles) { - outgoing.untrack(bundle, undefined); - } - } - } - addingBundle(bundle, event) { - return bundle; - } - modifiedBundle(bundle, event, object) { - /* do nothing */ - } - removedBundle(bundle, event, object) { - /* do nothing */ - } - getBundles() { - if (isAnyMissing(this.tracked)) { - return []; - } - if (this.tracked.isEmpty()) { - return []; - } - return this.tracked.copyKeys([]); - } - getObject(bundle) { - if (isAnyMissing(this.tracked)) { - return undefined; - } - return this.tracked.getCustomizedObject(bundle); - } - remove(bundle) { - if (isAnyMissing(this.tracked)) { - return; - } - this.tracked.untrack(bundle, undefined); - } - size() { - if (isAnyMissing(this.tracked)) { - return 0; - } - return this.tracked.size(); - } - getTrackingCount() { - if (isAnyMissing(this.tracked)) { - return -1; - } - return this.tracked.getTrackingCount(); - } - isEmpty() { - if (isAnyMissing(this.tracked)) { - return true; - } - return this.tracked.isEmpty(); - } - getTrackedStates() { - return this.trackedStates; - } -} -class Tracked$1 extends AbstractTracked { - isSync = true; - tracker; - constructor(tracker) { - super(); - this.tracker = tracker; - } - customizerAdding(item, related) { - return this.tracker.customizer.addingBundle(item, related); - } - customizerModified(item, object, related) { - this.tracker.customizer.modifiedBundle(item, related, object); - } - customizerRemoved(item, object, related) { - this.tracker.customizer.removedBundle(item, related, object); - } - bundleChanged(event) { - if (this.closed) { - return; - } - const bundle = event.getBundle(); - const state = bundle.getState(); - if (this.tracker.getTrackedStates().includes(state)) { - this.track(bundle, event); - /* - * If the customizer throws an unchecked exception, it is safe - * to let it propagate - */ - } - else { - this.untrack(bundle, event); - /* - * If the customizer throws an unchecked exception, it is safe - * to let it propagate - */ - } - } -} - -class ServiceTrackerImpl { - customizer; - context; - filter; - listenerFilter; - identifier; - tracked; - cachedReference; - cachedService; - constructor(context, identifierOrFilter, customizer) { - this.context = context; - this.customizer = customizer || this; - this.listenerFilter = - typeof identifierOrFilter === 'string' ? `(${OBJECTCLASS}=${identifierOrFilter})` : identifierOrFilter.toString(); - this.identifier = typeof identifierOrFilter === 'string' ? identifierOrFilter : undefined; - this.filter = - typeof identifierOrFilter === 'string' ? context.createFilter(this.listenerFilter) : identifierOrFilter; - } - open() { - let t; - if (isAllPresent(this.tracked)) { - return; - } - t = new AllTracked(this); - this.context.addServiceListener(t, this.listenerFilter); - let references = []; - if (isAllPresent(this.identifier)) { - references = this.getInitialReferences(this.identifier); - } - else { - references = this.getInitialReferences(undefined, this.listenerFilter); - } - t.setInitial(references); - this.tracked = t; - t.trackInitial(); - } - close() { - const outgoing = this.tracked; - let references; - if (isAnyMissing(outgoing)) { - return; - } - outgoing.close(); - references = this.getServiceReferences(); - this.tracked = undefined; - try { - this.context.removeServiceListener(outgoing); - } - catch (_) { - /* In case the context was stopped. */ - } - this.modified(); - if (isAllPresent(references)) { - for (const reference of references) { - outgoing.untrack(reference, undefined); - } - } - } - getServiceReferences() { - let t = this.tracked; - if (isAnyMissing(t)) { - return []; - } - if (t.isEmpty()) { - return []; - } - let result = []; - return t.copyKeys(result); - } - addingService(reference) { - return this.context.getService(reference); - } - modifiedService(reference, service) { - /* do nothing */ - } - removedService(reference, service) { - try { - // If a Bundle is in a STOPPING state, unget will fail - this.context.ungetService(reference); - } - catch (_) { } - } - getService() { - let service = this.cachedService; - if (isAllPresent(service)) { - return service; - } - let reference = this.getServiceReference(); - if (isAnyMissing(reference)) { - return undefined; - } - return (this.cachedService = this.getServiceForReference(reference)); - } - getServiceReference() { - const reference = this.cachedReference; - if (isAllPresent(reference)) { - return reference; - } - const references = this.getServiceReferences(); - const length = isAnyMissing(references) ? 0 : references.length; - if (length === 0) { - return undefined; - } - let index = 0; - if (length > 1) { - const rankings = []; - let count = 0; - let maxRanking = Number.MIN_VALUE; - for (let i = 0; i < length; i++) { - const property = references[i].getProperty(SERVICE_RANKING); - const ranking = typeof property === 'number' ? Number(property) : 0; - rankings[i] = ranking; - if (ranking > maxRanking) { - index = i; - maxRanking = ranking; - count = 1; - } - else { - if (ranking === maxRanking) { - count++; - } - } - } - if (count > 1) { - let minId = Number.MAX_VALUE; - for (let i = 0; i < length; i++) { - if (rankings[i] == maxRanking) { - const id = Number(references[i].getProperty(SERVICE_ID)); - if (id < minId) { - index = i; - minId = id; - } - } - } - } - } - return (this.cachedReference = references[index]); - } - getServiceForReference(reference) { - let t = this.tracked; - if (isAnyMissing(t)) { - return undefined; - } - return t.getCustomizedObject(reference); - } - getServices() { - let t = this.tracked; - if (isAnyMissing(t)) { - return []; - } - let references = this.getServiceReferences(); - let length = isAllPresent(references) ? references.length : 0; - if (length === 0) { - return []; - } - const objects = []; - for (let i = 0; i < length; i++) { - objects[i] = this.getServiceForReference(references[i]); - } - return objects; - } - modified() { - this.cachedReference = undefined; - this.cachedService = undefined; - } - remove(reference) { - let t = this.tracked; - if (isAnyMissing(t)) { - return; - } - t.untrack(reference, undefined); - } - size() { - const t = this.tracked; - if (isAnyMissing(t)) { - return 0; - } - return t.size(); - } - getTrackingCount() { - const t = this.tracked; - if (isAnyMissing(t)) { - return -1; - } - return t.getTrackingCount(); - } - isEmpty() { - const t = this.tracked; - if (isAnyMissing(t)) { - return true; - } - return t.isEmpty(); - } - getInitialReferences(identifier, filterString) { - if (isAnyMissing(identifier) && isAnyMissing(filterString)) { - throw new Error('Either the parameter "identifier" or "filterString" must be provided!'); - } - return this.context.getAllServiceReferences(identifier, filterString); - } -} -class Tracked extends AbstractTracked { - isSync = true; - tracker; - constructor(tracker) { - super(); - this.tracker = tracker; - } - serviceChanged(event) { - if (this.closed) { - return; - } - const reference = event.getServiceReference(); - switch (event.getType()) { - case 'REGISTERED': - case 'MODIFIED': - this.track(reference, event); - break; - case 'MODIFIED_ENDMATCH': - case 'UNREGISTERING': - this.untrack(reference, event); - break; - } - } - modified() { - super.modified(); - this.tracker.modified(); - } - customizerAdding(item, related) { - return this.tracker.customizer.addingService(item); - } - customizerModified(item, object, related) { - this.tracker.customizer.modifiedService(item, object); - } - customizerRemoved(item, object, related) { - this.tracker.customizer.removedService(item, object); - } -} -class AllTracked extends Tracked { - constructor(tracker) { - super(tracker); - } -} - -class BundleContextImpl { - logger; - bundle; - pandino; - valid = true; - bundleTrackers = []; - serviceTrackers = []; - constructor(logger, bundle, pandino) { - this.logger = logger; - this.bundle = bundle; - this.pandino = pandino; - } - addBundleListener(listener) { - this.checkValidity(); - this.pandino.addBundleListener(this.bundle, listener); - } - removeBundleListener(listener) { - this.checkValidity(); - this.pandino.removeBundleListener(this.bundle, listener); - } - addFrameworkListener(listener) { - this.checkValidity(); - this.pandino.addFrameworkListener(this.bundle, listener); - } - removeFrameworkListener(listener) { - this.checkValidity(); - this.pandino.removeFrameworkListener(this.bundle, listener); - } - createFilter(filter) { - this.checkValidity(); - return Filter.parse(filter); - } - getBundle(id) { - this.checkValidity(); - if (isAllPresent(id)) { - return this.pandino.getBundle(id); - } - return this.bundle; - } - getBundles() { - this.checkValidity(); - return this.pandino.getBundles(this); - } - getProperty(key) { - this.checkValidity(); - return this.pandino.getProperty(key); - } - async installBundle(locationOrHeaders) { - if (typeof locationOrHeaders === 'string') { - this.logger.debug(`Installing Bundle from location: ${locationOrHeaders}`); - } - else { - this.logger.debug(`Installing Bundle: ${locationOrHeaders[BUNDLE_SYMBOLICNAME]}: ${locationOrHeaders[BUNDLE_VERSION]}`); - } - this.checkValidity(); - return this.pandino.installBundle(this.bundle, locationOrHeaders); - } - addServiceListener(listener, filter) { - this.checkValidity(); - this.pandino.addServiceListener(this.bundle, listener, filter); - } - getService(reference) { - this.checkValidity(); - if (isAnyMissing(reference)) { - throw new Error('Specified service reference must be defined.'); - } - return this.pandino.getService(this.bundle, reference, false); - } - getServiceReference(identifier) { - this.checkValidity(); - try { - const refs = this.getServiceReferences(identifier, null); - return BundleContextImpl.getBestServiceReference(refs); - } - catch (ex) { - this.logger.error('BundleContextImpl: ' + ex); - } - return undefined; - } - getAllServiceReferences(identifier, filter) { - this.checkValidity(); - return this.pandino.getAllowedServiceReferences(this.bundle, identifier, filter, false); - } - getServiceReferences(identifier, filter) { - this.checkValidity(); - return this.pandino.getAllowedServiceReferences(this.bundle, identifier, filter, true); - } - registerService(identifiers, service, properties) { - this.checkValidity(); - return this.pandino.registerService(this, identifiers, service, properties || {}); - } - removeServiceListener(listener) { - this.checkValidity(); - this.pandino.removeServiceListener(this.bundle, listener); - } - ungetService(reference) { - this.checkValidity(); - if (isAnyMissing(reference)) { - throw new Error('Specified service reference cannot be missing.'); - } - return this.pandino.ungetService(this.bundle, reference, null); - } - getServiceObjects(reference) { - this.checkValidity(); - const reg = reference.getRegistration(); - if (reg.isValid()) { - return new ServiceObjectsImpl(reference, this, this.pandino); - } - return undefined; - } - isValid() { - return this.valid; - } - invalidate() { - this.valid = false; - } - checkValidity() { - if (this.valid) { - switch (this.bundle.getState()) { - case 'ACTIVE': - case 'STARTING': - case 'STOPPING': - return; - } - } - throw new Error('Invalid BundleContext.'); - } - equals(other) { - if (isAnyMissing(other) || !(other instanceof BundleContextImpl)) { - return false; - } - if (this.getBundle().getSymbolicName() === other.getBundle().getSymbolicName() && - this.getBundle().getVersion().toString() === other.getBundle().getVersion().toString()) { - return true; - } - return false; - } - trackBundle(trackedStates, customizer) { - this.checkValidity(); - const self = this; - const tracker = new (class extends BundleTrackerImpl { - constructor() { - super(self, trackedStates); - } - addingBundle(bundle, event) { - return customizer.addingBundle ? customizer.addingBundle(bundle, event) : super.addingBundle(bundle, event); - } - modifiedBundle(bundle, event, object) { - customizer.modifiedBundle - ? customizer.modifiedBundle(bundle, event, object) - : super.modifiedBundle(bundle, event, object); - } - removedBundle(bundle, event, object) { - customizer.removedBundle - ? customizer.removedBundle(bundle, event, object) - : super.removedBundle(bundle, event, object); - } - })(); - this.bundleTrackers.push(tracker); - return tracker; - } - trackService(identifierOrFilter, customizer) { - this.checkValidity(); - const self = this; - const tracker = new (class extends ServiceTrackerImpl { - constructor() { - super(self, identifierOrFilter); - } - addingService(reference) { - return customizer.addingService ? customizer.addingService(reference) : super.addingService(reference); - } - modifiedService(reference, service) { - customizer.modifiedService - ? customizer.modifiedService(reference, service) - : super.modifiedService(reference, service); - } - removedService(reference, service) { - customizer.removedService - ? customizer.removedService(reference, service) - : super.removedService(reference, service); - } - })(); - this.serviceTrackers.push(tracker); - return tracker; - } - closeTrackers() { - for (const tracker of this.bundleTrackers) { - try { - tracker.close(); - } - catch (_) { } - } - for (const tracker of this.serviceTrackers) { - try { - tracker.close(); - } - catch (_) { } - } - this.bundleTrackers = []; - this.serviceTrackers = []; - } - static getBestServiceReference(refs) { - if (isAnyMissing(refs)) { - return undefined; - } - if (refs.length === 1) { - return refs[0]; - } - let bestRef = refs[0]; - for (let i = 1; i < refs.length; i++) { - if (bestRef.compareTo(refs[i]) < 0) { - bestRef = refs[i]; - } - } - return bestRef; - } -} - -class BundleEventImpl { - bundle; - type; - origin; - constructor(bundle, type, origin) { - this.bundle = bundle; - this.type = type; - this.origin = origin; - } - getBundle() { - return this.bundle; - } - getOrigin() { - return this.origin; - } - getType() { - return this.type; - } - toString() { - return `${this.bundle.getUniqueIdentifier()} changed state to: ${this.type}.`; - } -} - -class BundleWireImpl { - requirer; - req; - provider; - cap; - constructor(requirer, req, provider, cap) { - this.requirer = requirer; - this.req = req; - this.provider = provider; - this.cap = cap; - } - equals(other) { - if (isAnyMissing(other) || !(other instanceof BundleWireImpl)) { - return false; - } - return this.getRequirement() === other.getRequirement() && this.getCapability() === other.getCapability(); - } - getRequirer() { - return this.requirer; - } - getRequirement() { - return this.req; - } - getProvider() { - return this.provider; - } - getCapability() { - return this.cap; - } - toString() { - return this.req + ' -> ' + '[' + this.provider + ']'; - } -} - -class BundleWiringImpl { - configMap = {}; - resolver; - revision; - wires = []; - resolvedCaps = []; - resolvedReqs = []; - isDisposed = false; - constructor(configMap, resolver, revision, wires = []) { - this.configMap = configMap; - this.resolver = resolver; - this.revision = revision; - this.wires = [...wires]; - const reqList = []; - for (const bw of wires) { - if (bw.getRequirement().getNamespace() !== HOST_NAMESPACE || !reqList.includes(bw.getRequirement())) { - reqList.push(bw.getRequirement()); - } - } - for (const req of this.revision.getDeclaredRequirements(null)) { - if (req.getNamespace() === PACKAGE_NAMESPACE) { - const resolution = req.getDirectives()[RESOLUTION_DIRECTIVE]; - if (isAllPresent(resolution) && resolution === 'dynamic') { - reqList.push(req); - } - } - } - this.resolvedReqs = [...reqList]; - const capList = []; - for (const cap of this.revision.getDeclaredCapabilities(null)) { - if (cap.getNamespace() !== PACKAGE_NAMESPACE) { - let effective = cap.getDirectives()[EFFECTIVE_DIRECTIVE]; - if (isAnyMissing(effective) || effective === EFFECTIVE_RESOLVE) { - capList.push(cap); - } - } - } - this.resolvedCaps = [...capList]; - } - dispose() { - this.isDisposed = true; - } - getBundle() { - return this.revision.getBundle(); - } - isCurrent() { - const bundle = this.getBundle(); - const current = bundle.getState() === 'UNINSTALLED' ? null : bundle.getCurrentRevision(); - return isAllPresent(current) && current.getWiring() === this; - } - isInUse() { - return !this.isDisposed; - } - getResourceCapabilities(namespace) { - return this.getCapabilities(namespace); - } - getCapabilities(namespace) { - if (this.isInUse()) { - let result = this.resolvedCaps; - if (isAllPresent(namespace)) { - result = []; - for (const cap of this.resolvedCaps) { - if (cap.getNamespace() === namespace) { - result.push(cap); - } - } - } - return result; - } - return []; - } - getProvidedWires(namespace) { - throw new Error('Method not yet implemented!'); - } - getRequiredWires(namespace) { - if (this.isInUse()) { - let result = [...this.wires]; - if (isAllPresent(namespace)) { - result = this.wires.filter((bw) => bw.getRequirement().getNamespace() === namespace); - } - return result; - } - return []; - } - getRequirements(namespace) { - if (this.isInUse()) { - let searchReqs = this.resolvedReqs; - let result = this.resolvedReqs; - if (isAllPresent(namespace)) { - result = []; - for (const req of searchReqs) { - if (req.getNamespace() === namespace) { - result.push(req); - } - } - } - return result; - } - return []; - } - getResource() { - return this.revision; - } - getResourceRequirements(namespace) { - return this.getRequirements(namespace); - } - getRevision() { - return this.revision; - } - toString() { - return this.revision.getBundle().toString(); - } -} - -class StatefulResolver { - pandino; - revisions = []; - registry; - logger; - constructor(logger, pandino, registry) { - this.logger = logger; - this.pandino = pandino; - this.registry = registry; - } - async resolveOne(revision) { - if (['ACTIVE'].includes(revision.getBundle().getState())) { - return; - } - const bundleWiring = this.resolve(revision); - if (bundleWiring) { - this.logger.debug(`Bundle Wiring created for Revision: ${revision.getSymbolicName()}: ${revision.getVersion().toString()}`); - const bundle = bundleWiring.getRevision().getBundle(); - this.pandino.fireBundleEvent('RESOLVED', bundle); - try { - await this.pandino.startBundle(bundle); - await this.resolveRemaining(); - } - catch (err) { - this.logger.error(err); - } - } - else { - this.logger.debug(`No Wiring found for Revision: ${revision.getSymbolicName()}: ${revision.getVersion().toString()}`); - } - } - async resolveRemaining() { - const unresolvedRevs = this.revisions.filter((r) => isAnyMissing(r.getWiring())); - const revsToReRun = unresolvedRevs.filter((r) => { - const wires = StatefulResolver.getResolvableWires(r, this.getEligibleCapabilities()); - return r.getSymbolicName() !== SYSTEM_BUNDLE_SYMBOLICNAME && StatefulResolver.canBundleBeResolved(r, wires); - }); - for (const rev of revsToReRun) { - await this.resolveOne(rev); - } - } - getActiveRequirers(bundle) { - const bundles = []; - // rev.getWiring().getRequiredWires(null) - const wirings = this.revisions - .filter((rev) => !!rev.getWiring()) - .map((rev) => rev.getWiring()) - .filter((wiring) => wiring.isInUse()); - for (const wiring of wirings) { - const wire = wiring - .getRequiredWires(null) - .find((wire) => wire.getProvider().equals(bundle.getCurrentRevision())); - if (wire) { - bundles.push(wire.getRequirer().getBundle()); - } - } - return bundles; - } - /** - * Currently in the resolving process, we only take ACTIVE Bundles into consideration. Given we are expecting all - * Bundles to have at least a start() being called from A {@link BundleActivator}. - */ - getEligibleCapabilities() { - const caps = []; - const activeRevisions = this.revisions.filter((rev) => rev.getBundle().getState() === 'ACTIVE'); - for (const rev of activeRevisions) { - caps.push(...rev.getDeclaredCapabilities(null)); - } - return caps; - } - resolve(rev) { - const wiring = this.createWiringForRevision(rev); - rev.resolve(wiring); - return wiring; - } - static canBundleBeResolved(rev, wires) { - const validStates = ['INSTALLED', 'STARTING']; - if (!validStates.includes(rev.getBundle().getState())) { - return false; - } - const requirements = rev.getDeclaredRequirements(null); - const reqs = requirements.map((r) => r.getNamespace()); - const wireCaps = wires.map((w) => w.getCapability().getNamespace()); - return requirements.length === 0 || reqs.every((r) => wireCaps.includes(r)); - } - static getResolvableWires(rev, allProvidedCapabilities) { - const requirements = rev.getDeclaredRequirements(null); - const wires = []; - for (const req of requirements) { - const filter = req.getFilter(); - const providedCap = allProvidedCapabilities.find((p) => p.getNamespace() === req.getNamespace() && CapabilitySet.matches(p, filter)); - if (providedCap) { - const wire = new BundleWireImpl(req.getResource(), req, providedCap?.getResource(), providedCap); - wires.push(wire); - } - } - return wires; - } - createWiringForRevision(revision) { - const wires = StatefulResolver.getResolvableWires(revision, this.getEligibleCapabilities()); - if (StatefulResolver.canBundleBeResolved(revision, wires)) { - const impl = revision; - return new BundleWiringImpl(impl.getHeaders(), this, impl, wires); - } - } - addRevision(br) { - this.removeRevision(br); - this.revisions.push(br); - } - removeRevision(br) { - const idx = this.revisions.findIndex((r) => r.equals(br)); - if (idx > 0) { - this.revisions.splice(idx, 1); - } - } -} - -const PACKAGE_SEPARATOR = '.'; -class ServiceReferenceImpl extends BundleCapabilityImpl { - reg; - bundle; - constructor(reg, bundle) { - super(null, null, {}, {}); - this.reg = reg; - this.bundle = bundle; - } - compareTo(other) { - const id = Number(this.getProperty(SERVICE_ID)); - const otherId = Number(other.getProperty(SERVICE_ID)); - if (id === otherId) { - return 0; - } - const rankObj = Number(this.getProperty(SERVICE_RANKING)); - const otherRankObj = Number(other.getProperty(SERVICE_RANKING)); - const rank = !rankObj ? SERVICE_DEFAULT_RANK : rankObj; - const otherRank = !otherRankObj ? SERVICE_DEFAULT_RANK : otherRankObj; - if (rank - otherRank < 0) { - return -1; - } - else if (rank - otherRank > 0) { - return 1; - } - // If ranks are equal, then sort by service id in descending order. - return otherId - id; - } - getRegistration() { - return this.reg; - } - getRevision() { - throw new Error('Not supported yet.'); - } - getNamespace() { - return 'service-reference'; - } - getDirectives() { - return {}; - } - getAttributes() { - return { - ...this.getRegistration().getProperties(), - }; - } - getUses() { - return []; - } - getBundle() { - if (this.reg.isValid()) { - return this.bundle; - } - } - getProperties() { - return this.reg.getProperties(); - } - getProperty(key) { - return this.reg.getProperty(key); - } - getPropertyKeys() { - return this.reg.getPropertyKeys(); - } - getUsingBundles() { - return this.reg.getUsingBundles(this); - } - isAssignableTo(bundle, className) { - if (bundle === this.bundle) { - return true; - } - let allow; - const pkgName = ServiceReferenceImpl.getClassPackage(className); - const requesterRevision = bundle.getCurrentRevision(); - const requesterWire = ServiceReferenceImpl.getWire(requesterRevision, pkgName); - const requesterCap = ServiceReferenceImpl.getPackageCapability(requesterRevision, pkgName); - const providerRevision = this.bundle.getCurrentRevision(); - const providerWire = ServiceReferenceImpl.getWire(providerRevision, pkgName); - const providerCap = ServiceReferenceImpl.getPackageCapability(providerRevision, pkgName); - if (isAnyMissing(requesterWire) && isAnyMissing(providerWire)) { - allow = true; - } - else if (isAnyMissing(requesterWire) && isAllPresent(providerWire)) { - if (isAllPresent(requesterCap)) { - allow = providerRevision.getWiring().getRevision().equals(requesterRevision); - } - else { - allow = true; - } - } - else if (requesterWire != null && providerWire == null) { - if (isAllPresent(providerCap)) { - allow = requesterWire.getProvider().equals(providerRevision); - } - else { - allow = true; - } - } - else { - allow = providerWire.getProvider().equals(requesterWire.getProvider()); - } - return allow; - } - hasObjectClass(objectClass) { - const classOrArray = this.getProperty(OBJECTCLASS); - return Array.isArray(classOrArray) ? classOrArray.includes(objectClass) : classOrArray === objectClass; - } - static getClassName(className) { - if (isAnyMissing(className)) { - return ''; - } - return className.substring(className.lastIndexOf(PACKAGE_SEPARATOR), className.length - 1); - } - static getClassPackage(className) { - if (isAnyMissing(className)) { - return ''; - } - return className.substring(0, className.lastIndexOf(PACKAGE_SEPARATOR)); - } - static getWire(br, name) { - if (isAllPresent(br.getWiring())) { - const wires = br.getWiring().getRequiredWires(null); - if (isAllPresent(wires)) { - for (const w of wires) { - if (w.getCapability().getNamespace() === PACKAGE_NAMESPACE && - w.getCapability().getAttributes()[PACKAGE_NAMESPACE] === name) { - return w; - } - } - } - } - return undefined; - } - static getPackageCapability(br, name) { - if (isAllPresent(br.getWiring())) { - const capabilities = br.getWiring().getCapabilities(null); - if (isAllPresent(capabilities)) { - for (const c of capabilities) { - if (c.getNamespace() === PACKAGE_NAMESPACE && c.getAttributes()[PACKAGE_NAMESPACE] === name) { - return c; - } - } - } - } - return undefined; - } -} - -class ServiceRegistrationImpl { - registry; - bundle; - classes; - serviceId; - svcObj; - factory; - propMap; - ref; - isUnregistering = false; - constructor(registry, bundle, classNames, serviceId, svcObj, dict) { - this.registry = registry; - this.bundle = bundle; - this.classes = classNames; - this.serviceId = serviceId; - this.svcObj = svcObj; - this.factory = isAllPresent(this.svcObj.factoryType) ? this.svcObj : undefined; - this.propMap = dict; - this.initializeProperties(dict); - this.ref = new ServiceReferenceImpl(this, bundle); - } - isValid() { - return isAllPresent(this.svcObj); - } - invalidate() { - this.svcObj = null; - } - getUsingBundles(ref) { - return this.registry.getUsingBundles(ref); - } - getService(acqBundle) { - if (this.factory) { - return this.getFactoryUnchecked(acqBundle); - } - return this.svcObj; - } - ungetService(relBundle, svcObj) { - if (this.factory) { - try { - this.ungetFactoryUnchecked(relBundle, svcObj); - } - catch (e) { - this.registry - .getLogger() - .error('ServiceRegistrationImpl: Error ungetting service.', e); - } - } - } - getReference() { - if (!this.isValid()) { - throw new Error('The service registration is no longer valid for class(es): ' + JSON.stringify(this.classes)); - } - return this.ref; - } - setProperties(properties) { - let oldProps; - if (!this.isValid()) { - throw new Error('The service registration is no longer valid for class(es): ' + JSON.stringify(this.classes)); - } - oldProps = this.propMap; - this.initializeProperties(properties); - this.registry.servicePropertiesModified(this, { ...oldProps }); - } - unregister() { - if (!this.isValid() || this.isUnregistering) { - throw new Error('Service already unregistered.'); - } - this.isUnregistering = true; - // TODO: re-introduce - this.registry.unregisterService(this.bundle, this); - this.svcObj = null; - this.factory = null; - } - getProperty(key) { - return this.propMap[key]; - } - getProperties() { - return this.propMap; - } - getPropertyKeys() { - return Object.keys(this.propMap || {}); - } - getFactoryUnchecked(bundle) { - return this.factory.getService(bundle, this); - } - ungetFactoryUnchecked(bundle, svcObj) { - this.factory.ungetService(bundle, this, svcObj); - } - initializeProperties(dict) { - const props = {}; - if (isAllPresent(dict)) { - Object.assign(props, { ...dict }); - } - props[OBJECTCLASS] = this.classes; - props[SERVICE_ID] = this.serviceId; - props[SERVICE_BUNDLEID] = this.bundle.getBundleId(); - if (this.factory) { - props[SERVICE_SCOPE] = this.factory.factoryType === 'prototype' ? SCOPE_PROTOTYPE : SCOPE_BUNDLE; - } - else { - props[SERVICE_SCOPE] = SCOPE_SINGLETON; - } - this.propMap = props; - } -} - -class UsageCountImpl { - ref; - service; - count = 0; - serviceObjectsCount = 0; - isProto; - constructor(ref, isPrototype = false) { - this.ref = ref; - this.isProto = isPrototype; - } - getReference() { - return this.ref; - } - getCount() { - return this.count; - } - getServiceObjectsCount() { - return this.serviceObjectsCount; - } - incrementToPositiveValue() { - if (this.count + 1 < 1) { - return (this.count = 1); - } - this.count++; - return this.count; - } - incrementServiceObjectsCountToPositiveValue() { - if (this.serviceObjectsCount <= 0) { - return (this.serviceObjectsCount = 1); - } - this.serviceObjectsCount++; - return this.serviceObjectsCount; - } - incrementAndGet() { - return ++this.count; - } - decrementAndGet() { - return --this.count; - } - serviceObjectsDecrementAndGet() { - return --this.serviceObjectsCount; - } - getService() { - return this.service; - } - setService(service) { - this.service = service; - } - isPrototype() { - return this.isProto; - } -} - -class ServiceRegistryImpl { - logger; - callbacks; - regsMap = new Map(); - regCapSet = new CapabilitySet([OBJECTCLASS]); - inUseMap = new Map(); - currentServiceId = 0; - constructor(logger, callbacks) { - this.logger = logger; - this.callbacks = callbacks; - } - getRegisteredServices(bundle) { - const regs = this.regsMap.get(bundle); - if (isAllPresent(regs)) { - const refs = []; - for (const reg of regs) { - try { - refs.push(reg.getReference()); - } - catch (ex) { - // Don't include the reference as it is not valid anymore - } - } - return refs; - } - return []; - } - getService(bundle, ref, isServiceObjects = false) { - const isPrototype = isServiceObjects && ref.getProperty(SERVICE_SCOPE) === SCOPE_PROTOTYPE; - let usage; - let svcObj; - const reg = ref.getRegistration(); - try { - if (reg.isValid()) { - // Get the usage count, or create a new one. If this is a prototype, then we'll always create a new one. - usage = this.obtainUsageCount(bundle, ref, undefined, isPrototype); - usage.incrementToPositiveValue(); - svcObj = usage.getService(); - if (isAnyMissing(svcObj)) { - svcObj = reg.getService(bundle); - usage.setService(svcObj); - } - if (isServiceObjects) { - usage.incrementServiceObjectsCountToPositiveValue(); - } - if (isAllPresent(usage) && isPrototype) { - const existingUsage = this.obtainUsageCount(bundle, ref, svcObj); - if (existingUsage && existingUsage !== usage) { - this.flushUsageCount(bundle, ref, usage); - usage = existingUsage; - usage.incrementToPositiveValue(); - if (isServiceObjects) { - usage.incrementServiceObjectsCountToPositiveValue(); - } - } - } - } - } - finally { - if (!reg.isValid() || isAnyMissing(svcObj)) { - this.flushUsageCount(bundle, ref, usage); - } - } - return svcObj; - } - servicePropertiesModified(reg, oldProps) { - if (isAllPresent(this.callbacks)) { - this.callbacks.serviceChanged(new ServiceEventImpl('MODIFIED', reg.getReference()), oldProps); - } - } - getServiceReferences(identifier, filter) { - let filterEffective = filter; - if (isAnyMissing(identifier) && isAnyMissing(filter)) { - filterEffective = new Filter(null, FilterComp.MATCH_ALL, null); - } - else if (isAllPresent(identifier) && isAnyMissing(filter)) { - filterEffective = new Filter(OBJECTCLASS, FilterComp.EQ, identifier); - } - else if (isAllPresent(identifier) && isAllPresent(filter)) { - const filters = []; - filters.push(new Filter(OBJECTCLASS, FilterComp.EQ, identifier)); - filters.push(filter); - filterEffective = new Filter(null, FilterComp.AND, null, filters); - } - return Array.from(this.regCapSet.match(filterEffective, false)); - } - getUsingBundles(ref) { - let bundles = []; - for (const bundle of this.inUseMap.keys()) { - const usages = this.inUseMap.get(bundle); - for (const usage of usages) { - if (usage.getReference().compareTo(ref) === 0 && usage.getCount() > 0) { - if (isAnyMissing(bundles)) { - bundles = [bundle]; - } - else { - bundles.push(bundle); - } - } - } - } - return bundles; - } - registerService(bundle, classNames, svcObj, dict) { - const reg = new ServiceRegistrationImpl(this, bundle, classNames, ++this.currentServiceId, svcObj, dict); - if (!this.regsMap.has(bundle)) { - this.regsMap.set(bundle, []); - } - const regs = this.regsMap.get(bundle); - // TODO: implement check if same service gets registered or not! - if (!regs.find((r) => r.getReference().getProperty(SERVICE_ID) === reg.getReference().getProperty(SERVICE_ID))) { - regs.push(reg); - } - else { - this.logger.warn(`Service already registered, skipping! (${reg.getReference().getProperty(SERVICE_ID)})`); - } - this.regCapSet.addCapability(reg.getReference()); - return reg; - } - unregisterService(bundle, reg) { - const regs = this.regsMap.get(bundle); - if (isAllPresent(regs)) { - const remIdx = regs.findIndex((r) => r === reg); - if (remIdx > -1) { - regs.splice(remIdx, 1); - } - } - this.regCapSet.removeCapability(reg.getReference()); - if (isAllPresent(this.callbacks)) { - this.callbacks.serviceChanged(new ServiceEventImpl('UNREGISTERING', reg.getReference()), null); - } - const ref = reg.getReference(); - this.ungetServicesByRef(ref); - reg.invalidate(); - this.ungetServicesByRef(ref); - for (const bundle of this.inUseMap.keys()) { - this.flushUsageCount(bundle, ref); - } - } - ungetService(bundle, ref, svcObj) { - const reg = ref.getRegistration(); - try { - const usage = this.obtainUsageCount(bundle, ref, svcObj); - if (isAnyMissing(usage)) { - return false; - } - if (isAllPresent(svcObj)) { - if (usage.decrementAndGet() < 0) { - return false; - } - } - const count = usage.decrementAndGet(); - try { - if (count <= 0) { - const svc = usage.getService(); - if (isAllPresent(svc)) { - usage.setService(null); - if (usage.getCount() <= 0) { - // Temporarily increase the usage again so that the service factory still sees the usage in the unget - usage.incrementToPositiveValue(); - try { - // Remove reference from usages array. - reg.ungetService(bundle, svc); - } - finally { - // now we can decrease the usage again - usage.decrementAndGet(); - } - } - } - } - return usage.getCount() >= 0; - } - finally { - if (!reg.isValid()) { - usage.setService(null); - } - if (!reg.isValid() || (count <= 0 && isAllPresent(svcObj))) { - this.flushUsageCount(bundle, ref, usage); - } - } - } - finally { - // no-nop - } - } - /** - * Utility method to flush the specified bundle's usage count for the specified service reference. This should be - * called to completely remove the associated usage count object for the specified service reference. If the goal is - * to simply decrement the usage, then get the usage count and decrement its counter. This method will also remove - * the specified bundle from the "in use" map if it has no more usage counts after removing the usage count for the - * specified service reference. - **/ - flushUsageCount(bundle, ref, uc) { - const usages = this.inUseMap.get(bundle) || []; - let processUsage = true; - while (processUsage === true) { - const usageIdx = usages.findIndex((usage) => (isAnyMissing(uc) && usage.getReference().compareTo(ref) === 0) || uc === usage); - if (usageIdx > -1) { - usages.splice(usageIdx, 1); - } - else { - processUsage = false; - } - } - if (usages.length === 0) { - this.inUseMap.delete(bundle); - } - } - /** - * Obtain a UsageCount object, by looking for an existing one or creating a new one (if possible). This method tries - * to find a UsageCount object in the {@code inUseMap}. If one is found then this is returned, otherwise a UsageCount - * object will be created, but this can only be done if the {@code isPrototype} parameter is not {@code undefined}. - * If {@code isPrototype} is {@code TRUE} then a new UsageCount object will always be created. - */ - obtainUsageCount(bundle, ref, svcObj, isPrototype = false) { - let usage = null; - const usages = this.inUseMap.get(bundle); - if (isPrototype === false && isAllPresent(usages)) { - for (const usage of usages) { - if (usage.getReference().compareTo(ref) === 0 && - ((isAnyMissing(svcObj) && !usage.isPrototype()) || usage.getService() === svcObj)) { - return usage; - } - } - } - // if (isAnyMissing(isPrototype)) { - // return undefined; - // } - usage = new UsageCountImpl(ref, isPrototype); - if (isAnyMissing(usages)) { - const newUsages = [usage]; - this.inUseMap.set(bundle, newUsages); - } - else { - usages.push(usage); - } - return usage; - } - unregisterServices(bundle) { - const regs = this.regsMap.get(bundle); - this.regsMap.delete(bundle); - if (isAllPresent(regs)) { - for (const reg of regs) { - if (reg.isValid()) { - try { - reg.unregister(); - } - catch (ex) { - // Ignore exception if the service has already been unregistered - } - } - } - } - } - ungetServices(bundle) { - const usages = this.inUseMap.get(bundle); - if (isAnyMissing(usages)) { - return; - } - for (const usage of usages) { - // Keep ungetting until all usage count is zero. - while (this.ungetService(bundle, usage.getReference(), usage.isPrototype() ? usage.getService() : null)) { - // Empty loop body. - } - } - } - ungetServicesByRef(ref) { - const clients = this.getUsingBundles(ref); - for (const client of clients) { - const usages = this.inUseMap.get(client); - for (const usage of usages) { - if (usage.getReference().compareTo(ref) === 0) { - this.ungetService(client, ref, usage.isPrototype() ? usage.getService() : null); - } - } - } - } - getLogger() { - return this.logger; - } - getInUseMap(bundle) { - return this.inUseMap.get(bundle); - } -} - -class FrameworkEventImpl { - type; - bundle; - error; - constructor(type, bundle, error) { - this.type = type; - this.bundle = bundle; - this.error = error; - } - getBundle() { - return this.bundle; - } - getType() { - return this.type; - } - getError() { - return this.error; - } - toString() { - return `${this.bundle.getUniqueIdentifier()} changed state to: ${this.type}.`; - } -} - -/* istanbul ignore file */ -class ConsoleLogger { - level; - constructor(level = LogLevel.DEBUG) { - this.level = level; - } - debug(...data) { - if (this.level - LogLevel.DEBUG >= 0) { - console.debug(new Date().toISOString(), '[DEBUG]', ...data); - } - } - error(...data) { - if (this.level - LogLevel.ERROR >= 0) { - console.error(new Date().toISOString(), '[ERROR]', ...data); - } - } - info(...data) { - if (this.level - LogLevel.INFO >= 0) { - console.info(new Date().toISOString(), '[INFO]', ...data); - } - } - log(...data) { - if (this.level - LogLevel.LOG >= 0) { - console.log(new Date().toISOString(), '[LOG]', ...data); - } - } - trace(...data) { - if (this.level - LogLevel.TRACE >= 0) { - console.trace(new Date().toISOString(), '[TRACE]', ...data); - } - } - warn(...data) { - if (this.level - LogLevel.WARN >= 0) { - console.warn(new Date().toISOString(), '[WARN]', ...data); - } - } - setLogLevel(level) { - this.level = level; - } -} - -/* istanbul ignore file */ -class VoidFetcher { - fetch(deploymentRoot, uri) { - return Promise.reject(`Will not fetch ${uri}! Please provide explicit Fetcher for Pandino!`); - } -} - -/* istanbul ignore file */ -class VoidImporter { - import(activatorLocation, manifestLocation, deploymentRoot) { - return Promise.reject(`Will not import ${activatorLocation}! Please provide an explicit Importer for Pandino!`); - } -} - -class FilterParserImpl { - parse(filter) { - return Filter.parse(filter); - } -} - -class SemverFactoryImpl { - build(version) { - return new SemVerImpl(version); - } -} - -class EsmActivatorResolver { - resolve(module, bundleHeaders) { - return module.default; - } -} - -class Pandino extends BundleImpl { - fetcher; - importer; - configMap = new Map(); - bundles = []; - activatorsList = []; - dispatcher; - resolver; - registry; - nextId = 1; - constructor(configMap) { - const deploymentRoot = configMap[DEPLOYMENT_ROOT_PROP]; - const logger = isAllPresent(configMap[LOG_LOGGER_PROP]) ? configMap[LOG_LOGGER_PROP] : new ConsoleLogger(); - const fetcher = isAllPresent(configMap[PANDINO_MANIFEST_FETCHER_PROP]) - ? configMap[PANDINO_MANIFEST_FETCHER_PROP] - : new VoidFetcher(); - const importer = isAllPresent(configMap[PANDINO_BUNDLE_IMPORTER_PROP]) - ? configMap[PANDINO_BUNDLE_IMPORTER_PROP] - : new VoidImporter(); - logger.setLogLevel(configMap[LOG_LEVEL_PROP] || LogLevel.LOG); - if (!configMap[PANDINO_ACTIVATOR_RESOLVERS]) { - // @ts-ignore - configMap[PANDINO_ACTIVATOR_RESOLVERS] = { - esm: new EsmActivatorResolver(), - }; - } - if (!configMap[PANDINO_ACTIVATOR_RESOLVERS].esm) { - configMap[PANDINO_ACTIVATOR_RESOLVERS].esm = new EsmActivatorResolver(); - } - super(logger, 0, { - [BUNDLE_SYMBOLICNAME]: SYSTEM_BUNDLE_SYMBOLICNAME, - [BUNDLE_VERSION]: '0.1.0', - [BUNDLE_NAME]: 'Pandino Framework', - }, '', deploymentRoot); - this.fetcher = fetcher; - this.importer = importer; - Object.keys(configMap).forEach((configKey) => { - this.configMap.set(configKey, configMap[configKey]); - }); - if (deploymentRoot) { - this.configMap.set(DEPLOYMENT_ROOT_PROP, deploymentRoot); - } - this.activatorsList = this.configMap.get(SYSTEMBUNDLE_ACTIVATORS_PROP) || []; - this.registry = new ServiceRegistryImpl(this.logger, ((pandino) => new (class { - serviceChanged(event, oldProps) { - pandino.fireServiceEvent(event, oldProps); - } - })())(this)); - this.resolver = new StatefulResolver(this.logger, this, this.registry); - this.dispatcher = new EventDispatcher(this.logger); - const rev = new BundleRevisionImpl(this, '0', { - [BUNDLE_SYMBOLICNAME]: SYSTEM_BUNDLE_SYMBOLICNAME, - [BUNDLE_VERSION]: '0.1.0', - [BUNDLE_NAME]: 'Pandino Framework', - }); - this.addRevision(rev); - } - getBundleId() { - return 0; - } - getFramework() { - return this; - } - getSymbolicName() { - return this.getHeaders()[BUNDLE_SYMBOLICNAME]; - } - getVersion() { - return new SemVerImpl(this.getHeaders()[BUNDLE_VERSION]); - } - async start() { - try { - if (this.getState() === 'INSTALLED') { - await this.init(); - } - if (this.getState() === 'STARTING') { - this.getBundleContext().registerService(FRAMEWORK_LOGGER, this.logger); - this.getBundleContext().registerService(FRAMEWORK_MANIFEST_FETCHER, this.fetcher); - this.getBundleContext().registerService(FRAMEWORK_BUNDLE_IMPORTER, this.importer); - this.getBundleContext().registerService(FRAMEWORK_FILTER_PARSER, new FilterParserImpl()); - this.getBundleContext().registerService(FRAMEWORK_SEMVER_FACTORY, new SemverFactoryImpl()); - this.setBundleStateAndNotify(this, 'ACTIVE'); - } - } - catch (err) { - this.logger.error(err); - } - this.fireBundleEvent('STARTED', this); - this.fireFrameworkEvent('STARTED', this); - } - async init(...listeners) { - try { - if (this.getState() === 'INSTALLED') { - this.setBundleContext(new BundleContextImpl(this.logger, this, this)); - this.setState('STARTING'); - for (const listener of listeners) { - this.addFrameworkListener(this, listener); - } - // try { - // await this.getActivator().start(this.getBundleContext()); - // } catch (ex) { - // throw new Error('Unable to start system bundle.'); - // } - } - } - catch (err) { - await this.stopBundle(this); - this.setState('INSTALLED'); - } - } - async installBundle(origin, locationOrHeaders) { - if (this.getState() === 'STOPPING' || this.getState() === 'UNINSTALLED') { - throw new Error('The framework has been shutdown.'); - } - const resolvedHeaders = typeof locationOrHeaders === 'string' - ? await this.fetcher.fetch(locationOrHeaders, this.getDeploymentRoot()) - : locationOrHeaders; - let bundle; - let existing = this.isBundlePresent(resolvedHeaders); - if (!existing) { - const id = this.getNextId(); - // FIXME: this could cause issues for loading JS via explicit Header spec! - const manifestLocation = typeof locationOrHeaders === 'string' ? locationOrHeaders : ''; - bundle = new BundleImpl(this.logger, id, resolvedHeaders, manifestLocation, this.getDeploymentRoot(), this, origin); - this.bundles.push(bundle); - this.fireBundleEvent('INSTALLED', bundle, origin); - this.logger.info(`Installed Bundle: ${resolvedHeaders[BUNDLE_SYMBOLICNAME]}: ${resolvedHeaders[BUNDLE_VERSION]}`); - await this.resolver.resolveOne(bundle.getCurrentRevision()); - return bundle; - } - else { - try { - await this.updateBundle(existing, resolvedHeaders, origin); - await this.resolver.resolveOne(existing.getCurrentRevision()); - return existing; - } - catch (err) { - this.logger.error(err); - } - } - } - async updateBundle(bundle, headers, origin) { - if (bundle.getState() === 'STARTING' || bundle.getState() === 'STOPPING') { - throw new Error('Bundle ' + bundle.getUniqueIdentifier() + ' cannot be updated, since it is either STARTING or STOPPING.'); - } - let rethrow; - const oldState = bundle.getState(); - if (oldState === 'ACTIVE') { - await this.stopBundle(bundle); - } - try { - bundle.revise(headers); - } - catch (ex) { - this.logger.error('Unable to update the bundle.', ex); - rethrow = ex; - } - if (isAnyMissing(rethrow)) { - this.setBundleStateAndNotify(bundle, 'INSTALLED'); - this.fireBundleEvent('UNRESOLVED', bundle, origin); - this.fireBundleEvent('UPDATED', bundle, origin); - } - if (oldState === 'ACTIVE') { - await this.startBundle(bundle); - } - return bundle; - } - async startBundle(bundle) { - this.logger.info(`Starting Bundle: ${bundle.getSymbolicName()}: ${bundle.getVersion()}`); - let rethrow; - const validStates = ['INSTALLED']; - if (!validStates.includes(bundle.getState())) { - throw new Error(`Cannot start ${bundle.getUniqueIdentifier()}, because it\'s not in any of the valid states: ${validStates.join(', ')}.`); - } - bundle.setBundleContext(new BundleContextImpl(this.logger, bundle, this)); - this.setBundleStateAndNotify(bundle, 'STARTING'); - try { - const revision = bundle.getCurrentRevision(); - if (isAllPresent(revision.getWiring()) || this.resolver.createWiringForRevision(revision)) { - await this.activateBundle(bundle, false); - } - } - catch (ex) { - rethrow = ex; - this.logger.error(`Error while starting Bundle: ${bundle.getSymbolicName()}: ${bundle.getVersion()}`, ex); - } - if (bundle.getState() === 'ACTIVE') { - this.fireBundleEvent('STARTED', bundle); - this.logger.info(`Started Bundle: ${bundle.getSymbolicName()}: ${bundle.getVersion()}`); - await this.resolver.resolveRemaining(); - } - else { - bundle.setState('INSTALLED'); - this.fireBundleEvent('STOPPED', bundle); - if (rethrow) { - throw rethrow; - } - } - } - async activateBundle(bundle, fireEvent) { - this.logger.info(`Activating Bundle: ${bundle.getSymbolicName()}: ${bundle.getVersion()}`); - if (bundle.getState() === 'ACTIVE') { - return; - } - let rethrow = null; - try { - const activator = await this.createBundleActivator(bundle); - bundle.setActivator(activator); - } - catch (th) { - rethrow = th; - } - try { - this.fireBundleEvent('STARTING', bundle); - if (isAllPresent(rethrow)) { - throw rethrow; - } - if (isAllPresent(bundle.getActivator())) { - await bundle.getActivator().start(bundle.getBundleContext()); - } - this.setBundleStateAndNotify(bundle, 'ACTIVE'); - if (fireEvent) { - this.fireBundleEvent('STARTED', bundle); - } - } - catch (th) { - this.logger.error(th); - this.fireBundleEvent('STOPPING', bundle); - this.setBundleStateAndNotify(bundle, 'INSTALLED'); - bundle.setActivator(null); - const bci = bundle.getBundleContext(); - bci.invalidate(); - bci.closeTrackers(); - bundle.setBundleContext(null); - this.registry.unregisterServices(bundle); - this.registry.ungetServices(bundle); - this.dispatcher.removeListeners(bci); - // Rethrow all other exceptions as a BundleException. - throw new Error('Activator start error in bundle ' + bundle + ': ' + th); - } - } - async stopBundle(bundle) { - try { - let error; - let wasActive = false; - switch (bundle.getState()) { - case 'UNINSTALLED': - throw new Error('Cannot stop an uninstalled bundle.'); - case 'STARTING': - case 'STOPPING': - throw new Error('Stopping a starting or stopping bundle is currently not supported.'); - case 'INSTALLED': - return; - case 'ACTIVE': - wasActive = true; - break; - } - this.logger.info(`Stopping Bundle: ${bundle.getUniqueIdentifier()}...`); - bundle.setState('STOPPING'); - this.fireBundleEvent('STOPPING', bundle); - if (wasActive || bundle.getBundleId() === 0) { - try { - if (typeof bundle.getActivator()?.stop === 'function') { - await bundle.getActivator().stop(bundle.getBundleContext()); - } - } - catch (err) { - error = err; - } - } - if (bundle.getBundleId() !== 0) { - bundle.setActivator(null); - const bci = bundle.getBundleContext(); - bci.invalidate(); - bci.closeTrackers(); - bundle.setBundleContext(null); - // Unregister any services offered by this bundle. - this.registry.unregisterServices(bundle); - // Release any services being used by this bundle. - this.registry.ungetServices(bundle); - // The spec says that we must remove all event listeners for a bundle when it is stopped. - this.dispatcher.removeListeners(bci); - // tear down wires where bundle was a requirement for others - bundle.getCurrentRevision().resolve(undefined); - bundle.setState('INSTALLED'); - } - if (!!error) { - throw new Error('Activator stop error in bundle ' + bundle + ': ' + error); - } - } - finally { - } - for (const requirer of this.resolver.getActiveRequirers(bundle)) { - await this.stopBundle(requirer); - } - this.logger.info(`Stopped Bundle: ${bundle.getUniqueIdentifier()}...`); - this.fireBundleEvent('STOPPED', bundle); - } - getBundle(id) { - return this.bundles.find((b) => b.getBundleId() === id); - } - isBundlePresent(headers) { - return this.bundles.find((b) => b.getSymbolicName() === headers[BUNDLE_SYMBOLICNAME]); - } - fireBundleEvent(type, bundle, origin) { - this.dispatcher.fireBundleEvent(new BundleEventImpl(bundle, type, origin), this); - } - fireFrameworkEvent(type, bundle, error) { - this.dispatcher.fireFrameworkEvent(new FrameworkEventImpl(type, bundle, error), this); - } - getProperty(key) { - return this.configMap.get(key); - } - getBundles(bc) { - return [...this.bundles]; - } - addBundleListener(bundle, l) { - this.dispatcher.addListener(bundle.getBundleContext(), 'BUNDLE', l, null); - } - removeBundleListener(bundle, l) { - this.dispatcher.removeListener(bundle.getBundleContext(), 'BUNDLE', l); - } - addServiceListener(bundle, listener, filter) { - const newFilter = isAnyMissing(filter) ? null : Filter.parse(filter); - this.dispatcher.addListener(bundle.getBundleContext(), 'SERVICE', listener, newFilter); - } - removeServiceListener(bundle, l) { - this.dispatcher.removeListener(bundle.getBundleContext(), 'SERVICE', l); - } - addFrameworkListener(bundle, l) { - this.dispatcher.addListener(bundle.getBundleContext(), 'FRAMEWORK', l, null); - } - removeFrameworkListener(bundle, l) { - this.dispatcher.removeListener(bundle.getBundleContext(), 'FRAMEWORK', l); - } - getConfig() { - return this.configMap; - } - getActivatorsList() { - return this.activatorsList; - } - fireServiceEvent(event, oldProps) { - this.dispatcher.fireServiceEvent(event, oldProps); - } - setBundleStateAndNotify(bundle, state) { - bundle.setState(state); - } - getResolver() { - return this.resolver; - } - async uninstallBundle(bundle) { - this.logger.info(`Uninstalling Bundle: ${bundle.getUniqueIdentifier()}...`); - const desiredStates = ['INSTALLED', 'STARTING', 'ACTIVE', 'STOPPING']; - if (!desiredStates.includes(bundle.getState())) { - if (bundle.getState() === 'UNINSTALLED') { - throw new Error('Cannot uninstall an uninstalled bundle.'); - } - else { - throw new Error(`Bundle ${bundle.getUniqueIdentifier()} cannot be uninstalled because it is in an undesired state: ${bundle.getState()}`); - } - } - if (bundle.getState() === 'STARTING' || bundle.getState() === 'STOPPING') { - throw new Error('Bundle ' + bundle.getUniqueIdentifier() + ' cannot be uninstalled, since it is either STARTING or STOPPING.'); - } - let errored = null; - if (bundle.getState() === 'ACTIVE') { - try { - await this.stopBundle(bundle); - } - catch (err) { - this.logger.error(`Error stopping bundle: ${bundle.getUniqueIdentifier()}`, err); - this.fireFrameworkEvent('ERROR', bundle, err); - errored = err; - } - } - this.fireBundleEvent('UNRESOLVED', bundle); - if (!errored) { - bundle.setState('UNINSTALLED'); - this.fireBundleEvent('UNINSTALLED', bundle); - this.logger.info(`Uninstalled bundle: ${bundle.getUniqueIdentifier()}`); - } - } - getAllowedServiceReferences(bundle, className, expr, checkAssignable = false) { - const refs = this.getServiceReferences(bundle, className, expr, checkAssignable); - return isAnyMissing(refs) ? [] : [...refs]; - } - getServiceReferences(bundle, className, expr, checkAssignable = false) { - let filter = null; - if (isAllPresent(expr)) { - filter = Filter.parse(expr); - } - const refList = this.registry.getServiceReferences(className, filter); - const effectiveRefList = []; - if (checkAssignable) { - for (const ref of refList) { - if (Pandino.isServiceAssignable(bundle, ref)) { - effectiveRefList.push(ref); - } - } - } - if (effectiveRefList.length > 0) { - return effectiveRefList; - } - return []; - } - getNextId() { - const n = this.nextId; - this.nextId++; - return n; - } - async createBundleActivator(impl) { - let activator = null; - let headerMap = impl.getHeaders(); - let activatorDefinition = headerMap[BUNDLE_ACTIVATOR]; - if (isAnyMissing(activatorDefinition)) { - throw new Error('Missing mandatory Bundle Activator!'); - } - else if (typeof activatorDefinition === 'string') { - this.logger.debug(`Attempting to load Activator from: ${activatorDefinition}`); - let activatorInstance; - const activatorModule = await this.importer.import(activatorDefinition, impl.getLocation(), impl.getDeploymentRoot()); - const bundleType = impl.getHeaders()[BUNDLE_TYPE] || 'esm'; - if (bundleType !== 'esm' && bundleType !== 'umd') { - throw new Error(`Unsupported Bundle Type: ${bundleType}!`); - } - const activatorResolver = this.configMap.get(PANDINO_ACTIVATOR_RESOLVERS)[bundleType]; - if (!activatorResolver) { - throw new Error(`No ActivatorResolver can be found in configuration for BundleType: ${bundleType}!`); - } - activatorInstance = activatorResolver.resolve(activatorModule, impl.getHeaders()); - if (!activatorInstance) { - throw new Error(`Activator for ${impl - .getCurrentRevision() - .getSymbolicName()} could not be loaded! Resolver probably returned undefined. Please check corresponding ActivatorResolver!`); - } - activator = - typeof activatorInstance === 'function' ? new activatorInstance() : activatorInstance; - } - else { - return impl.getActivator(); - } - return activator; - } - static isServiceAssignable(requester, ref) { - let allow = true; - const objectClass = ref.getProperty(OBJECTCLASS); - if (Array.isArray(objectClass)) { - for (let classIdx = 0; allow && classIdx < objectClass.length; classIdx++) { - if (!ref.isAssignableTo(requester, objectClass[classIdx])) { - allow = false; - } - } - } - else { - if (!ref.isAssignableTo(requester, objectClass)) { - allow = false; - } - } - return allow; - } - getService(bundle, ref, isServiceObjects) { - try { - return this.registry.getService(bundle, ref, isServiceObjects); - } - catch (ex) { - this.fireFrameworkEvent('ERROR', bundle, ex); - } - return undefined; - } - ungetService(bundle, ref, srvObj) { - return this.registry.ungetService(bundle, ref, srvObj); - } - registerService(context, identifier, svcObj, dict) { - let reg = this.registry.registerService(context.getBundle(), identifier, svcObj, dict); - this.fireServiceEvent(new ServiceEventImpl('REGISTERED', reg.getReference()), {}); - return reg; - } - getLocation() { - return SYSTEM_BUNDLE_LOCATION; - } - getBundleRegisteredServices(bundle) { - if (bundle.getState() === 'UNINSTALLED') { - throw new Error('The bundle is uninstalled.'); - } - return this.registry.getRegisteredServices(bundle); - } -} - -export { Pandino as default }; diff --git a/examples/umd-bundle-ts/webpack.config.js b/examples/umd-bundle-ts/webpack.config.js index 690d614d..2643ce6a 100644 --- a/examples/umd-bundle-ts/webpack.config.js +++ b/examples/umd-bundle-ts/webpack.config.js @@ -32,6 +32,11 @@ module.exports = { new CopyPlugin({ patterns: [ { from: "public/" }, + { from: '../../node_modules/@pandino/pandino/dist/esm/pandino.mjs' }, + { from: '../../node_modules/@pandino/loader-configuration-dom/dist/esm/loader-configuration-dom.mjs' }, + { from: '../../node_modules/@pandino/umd-activator-resolver-dom/dist/esm/umd-activator-resolver-dom.mjs' }, + { from: '../../node_modules/@pandino/bundle-installer-dom/dist/esm/bundle-installer-dom.mjs' }, + { from: '../../node_modules/@pandino/bundle-installer-dom/dist/esm/bundle-installer-dom-manifest.json' }, ], }), ], diff --git a/package-lock.json b/package-lock.json index 793c0bd1..b688f157 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1818,6 +1818,10 @@ "resolved": "packages/@pandino/persistence-manager-memory", "link": true }, + "node_modules/@pandino/react-hooks": { + "resolved": "packages/@pandino/react-hooks", + "link": true + }, "node_modules/@pandino/rollup-plugin-generate-manifest": { "resolved": "packages/@pandino/rollup-plugin-generate-manifest", "link": true @@ -2104,12 +2108,44 @@ "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", "dev": true }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.0.28", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz", + "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.0.11", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.11.tgz", + "integrity": "sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@types/resolve": { "version": "1.20.2", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", "dev": true }, + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true + }, "node_modules/@types/stack-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", @@ -3612,6 +3648,12 @@ "node": ">=4" } }, + "node_modules/csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", + "dev": true + }, "node_modules/dargs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", @@ -6021,6 +6063,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "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==", + "dev": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, "node_modules/lru-cache": { "version": "7.16.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.16.1.tgz", @@ -7711,6 +7765,31 @@ "safe-buffer": "^5.1.0" } }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/react-is": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", @@ -8225,6 +8304,15 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0" + } + }, "node_modules/schema-utils": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", @@ -9970,6 +10058,21 @@ "node": ">=14.9.0" } }, + "packages/@pandino/react-hooks": { + "version": "0.8.22", + "license": "EPL-2.0", + "devDependencies": { + "@pandino/pandino-api": "^0.8.22", + "@pandino/rollup-plugin-generate-manifest": "^0.8.22", + "@types/react": "^18.0.26", + "@types/react-dom": "^18.0.9", + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "engines": { + "node": ">=14.9.0" + } + }, "packages/@pandino/rollup-plugin-generate-manifest": { "version": "0.8.22", "license": "EPL-2.0", diff --git a/packages/@pandino/bundle-installer-dom/package.json b/packages/@pandino/bundle-installer-dom/package.json index 5f27a68c..34db83c0 100644 --- a/packages/@pandino/bundle-installer-dom/package.json +++ b/packages/@pandino/bundle-installer-dom/package.json @@ -2,12 +2,12 @@ "name": "@pandino/bundle-installer-dom", "version": "0.8.22", "description": "Install Bundles defined in a browser's DOM", - "module": "./dist/bundle-installer-dom.mjs", - "types": "dist/dist/index.d.ts", + "module": "./dist/esm/bundle-installer-dom.mjs", + "types": "dist/esm/dist/index.d.ts", "type": "module", "exports": { ".": { - "default": "./dist/bundle-installer-dom.mjs" + "default": "./dist/esm/bundle-installer-dom.mjs" } }, "scripts": { diff --git a/packages/@pandino/bundle-installer-dom/rollup.config.js b/packages/@pandino/bundle-installer-dom/rollup.config.js index 3d4edbc6..36c05f8c 100644 --- a/packages/@pandino/bundle-installer-dom/rollup.config.js +++ b/packages/@pandino/bundle-installer-dom/rollup.config.js @@ -1,25 +1,20 @@ import clear from 'rollup-plugin-clear'; -import terser from '@rollup/plugin-terser'; import typescript from '@rollup/plugin-typescript'; import generateManifest from '@pandino/rollup-plugin-generate-manifest'; import nodeResolve from '@rollup/plugin-node-resolve'; - -const ENV = process.env.PRODUCTION ? 'PRODUCTION' : 'DEVELOPMENT'; +import {generateOutputs} from "../../../rollup/rollup-utils.mjs"; export default { input: 'src/index.ts', - output: { - sourcemap: ENV === 'PRODUCTION', - file: 'dist/bundle-installer-dom.mjs', - format: 'esm', - }, + output: [ + ...generateOutputs('bundle-installer-dom', ['esm', 'system']), + ], plugins: [ clear({ targets: ['dist'], }), nodeResolve(), typescript(), - ...[ENV === 'PRODUCTION' ? terser() : undefined], generateManifest(), ], }; diff --git a/packages/@pandino/bundle-installer-nodejs/package.json b/packages/@pandino/bundle-installer-nodejs/package.json index ed0f3d56..1447666e 100644 --- a/packages/@pandino/bundle-installer-nodejs/package.json +++ b/packages/@pandino/bundle-installer-nodejs/package.json @@ -2,14 +2,14 @@ "name": "@pandino/bundle-installer-nodejs", "version": "0.8.22", "description": "Install Bundles defined in the filesystem", - "main": "dist/cjs/bundle-installer-nodejs.js", - "module": "dist/esm/bundle-installer-nodejs.js", + "main": "dist/cjs/bundle-installer-nodejs.cjs", + "module": "dist/esm/bundle-installer-nodejs.mjs", "types": "dist/esm/dist/index.d.ts", "type": "module", "exports": { ".": { - "require": "./dist/cjs/bundle-installer-nodejs.js", - "default": "./dist/esm/bundle-installer-nodejs.js" + "require": "./dist/cjs/bundle-installer-nodejs.cjs", + "default": "./dist/esm/bundle-installer-nodejs.mjs" } }, "scripts": { diff --git a/packages/@pandino/bundle-installer-nodejs/rollup.config.js b/packages/@pandino/bundle-installer-nodejs/rollup.config.js index 4ac72e43..dd8efdeb 100644 --- a/packages/@pandino/bundle-installer-nodejs/rollup.config.js +++ b/packages/@pandino/bundle-installer-nodejs/rollup.config.js @@ -1,24 +1,13 @@ import clear from 'rollup-plugin-clear'; -import terser from '@rollup/plugin-terser'; import typescript from '@rollup/plugin-typescript'; import generateManifest from '@pandino/rollup-plugin-generate-manifest'; import nodeResolve from '@rollup/plugin-node-resolve'; - -const ENV = process.env.PRODUCTION ? 'PRODUCTION' : 'DEVELOPMENT'; +import {generateOutputs} from "../../../rollup/rollup-utils.mjs"; export default { input: 'src/index.ts', output: [ - { - sourcemap: ENV === 'PRODUCTION', - file: 'dist/esm/bundle-installer-nodejs.js', - format: 'esm', - }, - { - sourcemap: ENV === 'PRODUCTION', - file: 'dist/cjs/bundle-installer-nodejs.js', - format: 'cjs', - }, + ...generateOutputs('bundle-installer-nodejs', ['esm', 'cjs', 'system']), ], plugins: [ clear({ @@ -26,7 +15,6 @@ export default { }), nodeResolve(), typescript(), - ...[ENV === 'PRODUCTION' ? terser() : undefined], generateManifest(), ], }; diff --git a/packages/@pandino/configuration-management-api/rollup.config.js b/packages/@pandino/configuration-management-api/rollup.config.js index f8fde3a6..2b6f12ca 100644 --- a/packages/@pandino/configuration-management-api/rollup.config.js +++ b/packages/@pandino/configuration-management-api/rollup.config.js @@ -1,18 +1,12 @@ import clear from 'rollup-plugin-clear'; import typescript from '@rollup/plugin-typescript'; import nodeResolve from "@rollup/plugin-node-resolve"; +import {generateOutputs} from "../../../rollup/rollup-utils.mjs"; export default { input: 'src/index.ts', output: [ - { - file: 'dist/esm/configuration-management-api.mjs', - format: 'esm', - }, - { - file: 'dist/cjs/configuration-management-api.cjs', - format: 'cjs', - }, + ...generateOutputs('configuration-management-api', ['esm', 'cjs', 'system']), ], plugins: [ clear({ diff --git a/packages/@pandino/configuration-management/rollup.config.js b/packages/@pandino/configuration-management/rollup.config.js index 87a6180f..d6bfd7b5 100644 --- a/packages/@pandino/configuration-management/rollup.config.js +++ b/packages/@pandino/configuration-management/rollup.config.js @@ -1,24 +1,13 @@ import clear from 'rollup-plugin-clear'; -import terser from '@rollup/plugin-terser'; import typescript from '@rollup/plugin-typescript'; import generateManifest from '@pandino/rollup-plugin-generate-manifest'; import nodeResolve from '@rollup/plugin-node-resolve'; - -const ENV = process.env.PRODUCTION ? 'PRODUCTION' : 'DEVELOPMENT'; +import {generateOutputs} from "../../../rollup/rollup-utils.mjs"; export default { input: 'src/index.ts', output: [ - { - sourcemap: ENV === 'PRODUCTION', - file: 'dist/esm/configuration-management.mjs', - format: 'esm', - }, - { - sourcemap: ENV === 'PRODUCTION', - file: 'dist/cjs/configuration-management.cjs', - format: 'cjs', - }, + ...generateOutputs('configuration-management', ['esm', 'cjs', 'system']), ], plugins: [ clear({ @@ -26,7 +15,6 @@ export default { }), nodeResolve(), typescript(), - ...[ENV === 'PRODUCTION' ? terser() : undefined], generateManifest(), ], }; diff --git a/packages/@pandino/event-admin/rollup.config.js b/packages/@pandino/event-admin/rollup.config.js index 512d7ac5..509fc413 100644 --- a/packages/@pandino/event-admin/rollup.config.js +++ b/packages/@pandino/event-admin/rollup.config.js @@ -1,24 +1,13 @@ import clear from 'rollup-plugin-clear'; -import terser from '@rollup/plugin-terser'; import typescript from '@rollup/plugin-typescript'; import generateManifest from '@pandino/rollup-plugin-generate-manifest'; import nodeResolve from '@rollup/plugin-node-resolve'; - -const ENV = process.env.PRODUCTION ? 'PRODUCTION' : 'DEVELOPMENT'; +import {generateOutputs} from "../../../rollup/rollup-utils.mjs"; export default { input: 'src/index.ts', output: [ - { - sourcemap: ENV === 'PRODUCTION', - file: 'dist/esm/event-admin.mjs', - format: 'esm', - }, - { - sourcemap: ENV === 'PRODUCTION', - file: 'dist/cjs/event-admin.cjs', - format: 'cjs', - }, + ...generateOutputs('event-admin', ['esm', 'cjs', 'system']), ], plugins: [ clear({ @@ -26,7 +15,6 @@ export default { }), nodeResolve(), typescript(), - ...[ENV === 'PRODUCTION' ? terser() : undefined], generateManifest(), ], }; diff --git a/packages/@pandino/event-api/rollup.config.js b/packages/@pandino/event-api/rollup.config.js index 9963641f..756e886e 100644 --- a/packages/@pandino/event-api/rollup.config.js +++ b/packages/@pandino/event-api/rollup.config.js @@ -1,18 +1,12 @@ import clear from 'rollup-plugin-clear'; import typescript from '@rollup/plugin-typescript'; import nodeResolve from "@rollup/plugin-node-resolve"; +import {generateOutputs} from "../../../rollup/rollup-utils.mjs"; export default { input: 'src/index.ts', output: [ - { - file: 'dist/esm/event-api.mjs', - format: 'esm', - }, - { - file: 'dist/cjs/event-api.cjs', - format: 'cjs', - }, + ...generateOutputs('event-api', ['esm', 'cjs', 'system']), ], plugins: [ clear({ diff --git a/packages/@pandino/loader-configuration-dom/package.json b/packages/@pandino/loader-configuration-dom/package.json index 6192bfa5..076214d3 100644 --- a/packages/@pandino/loader-configuration-dom/package.json +++ b/packages/@pandino/loader-configuration-dom/package.json @@ -3,11 +3,11 @@ "version": "0.8.22", "description": "Bundle loading configuration for the DOM", "module": "./dist/loader-configuration-dom.mjs", - "types": "dist/dist/index.d.ts", + "types": "dist/esm/dist/index.d.ts", "type": "module", "exports": { ".": { - "default": "./dist/loader-configuration-dom.mjs" + "default": "./dist/esm/loader-configuration-dom.mjs" } }, "scripts": { diff --git a/packages/@pandino/loader-configuration-dom/rollup.config.js b/packages/@pandino/loader-configuration-dom/rollup.config.js index a5a635a6..b59f8973 100644 --- a/packages/@pandino/loader-configuration-dom/rollup.config.js +++ b/packages/@pandino/loader-configuration-dom/rollup.config.js @@ -1,32 +1,18 @@ import clear from 'rollup-plugin-clear'; -import terser from '@rollup/plugin-terser'; import typescript from '@rollup/plugin-typescript'; import nodeResolve from '@rollup/plugin-node-resolve'; - -const ENV = process.env.PRODUCTION ? 'PRODUCTION' : 'DEVELOPMENT'; +import {generateOutputs} from "../../../rollup/rollup-utils.mjs"; export default { input: 'src/index.ts', - output: { - sourcemap: ENV === 'PRODUCTION', - file: 'dist/loader-configuration-dom.mjs', - format: 'esm', - }, + output: [ + ...generateOutputs('loader-configuration-dom', ['esm', 'system'], { keepWebpackIgnore: true }), + ], plugins: [ clear({ targets: ['dist'], }), nodeResolve(), typescript(), - ...[ENV === 'PRODUCTION' ? terser({ - // All of this is so that we can keep the webpack ignore comment in source so that webpack does not - // error out for runtime imports... - format: { - comments: function (node, comment) { - const text = comment.value; - return /webpackIgnore/i.test(text); - }, - }, - }) : undefined], ], }; diff --git a/packages/@pandino/loader-configuration-nodejs/rollup.config.js b/packages/@pandino/loader-configuration-nodejs/rollup.config.js index 230b8285..8ad6f5ae 100644 --- a/packages/@pandino/loader-configuration-nodejs/rollup.config.js +++ b/packages/@pandino/loader-configuration-nodejs/rollup.config.js @@ -1,24 +1,13 @@ import clear from 'rollup-plugin-clear'; -import terser from '@rollup/plugin-terser'; import typescript from '@rollup/plugin-typescript'; import generateManifest from '@pandino/rollup-plugin-generate-manifest'; import nodeResolve from '@rollup/plugin-node-resolve'; - -const ENV = process.env.PRODUCTION ? 'PRODUCTION' : 'DEVELOPMENT'; +import {generateOutputs} from "../../../rollup/rollup-utils.mjs"; export default { input: 'src/index.ts', output: [ - { - sourcemap: ENV === 'PRODUCTION', - file: 'dist/esm/loader-configuration-nodejs.mjs', - format: 'esm', - }, - { - sourcemap: ENV === 'PRODUCTION', - file: 'dist/cjs/loader-configuration-nodejs.cjs', - format: 'cjs', - }, + ...generateOutputs('loader-configuration-nodejs', ['esm', 'cjs']), ], plugins: [ clear({ @@ -26,7 +15,6 @@ export default { }), nodeResolve(), typescript(), - ...[ENV === 'PRODUCTION' ? terser() : undefined], generateManifest(), ], }; diff --git a/packages/@pandino/log-api/rollup.config.js b/packages/@pandino/log-api/rollup.config.js index 568c3e30..adad323a 100644 --- a/packages/@pandino/log-api/rollup.config.js +++ b/packages/@pandino/log-api/rollup.config.js @@ -1,18 +1,12 @@ import clear from 'rollup-plugin-clear'; import typescript from '@rollup/plugin-typescript'; import nodeResolve from "@rollup/plugin-node-resolve"; +import {generateOutputs} from "../../../rollup/rollup-utils.mjs"; export default { input: 'src/index.ts', output: [ - { - file: 'dist/esm/log-api.mjs', - format: 'esm', - }, - { - file: 'dist/cjs/log-api.cjs', - format: 'cjs', - }, + ...generateOutputs('log-api', ['esm', 'cjs', 'system']), ], plugins: [ clear({ diff --git a/packages/@pandino/pandino-api/rollup.config.js b/packages/@pandino/pandino-api/rollup.config.js index daff54f4..b4bbdcb3 100644 --- a/packages/@pandino/pandino-api/rollup.config.js +++ b/packages/@pandino/pandino-api/rollup.config.js @@ -1,18 +1,12 @@ import clear from 'rollup-plugin-clear'; import typescript from '@rollup/plugin-typescript'; import nodeResolve from "@rollup/plugin-node-resolve"; +import {generateOutputs} from "../../../rollup/rollup-utils.mjs"; export default { input: 'src/index.ts', output: [ - { - file: 'dist/esm/pandino-api.mjs', - format: 'esm', - }, - { - file: 'dist/cjs/pandino-api.cjs', - format: 'cjs', - }, + ...generateOutputs('pandino-api', ['esm', 'cjs', 'system']), ], plugins: [ clear({ diff --git a/packages/@pandino/pandino-api/src/bundle/bundle-context.ts b/packages/@pandino/pandino-api/src/bundle/bundle-context.ts index 9d61cb07..f019ae5c 100644 --- a/packages/@pandino/pandino-api/src/bundle/bundle-context.ts +++ b/packages/@pandino/pandino-api/src/bundle/bundle-context.ts @@ -449,12 +449,12 @@ export interface BundleContext extends BundleReference { /** * Utility method to conveniently create a {@link ServiceTracker} instance for the current {@link BundleContext}. * - * @param {string | FilterApi} identifierOrFilter + * @param {string | FilterApi} filter * @param {Partial>} customizer * @return A {@link ServiceTracker} for the given tracking parameters */ trackService( - identifierOrFilter: string | FilterApi, + filter: string | FilterApi, customizer: Partial>, ): ServiceTracker; } diff --git a/packages/@pandino/pandino/rollup.config.js b/packages/@pandino/pandino/rollup.config.js index 8af1f286..c9f19606 100644 --- a/packages/@pandino/pandino/rollup.config.js +++ b/packages/@pandino/pandino/rollup.config.js @@ -1,23 +1,12 @@ import clear from 'rollup-plugin-clear'; -import terser from '@rollup/plugin-terser'; import typescript from '@rollup/plugin-typescript'; import nodeResolve from '@rollup/plugin-node-resolve'; - -const ENV = process.env.PRODUCTION ? 'PRODUCTION' : 'DEVELOPMENT'; +import {generateOutputs} from "../../../rollup/rollup-utils.mjs"; export default { input: 'src/index.ts', output: [ - { - sourcemap: ENV === 'PRODUCTION', - file: 'dist/esm/pandino.mjs', - format: 'esm', - }, - { - sourcemap: ENV === 'PRODUCTION', - file: 'dist/cjs/pandino.cjs', - format: 'cjs', - }, + ...generateOutputs('pandino', ['esm', 'cjs', 'system']), ], plugins: [ clear({ @@ -25,6 +14,5 @@ export default { }), nodeResolve(), typescript(), - ...[ENV === 'PRODUCTION' ? terser() : undefined], ], }; diff --git a/packages/@pandino/pandino/src/lib/framework/service-tracker-impl.test.ts b/packages/@pandino/pandino/src/lib/framework/service-tracker-impl.test.ts index 618bf9db..6b717e34 100644 --- a/packages/@pandino/pandino/src/lib/framework/service-tracker-impl.test.ts +++ b/packages/@pandino/pandino/src/lib/framework/service-tracker-impl.test.ts @@ -34,6 +34,7 @@ describe('ServiceTrackerImpl', () => { let pandino: Pandino; const SERVICE_IDENTIFIER = '@scope/test-service'; + const SERVICE_FILTER = `(${OBJECTCLASS}=${SERVICE_IDENTIFIER})`; const expectedBaseProps: ServiceProperties = { [OBJECTCLASS]: SERVICE_IDENTIFIER, [SERVICE_BUNDLEID]: 1, @@ -89,7 +90,7 @@ describe('ServiceTrackerImpl', () => { const removingData: [ServiceProperties?, TestService?] = []; const bundle1 = await installBundle(bundle1Headers); - const tracker = bundle1.getBundleContext().trackService(SERVICE_IDENTIFIER, { + const tracker = bundle1.getBundleContext().trackService(SERVICE_FILTER, { addingService(reference: ServiceReference): TestService { addingData.push({ ...reference.getProperties() }, service); return service; @@ -150,7 +151,7 @@ describe('ServiceTrackerImpl', () => { }; const removingData: [ServiceProperties?, TestService?] = []; const bundle1 = await installBundle(bundle1Headers); - const tracker = bundle1.getBundleContext().trackService(SERVICE_IDENTIFIER, { + const tracker = bundle1.getBundleContext().trackService(SERVICE_FILTER, { removedService(reference: ServiceReference, service: TestService) { removingData.push({ ...reference.getProperties() }, service); }, @@ -182,7 +183,7 @@ describe('ServiceTrackerImpl', () => { }; const addingData: [ServiceProperties?, TestService?] = []; const bundle1 = await installBundle(bundle1Headers); - const tracker = bundle1.getBundleContext().trackService(SERVICE_IDENTIFIER, { + const tracker = bundle1.getBundleContext().trackService(SERVICE_FILTER, { addingService(reference: ServiceReference): TestService { const service = super.addingService(reference); addingData.push({ ...reference.getProperties() }, service); @@ -252,7 +253,7 @@ describe('ServiceTrackerImpl', () => { test: () => true, }; const bundle1 = await installBundle(bundle1Headers); - const tracker = new ServiceTrackerImpl(bundle1.getBundleContext(), SERVICE_IDENTIFIER); + const tracker = new ServiceTrackerImpl(bundle1.getBundleContext(), SERVICE_FILTER); tracker.open(); tracker.open(); // second call skips open init logic diff --git a/packages/@pandino/pandino/src/lib/framework/service-tracker-impl.ts b/packages/@pandino/pandino/src/lib/framework/service-tracker-impl.ts index f1aea56a..5110f563 100644 --- a/packages/@pandino/pandino/src/lib/framework/service-tracker-impl.ts +++ b/packages/@pandino/pandino/src/lib/framework/service-tracker-impl.ts @@ -1,7 +1,6 @@ import { BundleContext, FilterApi, - OBJECTCLASS, SERVICE_ID, SERVICE_RANKING, ServiceEvent, @@ -18,23 +17,15 @@ export class ServiceTrackerImpl implements ServiceTracker { protected readonly context: BundleContext; protected readonly filter: FilterApi; private readonly listenerFilter: string; - private readonly identifier?: string; private tracked: Tracked; private cachedReference: ServiceReference; private cachedService: T; - constructor( - context: BundleContext, - identifierOrFilter: string | FilterApi, - customizer?: ServiceTrackerCustomizer, - ) { + constructor(context: BundleContext, filter: string | FilterApi, customizer?: ServiceTrackerCustomizer) { this.context = context; this.customizer = customizer || this; - this.listenerFilter = - typeof identifierOrFilter === 'string' ? `(${OBJECTCLASS}=${identifierOrFilter})` : identifierOrFilter.toString(); - this.identifier = typeof identifierOrFilter === 'string' ? identifierOrFilter : undefined; - this.filter = - typeof identifierOrFilter === 'string' ? context.createFilter(this.listenerFilter) : identifierOrFilter; + this.listenerFilter = typeof filter === 'string' ? filter : filter.toString(); + this.filter = typeof filter === 'string' ? context.createFilter(this.listenerFilter) : filter; } open(): void { @@ -50,11 +41,7 @@ export class ServiceTrackerImpl implements ServiceTracker { let references: Array> = []; - if (isAllPresent(this.identifier)) { - references = this.getInitialReferences(this.identifier); - } else { - references = this.getInitialReferences(undefined, this.listenerFilter); - } + references = this.getInitialReferences(undefined, this.listenerFilter); t.setInitial(references); diff --git a/packages/@pandino/persistence-manager-api/rollup.config.js b/packages/@pandino/persistence-manager-api/rollup.config.js index 6a1f8cfa..d012e09a 100644 --- a/packages/@pandino/persistence-manager-api/rollup.config.js +++ b/packages/@pandino/persistence-manager-api/rollup.config.js @@ -1,18 +1,12 @@ import clear from 'rollup-plugin-clear'; import typescript from '@rollup/plugin-typescript'; import nodeResolve from "@rollup/plugin-node-resolve"; +import {generateOutputs} from "../../../rollup/rollup-utils.mjs"; export default { input: 'src/index.ts', output: [ - { - file: 'dist/esm/persistence-manager-api.mjs', - format: 'esm', - }, - { - file: 'dist/cjs/persistence-manager-api.cjs', - format: 'cjs', - }, + ...generateOutputs('persistence-manager-api', ['esm', 'cjs', 'system']), ], plugins: [ clear({ diff --git a/packages/@pandino/persistence-manager-localstorage/rollup.config.js b/packages/@pandino/persistence-manager-localstorage/rollup.config.js index 4e70f2e4..bc0b47de 100644 --- a/packages/@pandino/persistence-manager-localstorage/rollup.config.js +++ b/packages/@pandino/persistence-manager-localstorage/rollup.config.js @@ -1,19 +1,13 @@ import clear from 'rollup-plugin-clear'; -import terser from '@rollup/plugin-terser'; import typescript from '@rollup/plugin-typescript'; import generateManifest from '@pandino/rollup-plugin-generate-manifest'; import nodeResolve from '@rollup/plugin-node-resolve'; - -const ENV = process.env.PRODUCTION ? 'PRODUCTION' : 'DEVELOPMENT'; +import {generateOutputs} from "../../../rollup/rollup-utils.mjs"; export default { input: 'src/index.ts', output: [ - { - sourcemap: ENV === 'PRODUCTION', - file: 'dist/esm/persistence-manager-localstorage.mjs', - format: 'esm', - }, + ...generateOutputs('persistence-manager-localstorage', ['esm', 'cjs', 'system']), ], plugins: [ clear({ @@ -21,7 +15,6 @@ export default { }), nodeResolve(), typescript(), - ...[ENV === 'PRODUCTION' ? terser() : undefined], generateManifest(), ], }; diff --git a/packages/@pandino/persistence-manager-memory/rollup.config.js b/packages/@pandino/persistence-manager-memory/rollup.config.js index dd9d2521..96cd4f55 100644 --- a/packages/@pandino/persistence-manager-memory/rollup.config.js +++ b/packages/@pandino/persistence-manager-memory/rollup.config.js @@ -1,24 +1,13 @@ import clear from 'rollup-plugin-clear'; -import terser from '@rollup/plugin-terser'; import typescript from '@rollup/plugin-typescript'; import generateManifest from '@pandino/rollup-plugin-generate-manifest'; import nodeResolve from '@rollup/plugin-node-resolve'; - -const ENV = process.env.PRODUCTION ? 'PRODUCTION' : 'DEVELOPMENT'; +import {generateOutputs} from "../../../rollup/rollup-utils.mjs"; export default { input: 'src/index.ts', output: [ - { - sourcemap: ENV === 'PRODUCTION', - file: 'dist/esm/persistence-manager-memory.mjs', - format: 'esm', - }, - { - sourcemap: ENV === 'PRODUCTION', - file: 'dist/cjs/persistence-manager-memory.cjs', - format: 'cjs', - }, + ...generateOutputs('persistence-manager-memory', ['esm', 'cjs', 'system']), ], plugins: [ clear({ @@ -26,7 +15,6 @@ export default { }), nodeResolve(), typescript(), - ...[ENV === 'PRODUCTION' ? terser() : undefined], generateManifest(), ], }; diff --git a/packages/@pandino/react-hooks/LICENSE b/packages/@pandino/react-hooks/LICENSE new file mode 100644 index 00000000..e48e0963 --- /dev/null +++ b/packages/@pandino/react-hooks/LICENSE @@ -0,0 +1,277 @@ +Eclipse Public License - v 2.0 + + THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE + PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION + OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + + a) in the case of the initial Contributor, the initial content + Distributed under this Agreement, and + + b) in the case of each subsequent Contributor: + i) changes to the Program, and + ii) additions to the Program; + where such changes and/or additions to the Program originate from + and are Distributed by that particular Contributor. A Contribution + "originates" from a Contributor if it was added to the Program by + such Contributor itself or anyone acting on such Contributor's behalf. + Contributions do not include changes or additions to the Program that + are not Modified Works. + +"Contributor" means any person or entity that Distributes the Program. + +"Licensed Patents" mean patent claims licensable by a Contributor which +are necessarily infringed by the use or sale of its Contribution alone +or when combined with the Program. + +"Program" means the Contributions Distributed in accordance with this +Agreement. + +"Recipient" means anyone who receives the Program under this Agreement +or any Secondary License (as applicable), including Contributors. + +"Derivative Works" shall mean any work, whether in Source Code or other +form, that is based on (or derived from) the Program and for which the +editorial revisions, annotations, elaborations, or other modifications +represent, as a whole, an original work of authorship. + +"Modified Works" shall mean any work in Source Code or other form that +results from an addition to, deletion from, or modification of the +contents of the Program, including, for purposes of clarity any new file +in Source Code form that contains any contents of the Program. Modified +Works shall not include works that contain only declarations, +interfaces, types, classes, structures, or files of the Program solely +in each case in order to link to, bind by name, or subclass the Program +or Modified Works thereof. + +"Distribute" means the acts of a) distributing or b) making available +in any manner that enables the transfer of a copy. + +"Source Code" means the form of a Program preferred for making +modifications, including but not limited to software source code, +documentation source, and configuration files. + +"Secondary License" means either the GNU General Public License, +Version 2.0, or any later versions of that license, including any +exceptions or additional permissions as identified by the initial +Contributor. + +2. GRANT OF RIGHTS + + a) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free copyright + license to reproduce, prepare Derivative Works of, publicly display, + publicly perform, Distribute and sublicense the Contribution of such + Contributor, if any, and such Derivative Works. + + b) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free patent + license under Licensed Patents to make, use, sell, offer to sell, + import and otherwise transfer the Contribution of such Contributor, + if any, in Source Code or other form. This patent license shall + apply to the combination of the Contribution and the Program if, at + the time the Contribution is added by the Contributor, such addition + of the Contribution causes such combination to be covered by the + Licensed Patents. The patent license shall not apply to any other + combinations which include the Contribution. No hardware per se is + licensed hereunder. + + c) Recipient understands that although each Contributor grants the + licenses to its Contributions set forth herein, no assurances are + provided by any Contributor that the Program does not infringe the + patent or other intellectual property rights of any other entity. + Each Contributor disclaims any liability to Recipient for claims + brought by any other entity based on infringement of intellectual + property rights or otherwise. As a condition to exercising the + rights and licenses granted hereunder, each Recipient hereby + assumes sole responsibility to secure any other intellectual + property rights needed, if any. For example, if a third party + patent license is required to allow Recipient to Distribute the + Program, it is Recipient's responsibility to acquire that license + before distributing the Program. + + d) Each Contributor represents that to its knowledge it has + sufficient copyright rights in its Contribution, if any, to grant + the copyright license set forth in this Agreement. + + e) Notwithstanding the terms of any Secondary License, no + Contributor makes additional grants to any Recipient (other than + those set forth in this Agreement) as a result of such Recipient's + receipt of the Program under the terms of a Secondary License + (if permitted under the terms of Section 3). + +3. REQUIREMENTS + +3.1 If a Contributor Distributes the Program in any form, then: + + a) the Program must also be made available as Source Code, in + accordance with section 3.2, and the Contributor must accompany + the Program with a statement that the Source Code for the Program + is available under this Agreement, and informs Recipients how to + obtain it in a reasonable manner on or through a medium customarily + used for software exchange; and + + b) the Contributor may Distribute the Program under a license + different than this Agreement, provided that such license: + i) effectively disclaims on behalf of all other Contributors all + warranties and conditions, express and implied, including + warranties or conditions of title and non-infringement, and + implied warranties or conditions of merchantability and fitness + for a particular purpose; + + ii) effectively excludes on behalf of all other Contributors all + liability for damages, including direct, indirect, special, + incidental and consequential damages, such as lost profits; + + iii) does not attempt to limit or alter the recipients' rights + in the Source Code under section 3.2; and + + iv) requires any subsequent distribution of the Program by any + party to be under a license that satisfies the requirements + of this section 3. + +3.2 When the Program is Distributed as Source Code: + + a) it must be made available under this Agreement, or if the + Program (i) is combined with other material in a separate file or + files made available under a Secondary License, and (ii) the initial + Contributor attached to the Source Code the notice described in + Exhibit A of this Agreement, then the Program may be made available + under the terms of such Secondary Licenses, and + + b) a copy of this Agreement must be included with each copy of + the Program. + +3.3 Contributors may not remove or alter any copyright, patent, +trademark, attribution notices, disclaimers of warranty, or limitations +of liability ("notices") contained within the Program from any copy of +the Program which they Distribute, provided that Contributors may add +their own appropriate notices. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities +with respect to end users, business partners and the like. While this +license is intended to facilitate the commercial use of the Program, +the Contributor who includes the Program in a commercial product +offering should do so in a manner which does not create potential +liability for other Contributors. Therefore, if a Contributor includes +the Program in a commercial product offering, such Contributor +("Commercial Contributor") hereby agrees to defend and indemnify every +other Contributor ("Indemnified Contributor") against any losses, +damages and costs (collectively "Losses") arising from claims, lawsuits +and other legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the Program +in a commercial product offering. The obligations in this section do not +apply to any claims or Losses relating to any actual or alleged +intellectual property infringement. In order to qualify, an Indemnified +Contributor must: a) promptly notify the Commercial Contributor in +writing of such claim, and b) allow the Commercial Contributor to control, +and cooperate with the Commercial Contributor in, the defense and any +related settlement negotiations. The Indemnified Contributor may +participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those performance +claims and warranties, and if a court requires any other Contributor to +pay any damages as a result, the Commercial Contributor must pay +those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT +PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" +BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR +IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF +TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR +PURPOSE. Each Recipient is solely responsible for determining the +appropriateness of using and distributing the Program and assumes all +risks associated with its exercise of rights under this Agreement, +including but not limited to the risks and costs of program errors, +compliance with applicable laws, damage to or loss of data, programs +or equipment, and unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT +PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS +SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST +PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE +EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further +action by the parties hereto, such provision shall be reformed to the +minimum extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity +(including a cross-claim or counterclaim in a lawsuit) alleging that the +Program itself (excluding combinations of the Program with other software +or hardware) infringes such Recipient's patent(s), then such Recipient's +rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it +fails to comply with any of the material terms or conditions of this +Agreement and does not cure such failure in a reasonable period of +time after becoming aware of such noncompliance. If all Recipient's +rights under this Agreement terminate, Recipient agrees to cease use +and distribution of the Program as soon as reasonably practicable. +However, Recipient's obligations under this Agreement and any licenses +granted by Recipient relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, +but in order to avoid inconsistency the Agreement is copyrighted and +may only be modified in the following manner. The Agreement Steward +reserves the right to publish new versions (including revisions) of +this Agreement from time to time. No one other than the Agreement +Steward has the right to modify this Agreement. The Eclipse Foundation +is the initial Agreement Steward. The Eclipse Foundation may assign the +responsibility to serve as the Agreement Steward to a suitable separate +entity. Each new version of the Agreement will be given a distinguishing +version number. The Program (including Contributions) may always be +Distributed subject to the version of the Agreement under which it was +received. In addition, after a new version of the Agreement is published, +Contributor may elect to Distribute the Program (including its +Contributions) under the new version. + +Except as expressly stated in Sections 2(a) and 2(b) above, Recipient +receives no rights or licenses to the intellectual property of any +Contributor under this Agreement, whether expressly, by implication, +estoppel or otherwise. All rights in the Program not expressly granted +under this Agreement are reserved. Nothing in this Agreement is intended +to be enforceable by any entity that is not a Contributor or Recipient. +No third-party beneficiary rights are created under this Agreement. + +Exhibit A - Form of Secondary Licenses Notice + +"This Source Code may also be made available under the following +Secondary Licenses when the conditions for such availability set forth +in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), +version(s), and exceptions or additional permissions here}." + + Simply including a copy of this Agreement, including this Exhibit A + is not sufficient to license the Source Code under Secondary Licenses. + + If it is not possible or desirable to put the notice in a particular + file, then You may include the notice in a location (such as a LICENSE + file in a relevant directory) where a recipient would be likely to + look for such a notice. + + You may add additional accurate notices of copyright ownership. diff --git a/packages/@pandino/react-hooks/README.md b/packages/@pandino/react-hooks/README.md new file mode 100644 index 00000000..6ba83bf0 --- /dev/null +++ b/packages/@pandino/react-hooks/README.md @@ -0,0 +1,161 @@ +# react-hooks + +[![build-test](https://github.com/BlackBeltTechnology/pandino/actions/workflows/build-test.yml/badge.svg)](https://github.com/BlackBeltTechnology/pandino/actions/workflows/build-test.yml) +[![license](https://img.shields.io/badge/license-EPL%20v2.0-blue.svg)](https://github.com/BlackBeltTechnology/pandino) +[![TypeScript](https://img.shields.io/badge/%3C%2F%3E-TypeScript-%230074c1.svg)](http://www.typescriptlang.org/) +[![Conventional Changelog](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-conventional--changelog-e10079.svg?style=flat)](https://github.com/conventional-changelog/conventional-changelog) + +A Pandino library providing handy tools for React-based applications. + +## Context + +This package is part of the [pandino-root](https://github.com/BlackBeltTechnology/pandino) monorepo. For detailed +information about what is Pandino / how this package fits into the ecosystem, please consult with the related +documentation(s). + +## Usage + +### Add PandinoProvider to your app + + +```typescript jsx +import { createRoot } from 'react-dom/client'; +import Pandino from '@pandino/pandino'; +import loaderConfiguration from '@pandino/loader-configuration-dom'; +import { PandinoProvider } from '@pandino/react-hooks'; + +const root = createRoot(document.querySelector('#root')!); + +const pandino = new Pandino({ + ...loaderConfiguration, +}); + +await pandino.init(); +await pandino.start(); + +// FYI: PandinoProvider's `ctx` prop expects any BundleContext instance, it doesn't need to be the system bundle's context. +root.render( + + + , +); + +``` + +### Hooks + +#### useBundleContext + +Use this hook to obtain the `BundleContext` reference registered with `PandinoProvider` + +```typescript jsx +import type { FC } from 'react'; +import { useBundleContext } from '@pandino/react-hooks'; + +export const MyComponent: FC = () => { + const { bundleContext } = useBundleContext(); + + console.log(bundleContext); + + // ... +}; +``` + +#### useTrackService + +This is a simple hook which expects a `filter` parameter and return a Service or `undefined`. + +When a service is removed from the system or if is not present to begin with, the hook will trigger the component and +the returned value will be `undefined`. + +```typescript jsx +import type { FC } from 'react'; +import { OBJECTCLASS } from '@pandino/pandino-api'; +import { useTrackService } from '@pandino/react-hooks'; + +export const MyComponent: FC = () => { + const { service: serviceImpl } = useTrackService(`(${OBJECTCLASS}=${SERVICE_INTERFACE_KEY})`); + + serviceImpl?.someMethod(); // Notice the usage of `?` + + // ... +}; +``` + +#### useTrackComponent + +This hook works similarly to `useTrackService`, the only difference is that it handles React components. + +**component contract:** + +```typescript jsx +export const CUSTOM_COMPONENT_INTERFACE_KEY = '@some-scope/component-api/CustomComponent'; + +export interface CustomComponent extends FC {} + +export interface ComponentProps { + firstName: string; + lastName?: string; +} +``` + +**component implementation:** + +```typescript jsx +import { useState } from 'react'; +import type { CustomComponent } from '@some-scope/component-api'; + +export const ComponentOne: CustomComponent = (props) => { + const [data, setData] = useState<{ firstName: string; lastName?: string }>({ ...props }); + + return ( +

+

Component One

+

FirstName: {data.firstName}

+

LastName: {data.lastName}

+
+ ); +}; +``` + +**component registration:** + +```typescript jsx +import type { BundleActivator, BundleContext, ServiceRegistration } from '@pandino/pandino-api'; +import type { CustomComponent } from '@some-scope/component-api'; +import { CUSTOM_COMPONENT_INTERFACE_KEY } from './contract'; + +export default class SomeActivator implements BundleActivator { + private reg?: ServiceRegistration; + + async start(context: BundleContext) { + this.reg = context.registerService(CUSTOM_COMPONENT_INTERFACE_KEY, ComponentOne); + } + + async stop(context: BundleContext) { + this.reg?.unregister(); + } +} +``` + +**consumer app:** + +```typescript jsx +import type { FC } from 'react'; +import { useTrackComponent } from '@pandino/react-hooks'; +import type { CustomComponent } from '@some-scope/component-api'; + +export const MyComponent: FC = () => { + const ExternalComponent = useTrackComponent(COMPONENT_FILTER_HERE); + + if (ExternalComponent) { + return ; + } + + return <>fallback content; +}; +``` + +## License + +Eclipse Public License - v 2.0 diff --git a/packages/@pandino/react-hooks/package.json b/packages/@pandino/react-hooks/package.json new file mode 100644 index 00000000..2b4cef29 --- /dev/null +++ b/packages/@pandino/react-hooks/package.json @@ -0,0 +1,49 @@ +{ + "name": "@pandino/react-hooks", + "version": "0.8.22", + "description": "React helpers and hooks for applications using Pandino", + "module": "./dist/esm/react-hooks.mjs", + "types": "dist/esm/dist/index.d.ts", + "type": "module", + "exports": { + ".": { + "default": "./dist/esm/react-hooks.mjs" + } + }, + "scripts": { + "build": "rollup -c --environment=PRODUCTION", + "build:dev": "rollup -c" + }, + "keywords": [ + "pandino", + "react", + "helper", + "hook" + ], + "author": "Norbert Herczeg ", + "license": "EPL-2.0", + "homepage": "https://github.com/BlackBeltTechnology/pandino", + "repository": { + "type": "git", + "url": "https://github.com/BlackBeltTechnology/pandino.git", + "directory": "packages/@pandino/react-hooks" + }, + "bugs": { + "url": "https://github.com/BlackBeltTechnology/pandino/issues" + }, + "engines": { + "node": ">=14.9.0" + }, + "publishConfig": { + "access": "public" + }, + "files": [ + "dist", + "src" + ], + "devDependencies": { + "@pandino/pandino-api": "^0.8.22", + "@types/react": "^18.0.26", + "react": "^18.2.0" + } +} diff --git a/packages/@pandino/react-hooks/rollup.config.js b/packages/@pandino/react-hooks/rollup.config.js new file mode 100644 index 00000000..ee430137 --- /dev/null +++ b/packages/@pandino/react-hooks/rollup.config.js @@ -0,0 +1,19 @@ +import clear from 'rollup-plugin-clear'; +import typescript from '@rollup/plugin-typescript'; +import nodeResolve from '@rollup/plugin-node-resolve'; +import {generateOutputs} from "../../../rollup/rollup-utils.mjs"; + +export default { + input: 'src/index.tsx', + output: [ + ...generateOutputs('react-hooks', ['esm', 'cjs', 'system']), + ], + external: ['react', 'react-dom', 'react-dom/client', 'react/jsx-runtime', '@pandino/pandino'], + plugins: [ + clear({ + targets: ['dist'], + }), + nodeResolve(), + typescript(), + ], +}; diff --git a/packages/@pandino/react-hooks/src/ComponentProxy.tsx b/packages/@pandino/react-hooks/src/ComponentProxy.tsx new file mode 100644 index 00000000..56c9a6de --- /dev/null +++ b/packages/@pandino/react-hooks/src/ComponentProxy.tsx @@ -0,0 +1,18 @@ +import type { FC, ReactNode } from 'react'; +import { useTrackComponent } from './useTrackComponent'; + +interface ProxyProps { + filter: string; + children?: ReactNode; + [prop: string]: any; +} + +export const ComponentProxy: FC = ({ children, filter, ...other }) => { + const ExternalComponent = useTrackComponent(filter); + + if (ExternalComponent) { + return ; + } + + return <>{children}; +}; diff --git a/packages/@pandino/react-hooks/src/PandinoContext.tsx b/packages/@pandino/react-hooks/src/PandinoContext.tsx new file mode 100644 index 00000000..67cd85b0 --- /dev/null +++ b/packages/@pandino/react-hooks/src/PandinoContext.tsx @@ -0,0 +1,21 @@ +import type { BundleContext } from '@pandino/pandino-api'; +import type { ReactNode } from 'react'; +import { createContext, useContext, useState } from 'react'; + +export interface Context { + bundleContext: BundleContext; +} + +const PandinoContext = createContext({} as unknown as Context); + +export const PandinoProvider = ({ children, ctx }: { children: ReactNode; ctx: BundleContext }) => { + const [bundleContext, setBundleContext] = useState(ctx); + + return {children}; +}; + +export const useBundleContext = (): Context => { + const { bundleContext } = useContext(PandinoContext); + + return { bundleContext }; +}; diff --git a/packages/@pandino/react-hooks/src/index.tsx b/packages/@pandino/react-hooks/src/index.tsx new file mode 100644 index 00000000..b5704007 --- /dev/null +++ b/packages/@pandino/react-hooks/src/index.tsx @@ -0,0 +1,4 @@ +export * from './ComponentProxy'; +export * from './PandinoContext'; +export * from './useTrackComponent'; +export * from './useTrackService'; diff --git a/packages/@pandino/react-hooks/src/useTrackComponent.ts b/packages/@pandino/react-hooks/src/useTrackComponent.ts new file mode 100644 index 00000000..bf65692b --- /dev/null +++ b/packages/@pandino/react-hooks/src/useTrackComponent.ts @@ -0,0 +1,21 @@ +import { useEffect, useState } from 'react'; +import { useTrackService } from './useTrackService'; + +// React crashes when we are trying to load components, unless the component is wrapped in a function call +export interface ComponentProvider { + getComponent: () => T | undefined; +} +export type TrackComponentHook = (filter: string) => T | undefined; + +export const useTrackComponent: TrackComponentHook = (filter: string) => { + const tracker = useTrackService(filter); + const [componentProvider, setComponentProvider] = useState>({ + getComponent: () => undefined, + }); + + useEffect(() => { + setComponentProvider({ getComponent: () => tracker.service }); + }, [tracker]); + + return componentProvider.getComponent(); +}; diff --git a/packages/@pandino/react-hooks/src/useTrackService.ts b/packages/@pandino/react-hooks/src/useTrackService.ts new file mode 100644 index 00000000..1c236ddd --- /dev/null +++ b/packages/@pandino/react-hooks/src/useTrackService.ts @@ -0,0 +1,42 @@ +import { useBundleContext } from './PandinoContext'; +import { useEffect, useState } from 'react'; +import type { ServiceReference } from '@pandino/pandino-api'; + +export interface SimpleTracker { + service?: T; +} + +export type ServiceTrackerHook = (filter: string) => SimpleTracker; + +export const useTrackService: ServiceTrackerHook = (filter: string) => { + const { bundleContext } = useBundleContext(); + const [tracker, setTracker] = useState>({ + service: undefined, + }); + + useEffect(() => { + const serviceTracker = bundleContext.trackService(filter, { + addingService(reference: ServiceReference): T { + const service = bundleContext.getService(reference); + setTracker({ + service, + }); + + return service; + }, + removedService(_: ServiceReference, __: T) { + setTracker({ + service: undefined, + }); + }, + }); + + serviceTracker.open(); + + return () => { + serviceTracker.close(); + }; + }, [bundleContext]); + + return tracker; +}; diff --git a/packages/@pandino/react-hooks/tsconfig.json b/packages/@pandino/react-hooks/tsconfig.json new file mode 100644 index 00000000..4c543852 --- /dev/null +++ b/packages/@pandino/react-hooks/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "declarationDir": "./dist/", + "outDir": "./dist/", + "jsx": "react-jsx" + } +} diff --git a/packages/@pandino/umd-activator-resolver-dom/package.json b/packages/@pandino/umd-activator-resolver-dom/package.json index aa38d471..dc4bfba3 100644 --- a/packages/@pandino/umd-activator-resolver-dom/package.json +++ b/packages/@pandino/umd-activator-resolver-dom/package.json @@ -2,12 +2,12 @@ "name": "@pandino/umd-activator-resolver-dom", "version": "0.8.22", "description": "Activator Resolver supporting UMD modules for browsers", - "module": "./dist/umd-activator-resolver-dom.mjs", - "types": "dist/dist/index.d.ts", + "module": "./dist/esm/umd-activator-resolver-dom.mjs", + "types": "dist/esm/dist/index.d.ts", "type": "module", "exports": { ".": { - "default": "./dist/umd-activator-resolver-dom.mjs" + "default": "./dist/esm/umd-activator-resolver-dom.mjs" } }, "scripts": { diff --git a/packages/@pandino/umd-activator-resolver-dom/rollup.config.js b/packages/@pandino/umd-activator-resolver-dom/rollup.config.js index 7254dbc5..4abfb668 100644 --- a/packages/@pandino/umd-activator-resolver-dom/rollup.config.js +++ b/packages/@pandino/umd-activator-resolver-dom/rollup.config.js @@ -1,23 +1,18 @@ import clear from 'rollup-plugin-clear'; -import terser from '@rollup/plugin-terser'; import typescript from '@rollup/plugin-typescript'; import nodeResolve from '@rollup/plugin-node-resolve'; - -const ENV = process.env.PRODUCTION ? 'PRODUCTION' : 'DEVELOPMENT'; +import {generateOutputs} from "../../../rollup/rollup-utils.mjs"; export default { input: 'src/index.ts', - output: { - sourcemap: ENV === 'PRODUCTION', - file: 'dist/umd-activator-resolver-dom.mjs', - format: 'esm', - }, + output: [ + ...generateOutputs('umd-activator-resolver-dom', ['esm', 'system']), + ], plugins: [ clear({ targets: ['dist'], }), nodeResolve(), typescript(), - ...[ENV === 'PRODUCTION' ? terser() : undefined], ], }; diff --git a/rollup/rollup-utils.mjs b/rollup/rollup-utils.mjs new file mode 100644 index 00000000..0015a08a --- /dev/null +++ b/rollup/rollup-utils.mjs @@ -0,0 +1,36 @@ +import terser from "@rollup/plugin-terser"; + +const formatToExtension = (format) => { + if (format === 'esm') { + return 'mjs'; + } else if (format === 'cjs') { + return 'cjs'; + } + return 'js'; +} + +export const generateOutputs = (name, formats = [], options = { keepWebpackIgnore: false }) => { + const res = []; + for (const format of formats) { + res.push({ + sourcemap: true, + file: `dist/${format}/${name}.min.${formatToExtension(format)}`, + format, + plugins: [ + terser(options.keepWebpackIgnore ? { + format: { + comments: function (node, comment) { + const text = comment.value; + return /webpackIgnore/i.test(text); + }, + }, + } : {}), + ], + }); + res.push({ + file: `dist/${format}/${name}.${formatToExtension(format)}`, + format, + }); + } + return res; +};