diff --git a/NOTICE-3RD-PARTY-CONTENT.md b/NOTICE-3RD-PARTY-CONTENT.md
index 182901a6..6b034dab 100644
--- a/NOTICE-3RD-PARTY-CONTENT.md
+++ b/NOTICE-3RD-PARTY-CONTENT.md
@@ -13,7 +13,6 @@
|@types/decompress|4.2.7|MIT|
|@types/fs-extra|11.0.4|MIT|
|@types/mocha|10.0.6|MIT|
-|@types/mock-fs|4.13.4|MIT|
|@types/node|18.19.22|MIT|
|@typescript-eslint/eslint-plugin|7.1.1|MIT|
|@typescript-eslint/parser|7.1.1|unknown|
@@ -23,7 +22,6 @@
|eslint|8.57.0|ISC
MIT|
|inquirer|8.2.6|MIT|
|mocha|10.3.0|ISC
MIT|
-|mock-fs|5.2.0|MIT|
|node-pty|1.0.0|MIT|
|nyc|15.1.0|ISC
MIT|
|oclif|3.17.2|MIT|
diff --git a/package-lock.json b/package-lock.json
index 30ec6caf..24d32d28 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -30,7 +30,6 @@
"@types/decompress": "4.2.7",
"@types/fs-extra": "11.0.4",
"@types/mocha": "10.0.6",
- "@types/mock-fs": "4.13.4",
"@types/node": "18.19.22",
"@typescript-eslint/eslint-plugin": "7.1.1",
"@typescript-eslint/parser": "7.1.1",
@@ -38,7 +37,6 @@
"chai": "4.4.1",
"eslint": "8.57.0",
"mocha": "10.3.0",
- "mock-fs": "5.2.0",
"nyc": "15.1.0",
"oclif": "3.17.2",
"pkg": "5.8.1",
@@ -671,7 +669,8 @@
"node_modules/@gar/promisify": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
- "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw=="
+ "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==",
+ "dev": true
},
"node_modules/@humanwhocodes/config-array": {
"version": "0.11.14",
@@ -732,6 +731,7 @@
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
"integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "dev": true,
"dependencies": {
"string-width": "^5.1.2",
"string-width-cjs": "npm:string-width@^4.2.0",
@@ -748,6 +748,7 @@
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
"integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
"engines": {
"node": ">=12"
},
@@ -759,6 +760,7 @@
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
"integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true,
"engines": {
"node": ">=12"
},
@@ -769,12 +771,14 @@
"node_modules/@isaacs/cliui/node_modules/emoji-regex": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
},
"node_modules/@isaacs/cliui/node_modules/string-width": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
"integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
"dependencies": {
"eastasianwidth": "^0.2.0",
"emoji-regex": "^9.2.2",
@@ -791,6 +795,7 @@
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
"integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
"dependencies": {
"ansi-regex": "^6.0.1"
},
@@ -805,6 +810,7 @@
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
"integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "dev": true,
"dependencies": {
"ansi-styles": "^6.1.0",
"string-width": "^5.0.1",
@@ -820,7 +826,8 @@
"node_modules/@isaacs/string-locale-compare": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz",
- "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ=="
+ "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==",
+ "dev": true
},
"node_modules/@istanbuljs/load-nyc-config": {
"version": "1.1.0",
@@ -1003,6 +1010,7 @@
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-4.3.1.tgz",
"integrity": "sha512-yMRgZVDpwWjplorzt9SFSaakWx6QIK248Nw4ZFgkrAy/GvJaFRaSZzE6nD7JBK5r8g/+PTxFq5Wj/sfciE7x+A==",
+ "dev": true,
"dependencies": {
"@isaacs/string-locale-compare": "^1.1.0",
"@npmcli/installed-package-contents": "^1.0.7",
@@ -1048,6 +1056,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true,
"bin": {
"mkdirp": "bin/cmd.js"
},
@@ -1059,6 +1068,7 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz",
"integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==",
+ "dev": true,
"dependencies": {
"@gar/promisify": "^1.0.1",
"semver": "^7.3.5"
@@ -1068,6 +1078,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz",
"integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==",
+ "dev": true,
"dependencies": {
"@npmcli/promise-spawn": "^1.3.2",
"lru-cache": "^6.0.0",
@@ -1083,6 +1094,7 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
"dependencies": {
"yallist": "^4.0.0"
},
@@ -1094,6 +1106,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true,
"bin": {
"mkdirp": "bin/cmd.js"
},
@@ -1104,12 +1117,14 @@
"node_modules/@npmcli/git/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
},
"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"
@@ -1125,6 +1140,7 @@
"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",
@@ -1139,6 +1155,7 @@
"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",
@@ -1157,6 +1174,7 @@
"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"
},
@@ -1168,6 +1186,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-2.0.0.tgz",
"integrity": "sha512-VVW+JhWCKRwCTE+0xvD6p3uV4WpqocNYYtzyvenqL/u1Q3Xx6fGTJ+6UoIoii07fbuEO9U3IIyuGY0CYHDv1sg==",
+ "dev": true,
"dependencies": {
"cacache": "^15.0.5",
"json-parse-even-better-errors": "^2.3.1",
@@ -1183,6 +1202,7 @@
"resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz",
"integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==",
"deprecated": "This functionality has been moved to @npmcli/fs",
+ "dev": true,
"dependencies": {
"mkdirp": "^1.0.4",
"rimraf": "^3.0.2"
@@ -1195,6 +1215,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true,
"bin": {
"mkdirp": "bin/cmd.js"
},
@@ -1205,17 +1226,20 @@
"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=="
+ "integrity": "sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==",
+ "dev": true
},
"node_modules/@npmcli/node-gyp": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz",
- "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA=="
+ "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==",
+ "dev": true
},
"node_modules/@npmcli/package-json": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-1.0.1.tgz",
"integrity": "sha512-y6jnu76E9C23osz8gEMBayZmaZ69vFOIk8vR1FJL/wbEJ54+9aVG9rLTjQKSXfgYZEr50nw1txBBFfBZZe+bYg==",
+ "dev": true,
"dependencies": {
"json-parse-even-better-errors": "^2.3.1"
}
@@ -1224,6 +1248,7 @@
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz",
"integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==",
+ "dev": true,
"dependencies": {
"infer-owner": "^1.0.4"
}
@@ -1232,6 +1257,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-2.0.0.tgz",
"integrity": "sha512-fSan/Pu11xS/TdaTpTB0MRn9guwGU8dye+x56mEVgBEd/QsybBbYcAL0phPXi8SGWFEChkQd6M9qL4y6VOpFig==",
+ "dev": true,
"dependencies": {
"@npmcli/node-gyp": "^1.0.2",
"@npmcli/promise-spawn": "^1.3.2",
@@ -1489,6 +1515,7 @@
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
"integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "dev": true,
"optional": true,
"engines": {
"node": ">=14"
@@ -1498,6 +1525,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz",
"integrity": "sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==",
+ "dev": true,
"dependencies": {
"@sigstore/protobuf-specs": "^0.2.0"
},
@@ -1509,6 +1537,7 @@
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz",
"integrity": "sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==",
+ "dev": true,
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
@@ -1517,6 +1546,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-1.0.0.tgz",
"integrity": "sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==",
+ "dev": true,
"dependencies": {
"@sigstore/bundle": "^1.1.0",
"@sigstore/protobuf-specs": "^0.2.0",
@@ -1530,6 +1560,7 @@
"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"
},
@@ -1541,6 +1572,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
"integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
+ "dev": true,
"engines": {
"node": ">= 10"
}
@@ -1549,6 +1581,7 @@
"version": "17.1.4",
"resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz",
"integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==",
+ "dev": true,
"dependencies": {
"@npmcli/fs": "^3.1.0",
"fs-minipass": "^3.0.0",
@@ -1571,6 +1604,7 @@
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
"integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "dev": true,
"engines": {
"node": ">=16 || 14 >=14.17"
}
@@ -1579,6 +1613,7 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
"integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
+ "dev": true,
"dependencies": {
"cross-spawn": "^7.0.0",
"signal-exit": "^4.0.1"
@@ -1594,6 +1629,7 @@
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz",
"integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==",
+ "dev": true,
"dependencies": {
"minipass": "^7.0.3"
},
@@ -1605,6 +1641,7 @@
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
"integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "dev": true,
"engines": {
"node": ">=16 || 14 >=14.17"
}
@@ -1613,6 +1650,7 @@
"version": "10.3.10",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
"integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
+ "dev": true,
"dependencies": {
"foreground-child": "^3.1.0",
"jackspeak": "^2.3.5",
@@ -1634,6 +1672,7 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
"integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
+ "dev": true,
"dependencies": {
"@tootallnate/once": "2",
"agent-base": "6",
@@ -1647,6 +1686,7 @@
"version": "7.18.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
"integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
"engines": {
"node": ">=12"
}
@@ -1655,6 +1695,7 @@
"version": "11.1.1",
"resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz",
"integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==",
+ "dev": true,
"dependencies": {
"agentkeepalive": "^4.2.1",
"cacache": "^17.0.0",
@@ -1680,6 +1721,7 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
"integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "dev": true,
"engines": {
"node": ">=8"
}
@@ -1688,6 +1730,7 @@
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz",
"integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==",
+ "dev": true,
"dependencies": {
"minipass": "^7.0.3",
"minipass-sized": "^1.0.3",
@@ -1704,6 +1747,7 @@
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
"integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "dev": true,
"engines": {
"node": ">=16 || 14 >=14.17"
}
@@ -1712,6 +1756,7 @@
"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"
},
@@ -1726,6 +1771,7 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
"engines": {
"node": ">=14"
},
@@ -1737,6 +1783,7 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz",
"integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==",
+ "dev": true,
"dependencies": {
"agent-base": "^6.0.2",
"debug": "^4.3.3",
@@ -1750,6 +1797,7 @@
"version": "10.0.5",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz",
"integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==",
+ "dev": true,
"dependencies": {
"minipass": "^7.0.3"
},
@@ -1761,6 +1809,7 @@
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
"integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "dev": true,
"engines": {
"node": ">=16 || 14 >=14.17"
}
@@ -1769,6 +1818,7 @@
"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": "^4.0.0"
},
@@ -1780,6 +1830,7 @@
"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"
},
@@ -1791,6 +1842,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz",
"integrity": "sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==",
+ "dev": true,
"dependencies": {
"@sigstore/protobuf-specs": "^0.2.0",
"tuf-js": "^1.1.7"
@@ -1871,6 +1923,7 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
"integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
+ "dev": true,
"engines": {
"node": ">= 6"
}
@@ -1899,6 +1952,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz",
"integrity": "sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==",
+ "dev": true,
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
@@ -1907,6 +1961,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@tufjs/models/-/models-1.0.4.tgz",
"integrity": "sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==",
+ "dev": true,
"dependencies": {
"@tufjs/canonical-json": "1.0.0",
"minimatch": "^9.0.0"
@@ -2023,15 +2078,6 @@
"integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==",
"dev": true
},
- "node_modules/@types/mock-fs": {
- "version": "4.13.4",
- "resolved": "https://registry.npmjs.org/@types/mock-fs/-/mock-fs-4.13.4.tgz",
- "integrity": "sha512-mXmM0o6lULPI8z3XNnQCpL0BGxPwx1Ul1wXYEPBGl4efShyxW2Rln0JOPEWGyZaYZMM6OVXM/15zUuFMY52ljg==",
- "dev": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
"node_modules/@types/node": {
"version": "18.19.22",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.22.tgz",
@@ -2294,7 +2340,8 @@
"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=="
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+ "dev": true
},
"node_modules/abort-controller": {
"version": "3.0.0",
@@ -2340,6 +2387,7 @@
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dev": true,
"dependencies": {
"debug": "4"
},
@@ -2351,6 +2399,7 @@
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz",
"integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==",
+ "dev": true,
"dependencies": {
"humanize-ms": "^1.2.1"
},
@@ -2362,6 +2411,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
"integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
+ "dev": true,
"dependencies": {
"clean-stack": "^2.0.0",
"indent-string": "^4.0.0"
@@ -2374,6 +2424,7 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
"integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+ "dev": true,
"engines": {
"node": ">=6"
}
@@ -2472,7 +2523,8 @@
"node_modules/aproba": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
- "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ=="
+ "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==",
+ "dev": true
},
"node_modules/archiver": {
"version": "5.3.2",
@@ -2546,12 +2598,14 @@
"node_modules/archy": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
- "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw=="
+ "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==",
+ "dev": true
},
"node_modules/are-we-there-yet": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
"integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
+ "dev": true,
"dependencies": {
"delegates": "^1.0.0",
"readable-stream": "^3.6.0"
@@ -2730,6 +2784,7 @@
"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",
@@ -2746,6 +2801,7 @@
"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"
}
@@ -2754,6 +2810,7 @@
"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==",
+ "dev": true,
"dependencies": {
"imurmurhash": "^0.1.4",
"signal-exit": "^3.0.7"
@@ -2923,6 +2980,7 @@
"version": "15.3.0",
"resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz",
"integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==",
+ "dev": true,
"dependencies": {
"@npmcli/fs": "^1.0.0",
"@npmcli/move-file": "^1.0.1",
@@ -2951,6 +3009,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
"integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "dev": true,
"engines": {
"node": ">=10"
}
@@ -2959,6 +3018,7 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
"dependencies": {
"yallist": "^4.0.0"
},
@@ -2970,6 +3030,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true,
"bin": {
"mkdirp": "bin/cmd.js"
},
@@ -2981,6 +3042,7 @@
"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"
},
@@ -2994,7 +3056,8 @@
"node_modules/cacache/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
},
"node_modules/cacheable-lookup": {
"version": "5.0.4",
@@ -3410,6 +3473,7 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-5.0.0.tgz",
"integrity": "sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==",
+ "dev": true,
"dependencies": {
"mkdirp-infer-owner": "^2.0.0"
},
@@ -3437,6 +3501,7 @@
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
"integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
+ "dev": true,
"bin": {
"color-support": "bin.js"
}
@@ -3458,7 +3523,8 @@
"node_modules/common-ancestor-path": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz",
- "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w=="
+ "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==",
+ "dev": true
},
"node_modules/commondir": {
"version": "1.0.1",
@@ -3557,7 +3623,8 @@
"node_modules/console-control-strings": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
- "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
+ "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
+ "dev": true
},
"node_modules/content-type": {
"version": "1.0.5",
@@ -3676,6 +3743,7 @@
"resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz",
"integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==",
"deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "dev": true,
"engines": {
"node": "*"
}
@@ -3949,7 +4017,8 @@
"node_modules/delegates": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
+ "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==",
+ "dev": true
},
"node_modules/deprecation": {
"version": "2.3.1",
@@ -3970,6 +4039,7 @@
"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"
@@ -4010,7 +4080,8 @@
"node_modules/eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true
},
"node_modules/ejs": {
"version": "3.1.9",
@@ -4041,6 +4112,7 @@
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
"integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
+ "dev": true,
"optional": true,
"dependencies": {
"iconv-lite": "^0.6.2"
@@ -4050,6 +4122,7 @@
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
"integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dev": true,
"optional": true,
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
@@ -4070,6 +4143,7 @@
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
"integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "dev": true,
"engines": {
"node": ">=6"
}
@@ -4077,7 +4151,8 @@
"node_modules/err-code": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz",
- "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA=="
+ "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==",
+ "dev": true
},
"node_modules/errno": {
"version": "0.1.8",
@@ -4857,6 +4932,7 @@
"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"
},
@@ -4869,20 +4945,6 @@
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
},
- "node_modules/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -4895,6 +4957,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
"integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
+ "dev": true,
"dependencies": {
"aproba": "^1.0.3 || ^2.0.0",
"color-support": "^1.1.2",
@@ -5228,7 +5291,8 @@
"node_modules/has-unicode": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
+ "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==",
+ "dev": true
},
"node_modules/hasha": {
"version": "5.2.2",
@@ -5291,6 +5355,7 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
"integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
+ "dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
},
@@ -5302,6 +5367,7 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
"dependencies": {
"yallist": "^4.0.0"
},
@@ -5312,7 +5378,8 @@
"node_modules/hosted-git-info/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
},
"node_modules/html-escaper": {
"version": "2.0.2",
@@ -5323,7 +5390,8 @@
"node_modules/http-cache-semantics": {
"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=="
+ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
+ "dev": true
},
"node_modules/http-call": {
"version": "5.3.0",
@@ -5356,6 +5424,7 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
"integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
+ "dev": true,
"dependencies": {
"@tootallnate/once": "1",
"agent-base": "6",
@@ -5382,6 +5451,7 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
"integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dev": true,
"dependencies": {
"agent-base": "6",
"debug": "4"
@@ -5403,6 +5473,7 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
"integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==",
+ "dev": true,
"dependencies": {
"ms": "^2.0.0"
}
@@ -5443,6 +5514,7 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-4.0.1.tgz",
"integrity": "sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==",
+ "dev": true,
"dependencies": {
"minimatch": "^3.0.4"
},
@@ -5454,6 +5526,7 @@
"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"
@@ -5463,6 +5536,7 @@
"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"
},
@@ -5490,6 +5564,7 @@
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
"integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
"engines": {
"node": ">=0.8.19"
}
@@ -5505,7 +5580,8 @@
"node_modules/infer-owner": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
- "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A=="
+ "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
+ "dev": true
},
"node_modules/inflight": {
"version": "1.0.6",
@@ -5524,7 +5600,8 @@
"node_modules/ini": {
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "dev": true
},
"node_modules/inquirer": {
"version": "8.2.6",
@@ -5592,6 +5669,7 @@
"version": "9.0.5",
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz",
"integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==",
+ "dev": true,
"dependencies": {
"jsbn": "1.1.0",
"sprintf-js": "^1.1.3"
@@ -5603,7 +5681,8 @@
"node_modules/ip-address/node_modules/sprintf-js": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
- "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="
+ "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
+ "dev": true
},
"node_modules/is-arguments": {
"version": "1.1.1",
@@ -5728,7 +5807,8 @@
"node_modules/is-lambda": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz",
- "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ=="
+ "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==",
+ "dev": true
},
"node_modules/is-natural-number": {
"version": "4.0.1",
@@ -5816,7 +5896,8 @@
"node_modules/is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
+ "dev": true
},
"node_modules/is-unicode-supported": {
"version": "0.1.0",
@@ -6011,6 +6092,7 @@
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
"integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
+ "dev": true,
"dependencies": {
"@isaacs/cliui": "^8.0.2"
},
@@ -6091,7 +6173,8 @@
"node_modules/jsbn": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
- "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A=="
+ "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==",
+ "dev": true
},
"node_modules/jsesc": {
"version": "2.5.2",
@@ -6119,7 +6202,8 @@
"node_modules/json-parse-even-better-errors": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true
},
"node_modules/json-schema-traverse": {
"version": "0.4.1",
@@ -6137,6 +6221,7 @@
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz",
"integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==",
+ "dev": true,
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
@@ -6172,6 +6257,7 @@
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
"integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==",
+ "dev": true,
"engines": [
"node >= 0.2.0"
]
@@ -6187,12 +6273,14 @@
"node_modules/just-diff": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/just-diff/-/just-diff-5.2.0.tgz",
- "integrity": "sha512-6ufhP9SHjb7jibNFrNxyFZ6od3g+An6Ai9mhGRvcYe8UJlH0prseN64M+6ZBBUoKYHZsitDP42gAJ8+eVWr3lw=="
+ "integrity": "sha512-6ufhP9SHjb7jibNFrNxyFZ6od3g+An6Ai9mhGRvcYe8UJlH0prseN64M+6ZBBUoKYHZsitDP42gAJ8+eVWr3lw==",
+ "dev": true
},
"node_modules/just-diff-apply": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.5.0.tgz",
- "integrity": "sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw=="
+ "integrity": "sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==",
+ "dev": true
},
"node_modules/just-extend": {
"version": "6.2.0",
@@ -6488,6 +6576,7 @@
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz",
"integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==",
+ "dev": true,
"dependencies": {
"agentkeepalive": "^4.1.3",
"cacache": "^15.2.0",
@@ -6514,6 +6603,7 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
"dependencies": {
"yallist": "^4.0.0"
},
@@ -6524,7 +6614,8 @@
"node_modules/make-fetch-happen/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
},
"node_modules/maximatch": {
"version": "0.1.0",
@@ -6695,6 +6786,7 @@
"version": "9.0.3",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
"integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dev": true,
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -6717,6 +6809,7 @@
"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"
},
@@ -6728,6 +6821,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
"integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
+ "dev": true,
"dependencies": {
"minipass": "^3.0.0"
},
@@ -6739,6 +6833,7 @@
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz",
"integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==",
+ "dev": true,
"dependencies": {
"minipass": "^3.1.0",
"minipass-sized": "^1.0.3",
@@ -6755,6 +6850,7 @@
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
"integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
+ "dev": true,
"dependencies": {
"minipass": "^3.0.0"
},
@@ -6766,6 +6862,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz",
"integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==",
+ "dev": true,
"dependencies": {
"jsonparse": "^1.3.1",
"minipass": "^3.0.0"
@@ -6775,6 +6872,7 @@
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
"integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
+ "dev": true,
"dependencies": {
"minipass": "^3.0.0"
},
@@ -6786,6 +6884,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz",
"integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==",
+ "dev": true,
"dependencies": {
"minipass": "^3.0.0"
},
@@ -6796,12 +6895,14 @@
"node_modules/minipass/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
},
"node_modules/minizlib": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
"integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+ "dev": true,
"dependencies": {
"minipass": "^3.0.0",
"yallist": "^4.0.0"
@@ -6813,7 +6914,8 @@
"node_modules/minizlib/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
},
"node_modules/mkdirp": {
"version": "0.5.6",
@@ -6836,6 +6938,7 @@
"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",
@@ -6849,6 +6952,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
"integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "dev": true,
"engines": {
"node": ">=10"
}
@@ -6857,6 +6961,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true,
"bin": {
"mkdirp": "bin/cmd.js"
},
@@ -6954,15 +7059,6 @@
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
},
- "node_modules/mock-fs": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-5.2.0.tgz",
- "integrity": "sha512-2dF2R6YMSZbpip1V1WHKGLNjr/k48uQClqMVb5H3MOvwc9qhYis3/IWbj02qIg/Y8MDXKFF4c5v0rxx2o6xTZw==",
- "dev": true,
- "engines": {
- "node": ">=12.0.0"
- }
- },
"node_modules/mock-stdin": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/mock-stdin/-/mock-stdin-1.0.0.tgz",
@@ -7091,6 +7187,7 @@
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
"integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "dev": true,
"engines": {
"node": ">= 0.6"
}
@@ -7167,6 +7264,7 @@
"version": "8.4.1",
"resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz",
"integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==",
+ "dev": true,
"dependencies": {
"env-paths": "^2.2.0",
"glob": "^7.1.4",
@@ -7190,6 +7288,7 @@
"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==",
+ "dev": true,
"dependencies": {
"delegates": "^1.0.0",
"readable-stream": "^3.6.0"
@@ -7202,6 +7301,7 @@
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz",
"integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==",
+ "dev": true,
"dependencies": {
"aproba": "^1.0.3 || ^2.0.0",
"color-support": "^1.1.3",
@@ -7220,6 +7320,7 @@
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz",
"integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==",
+ "dev": true,
"dependencies": {
"are-we-there-yet": "^3.0.0",
"console-control-strings": "^1.1.0",
@@ -7261,6 +7362,7 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
"integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
+ "dev": true,
"dependencies": {
"abbrev": "1"
},
@@ -7463,6 +7565,7 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz",
"integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==",
+ "dev": true,
"dependencies": {
"npm-normalize-package-bin": "^1.0.1"
}
@@ -7471,6 +7574,7 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz",
"integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==",
+ "dev": true,
"dependencies": {
"semver": "^7.1.1"
},
@@ -7481,12 +7585,14 @@
"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=="
+ "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==",
+ "dev": true
},
"node_modules/npm-package-arg": {
"version": "8.1.5",
"resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz",
"integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==",
+ "dev": true,
"dependencies": {
"hosted-git-info": "^4.0.1",
"semver": "^7.3.4",
@@ -7499,12 +7605,14 @@
"node_modules/npm-package-arg/node_modules/builtins": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
- "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ=="
+ "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==",
+ "dev": true
},
"node_modules/npm-package-arg/node_modules/validate-npm-package-name": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz",
"integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==",
+ "dev": true,
"dependencies": {
"builtins": "^1.0.3"
}
@@ -7513,6 +7621,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-3.0.0.tgz",
"integrity": "sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ==",
+ "dev": true,
"dependencies": {
"glob": "^7.1.6",
"ignore-walk": "^4.0.1",
@@ -7530,6 +7639,7 @@
"version": "6.1.1",
"resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz",
"integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==",
+ "dev": true,
"dependencies": {
"npm-install-checks": "^4.0.0",
"npm-normalize-package-bin": "^1.0.1",
@@ -7541,6 +7651,7 @@
"version": "12.0.2",
"resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-12.0.2.tgz",
"integrity": "sha512-Df5QT3RaJnXYuOwtXBXS9BWs+tHH2olvkCLh6jcR/b/u3DvPMlp3J0TvvYwplPKxHMOwfg287PYih9QqaVFoKA==",
+ "dev": true,
"dependencies": {
"make-fetch-happen": "^10.0.1",
"minipass": "^3.1.6",
@@ -7557,6 +7668,7 @@
"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"
@@ -7570,6 +7682,7 @@
"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"
@@ -7582,6 +7695,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
"integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
+ "dev": true,
"engines": {
"node": ">= 10"
}
@@ -7590,6 +7704,7 @@
"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",
@@ -7618,6 +7733,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
"integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "dev": true,
"engines": {
"node": ">=10"
}
@@ -7626,6 +7742,7 @@
"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",
@@ -7644,6 +7761,7 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
"integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
+ "dev": true,
"dependencies": {
"@tootallnate/once": "2",
"agent-base": "6",
@@ -7657,6 +7775,7 @@
"version": "7.18.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
"integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
"engines": {
"node": ">=12"
}
@@ -7665,6 +7784,7 @@
"version": "10.2.1",
"resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz",
"integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==",
+ "dev": true,
"dependencies": {
"agentkeepalive": "^4.2.1",
"cacache": "^16.1.0",
@@ -7691,6 +7811,7 @@
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz",
"integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==",
+ "dev": true,
"dependencies": {
"minipass": "^3.1.6",
"minipass-sized": "^1.0.3",
@@ -7707,6 +7828,7 @@
"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"
},
@@ -7718,6 +7840,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true,
"bin": {
"mkdirp": "bin/cmd.js"
},
@@ -7729,6 +7852,7 @@
"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"
},
@@ -7743,6 +7867,7 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz",
"integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==",
+ "dev": true,
"dependencies": {
"agent-base": "^6.0.2",
"debug": "^4.3.3",
@@ -7756,6 +7881,7 @@
"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"
},
@@ -7767,6 +7893,7 @@
"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"
},
@@ -7778,6 +7905,7 @@
"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"
},
@@ -10515,6 +10643,7 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
"integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
+ "dev": true,
"dependencies": {
"are-we-there-yet": "^2.0.0",
"console-control-strings": "^1.1.0",
@@ -10899,6 +11028,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
"integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
+ "dev": true,
"dependencies": {
"aggregate-error": "^3.0.0"
},
@@ -10975,6 +11105,7 @@
"version": "12.0.3",
"resolved": "https://registry.npmjs.org/pacote/-/pacote-12.0.3.tgz",
"integrity": "sha512-CdYEl03JDrRO3x18uHjBYA9TyoW8gy+ThVcypcDkxPtKlw76e4ejhYB6i9lJ+/cebbjpqPW/CijjqxwDTts8Ow==",
+ "dev": true,
"dependencies": {
"@npmcli/git": "^2.1.0",
"@npmcli/installed-package-contents": "^1.0.6",
@@ -11007,6 +11138,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
"integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "dev": true,
"engines": {
"node": ">=10"
}
@@ -11015,6 +11147,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true,
"bin": {
"mkdirp": "bin/cmd.js"
},
@@ -11038,6 +11171,7 @@
"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==",
+ "dev": true,
"dependencies": {
"json-parse-even-better-errors": "^2.3.1",
"just-diff": "^5.0.1",
@@ -11102,6 +11236,7 @@
"version": "1.10.1",
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
"integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
+ "dev": true,
"dependencies": {
"lru-cache": "^9.1.1 || ^10.0.0",
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
@@ -11117,6 +11252,7 @@
"version": "10.2.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
"integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
+ "dev": true,
"engines": {
"node": "14 || >=16.14"
}
@@ -11125,6 +11261,7 @@
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
"integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "dev": true,
"engines": {
"node": ">=16 || 14 >=14.17"
}
@@ -11550,7 +11687,8 @@
"node_modules/proc-log": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/proc-log/-/proc-log-1.0.0.tgz",
- "integrity": "sha512-aCk8AO51s+4JyuYGg3Q/a6gnrlDO09NpVWePtjp7xwphcoQ04x5WAfCyugcsbLooWcMJ87CLkD4+604IckEdhg=="
+ "integrity": "sha512-aCk8AO51s+4JyuYGg3Q/a6gnrlDO09NpVWePtjp7xwphcoQ04x5WAfCyugcsbLooWcMJ87CLkD4+604IckEdhg==",
+ "dev": true
},
"node_modules/process": {
"version": "0.11.10",
@@ -11599,6 +11737,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz",
"integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==",
+ "dev": true,
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
@@ -11607,6 +11746,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.2.tgz",
"integrity": "sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA==",
+ "dev": true,
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
@@ -11614,12 +11754,14 @@
"node_modules/promise-inflight": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
- "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g=="
+ "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
+ "dev": true
},
"node_modules/promise-retry": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
"integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==",
+ "dev": true,
"dependencies": {
"err-code": "^2.0.2",
"retry": "^0.12.0"
@@ -11632,6 +11774,7 @@
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
"integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
+ "dev": true,
"engines": {
"node": ">= 4"
}
@@ -11747,6 +11890,7 @@
"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==",
+ "dev": true,
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
@@ -11770,6 +11914,7 @@
"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==",
+ "dev": true,
"dependencies": {
"json-parse-even-better-errors": "^2.3.0",
"npm-normalize-package-bin": "^1.0.1"
@@ -12077,6 +12222,7 @@
"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",
@@ -12275,6 +12421,7 @@
"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"
},
@@ -12416,7 +12563,8 @@
"node_modules/set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
+ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
+ "dev": true
},
"node_modules/set-function-length": {
"version": "1.2.2",
@@ -12504,6 +12652,7 @@
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.9.0.tgz",
"integrity": "sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==",
+ "dev": true,
"dependencies": {
"@sigstore/bundle": "^1.1.0",
"@sigstore/protobuf-specs": "^0.2.0",
@@ -12522,6 +12671,7 @@
"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"
},
@@ -12533,6 +12683,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
"integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
+ "dev": true,
"engines": {
"node": ">= 10"
}
@@ -12541,6 +12692,7 @@
"version": "17.1.4",
"resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz",
"integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==",
+ "dev": true,
"dependencies": {
"@npmcli/fs": "^3.1.0",
"fs-minipass": "^3.0.0",
@@ -12563,6 +12715,7 @@
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
"integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "dev": true,
"engines": {
"node": ">=16 || 14 >=14.17"
}
@@ -12571,6 +12724,7 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
"integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
+ "dev": true,
"dependencies": {
"cross-spawn": "^7.0.0",
"signal-exit": "^4.0.1"
@@ -12586,6 +12740,7 @@
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz",
"integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==",
+ "dev": true,
"dependencies": {
"minipass": "^7.0.3"
},
@@ -12597,6 +12752,7 @@
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
"integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "dev": true,
"engines": {
"node": ">=16 || 14 >=14.17"
}
@@ -12605,6 +12761,7 @@
"version": "10.3.10",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
"integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
+ "dev": true,
"dependencies": {
"foreground-child": "^3.1.0",
"jackspeak": "^2.3.5",
@@ -12626,6 +12783,7 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
"integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
+ "dev": true,
"dependencies": {
"@tootallnate/once": "2",
"agent-base": "6",
@@ -12639,6 +12797,7 @@
"version": "7.18.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
"integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
"engines": {
"node": ">=12"
}
@@ -12647,6 +12806,7 @@
"version": "11.1.1",
"resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz",
"integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==",
+ "dev": true,
"dependencies": {
"agentkeepalive": "^4.2.1",
"cacache": "^17.0.0",
@@ -12672,6 +12832,7 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
"integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "dev": true,
"engines": {
"node": ">=8"
}
@@ -12680,6 +12841,7 @@
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz",
"integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==",
+ "dev": true,
"dependencies": {
"minipass": "^7.0.3",
"minipass-sized": "^1.0.3",
@@ -12696,6 +12858,7 @@
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
"integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "dev": true,
"engines": {
"node": ">=16 || 14 >=14.17"
}
@@ -12704,6 +12867,7 @@
"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"
},
@@ -12718,6 +12882,7 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
"engines": {
"node": ">=14"
},
@@ -12729,6 +12894,7 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz",
"integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==",
+ "dev": true,
"dependencies": {
"agent-base": "^6.0.2",
"debug": "^4.3.3",
@@ -12742,6 +12908,7 @@
"version": "10.0.5",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz",
"integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==",
+ "dev": true,
"dependencies": {
"minipass": "^7.0.3"
},
@@ -12753,6 +12920,7 @@
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
"integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "dev": true,
"engines": {
"node": ">=16 || 14 >=14.17"
}
@@ -12761,6 +12929,7 @@
"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": "^4.0.0"
},
@@ -12772,6 +12941,7 @@
"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"
},
@@ -12906,6 +13076,7 @@
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
"integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+ "dev": true,
"engines": {
"node": ">= 6.0.0",
"npm": ">= 3.0.0"
@@ -12915,6 +13086,7 @@
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/socks/-/socks-2.8.1.tgz",
"integrity": "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==",
+ "dev": true,
"dependencies": {
"ip-address": "^9.0.5",
"smart-buffer": "^4.2.0"
@@ -12928,6 +13100,7 @@
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz",
"integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==",
+ "dev": true,
"dependencies": {
"agent-base": "^6.0.2",
"debug": "^4.3.3",
@@ -13049,6 +13222,7 @@
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
"integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
+ "dev": true,
"dependencies": {
"minipass": "^3.1.1"
},
@@ -13134,6 +13308,7 @@
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -13159,6 +13334,7 @@
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -13292,6 +13468,7 @@
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz",
"integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==",
+ "dev": true,
"dependencies": {
"chownr": "^2.0.0",
"fs-minipass": "^2.0.0",
@@ -13336,6 +13513,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
"integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "dev": true,
"engines": {
"node": ">=10"
}
@@ -13344,6 +13522,7 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
"integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "dev": true,
"engines": {
"node": ">=8"
}
@@ -13352,6 +13531,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true,
"bin": {
"mkdirp": "bin/cmd.js"
},
@@ -13362,7 +13542,8 @@
"node_modules/tar/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
},
"node_modules/test-exclude": {
"version": "6.0.0",
@@ -13403,7 +13584,8 @@
"node_modules/text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true
},
"node_modules/textextensions": {
"version": "5.16.0",
@@ -13476,7 +13658,8 @@
"node_modules/treeverse": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/treeverse/-/treeverse-1.0.4.tgz",
- "integrity": "sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g=="
+ "integrity": "sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g==",
+ "dev": true
},
"node_modules/ts-api-utils": {
"version": "1.3.0",
@@ -13549,6 +13732,7 @@
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.7.tgz",
"integrity": "sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==",
+ "dev": true,
"dependencies": {
"@tufjs/models": "1.0.4",
"debug": "^4.3.4",
@@ -13562,6 +13746,7 @@
"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"
},
@@ -13573,6 +13758,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
"integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
+ "dev": true,
"engines": {
"node": ">= 10"
}
@@ -13581,6 +13767,7 @@
"version": "17.1.4",
"resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz",
"integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==",
+ "dev": true,
"dependencies": {
"@npmcli/fs": "^3.1.0",
"fs-minipass": "^3.0.0",
@@ -13603,6 +13790,7 @@
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
"integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "dev": true,
"engines": {
"node": ">=16 || 14 >=14.17"
}
@@ -13611,6 +13799,7 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
"integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
+ "dev": true,
"dependencies": {
"cross-spawn": "^7.0.0",
"signal-exit": "^4.0.1"
@@ -13626,6 +13815,7 @@
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz",
"integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==",
+ "dev": true,
"dependencies": {
"minipass": "^7.0.3"
},
@@ -13637,6 +13827,7 @@
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
"integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "dev": true,
"engines": {
"node": ">=16 || 14 >=14.17"
}
@@ -13645,6 +13836,7 @@
"version": "10.3.10",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
"integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
+ "dev": true,
"dependencies": {
"foreground-child": "^3.1.0",
"jackspeak": "^2.3.5",
@@ -13666,6 +13858,7 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
"integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
+ "dev": true,
"dependencies": {
"@tootallnate/once": "2",
"agent-base": "6",
@@ -13679,6 +13872,7 @@
"version": "7.18.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
"integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
"engines": {
"node": ">=12"
}
@@ -13687,6 +13881,7 @@
"version": "11.1.1",
"resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz",
"integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==",
+ "dev": true,
"dependencies": {
"agentkeepalive": "^4.2.1",
"cacache": "^17.0.0",
@@ -13712,6 +13907,7 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
"integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "dev": true,
"engines": {
"node": ">=8"
}
@@ -13720,6 +13916,7 @@
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz",
"integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==",
+ "dev": true,
"dependencies": {
"minipass": "^7.0.3",
"minipass-sized": "^1.0.3",
@@ -13736,6 +13933,7 @@
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
"integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "dev": true,
"engines": {
"node": ">=16 || 14 >=14.17"
}
@@ -13744,6 +13942,7 @@
"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"
},
@@ -13758,6 +13957,7 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
"engines": {
"node": ">=14"
},
@@ -13769,6 +13969,7 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz",
"integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==",
+ "dev": true,
"dependencies": {
"agent-base": "^6.0.2",
"debug": "^4.3.3",
@@ -13782,6 +13983,7 @@
"version": "10.0.5",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz",
"integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==",
+ "dev": true,
"dependencies": {
"minipass": "^7.0.3"
},
@@ -13793,6 +13995,7 @@
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
"integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "dev": true,
"engines": {
"node": ">=16 || 14 >=14.17"
}
@@ -13801,6 +14004,7 @@
"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": "^4.0.0"
},
@@ -13812,6 +14016,7 @@
"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"
},
@@ -13866,6 +14071,7 @@
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
"integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "dev": true,
"dependencies": {
"is-typedarray": "^1.0.0"
}
@@ -13923,6 +14129,7 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
"integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
+ "dev": true,
"dependencies": {
"unique-slug": "^2.0.0"
}
@@ -13931,6 +14138,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
"integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
+ "dev": true,
"dependencies": {
"imurmurhash": "^0.1.4"
}
@@ -14112,7 +14320,8 @@
"node_modules/walk-up-path": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz",
- "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg=="
+ "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==",
+ "dev": true
},
"node_modules/wcwidth": {
"version": "1.0.1",
@@ -14194,6 +14403,7 @@
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
"integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
+ "dev": true,
"dependencies": {
"string-width": "^1.0.2 || 2 || 3 || 4"
}
@@ -14241,6 +14451,7 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@@ -14262,6 +14473,7 @@
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
"integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+ "dev": true,
"dependencies": {
"imurmurhash": "^0.1.4",
"is-typedarray": "^1.0.0",
diff --git a/package.json b/package.json
index 631090ed..48ae5383 100644
--- a/package.json
+++ b/package.json
@@ -35,7 +35,6 @@
"@types/decompress": "4.2.7",
"@types/fs-extra": "11.0.4",
"@types/mocha": "10.0.6",
- "@types/mock-fs": "4.13.4",
"@types/node": "18.19.22",
"@typescript-eslint/eslint-plugin": "7.1.1",
"@typescript-eslint/parser": "7.1.1",
@@ -43,7 +42,6 @@
"chai": "4.4.1",
"eslint": "8.57.0",
"mocha": "10.3.0",
- "mock-fs": "5.2.0",
"nyc": "15.1.0",
"oclif": "3.17.2",
"pkg": "5.8.1",
diff --git a/src/commands/create/index.ts b/src/commands/create/index.ts
index ceb9f81d..79192ab8 100644
--- a/src/commands/create/index.ts
+++ b/src/commands/create/index.ts
@@ -14,25 +14,15 @@
import { Command, Flags } from '@oclif/core';
import { ProjectConfig } from '../../modules/project-config';
-import { packageDownloader } from '../../modules/package-downloader';
// eslint-disable-next-line @typescript-eslint/naming-convention
import Exec from '../exec';
// eslint-disable-next-line @typescript-eslint/naming-convention
import Init from '../init';
// eslint-disable-next-line @typescript-eslint/naming-convention
import Sync from '../sync';
-import {
- PackageIndex,
- CoreComponent,
- ExtensionComponent,
- CoreOptions,
- DescribedId,
- Parameter,
- PackageAttributes,
-} from '../../modules/package-index';
+import { PackageIndex, CoreComponent, ExtensionComponent, CoreOptions, DescribedId, Parameter } from '../../modules/package-index';
import { AppManifest, AppManifestInterfaceAttributes } from '../../modules/app-manifest';
import { InteractiveMode } from '../../modules/create-interactive';
-import { PackageConfig } from '../../modules/package';
// inquirer >= v9 is an ESM package.
// We are not using ESM in our CLI,
diff --git a/src/modules/app-manifest.ts b/src/modules/app-manifest.ts
index 79b3b9eb..8b583970 100644
--- a/src/modules/app-manifest.ts
+++ b/src/modules/app-manifest.ts
@@ -12,11 +12,9 @@
//
// SPDX-License-Identifier: Apache-2.0
-import { existsSync, readFileSync } from 'fs';
import { resolve } from 'path';
import { cwd } from 'process';
-import { DEFAULT_BUFFER_ENCODING } from './constants';
-import { outputFileSync } from 'fs-extra';
+import { CliFileSystem } from '../utils/fs-bridge';
export const DEFAULT_APP_MANIFEST_PATH = './app/AppManifest.json';
export const APP_MANIFEST_PATH_VARIABLE = 'appManifestPath';
@@ -95,12 +93,12 @@ export class AppManifest implements AppManifestAttributes {
* @throws {Error} Throws an error if there is an issue reading the AppManifest file.
*/
static read(appManifestPath: string = APP_MANIFEST_PATH): AppManifest | undefined {
- if (!existsSync(appManifestPath)) {
+ if (!CliFileSystem.existsSync(appManifestPath)) {
console.info('*** Info ***: No AppManifest found');
return undefined;
}
try {
- const file = readFileSync(appManifestPath, DEFAULT_BUFFER_ENCODING);
+ const file = CliFileSystem.readFileSync(appManifestPath);
const manifest = JSON.parse(file);
if (Array.isArray(manifest)) {
// for backwards compatibility, use the first entry from the array
@@ -114,6 +112,6 @@ export class AppManifest implements AppManifestAttributes {
}
write() {
- outputFileSync(DEFAULT_APP_MANIFEST_PATH, JSON.stringify(this, null, 4));
+ CliFileSystem.outputFileSync(DEFAULT_APP_MANIFEST_PATH, JSON.stringify(this, null, 4));
}
}
diff --git a/src/modules/package-downloader.ts b/src/modules/package-downloader.ts
index ed09ee82..2e9f6170 100644
--- a/src/modules/package-downloader.ts
+++ b/src/modules/package-downloader.ts
@@ -12,11 +12,11 @@
//
// SPDX-License-Identifier: Apache-2.0
-import { existsSync } from 'fs-extra';
import { posix as pathPosix } from 'path';
import { CheckRepoActions, SimpleGit, simpleGit } from 'simple-git';
import { PackageConfig } from './package';
import { getLatestVersion } from './semver';
+import { CliFileSystem } from '../utils/fs-bridge';
export class PackageDownloader {
packageConfig: PackageConfig;
@@ -62,7 +62,7 @@ export class PackageDownloader {
checkRepoAction = CheckRepoActions.IS_REPO_ROOT;
}
- if (!existsSync(packageDir)) {
+ if (!CliFileSystem.existsSync(packageDir)) {
await this.cloneRepository(packageDir, cloneOpts);
}
diff --git a/src/modules/package-index.ts b/src/modules/package-index.ts
index b6190b33..68471438 100644
--- a/src/modules/package-index.ts
+++ b/src/modules/package-index.ts
@@ -12,8 +12,7 @@
//
// SPDX-License-Identifier: Apache-2.0
-import { readFileSync } from 'fs-extra';
-import { DEFAULT_BUFFER_ENCODING } from './constants';
+import { CliFileSystem } from '../utils/fs-bridge';
/**
* Additional argument for exposed interface
@@ -148,7 +147,7 @@ export class PackageIndex {
*/
static read(path: string = './package-index.json'): PackageIndex {
try {
- const packageIndexFile = readFileSync(path, DEFAULT_BUFFER_ENCODING);
+ const packageIndexFile = CliFileSystem.readFileSync(path);
const packageIndex: PackageAttributes[] = JSON.parse(packageIndexFile);
return new PackageIndex(packageIndex);
} catch (error) {
diff --git a/src/modules/package.ts b/src/modules/package.ts
index dd372e8b..86729967 100644
--- a/src/modules/package.ts
+++ b/src/modules/package.ts
@@ -12,12 +12,11 @@
//
// SPDX-License-Identifier: Apache-2.0
-import { existsSync, readFileSync } from 'fs-extra';
import { homedir } from 'os';
import { join } from 'path';
import { ComponentManifest } from './component';
-import { DEFAULT_BUFFER_ENCODING } from './constants';
import { packageDownloader } from './package-downloader';
+import { CliFileSystem } from '../utils/fs-bridge';
export const MANIFEST_FILE_NAME = 'manifest.json';
@@ -116,7 +115,7 @@ export class PackageConfig {
}
isPackageInstalled(): boolean {
- if (!existsSync(this.getPackageDirectoryWithVersion())) {
+ if (!CliFileSystem.existsSync(this.getPackageDirectoryWithVersion())) {
return false;
}
return true;
@@ -125,7 +124,7 @@ export class PackageConfig {
readPackageManifest(): PackageManifest {
try {
const path = this.getManifestFilePath();
- const config: PackageManifest = deserializePackageJSON(readFileSync(path, DEFAULT_BUFFER_ENCODING));
+ const config: PackageManifest = deserializePackageJSON(CliFileSystem.readFileSync(path));
return config;
} catch (error) {
console.log(`Cannot find package ${this.getPackageName()}:${this.version}. Please upgrade or init first!`);
diff --git a/src/modules/project-cache.ts b/src/modules/project-cache.ts
index eed254f5..73edcab0 100644
--- a/src/modules/project-cache.ts
+++ b/src/modules/project-cache.ts
@@ -13,11 +13,11 @@
// SPDX-License-Identifier: Apache-2.0
import { createHash } from 'node:crypto';
-import { existsSync, mkdirSync, PathLike, readFileSync, writeFileSync } from 'node:fs';
+import { PathLike } from 'node:fs';
import { join, parse } from 'node:path';
-import { DEFAULT_BUFFER_ENCODING } from './constants';
import { mapReplacer } from './helpers';
import { getVelocitasRoot } from './package';
+import { CliFileSystem } from '../utils/fs-bridge';
const FILE_NAME = 'cache.json';
@@ -47,7 +47,7 @@ export class ProjectCache {
static read(path: string = join(ProjectCache.getCacheDir(), FILE_NAME)): ProjectCache {
const cache = new ProjectCache();
try {
- const data: any = JSON.parse(readFileSync(path, DEFAULT_BUFFER_ENCODING));
+ const data: any = JSON.parse(CliFileSystem.readFileSync(path));
cache._data = new Map(Object.entries(data));
} catch (e: any) {
if (e.code !== 'ENOENT') {
@@ -64,9 +64,9 @@ export class ProjectCache {
write(path: string = join(ProjectCache.getCacheDir(), FILE_NAME)) {
const parsedPath = parse(path);
- if (!existsSync(parsedPath.base)) {
- mkdirSync(parsedPath.dir, { recursive: true });
+ if (!CliFileSystem.existsSync(parsedPath.base)) {
+ CliFileSystem.mkdirSync(parsedPath.dir);
}
- writeFileSync(path, JSON.stringify(this._data, mapReplacer));
+ CliFileSystem.writeFileSync(path, JSON.stringify(this._data, mapReplacer));
}
}
diff --git a/src/modules/project-config.ts b/src/modules/project-config.ts
index 5ade6073..9b561e24 100644
--- a/src/modules/project-config.ts
+++ b/src/modules/project-config.ts
@@ -12,10 +12,9 @@
//
// SPDX-License-Identifier: Apache-2.0
-import { existsSync, PathLike, readFileSync, writeFileSync } from 'fs';
+import { PathLike } from 'node:fs';
import { resolve } from 'path';
import { cwd } from 'process';
-import { DEFAULT_BUFFER_ENCODING } from './constants';
import { mapReplacer } from './helpers';
import { PackageConfig } from './package';
import { getLatestVersion } from './semver';
@@ -23,6 +22,7 @@ import { PackageIndex } from './package-index';
import { DEFAULT_APP_MANIFEST_PATH } from './app-manifest';
import { ComponentConfig, ComponentContext } from './component';
import { VariableCollection } from './variables';
+import { CliFileSystem } from '../utils/fs-bridge';
export const DEFAULT_CONFIG_FILE_NAME = '.velocitas.json';
export const DEFAULT_CONFIG_FILE_PATH = resolve(cwd(), DEFAULT_CONFIG_FILE_NAME);
@@ -66,9 +66,8 @@ export class ProjectConfig {
static read(cliVersion: string, path: PathLike = DEFAULT_CONFIG_FILE_PATH): ProjectConfig {
let config: ProjectConfig;
-
try {
- config = new ProjectConfig(cliVersion, JSON.parse(readFileSync(path, DEFAULT_BUFFER_ENCODING)));
+ config = new ProjectConfig(cliVersion, JSON.parse(CliFileSystem.readFileSync(path as string)));
} catch (error) {
throw new Error(`Error in parsing ${DEFAULT_CONFIG_FILE_NAME}: ${(error as Error).message}`);
}
@@ -94,7 +93,7 @@ export class ProjectConfig {
return config;
}
- static isAvailable = (path: PathLike = DEFAULT_CONFIG_FILE_PATH) => existsSync(path);
+ static isAvailable = (path: PathLike = DEFAULT_CONFIG_FILE_PATH) => CliFileSystem.existsSync(path);
static async create(usedComponents: Set, packageIndex: PackageIndex, cliVersion: string) {
const projectConfig = new ProjectConfig(`v${cliVersion}`);
@@ -140,7 +139,7 @@ export class ProjectConfig {
cliVersion: this.cliVersion,
};
const configString = `${JSON.stringify(projectConfigOptions, mapReplacer, 4)}\n`;
- writeFileSync(path, configString, DEFAULT_BUFFER_ENCODING);
+ CliFileSystem.writeFileSync(path, configString);
}
/**
diff --git a/src/modules/setup.ts b/src/modules/setup.ts
index 804b8ac5..908da282 100644
--- a/src/modules/setup.ts
+++ b/src/modules/setup.ts
@@ -12,7 +12,7 @@
//
// SPDX-License-Identifier: Apache-2.0
-import { existsSync, Stats } from 'fs';
+import { Stats } from 'node:fs';
import { Transform } from 'node:stream';
import path, { join } from 'path';
import { cwd } from 'process';
@@ -21,6 +21,7 @@ import { TransformCallback, TransformOptions } from 'stream';
import { PackageConfig } from './package';
import { VariableCollection } from './variables';
import { ComponentManifest } from './component';
+import { CliFileSystem } from '../utils/fs-bridge';
const SUPPORTED_TEXT_FILES_ARRAY = ['.md', '.yaml', '.yml', '.txt', '.json', '.sh', '.html', '.htm', '.xml', '.tpl'];
@@ -91,7 +92,7 @@ export function installComponent(packageConfig: PackageConfig, component: Compon
const sourceFileOrDir = join(packageConfig.getPackageDirectory(), packageConfig.version, src);
const destFileOrDir = join(cwd(), dst);
try {
- if (existsSync(sourceFileOrDir)) {
+ if (CliFileSystem.existsSync(sourceFileOrDir)) {
copy(sourceFileOrDir, destFileOrDir, {
dot: true,
overwrite: true,
diff --git a/src/modules/variables.ts b/src/modules/variables.ts
index c4d9e6bd..e4f860d5 100644
--- a/src/modules/variables.ts
+++ b/src/modules/variables.ts
@@ -12,11 +12,11 @@
//
// SPDX-License-Identifier: Apache-2.0
-import { realpathSync } from 'node:fs';
import { cwd } from 'node:process';
import { ComponentContext } from './component';
import { mapReplacer } from './helpers';
import { ProjectCache } from './project-cache';
+import { CliFileSystem } from '../utils/fs-bridge';
export enum ScopeIdentifier {
package = 'package',
@@ -263,7 +263,7 @@ export function createEnvVars(packagePath: string, variables: VariableCollection
const envVars = Object.assign({}, process.env, {
VELOCITAS_WORKSPACE_DIR: cwd(),
VELOCITAS_CACHE_DATA: JSON.stringify(projectCache.raw(), mapReplacer),
- VELOCITAS_CACHE_DIR: ProjectCache.getCacheDir(realpathSync(process.cwd())),
+ VELOCITAS_CACHE_DIR: ProjectCache.getCacheDir(CliFileSystem.realpathSync(process.cwd())),
VELOCITAS_PACKAGE_DIR: packagePath,
});
diff --git a/src/utils/fs-bridge.ts b/src/utils/fs-bridge.ts
new file mode 100644
index 00000000..9cfdeec2
--- /dev/null
+++ b/src/utils/fs-bridge.ts
@@ -0,0 +1,253 @@
+// Copyright (c) 2024 Contributors to the Eclipse Foundation
+//
+// This program and the accompanying materials are made available under the
+// terms of the Apache License, Version 2.0 which is available at
+// https://www.apache.org/licenses/LICENSE-2.0.
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations
+// under the License.
+//
+// SPDX-License-Identifier: Apache-2.0
+
+import * as fs from 'node:fs';
+import * as fse from 'fs-extra';
+import { DEFAULT_BUFFER_ENCODING } from '../modules/constants';
+import { join } from 'path';
+import { cwd } from 'node:process';
+
+/**
+ * Interface representing needed file system methods.
+ */
+interface IFileSystem {
+ /**
+ * Synchronously reads the entire contents of a file.
+ * @param path A path to a file or a file descriptor.
+ * @returns The contents of the file.
+ */
+ readFileSync(path: fs.PathOrFileDescriptor): string;
+
+ /**
+ * Tests whether or not the given path exists by checking with the file system.
+ * @param path A path to a file or directory.
+ * @returns `true` if the path exists, `false` otherwise.
+ */
+ existsSync(path: fs.PathLike): boolean;
+
+ /**
+ * Synchronously creates a directory.
+ * @param path A path to the directory to create.
+ * @returns `undefined` if the directory was created successfully, otherwise an error.
+ */
+ mkdirSync(path: fs.PathLike): string | undefined;
+
+ /**
+ * Synchronously writes data to a file, replacing the file if it already exists.
+ * @param path A path to the file to write to.
+ * @param data The data to write to the file.
+ */
+ writeFileSync(path: fs.PathOrFileDescriptor, data: string | NodeJS.ArrayBufferView): void;
+
+ /**
+ * Synchronously writes data to a file, creating any directories in the path if they don't exist.
+ * @param file A path to the file to write to.
+ * @param data The data to write to the file.
+ */
+ outputFileSync(file: string, data: string | NodeJS.ArrayBufferView): void;
+
+ /**
+ * Returns the canonicalized absolute pathname of the specified path.
+ * @param path A path to a file or directory.
+ * @returns The absolute path.
+ */
+ realpathSync(path: fs.PathLike): string;
+}
+
+/**
+ * Interface representing needed file system methods exclusively for tests.
+ */
+interface IFileSystemTests {
+ /**
+ * Asynchronously creates a directory.
+ * @param path A path to the directory to create.
+ * @returns `undefined` if the directory was created successfully, otherwise an error.
+ */
+ promisesMkdir(path: string): Promise;
+
+ /**
+ * Asynchronously writes data to a file, replacing the file if it already exists.
+ * @param path A path to the file to write to.
+ * @param data The data to write to the file.
+ */
+ promisesWriteFile(path: string, data: any): Promise;
+}
+
+/**
+ * Represents an implementation for the real file system.
+ */
+class RealFileSystem implements IFileSystem {
+ readFileSync(path: fs.PathOrFileDescriptor): string {
+ return fs.readFileSync(path, DEFAULT_BUFFER_ENCODING);
+ }
+
+ existsSync(path: fs.PathLike): boolean {
+ return fs.existsSync(path);
+ }
+
+ mkdirSync(path: fs.PathLike): string | undefined {
+ return fs.mkdirSync(path, { recursive: true });
+ }
+
+ writeFileSync(path: fs.PathOrFileDescriptor, data: string | NodeJS.ArrayBufferView): void {
+ fs.writeFileSync(path, data, { encoding: DEFAULT_BUFFER_ENCODING });
+ }
+
+ outputFileSync(file: string, data: string | NodeJS.ArrayBufferView): void {
+ fse.outputFileSync(file, data);
+ }
+
+ realpathSync(path: fs.PathLike): string {
+ return fs.realpathSync(path);
+ }
+}
+
+export type MockFileSystemObj = Record;
+
+/**
+ * Represents an implementation for a mocked file system.
+ */
+export class MockFileSystem implements IFileSystem, IFileSystemTests {
+ private _fileSystemObj: MockFileSystemObj;
+
+ constructor(fileSystemObj: MockFileSystemObj) {
+ this._fileSystemObj = fileSystemObj;
+ }
+
+ readFileSync(path: fs.PathOrFileDescriptor): string {
+ const filePath = path.toString().startsWith('./') ? join(cwd(), path.toString()) : path.toString();
+ return this._fileSystemObj[filePath];
+ }
+
+ existsSync(path: fs.PathLike): boolean {
+ return Object.keys(this._fileSystemObj).some((key) => key.match(path.toString()));
+ }
+
+ mkdirSync(path: fs.PathLike): string | undefined {
+ return (this._fileSystemObj[path.toString()] = '');
+ }
+
+ writeFileSync(path: fs.PathOrFileDescriptor, data: any): void {
+ this._fileSystemObj[path.toString()] = data;
+ }
+
+ outputFileSync(path: string, data: any): void {
+ this._fileSystemObj[path.startsWith('./') ? join(cwd(), path) : path] = data;
+ }
+
+ realpathSync(path: fs.PathLike): string {
+ return path.toString();
+ }
+
+ async promisesMkdir(path: string): Promise {
+ this._fileSystemObj[path] = '';
+ }
+
+ async promisesWriteFile(path: string, data: any): Promise {
+ return (this._fileSystemObj[path] = data);
+ }
+}
+
+/**
+ * Class providing file system operations for usage within the CLI.
+ */
+export class CliFileSystem {
+ private static _impl: IFileSystem = new RealFileSystem();
+
+ static setImpl(impl: IFileSystem) {
+ this._impl = impl;
+ }
+
+ private constructor() {}
+
+ /**
+ * Synchronously reads the entire contents of a file.
+ * @param path A path to a file or a file descriptor.
+ * @returns The contents of the file.
+ */
+ static readFileSync(path: fs.PathOrFileDescriptor): string {
+ return this._impl.readFileSync(path);
+ }
+
+ /**
+ * Tests whether or not the given path exists by checking with the file system.
+ * @param path A path to a file or directory.
+ * @returns `true` if the path exists, `false` otherwise.
+ */
+ static existsSync(path: fs.PathLike): boolean {
+ return this._impl.existsSync(path);
+ }
+
+ /**
+ * Synchronously creates a directory.
+ * @param path A path to the directory to create.
+ * @returns `undefined` if the directory was created successfully, otherwise an error.
+ */
+ static mkdirSync(path: fs.PathLike): string | undefined {
+ return this._impl.mkdirSync(path);
+ }
+
+ /**
+ * Synchronously writes data to a file, replacing the file if it already exists.
+ * @param path A path to the file to write to.
+ * @param data The data to write to the file.
+ */
+ static writeFileSync(path: fs.PathOrFileDescriptor, data: string | NodeJS.ArrayBufferView): void {
+ this._impl.writeFileSync(path, data);
+ }
+
+ /**
+ * Synchronously writes data to a file, creating any directories in the path if they don't exist.
+ * @param file A path to the file to write to.
+ * @param data The data to write to the file.
+ */
+ static outputFileSync(file: string, data: string | NodeJS.ArrayBufferView): void {
+ this._impl.outputFileSync(file, data);
+ }
+
+ /**
+ * Returns the canonicalized absolute pathname of the specified path.
+ * @param path A path to a file or directory.
+ * @returns The absolute path.
+ */
+ static realpathSync(path: fs.PathLike): string {
+ return this._impl.realpathSync(path);
+ }
+
+ /**
+ * Asynchronously creates a directory.
+ * @param path A path to the directory to create.
+ * @returns `undefined` if the directory was created successfully, otherwise an error.
+ */
+ static async promisesMkdir(path: string): Promise {
+ if ('promisesMkdir' in this._impl) {
+ return (this._impl as unknown as IFileSystemTests).promisesMkdir(path);
+ } else {
+ throw new Error('Method not implemented in the provided implementation.');
+ }
+ }
+
+ /**
+ * Asynchronously writes data to a file, replacing the file if it already exists.
+ * @param path A path to the file to write to.
+ * @param data The data to write to the file.
+ */
+ static async promisesWriteFile(path: string, data: any): Promise {
+ if ('promisesWriteFile' in this._impl) {
+ return (this._impl as unknown as IFileSystemTests).promisesWriteFile(path, data);
+ } else {
+ throw new Error('Method not implemented in the provided implementation.');
+ }
+ }
+}
diff --git a/test/commands/cache/cache.test.ts b/test/commands/cache/cache.test.ts
index 8e7c4426..90a8d810 100644
--- a/test/commands/cache/cache.test.ts
+++ b/test/commands/cache/cache.test.ts
@@ -14,15 +14,12 @@
import { expect, test } from '@oclif/test';
import { getCacheData } from '../../helpers/cache';
-import { mockFolders, mockRestore } from '../../utils/mockfs';
+import { mockFolders } from '../../utils/mockfs';
describe('cache', () => {
test.do(() => {
- mockFolders({ velocitasConfig: true, mockCache: true });
+ mockFolders({ velocitasConfig: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.command('cache get')
.it('returns the entire cache content', (ctx) => {
@@ -30,11 +27,8 @@ describe('cache', () => {
});
test.do(() => {
- mockFolders({ velocitasConfig: true, mockCache: true });
+ mockFolders({ velocitasConfig: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.command(['cache get', 'myField'])
.it('returns the value of a single cache key', (ctx) => {
@@ -42,11 +36,8 @@ describe('cache', () => {
});
test.do(() => {
- mockFolders({ velocitasConfig: true, mockCache: true });
+ mockFolders({ velocitasConfig: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.command(['cache set', 'foo', 'bar'])
.it('sets a cache field', (ctx) => {
@@ -54,11 +45,8 @@ describe('cache', () => {
});
test.do(() => {
- mockFolders({ velocitasConfig: true, mockCache: true });
+ mockFolders({ velocitasConfig: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.command('cache clear')
.it('clears all cache contents', (ctx) => {
diff --git a/test/commands/create/create.test.ts b/test/commands/create/create.test.ts
index 498ec5ab..23c9511d 100644
--- a/test/commands/create/create.test.ts
+++ b/test/commands/create/create.test.ts
@@ -14,7 +14,7 @@
import { expect, test } from '@oclif/test';
import { packageIndexMock, velocitasConfigMock } from '../../utils/mockConfig';
-import { mockFolders, mockRestore } from '../../utils/mockfs';
+import { mockFolders } from '../../utils/mockfs';
import * as gitModule from 'simple-git';
import * as exec from '../../../src/modules/exec';
import sinon from 'sinon';
@@ -22,6 +22,7 @@ import { simpleGitInstanceMock } from '../../helpers/simpleGit';
import { ProjectConfig } from '../../../src/modules/project-config';
import { AppManifest } from '../../../src/modules/app-manifest';
import { CoreComponent, ExtensionComponent } from '../../../src/modules/package-index';
+
const inquirer = require('inquirer');
const TEST_APP_NAME = 'TestApp';
@@ -73,9 +74,6 @@ describe('create', () => {
test.do(() => {
mockFolders({ packageIndex: true, installedComponents: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.stub(gitModule, 'simpleGit', sinon.stub().returns(simpleGitInstanceMock()))
.stub(exec, 'runExecSpec', () => {})
@@ -102,9 +100,6 @@ describe('create', () => {
test.do(() => {
mockFolders({ packageIndex: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.stub(gitModule, 'simpleGit', sinon.stub().returns(simpleGitInstanceMock()))
.stub(exec, 'awaitSpawn', () => {
@@ -117,9 +112,6 @@ describe('create', () => {
test.do(() => {
mockFolders();
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.command(['create'])
.catch(`No package-index.json found.`)
@@ -128,9 +120,6 @@ describe('create', () => {
test.do(() => {
mockFolders({ packageIndex: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.command(['create', '-c', TEST_COMPONENT_CORE_ID])
.catch(`Missing required flag 'name'`)
@@ -139,9 +128,6 @@ describe('create', () => {
test.do(() => {
mockFolders({ packageIndex: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.command(['create', '-n', TEST_APP_NAME])
.catch(`Missing required flag 'core'`)
@@ -150,9 +136,6 @@ describe('create', () => {
test.do(() => {
mockFolders({ packageIndex: true, installedComponents: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.stub(gitModule, 'simpleGit', sinon.stub().returns(simpleGitInstanceMock()))
.stub(exec, 'runExecSpec', () => {})
@@ -198,9 +181,6 @@ describe('create', () => {
test.do(() => {
mockFolders({ packageIndex: true, installedComponents: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.stub(gitModule, 'simpleGit', sinon.stub().returns(simpleGitInstanceMock()))
.stub(exec, 'runExecSpec', () => {})
@@ -236,9 +216,6 @@ describe('create', () => {
test.do(() => {
mockFolders({ packageIndex: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.command(['create', '-n', 'test', '-e', 'example'])
.catch(`Flags 'name' and 'example' are mutually exclusive!`)
@@ -247,9 +224,6 @@ describe('create', () => {
test.do(() => {
mockFolders({ packageIndex: true, installedComponents: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.stub(gitModule, 'simpleGit', sinon.stub().returns(simpleGitInstanceMock()))
.stub(exec, 'runExecSpec', () => {})
diff --git a/test/commands/exec/exec.test.ts b/test/commands/exec/exec.test.ts
index 863b8d21..03f1fbd1 100644
--- a/test/commands/exec/exec.test.ts
+++ b/test/commands/exec/exec.test.ts
@@ -16,7 +16,8 @@ import { expect, test } from '@oclif/test';
import { IEvent, IPty } from 'node-pty';
import { setSpawnImplementation } from '../../../src/modules/exec';
import { runtimePackageManifestMock } from '../../utils/mockConfig';
-import { mockFolders, mockRestore } from '../../utils/mockfs';
+import * as exec from '../../../src/modules/exec';
+import { mockFolders } from '../../utils/mockfs';
type ExitType = {
exitCode: number;
@@ -68,9 +69,6 @@ describe('exec', () => {
mockFolders({ velocitasConfig: true, installedComponents: true });
setSpawnImplementation((command: string, args: string | string[], options: any) => new StubPty());
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.stderr()
.command(['exec', `${runtimePackageManifestMock.components[0].id}`, `${runtimePackageManifestMock.components[0].programs[0].id}`])
@@ -82,9 +80,6 @@ describe('exec', () => {
mockFolders({ velocitasConfig: true, installedComponents: true });
setSpawnImplementation((command: string, args: string | string[], options: any) => new StubPty());
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.stderr()
.command([
@@ -103,9 +98,6 @@ describe('exec', () => {
mockFolders({ velocitasConfig: true, installedComponents: true });
setSpawnImplementation((command: string, args: string | string[], options: any) => new StubPty());
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.stderr()
.command(['exec', `${runtimePackageManifestMock.components[1].id}`, `${runtimePackageManifestMock.components[1].programs[0].id}`])
@@ -116,9 +108,7 @@ describe('exec', () => {
test.do(() => {
mockFolders({ velocitasConfig: true, installedComponents: true, appManifest: false });
})
- .finally(() => {
- mockRestore();
- })
+ .stub(exec, 'runExecSpec', () => {})
.stdout()
.command(['exec', `${runtimePackageManifestMock.components[1].id}`, `${runtimePackageManifestMock.components[1].programs[0].id}`])
.it('should log warning when no AppManifest.json is found', (ctx) => {
@@ -130,9 +120,6 @@ describe('exec', () => {
mockFolders({ velocitasConfig: true, installedComponents: true });
setSpawnImplementation((command: string, args: string | string[], options: any) => new StubPty());
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.command(['exec', `${runtimePackageManifestMock.components[0].id}`, 'unknown-script'])
.catch(`No program found for item 'unknown-script' referenced in program list of '${runtimePackageManifestMock.components[0].id}'`)
@@ -142,9 +129,6 @@ describe('exec', () => {
mockFolders({ velocitasConfig: true, installedComponents: true });
setSpawnImplementation((command: string, args: string | string[], options: any) => new StubPty());
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.command(['exec', `${runtimePackageManifestMock.components[1].id}`, 'unknown-script'])
.catch(`No program found for item 'unknown-script' referenced in program list of '${runtimePackageManifestMock.components[1].id}'`)
diff --git a/test/commands/init/init.test.ts b/test/commands/init/init.test.ts
index 2ac47d62..04aa5e29 100644
--- a/test/commands/init/init.test.ts
+++ b/test/commands/init/init.test.ts
@@ -13,21 +13,18 @@
// SPDX-License-Identifier: Apache-2.0
import { expect, test } from '@oclif/test';
-import * as fs from 'fs';
import { velocitasConfigMock } from '../../utils/mockConfig';
-import { mockFolders, mockRestore, userHomeDir } from '../../utils/mockfs';
+import { mockFolders, userHomeDir } from '../../utils/mockfs';
import * as gitModule from 'simple-git';
import * as exec from '../../../src/modules/exec';
import sinon from 'sinon';
import { simpleGitInstanceMock } from '../../helpers/simpleGit';
+import { CliFileSystem } from '../../../src/utils/fs-bridge';
describe('init', () => {
test.do(() => {
mockFolders({ velocitasConfig: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.stub(gitModule, 'simpleGit', sinon.stub().returns(simpleGitInstanceMock()))
.stub(exec, 'runExecSpec', () => {})
@@ -40,17 +37,24 @@ describe('init', () => {
expect(ctx.stdout).to.contain(
`... Downloading package: '${velocitasConfigMock.packages[1].repo}:${velocitasConfigMock.packages[1].version}'`,
);
- expect(fs.existsSync(`${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[0].repo}`)).to.be.true;
- expect(fs.existsSync(`${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[1].repo}`)).to.be.true;
+ expect(
+ CliFileSystem.existsSync(
+ `${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[0].repo}/${velocitasConfigMock.packages[0].version}`,
+ ),
+ ).to.be.true;
+ expect(
+ CliFileSystem.existsSync(
+ `${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[1].repo}/${velocitasConfigMock.packages[1].version}`,
+ ),
+ ).to.be.true;
});
test.do(() => {
mockFolders({ velocitasConfig: true, installedComponents: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
+ .stub(gitModule, 'simpleGit', sinon.stub().returns(simpleGitInstanceMock()))
+ .stub(exec, 'runExecSpec', () => {})
.command(['init', '-v'])
.it('skips downloading because package is already installed', (ctx) => {
console.error(ctx.stdout);
@@ -61,18 +65,23 @@ describe('init', () => {
expect(ctx.stdout).to.contain(
`... '${velocitasConfigMock.packages[1].repo}:${velocitasConfigMock.packages[1].version}' already initialized.`,
);
- expect(fs.existsSync(`${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[0].repo}`)).to.be.true;
- expect(fs.existsSync(`${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[1].repo}`)).to.be.true;
+ expect(
+ CliFileSystem.existsSync(
+ `${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[0].repo}/${velocitasConfigMock.packages[0].version}`,
+ ),
+ ).to.be.true;
+ expect(
+ CliFileSystem.existsSync(
+ `${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[1].repo}/${velocitasConfigMock.packages[1].version}`,
+ ),
+ ).to.be.true;
});
test.do(() => {
mockFolders({ velocitasConfig: true, installedComponents: true, appManifest: false });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
- .command(['init', '-v'])
+ .command(['init', '-v', '--no-hooks'])
.it('should log warning when no AppManifest.json is found', (ctx) => {
console.error(ctx.stdout);
expect(ctx.stdout).to.contain('*** Info ***: No AppManifest found');
@@ -81,9 +90,6 @@ describe('init', () => {
test.do(() => {
mockFolders();
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.command(['init'])
.it('creates config file from default velocitas.json', (ctx) => {
@@ -91,15 +97,12 @@ describe('init', () => {
expect(ctx.stdout).to.contain(
'... Directory is no velocitas project. Creating .velocitas.json at the root of your repository.',
);
- expect(fs.existsSync(`${process.cwd()}/.velocitas.json`)).to.be.true;
+ expect(CliFileSystem.existsSync(`${process.cwd()}/.velocitas.json`)).to.be.true;
});
test.do(() => {
- mockFolders({ velocitasConfig: true });
+ mockFolders({ velocitasConfig: true, installedComponents: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.stub(gitModule, 'simpleGit', sinon.stub().returns(simpleGitInstanceMock()))
.stub(exec, 'runExecSpec', () => {})
diff --git a/test/commands/package/package.test.ts b/test/commands/package/package.test.ts
index 6a438455..17c33233 100644
--- a/test/commands/package/package.test.ts
+++ b/test/commands/package/package.test.ts
@@ -14,15 +14,12 @@
import { expect, test } from '@oclif/test';
import { velocitasConfigMock } from '../../utils/mockConfig';
-import { mockFolders, mockRestore, userHomeDir } from '../../utils/mockfs';
+import { mockFolders, userHomeDir } from '../../utils/mockfs';
describe('package', () => {
test.do(() => {
mockFolders({ velocitasConfig: true, installedComponents: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.command(['package'])
.it('prints information about all installed packages', (ctx) => {
@@ -33,9 +30,6 @@ describe('package', () => {
test.do(() => {
mockFolders({ velocitasConfig: true, installedComponents: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.command(['package', '-p', `${velocitasConfigMock.packages[0].repo}`])
.it('prints the path of specified package', (ctx) => {
@@ -47,9 +41,6 @@ describe('package', () => {
test.do(() => {
mockFolders({ velocitasConfig: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.command(['package'])
.catch(`Cannot find package ${velocitasConfigMock.packages[0].repo}:${velocitasConfigMock.packages[0].version}`)
@@ -58,9 +49,6 @@ describe('package', () => {
test.do(() => {
mockFolders({ velocitasConfig: true, installedComponents: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.command(['package', '-p'])
.catch('Path can be only printed for a single package, please specify !')
diff --git a/test/commands/sync/sync.test.ts b/test/commands/sync/sync.test.ts
index 79700687..84be7cba 100644
--- a/test/commands/sync/sync.test.ts
+++ b/test/commands/sync/sync.test.ts
@@ -14,15 +14,12 @@
import { expect, test } from '@oclif/test';
import { runtimePackageManifestMock, setupPackageManifestMock } from '../../utils/mockConfig';
-import { mockFolders, mockRestore } from '../../utils/mockfs';
+import { mockFolders } from '../../utils/mockfs';
describe('sync', () => {
test.do(() => {
mockFolders({ velocitasConfig: true, installedComponents: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.command(['sync'])
.it('syncing components into project directory', (ctx) => {
diff --git a/test/commands/upgrade/upgrade.test.ts b/test/commands/upgrade/upgrade.test.ts
index 02791702..549e26d7 100644
--- a/test/commands/upgrade/upgrade.test.ts
+++ b/test/commands/upgrade/upgrade.test.ts
@@ -14,14 +14,14 @@
import { ux } from '@oclif/core';
import { expect, test } from '@oclif/test';
-import * as fs from 'fs';
import * as packageModule from '../../../src/modules/package';
import { ProjectConfigOptions } from '../../../src/modules/project-config';
import { velocitasConfigMock } from '../../utils/mockConfig';
-import { mockFolders, mockRestore, userHomeDir } from '../../utils/mockfs';
+import { mockFolders, userHomeDir } from '../../utils/mockfs';
import * as gitModule from 'simple-git';
import sinon from 'sinon';
import { simpleGitInstanceMock } from '../../helpers/simpleGit';
+import { CliFileSystem } from '../../../src/utils/fs-bridge';
const mockedNewVersionTag = 'v2.0.0';
@@ -29,9 +29,6 @@ describe('upgrade', () => {
test.do(() => {
mockFolders({ velocitasConfig: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.stub(gitModule, 'simpleGit', sinon.stub().returns(simpleGitInstanceMock()))
.command(['upgrade', '--dry-run'])
@@ -48,9 +45,6 @@ describe('upgrade', () => {
test.do(() => {
mockFolders({ velocitasConfig: true, installedComponents: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.stub(gitModule, 'simpleGit', sinon.stub().returns(simpleGitInstanceMock()))
.command(['upgrade', '--dry-run'])
@@ -63,9 +57,6 @@ describe('upgrade', () => {
test.do(() => {
mockFolders({ velocitasConfig: true, installedComponents: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.stub(gitModule, 'simpleGit', sinon.stub().returns(simpleGitInstanceMock(mockedNewVersionTag)))
.command(['upgrade', '--dry-run'])
@@ -82,9 +73,6 @@ describe('upgrade', () => {
test.do(() => {
mockFolders({ velocitasConfig: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.stub(ux, 'prompt', () => 'y')
.stub(gitModule, 'simpleGit', sinon.stub().returns(simpleGitInstanceMock()))
@@ -97,16 +85,13 @@ describe('upgrade', () => {
expect(ctx.stdout).to.contain(
`... No installed sources for ${velocitasConfigMock.packages[1].repo}:${velocitasConfigMock.packages[1].version} found`,
);
- expect(fs.existsSync(`${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[0].repo}`)).to.be.true;
- expect(fs.existsSync(`${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[1].repo}`)).to.be.true;
+ expect(CliFileSystem.existsSync(`${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[0].repo}`)).to.be.true;
+ expect(CliFileSystem.existsSync(`${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[1].repo}`)).to.be.true;
});
test.do(() => {
mockFolders({ velocitasConfig: true });
})
- .finally(() => {
- mockRestore();
- })
.stderr()
.stdout()
.stub(ux, 'prompt', () => 'y')
@@ -126,9 +111,6 @@ describe('upgrade', () => {
test.do(() => {
mockFolders({ velocitasConfig: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.stub(ux, 'prompt', () => 'n')
.stub(gitModule, 'simpleGit', sinon.stub().returns(simpleGitInstanceMock()))
@@ -141,15 +123,17 @@ describe('upgrade', () => {
expect(ctx.stdout).to.contain(
`... No installed sources for ${velocitasConfigMock.packages[1].repo}:${velocitasConfigMock.packages[1].version} found`,
);
- expect(fs.existsSync(`${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[0].repo}/_cache`)).to.be.true;
- expect(fs.existsSync(`${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[1].repo}/_cache`)).to.be.true;
+ expect(CliFileSystem.existsSync(`${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[0].repo}/_cache`)).to.be
+ .true;
+ expect(CliFileSystem.existsSync(`${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[1].repo}/_cache`)).to.be
+ .true;
expect(
- fs.existsSync(
+ CliFileSystem.existsSync(
`${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[0].repo}/${velocitasConfigMock.packages[0].version}`,
),
).to.be.false;
expect(
- fs.existsSync(
+ CliFileSystem.existsSync(
`${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[1].repo}/${velocitasConfigMock.packages[1].version}`,
),
).to.be.false;
@@ -158,9 +142,6 @@ describe('upgrade', () => {
test.do(() => {
mockFolders({ velocitasConfig: true, installedComponents: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.stub(gitModule, 'simpleGit', sinon.stub().returns(simpleGitInstanceMock()))
.command(['upgrade'])
@@ -173,9 +154,6 @@ describe('upgrade', () => {
test.do(() => {
mockFolders({ velocitasConfig: true, installedComponents: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.stub(ux, 'prompt', () => 'y')
.stub(gitModule, 'simpleGit', sinon.stub().returns(simpleGitInstanceMock(mockedNewVersionTag)))
@@ -188,11 +166,9 @@ describe('upgrade', () => {
expect(ctx.stdout).to.contain(
`... '${velocitasConfigMock.packages[1].repo}' is currently at ${velocitasConfigMock.packages[1].version}, can be updated to ${mockedNewVersionTag}`,
);
- expect(fs.existsSync(`${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[0].repo}`)).to.be.true;
- expect(fs.existsSync(`${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[1].repo}`)).to.be.true;
- const newVelocitasConfig: ProjectConfigOptions = JSON.parse(
- fs.readFileSync(`${process.cwd()}/.velocitas.json`, { encoding: 'utf8', flag: 'r' }),
- );
+ expect(CliFileSystem.existsSync(`${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[0].repo}`)).to.be.true;
+ expect(CliFileSystem.existsSync(`${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[1].repo}`)).to.be.true;
+ const newVelocitasConfig: ProjectConfigOptions = JSON.parse(CliFileSystem.readFileSync(`${process.cwd()}/.velocitas.json`));
expect(newVelocitasConfig.packages[0].version).to.be.equal(mockedNewVersionTag);
expect(newVelocitasConfig.packages[1].version).to.be.equal(mockedNewVersionTag);
});
@@ -200,9 +176,6 @@ describe('upgrade', () => {
test.do(() => {
mockFolders({ velocitasConfig: true, installedComponents: true });
})
- .finally(() => {
- mockRestore();
- })
.stdout()
.stub(ux, 'prompt', () => 'n')
.stub(gitModule, 'simpleGit', sinon.stub().returns(simpleGitInstanceMock(mockedNewVersionTag)))
@@ -215,7 +188,7 @@ describe('upgrade', () => {
expect(ctx.stdout).to.contain(
`... '${velocitasConfigMock.packages[1].repo}' is currently at ${velocitasConfigMock.packages[1].version}, can be updated to ${mockedNewVersionTag}`,
);
- expect(fs.existsSync(`${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[0].repo}`)).to.be.true;
- expect(fs.existsSync(`${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[1].repo}`)).to.be.true;
+ expect(CliFileSystem.existsSync(`${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[0].repo}`)).to.be.true;
+ expect(CliFileSystem.existsSync(`${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[1].repo}`)).to.be.true;
});
});
diff --git a/test/helpers/cache.ts b/test/helpers/cache.ts
index 3c14bfe1..ec5e2a4b 100644
--- a/test/helpers/cache.ts
+++ b/test/helpers/cache.ts
@@ -12,18 +12,17 @@
//
// SPDX-License-Identifier: Apache-2.0
-import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
import { join } from 'node:path';
-import { DEFAULT_BUFFER_ENCODING } from '../../src/modules/constants';
import { ProjectCache } from '../../src/modules/project-cache';
+import { CliFileSystem } from '../../src/utils/fs-bridge';
export const getCacheData = () => {
- return JSON.parse(readFileSync(`${ProjectCache.getCacheDir()}/cache.json`, DEFAULT_BUFFER_ENCODING));
+ return JSON.parse(CliFileSystem.readFileSync(`${ProjectCache.getCacheDir()}/cache.json`));
};
export function writeCacheData(cacheData: any) {
- if (!existsSync(ProjectCache.getCacheDir())) {
- mkdirSync(ProjectCache.getCacheDir(), { recursive: true });
+ if (!CliFileSystem.existsSync(ProjectCache.getCacheDir())) {
+ CliFileSystem.mkdirSync(ProjectCache.getCacheDir());
}
- return writeFileSync(join(ProjectCache.getCacheDir(), 'cache.json'), JSON.stringify(cacheData), { encoding: DEFAULT_BUFFER_ENCODING });
+ return CliFileSystem.writeFileSync(join(ProjectCache.getCacheDir(), 'cache.json'), JSON.stringify(cacheData));
}
diff --git a/test/helpers/simpleGit.ts b/test/helpers/simpleGit.ts
index b79d49d8..06c7d0cc 100644
--- a/test/helpers/simpleGit.ts
+++ b/test/helpers/simpleGit.ts
@@ -12,19 +12,19 @@
//
// SPDX-License-Identifier: Apache-2.0
-import * as fs from 'fs';
import { corePackageManifestMock, runtimePackageManifestMock } from '../utils/mockConfig';
+import { CliFileSystem } from '../../src/utils/fs-bridge';
export const simpleGitInstanceMock = (mockedNewVersionTag?: string) => {
return {
clone: async (repoPath: string, localPath: string, options?: any) => {
- await fs.promises.mkdir(localPath, { recursive: true });
- await fs.promises.writeFile(`${localPath}/.git`, 'This is a git repo');
+ await CliFileSystem.promisesMkdir(localPath);
+ await CliFileSystem.promisesWriteFile(`${localPath}/.git`, 'This is a git repo');
if (repoPath.indexOf('package-main') !== -1) {
- await fs.promises.writeFile(`${localPath}/manifest.json`, JSON.stringify(corePackageManifestMock));
+ await CliFileSystem.promisesWriteFile(`${localPath}/manifest.json`, JSON.stringify(corePackageManifestMock));
} else {
- await fs.promises.writeFile(`${localPath}/manifest.json`, JSON.stringify(runtimePackageManifestMock));
+ await CliFileSystem.promisesWriteFile(`${localPath}/manifest.json`, JSON.stringify(runtimePackageManifestMock));
}
},
checkIsRepo: () => {
diff --git a/test/system-test/create.stest.ts b/test/system-test/create.stest.ts
index cb6da851..7afac637 100644
--- a/test/system-test/create.stest.ts
+++ b/test/system-test/create.stest.ts
@@ -14,7 +14,8 @@
import { expect } from 'chai';
import { spawnSync } from 'child_process';
-import { existsSync, readFileSync, readdirSync, removeSync } from 'fs-extra';
+import { existsSync, readFileSync, readdirSync } from 'node:fs';
+import { removeSync } from 'fs-extra';
import path from 'path';
import { DEFAULT_BUFFER_ENCODING } from '../../src/modules/constants';
import { PackageConfig } from '../../src/modules/package';
diff --git a/test/system-test/exec.stest.ts b/test/system-test/exec.stest.ts
index 27f8ab00..a4cf6423 100644
--- a/test/system-test/exec.stest.ts
+++ b/test/system-test/exec.stest.ts
@@ -14,11 +14,11 @@
import { expect } from 'chai';
import { spawn, spawnSync } from 'child_process';
+import { readFileSync } from 'node:fs';
import { copySync } from 'fs-extra';
// eslint-disable-next-line @typescript-eslint/naming-convention
import YAML from 'yaml';
import { DEFAULT_BUFFER_ENCODING } from '../../src/modules/constants';
-import { readFileSync } from 'fs';
import { TEST_ROOT, VELOCITAS_HOME, VELOCITAS_PROCESS } from '../utils/systemTestConfig';
describe('CLI command', () => {
@@ -47,7 +47,7 @@ describe('CLI command', () => {
it('should pass environment variables to the spawned process', async () => {
const result = spawnSync(VELOCITAS_PROCESS, ['exec', 'test-component', 'echo-env'], { encoding: DEFAULT_BUFFER_ENCODING });
- const expectedString = JSON.stringify(JSON.parse(readFileSync('./app/AppManifest.json', 'utf-8')));
+ const expectedString = JSON.stringify(JSON.parse(readFileSync('./app/AppManifest.json', DEFAULT_BUFFER_ENCODING)));
expect(result.stdout).to.contain('VELOCITAS_WORKSPACE_DIR=');
expect(result.stdout).to.contain('VELOCITAS_CACHE_DATA=');
expect(result.stdout).to.contain('VELOCITAS_CACHE_DIR=');
diff --git a/test/system-test/init.stest.ts b/test/system-test/init.stest.ts
index 2ae72df3..e411fc23 100644
--- a/test/system-test/init.stest.ts
+++ b/test/system-test/init.stest.ts
@@ -14,7 +14,8 @@
import { expect } from 'chai';
import { spawnSync } from 'child_process';
-import { copySync, removeSync, existsSync, readFileSync, readdirSync } from 'fs-extra';
+import { readFileSync, existsSync, readdirSync } from 'node:fs';
+import { removeSync, copySync } from 'fs-extra';
// eslint-disable-next-line @typescript-eslint/naming-convention
import { DEFAULT_BUFFER_ENCODING } from '../../src/modules/constants';
import { TEST_ROOT, VELOCITAS_HOME, VELOCITAS_PROCESS } from '../utils/systemTestConfig';
@@ -42,7 +43,7 @@ describe('CLI command', () => {
const initOutput = spawnSync(VELOCITAS_PROCESS, ['init'], { encoding: DEFAULT_BUFFER_ENCODING });
expect(initOutput.status).to.equal(0);
- const packageIndex = JSON.parse(readFileSync('./.velocitas.json', 'utf8'));
+ const packageIndex = JSON.parse(readFileSync('./.velocitas.json', DEFAULT_BUFFER_ENCODING));
const projectConfig = ProjectConfig.read(packageIndex.cliVersion, './.velocitas.json');
expect(existsSync(join(ProjectCache.getCacheDir(), 'vehicle_model'))).to.be.true;
@@ -58,7 +59,7 @@ describe('CLI command', () => {
const initOutput = spawnSync(VELOCITAS_PROCESS, ['init'], { encoding: DEFAULT_BUFFER_ENCODING });
expect(initOutput.status).to.equal(0);
- const packageIndex = JSON.parse(readFileSync('./.velocitas.json', 'utf8'));
+ const packageIndex = JSON.parse(readFileSync('./.velocitas.json', DEFAULT_BUFFER_ENCODING));
const projectConfig = ProjectConfig.read(packageIndex.cliVersion, './.velocitas.json');
expect(existsSync('./gen')).to.be.true;
expect(isDirectoryEmpty('./gen')).to.be.false;
diff --git a/test/unit/app-manifest.test.ts b/test/unit/app-manifest.test.ts
index 439811a1..d7612cdf 100644
--- a/test/unit/app-manifest.test.ts
+++ b/test/unit/app-manifest.test.ts
@@ -13,18 +13,18 @@
// SPDX-License-Identifier: Apache-2.0
import 'mocha';
-import mockfs from 'mock-fs';
import { AppManifest } from '../../src/modules/app-manifest';
import { expect } from 'chai';
+import { CliFileSystem, MockFileSystem, MockFileSystemObj } from '../../src/utils/fs-bridge';
describe('app-manifest - module', () => {
before(() => {
- const mockfsConf: any = {
+ const mockFilesystem: MockFileSystemObj = {
'/AppManifestInvalid.json': 'foo',
'/AppManifestValid.json': '{ "name": "AppName", "manifestVersion": "v3" }',
'/AppManifestArray.json': '[ { "name": "AppName", "manifestVersion": "v3" } ]',
};
- mockfs(mockfsConf, { createCwd: false });
+ CliFileSystem.setImpl(new MockFileSystem(mockFilesystem));
});
describe('AppManifest reading', () => {
it('should silently continue if the file does not exist.', () => {
@@ -49,7 +49,4 @@ describe('app-manifest - module', () => {
expect(appManifest!['manifestVersion']).to.be.eq('v3');
});
});
- after(() => {
- mockfs.restore();
- });
});
diff --git a/test/unit/package-index.test.ts b/test/unit/package-index.test.ts
index ebe92964..f330cdd7 100644
--- a/test/unit/package-index.test.ts
+++ b/test/unit/package-index.test.ts
@@ -13,9 +13,10 @@
// SPDX-License-Identifier: Apache-2.0
import 'mocha';
-import mockfs from 'mock-fs';
import { CoreComponent, ExtensionComponent, PackageIndex, PackageAttributes, Parameter } from '../../src/modules/package-index';
import { expect } from 'chai';
+import { CliFileSystem, MockFileSystem, MockFileSystemObj } from '../../src/utils/fs-bridge';
+import { cwd } from 'node:process';
const validPackageIndexMock: PackageAttributes[] = [
{
@@ -182,11 +183,14 @@ const EXPECTED_MANDATORY_EXTENSION_IDS: string[] = ['test-extension'];
describe('package-index - module', () => {
before(() => {
- const mockfsConf: any = {
- 'package-index.json': JSON.stringify(validPackageIndexMock),
- 'invalidPackage-index.json': JSON.stringify(invalidPackageIndexMock),
+ const validPackageIndexPath = `${cwd()}/package-index.json`;
+ const invalidPackageIndexPath = `${cwd()}/invalidPackage-index.json`;
+
+ const mockFilesystem: MockFileSystemObj = {
+ [validPackageIndexPath]: JSON.stringify(validPackageIndexMock),
+ [invalidPackageIndexPath]: JSON.stringify(invalidPackageIndexMock),
};
- mockfs(mockfsConf, { createCwd: true });
+ CliFileSystem.setImpl(new MockFileSystem(mockFilesystem));
});
describe('Package Index', () => {
it('should be able to read the package-index.json on root path.', () => {
@@ -231,7 +235,4 @@ describe('package-index - module', () => {
expect(mandatoryExtensions).to.be.empty;
});
});
- after(() => {
- mockfs.restore();
- });
});
diff --git a/test/unit/package.test.ts b/test/unit/package.test.ts
index cb4e5dc5..c0313439 100644
--- a/test/unit/package.test.ts
+++ b/test/unit/package.test.ts
@@ -13,24 +13,20 @@
// SPDX-License-Identifier: Apache-2.0
import 'mocha';
-import mockfs from 'mock-fs';
import { PackageConfig } from '../../src/modules/package';
import { expect } from 'chai';
+import { CliFileSystem, MockFileSystem, MockFileSystemObj } from '../../src/utils/fs-bridge';
describe('package - module', () => {
let envCache: any;
before(() => {
envCache = process.env;
- const mockfsConf: any = {
- '/my/custom/path/.velocitas/packages': {
- TestPackage: {
- 'v1.2.3': {
- 'manifest.json': '{}',
- },
- },
- },
+ const testpackage = '/my/custom/path/.velocitas/packages/TestPackage/v1.2.3/manifest.json';
+
+ let mockFilesystem: MockFileSystemObj = {
+ [testpackage]: '{}',
};
- mockfs(mockfsConf, { createCwd: false });
+ CliFileSystem.setImpl(new MockFileSystem(mockFilesystem));
});
describe('Package manifest', () => {
it('should be loaded from VELOCITAS_HOME', () => {
@@ -63,6 +59,5 @@ describe('package - module', () => {
});
after(() => {
process.env = envCache;
- mockfs.restore();
});
});
diff --git a/test/unit/project-config.test.ts b/test/unit/project-config.test.ts
index e6150b7e..0061ec33 100644
--- a/test/unit/project-config.test.ts
+++ b/test/unit/project-config.test.ts
@@ -13,22 +13,27 @@
// SPDX-License-Identifier: Apache-2.0
import 'mocha';
-import mockfs from 'mock-fs';
import { ProjectConfig } from '../../src/modules/project-config';
import { expect } from 'chai';
import { homedir } from 'node:os';
+import { cwd } from 'node:process';
+import { CliFileSystem, MockFileSystem, MockFileSystemObj } from '../../src/utils/fs-bridge';
describe('project-config - module', () => {
before(() => {
const packageManifestPath = `${homedir()}/.velocitas/packages/pkg1/v1.0.0/manifest.json`;
- const mockfsConf: any = {
- '/.velocitasInvalid.json': 'foo',
- '/.velocitasValid.json':
+ const validProjectConfigPath = `${cwd()}/.velocitasValid.json`;
+ const validProjectConfigNoCompsPath = `${cwd()}/.velocitasValidNoComps.json`;
+ const invalidProjectConfigPath = `${cwd()}/.velocitasInvalid.json`;
+
+ const mockFilesystem: MockFileSystemObj = {
+ [validProjectConfigPath]:
'{ "packages": [{"repo":"pkg1", "version": "v1.0.0"}], "components": [{"id": "comp1"}], "variables": {} }',
- '/.velocitasValidNoComps.json': '{ "packages": [{"repo":"pkg1", "version": "v1.0.0"}], "variables": {} }',
+ [validProjectConfigNoCompsPath]: '{ "packages": [{"repo":"pkg1", "version": "v1.0.0"}], "variables": {} }',
+ [invalidProjectConfigPath]: 'foo',
+ [packageManifestPath]: '{ "components": [{"id": "comp1"}, {"id": "comp2"}]}',
};
- mockfsConf[packageManifestPath] = '{ "components": [{"id": "comp1"}, {"id": "comp2"}]}';
- mockfs(mockfsConf, { createCwd: false });
+ CliFileSystem.setImpl(new MockFileSystem(mockFilesystem));
});
describe('.velocitas.json reading', () => {
it('should return false when there is no .velocitas.json at the provided path.', () => {
@@ -40,26 +45,23 @@ describe('project-config - module', () => {
});
describe('.velocitas.json parsing', () => {
it('should throw an error when .velocitas.json is invalid.', () => {
- expect(ProjectConfig.read.bind(ProjectConfig.read, ...['v0.0.0', '/.velocitasInvalid.json'])).to.throw();
+ expect(ProjectConfig.read.bind(ProjectConfig.read, ...['v0.0.0', './.velocitasInvalid.json'])).to.throw();
});
it('should read the ProjectConfig when .velocitas.json is valid.', () => {
- expect(ProjectConfig.read.bind(ProjectConfig.read, ...['v0.0.0', '/.velocitasValid.json'])).to.not.throw();
+ expect(ProjectConfig.read.bind(ProjectConfig.read, ...['v0.0.0', './.velocitasValid.json'])).to.not.throw();
});
});
describe('ProjectConfig components', () => {
it('should only return referenced components', () => {
- const projectConfig = ProjectConfig.read('v0.0.0', '/.velocitasValid.json');
+ const projectConfig = ProjectConfig.read('v0.0.0', './.velocitasValid.json');
expect(projectConfig.getComponents()).to.have.length(1);
expect(projectConfig.getComponents()[0].manifest.id).to.be.eq('comp1');
});
it('should only return all components, if no components are referenced', () => {
- const projectConfig = ProjectConfig.read('v0.0.0', '/.velocitasValidNoComps.json');
+ const projectConfig = ProjectConfig.read('v0.0.0', './.velocitasValidNoComps.json');
expect(projectConfig.getComponents()).to.have.length(2);
expect(projectConfig.getComponents()[0].manifest.id).to.be.eq('comp1');
expect(projectConfig.getComponents()[1].manifest.id).to.be.eq('comp2');
});
});
- after(() => {
- mockfs.restore();
- });
});
diff --git a/test/utils/mockfs.ts b/test/utils/mockfs.ts
index c8107772..4099241d 100644
--- a/test/utils/mockfs.ts
+++ b/test/utils/mockfs.ts
@@ -12,9 +12,7 @@
//
// SPDX-License-Identifier: Apache-2.0
-import mockfs from 'mock-fs';
import * as os from 'os';
-import * as path from 'path';
import { ProjectCache } from '../../src/modules/project-cache';
import {
appManifestMock,
@@ -25,58 +23,49 @@ import {
setupPackageManifestMock,
velocitasConfigMock,
} from './mockConfig';
+import { cwd } from 'node:process';
+import { CliFileSystem, MockFileSystem, MockFileSystemObj } from '../../src/utils/fs-bridge';
export const userHomeDir = os.homedir();
const runtimePackagePath = `${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[0].repo}/${velocitasConfigMock.packages[0].version}`;
const setupPackagePath = `${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[1].repo}/${velocitasConfigMock.packages[1].version}`;
const corePackagePath = `${userHomeDir}/.velocitas/packages/${velocitasConfigMock.packages[2].repo}/${velocitasConfigMock.packages[2].version}`;
+const velocitasConfig = `${cwd()}/.velocitas.json`;
+const appManifestPath = `${cwd()}/app/AppManifest.json`;
+const cacheConfig = `${ProjectCache.getCacheDir()}/cache.json`;
+const packageIndex = `${cwd()}/package-index.json`;
+const runtimePackagePathManifest = `${runtimePackagePath}/manifest.json`;
+const setupPackagePathManifest = `${setupPackagePath}/manifest.json`;
+const corePackagePathManifest = `${corePackagePath}/manifest.json`;
+
type MockConfig = {
velocitasConfig?: boolean;
installedComponents?: boolean;
appManifest?: boolean;
- mockCache?: boolean;
packageIndex?: boolean;
};
export const mockFolders = (mockConfig?: MockConfig) => {
- const mockfsConf: any = {
- 'package.json': mockfs.load(path.resolve(__dirname, '../../package.json')),
- 'tsconfig.json': mockfs.load(path.resolve(__dirname, '../../tsconfig.json')),
- src: mockfs.load(path.resolve(__dirname, '../../src')),
- test: mockfs.load(path.resolve(__dirname, '../../test')),
- node_modules: mockfs.load(path.resolve(__dirname, '../../node_modules')),
- app: {
- 'AppManifest.json': JSON.stringify(appManifestMock),
- },
- };
- if (mockConfig && mockConfig.appManifest === false) {
- delete mockfsConf.app;
+ let fileSystemObj: MockFileSystemObj = {};
+
+ if (mockConfig) {
+ fileSystemObj[cacheConfig] = JSON.stringify(mockCacheContent);
}
if (mockConfig && mockConfig.velocitasConfig) {
- mockfsConf['.velocitas.json'] = JSON.stringify(velocitasConfigMock);
+ fileSystemObj[velocitasConfig] = JSON.stringify(velocitasConfigMock);
}
- if (mockConfig && mockConfig.installedComponents) {
- mockfsConf[runtimePackagePath] = {
- 'manifest.json': JSON.stringify(runtimePackageManifestMock),
- src: {},
- };
- mockfsConf[setupPackagePath] = {
- 'manifest.json': JSON.stringify(setupPackageManifestMock),
- };
- mockfsConf[corePackagePath] = {
- 'manifest.json': JSON.stringify(corePackageManifestMock),
- };
+ if (mockConfig && mockConfig.packageIndex) {
+ fileSystemObj[packageIndex] = JSON.stringify(packageIndexMock);
}
- if (mockConfig && mockConfig.mockCache) {
- mockfsConf[ProjectCache.getCacheDir()] = {
- 'cache.json': JSON.stringify(mockCacheContent),
- };
+ if (mockConfig && mockConfig.appManifest !== false) {
+ fileSystemObj[appManifestPath] = JSON.stringify(appManifestMock);
}
- if (mockConfig && mockConfig.packageIndex) {
- mockfsConf['package-index.json'] = JSON.stringify(packageIndexMock);
+ if (mockConfig && mockConfig.installedComponents) {
+ fileSystemObj[runtimePackagePathManifest] = JSON.stringify(runtimePackageManifestMock);
+ fileSystemObj[setupPackagePathManifest] = JSON.stringify(setupPackageManifestMock);
+ fileSystemObj[corePackagePathManifest] = JSON.stringify(corePackageManifestMock);
}
- mockfs(mockfsConf, { createCwd: false });
-};
-export const mockRestore = () => mockfs.restore();
+ CliFileSystem.setImpl(new MockFileSystem(fileSystemObj));
+};
diff --git a/test/utils/systemTestConfig.ts b/test/utils/systemTestConfig.ts
index 915b58a3..80824c5d 100644
--- a/test/utils/systemTestConfig.ts
+++ b/test/utils/systemTestConfig.ts
@@ -13,7 +13,8 @@
// SPDX-License-Identifier: Apache-2.0
import { cwd } from 'process';
-import { readFileSync } from 'fs';
+import { readFileSync } from 'node:fs';
+import { DEFAULT_BUFFER_ENCODING } from '../../src/modules/constants';
import { homedir } from 'os';
import { resolve } from 'path';
@@ -22,4 +23,4 @@ export const TEST_ROOT = cwd();
export const VELOCITAS_HOME = `${homedir()}/.velocitas`;
const packageIndexPath = resolve(__dirname, '../../testbench/test-create/vehicle-app-template/package-index.json');
-export const packageIndex = JSON.parse(readFileSync(packageIndexPath, 'utf8'));
+export const packageIndex = JSON.parse(readFileSync(packageIndexPath, DEFAULT_BUFFER_ENCODING));