Merge pull request #18274 from backstage/mob/isolate-vm
feat: replace vm2 sandbox with isolated-vm
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
---
|
||||
|
||||
Switch out the sandbox, from `vm2` to `isolated-vm`.
|
||||
|
||||
This is a native dependency, which means that it will need to be compiled with the same version of node on the same OS. This could cause some issues when running in Docker for instance, as you will need to make sure that the dependency is installed and compiled inside the docker container that it will run on.
|
||||
|
||||
This could mean adding in some dependencies to the container like `build-essential` to make sure that this compiles correctly.
|
||||
|
||||
If you're having issues installing this dependency, there's some [install instructions](https://github.com/laverdet/isolated-vm#requirements) over on `isolated-vm`'s repo.
|
||||
@@ -18,7 +18,7 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: windows-2019
|
||||
runs-on: windows-2022
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
@@ -48,10 +48,29 @@ jobs:
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
|
||||
- name: setup python
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: '3.10'
|
||||
|
||||
- name: Add msbuild to PATH
|
||||
uses: microsoft/setup-msbuild@v1.3.1
|
||||
|
||||
- name: Setup gyp env
|
||||
run: |
|
||||
echo 'GYP_MSVS_VERSION=2022' >> $Env:GITHUB_ENV
|
||||
echo 'GYP_MSVS_OVERRIDE_PATH=C:\\Dummy' >> $Env:GITHUB_ENV
|
||||
|
||||
- name: Install latest gyp and set node-gyp path
|
||||
shell: powershell
|
||||
run: |
|
||||
npm prefix -g | % {npm config set dev_dir "c:\temp\.gyp2"}
|
||||
npm prefix -g | % {npm config set node_gyp "$_\node_modules\node-gyp\bin\node-gyp.js"}
|
||||
|
||||
- name: setup chrome
|
||||
uses: browser-actions/setup-chrome@latest
|
||||
|
||||
- name: yarn install
|
||||
run: yarn install --immutable
|
||||
|
||||
|
||||
+1
-1
@@ -76,7 +76,7 @@
|
||||
"husky": "^8.0.0",
|
||||
"lint-staged": "^13.0.0",
|
||||
"minimist": "^1.2.5",
|
||||
"node-gyp": "^9.1.0",
|
||||
"node-gyp": "^9.4.0",
|
||||
"prettier": "^2.2.1",
|
||||
"semver": "^7.3.2",
|
||||
"shx": "^0.3.2",
|
||||
|
||||
@@ -78,6 +78,7 @@
|
||||
"git-url-parse": "^13.0.0",
|
||||
"globby": "^11.0.0",
|
||||
"isbinaryfile": "^5.0.0",
|
||||
"isolated-vm": "^4.5.0",
|
||||
"isomorphic-git": "^1.23.0",
|
||||
"jsonschema": "^1.2.6",
|
||||
"knex": "^2.0.0",
|
||||
@@ -93,7 +94,6 @@
|
||||
"p-queue": "^6.6.2",
|
||||
"prom-client": "^14.0.1",
|
||||
"uuid": "^8.2.0",
|
||||
"vm2": "^3.9.18",
|
||||
"winston": "^3.2.1",
|
||||
"yaml": "^2.0.0",
|
||||
"zen-observable": "^0.10.0",
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { VM } from 'vm2';
|
||||
import { Isolate } from 'isolated-vm';
|
||||
import { resolvePackagePath } from '@backstage/backend-common';
|
||||
import fs from 'fs-extra';
|
||||
import { JsonValue } from '@backstage/types';
|
||||
@@ -45,20 +45,14 @@ const { render, renderCompat } = (() => {
|
||||
});
|
||||
compatEnv.addFilter('jsonify', compatEnv.getFilter('dump'));
|
||||
|
||||
if (typeof templateFilters !== 'undefined') {
|
||||
for (const [filterName, filterFn] of Object.entries(templateFilters)) {
|
||||
env.addFilter(filterName, (...args) => JSON.parse(filterFn(...args)));
|
||||
}
|
||||
for (const name of JSON.parse(availableTemplateFilters)) {
|
||||
env.addFilter(name, (...args) => JSON.parse(callFilter(name, args)));
|
||||
}
|
||||
|
||||
if (typeof templateGlobals !== 'undefined') {
|
||||
for (const [globalName, global] of Object.entries(templateGlobals)) {
|
||||
if (typeof global === 'function') {
|
||||
env.addGlobal(globalName, (...args) => JSON.parse(global(...args)));
|
||||
} else {
|
||||
env.addGlobal(globalName, JSON.parse(global));
|
||||
}
|
||||
}
|
||||
for (const [name, value] of Object.entries(JSON.parse(availableTemplateGlobals))) {
|
||||
env.addGlobal(name, value);
|
||||
}
|
||||
for (const name of JSON.parse(availableTemplateCallbacks)) {
|
||||
env.addGlobal(name, (...args) => JSON.parse(callGlobal(name, args)));
|
||||
}
|
||||
|
||||
let uninstallCompat = undefined;
|
||||
@@ -116,35 +110,15 @@ export type SecureTemplateRenderer = (
|
||||
|
||||
export class SecureTemplater {
|
||||
static async loadRenderer(options: SecureTemplaterOptions = {}) {
|
||||
const { cookiecutterCompat, templateFilters, templateGlobals } = options;
|
||||
const sandbox: Record<string, any> = {};
|
||||
const {
|
||||
cookiecutterCompat,
|
||||
templateFilters = {},
|
||||
templateGlobals = {},
|
||||
} = options;
|
||||
|
||||
if (templateFilters) {
|
||||
sandbox.templateFilters = Object.fromEntries(
|
||||
Object.entries(templateFilters)
|
||||
.filter(([_, filterFunction]) => !!filterFunction)
|
||||
.map(([filterName, filterFunction]) => [
|
||||
filterName,
|
||||
(...args: JsonValue[]) => JSON.stringify(filterFunction(...args)),
|
||||
]),
|
||||
);
|
||||
}
|
||||
if (templateGlobals) {
|
||||
sandbox.templateGlobals = Object.fromEntries(
|
||||
Object.entries(templateGlobals)
|
||||
.filter(([_, global]) => !!global)
|
||||
.map(([globalName, global]) => {
|
||||
if (typeof global === 'function') {
|
||||
return [
|
||||
globalName,
|
||||
(...args: JsonValue[]) => JSON.stringify(global(...args)),
|
||||
];
|
||||
}
|
||||
return [globalName, JSON.stringify(global)];
|
||||
}),
|
||||
);
|
||||
}
|
||||
const vm = new VM({ sandbox });
|
||||
const isolate = new Isolate({ memoryLimit: 128 });
|
||||
const context = await isolate.createContext();
|
||||
const contextGlobal = context.global;
|
||||
|
||||
const nunjucksSource = await fs.readFile(
|
||||
resolvePackagePath(
|
||||
@@ -154,20 +128,75 @@ export class SecureTemplater {
|
||||
'utf-8',
|
||||
);
|
||||
|
||||
vm.run(mkScript(nunjucksSource));
|
||||
const nunjucksScript = await isolate.compileScript(
|
||||
mkScript(nunjucksSource),
|
||||
);
|
||||
|
||||
const availableFilters = Object.keys(templateFilters);
|
||||
|
||||
await contextGlobal.set(
|
||||
'availableTemplateFilters',
|
||||
JSON.stringify(availableFilters),
|
||||
);
|
||||
|
||||
const globalCallbacks = [];
|
||||
const globalValues: Record<string, unknown> = {};
|
||||
for (const [name, value] of Object.entries(templateGlobals)) {
|
||||
if (typeof value === 'function') {
|
||||
globalCallbacks.push(name);
|
||||
} else {
|
||||
globalValues[name] = value;
|
||||
}
|
||||
}
|
||||
|
||||
await contextGlobal.set(
|
||||
'availableTemplateGlobals',
|
||||
JSON.stringify(globalValues),
|
||||
);
|
||||
await contextGlobal.set(
|
||||
'availableTemplateCallbacks',
|
||||
JSON.stringify(globalCallbacks),
|
||||
);
|
||||
|
||||
await contextGlobal.set(
|
||||
'callFilter',
|
||||
(filterName: string, args: JsonValue[]) => {
|
||||
if (!Object.hasOwn(templateFilters, filterName)) {
|
||||
return '';
|
||||
}
|
||||
return JSON.stringify(templateFilters[filterName](...args));
|
||||
},
|
||||
);
|
||||
|
||||
await contextGlobal.set(
|
||||
'callGlobal',
|
||||
(globalName: string, args: JsonValue[]) => {
|
||||
if (!Object.hasOwn(templateGlobals, globalName)) {
|
||||
return '';
|
||||
}
|
||||
const global = templateGlobals[globalName];
|
||||
if (typeof global !== 'function') {
|
||||
return '';
|
||||
}
|
||||
return JSON.stringify(global(...args));
|
||||
},
|
||||
);
|
||||
|
||||
await nunjucksScript.run(context);
|
||||
|
||||
const render: SecureTemplateRenderer = (template, values) => {
|
||||
if (!vm) {
|
||||
if (!context) {
|
||||
throw new Error('SecureTemplater has not been initialized');
|
||||
}
|
||||
vm.setGlobal('templateStr', template);
|
||||
vm.setGlobal('templateValues', JSON.stringify(values));
|
||||
|
||||
contextGlobal.setSync('templateStr', String(template));
|
||||
contextGlobal.setSync('templateValues', JSON.stringify(values));
|
||||
|
||||
if (cookiecutterCompat) {
|
||||
return vm.run(`renderCompat(templateStr, templateValues)`);
|
||||
return context.evalSync(`renderCompat(templateStr, templateValues)`);
|
||||
}
|
||||
|
||||
return vm.run(`render(templateStr, templateValues)`);
|
||||
return context.evalSync(`render(templateStr, templateValues)`);
|
||||
};
|
||||
return render;
|
||||
}
|
||||
|
||||
@@ -8664,6 +8664,7 @@ __metadata:
|
||||
git-url-parse: ^13.0.0
|
||||
globby: ^11.0.0
|
||||
isbinaryfile: ^5.0.0
|
||||
isolated-vm: ^4.5.0
|
||||
isomorphic-git: ^1.23.0
|
||||
jest-when: ^3.1.0
|
||||
jsonschema: ^1.2.6
|
||||
@@ -8683,7 +8684,6 @@ __metadata:
|
||||
prom-client: ^14.0.1
|
||||
supertest: ^6.1.3
|
||||
uuid: ^8.2.0
|
||||
vm2: ^3.9.18
|
||||
wait-for-expect: ^3.0.2
|
||||
winston: ^3.2.1
|
||||
yaml: ^2.0.0
|
||||
@@ -12320,6 +12320,20 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@isaacs/cliui@npm:^8.0.2":
|
||||
version: 8.0.2
|
||||
resolution: "@isaacs/cliui@npm:8.0.2"
|
||||
dependencies:
|
||||
string-width: ^5.1.2
|
||||
string-width-cjs: "npm:string-width@^4.2.0"
|
||||
strip-ansi: ^7.0.1
|
||||
strip-ansi-cjs: "npm:strip-ansi@^6.0.1"
|
||||
wrap-ansi: ^8.1.0
|
||||
wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0"
|
||||
checksum: 4a473b9b32a7d4d3cfb7a614226e555091ff0c5a29a1734c28c72a182c2f6699b26fc6b5c2131dfd841e86b185aea714c72201d7c98c2fba5f17709333a67aeb
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@isaacs/string-locale-compare@npm:^1.1.0":
|
||||
version: 1.1.0
|
||||
resolution: "@isaacs/string-locale-compare@npm:1.1.0"
|
||||
@@ -13630,6 +13644,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@npmcli/fs@npm:^3.1.0":
|
||||
version: 3.1.0
|
||||
resolution: "@npmcli/fs@npm:3.1.0"
|
||||
dependencies:
|
||||
semver: ^7.3.5
|
||||
checksum: a50a6818de5fc557d0b0e6f50ec780a7a02ab8ad07e5ac8b16bf519e0ad60a144ac64f97d05c443c3367235d337182e1d012bbac0eb8dbae8dc7b40b193efd0e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@npmcli/git@npm:^2.1.0":
|
||||
version: 2.1.0
|
||||
resolution: "@npmcli/git@npm:2.1.0"
|
||||
@@ -14367,6 +14390,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@pkgjs/parseargs@npm:^0.11.0":
|
||||
version: 0.11.0
|
||||
resolution: "@pkgjs/parseargs@npm:0.11.0"
|
||||
checksum: 6ad6a00fc4f2f2cfc6bff76fb1d88b8ee20bc0601e18ebb01b6d4be583733a860239a521a7fbca73b612e66705078809483549d2b18f370eb346c5155c8e4a0f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@pmmmwh/react-refresh-webpack-plugin@npm:^0.5.7":
|
||||
version: 0.5.10
|
||||
resolution: "@pmmmwh/react-refresh-webpack-plugin@npm:0.5.10"
|
||||
@@ -18616,7 +18646,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"acorn-walk@npm:^8.1.1, acorn-walk@npm:^8.2.0":
|
||||
"acorn-walk@npm:^8.1.1":
|
||||
version: 8.2.0
|
||||
resolution: "acorn-walk@npm:8.2.0"
|
||||
checksum: 1715e76c01dd7b2d4ca472f9c58968516a4899378a63ad5b6c2d668bba8da21a71976c14ec5f5b75f887b6317c4ae0b897ab141c831d741dc76024d8745f1ad1
|
||||
@@ -18632,7 +18662,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.7.0, acorn@npm:^8.7.1, acorn@npm:^8.8.0":
|
||||
"acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.7.1, acorn@npm:^8.8.0":
|
||||
version: 8.8.0
|
||||
resolution: "acorn@npm:8.8.0"
|
||||
bin:
|
||||
@@ -18873,10 +18903,10 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ansi-styles@npm:^6.0.0":
|
||||
version: 6.1.0
|
||||
resolution: "ansi-styles@npm:6.1.0"
|
||||
checksum: 7a7f8528c07a9d20c3a92bccd2b6bc3bb4d26e5cb775c02826921477377bd495d615d61f710d56216344b6238d1d11ef2b0348e146c5b128715578bfb3217229
|
||||
"ansi-styles@npm:^6.0.0, ansi-styles@npm:^6.1.0":
|
||||
version: 6.2.1
|
||||
resolution: "ansi-styles@npm:6.2.1"
|
||||
checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -20290,6 +20320,26 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"cacache@npm:^17.0.0":
|
||||
version: 17.1.3
|
||||
resolution: "cacache@npm:17.1.3"
|
||||
dependencies:
|
||||
"@npmcli/fs": ^3.1.0
|
||||
fs-minipass: ^3.0.0
|
||||
glob: ^10.2.2
|
||||
lru-cache: ^7.7.1
|
||||
minipass: ^5.0.0
|
||||
minipass-collect: ^1.0.2
|
||||
minipass-flush: ^1.0.5
|
||||
minipass-pipeline: ^1.2.4
|
||||
p-map: ^4.0.0
|
||||
ssri: ^10.0.0
|
||||
tar: ^6.1.11
|
||||
unique-filename: ^3.0.0
|
||||
checksum: 385756781e1e21af089160d89d7462b7ed9883c978e848c7075b90b73cb823680e66092d61513050164588387d2ca87dd6d910e28d64bc13a9ac82cd8580c796
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"cacheable-lookup@npm:^5.0.3":
|
||||
version: 5.0.3
|
||||
resolution: "cacheable-lookup@npm:5.0.3"
|
||||
@@ -24861,6 +24911,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"exponential-backoff@npm:^3.1.1":
|
||||
version: 3.1.1
|
||||
resolution: "exponential-backoff@npm:3.1.1"
|
||||
checksum: 3d21519a4f8207c99f7457287291316306255a328770d320b401114ec8481986e4e467e854cb9914dd965e0a1ca810a23ccb559c642c88f4c7f55c55778a9b48
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"express-prom-bundle@npm:^6.3.6":
|
||||
version: 6.6.0
|
||||
resolution: "express-prom-bundle@npm:6.6.0"
|
||||
@@ -25517,6 +25574,16 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"foreground-child@npm:^3.1.0":
|
||||
version: 3.1.1
|
||||
resolution: "foreground-child@npm:3.1.1"
|
||||
dependencies:
|
||||
cross-spawn: ^7.0.0
|
||||
signal-exit: ^4.0.1
|
||||
checksum: 139d270bc82dc9e6f8bc045fe2aae4001dc2472157044fdfad376d0a3457f77857fa883c1c8b21b491c6caade9a926a4bed3d3d2e8d3c9202b151a4cbbd0bcd5
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"forever-agent@npm:~0.6.1":
|
||||
version: 0.6.1
|
||||
resolution: "forever-agent@npm:0.6.1"
|
||||
@@ -25770,6 +25837,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fs-minipass@npm:^3.0.0":
|
||||
version: 3.0.2
|
||||
resolution: "fs-minipass@npm:3.0.2"
|
||||
dependencies:
|
||||
minipass: ^5.0.0
|
||||
checksum: e9cc0e1f2d01c6f6f62f567aee59530aba65c6c7b2ae88c5027bc34c711ebcfcfaefd0caf254afa6adfe7d1fba16bc2537508a6235196bac7276747d078aef0a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fs-monkey@npm:1.0.3":
|
||||
version: 1.0.3
|
||||
resolution: "fs-monkey@npm:1.0.3"
|
||||
@@ -26125,6 +26201,21 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"glob@npm:^10.2.2":
|
||||
version: 10.2.7
|
||||
resolution: "glob@npm:10.2.7"
|
||||
dependencies:
|
||||
foreground-child: ^3.1.0
|
||||
jackspeak: ^2.0.3
|
||||
minimatch: ^9.0.1
|
||||
minipass: ^5.0.0 || ^6.0.2
|
||||
path-scurry: ^1.7.0
|
||||
bin:
|
||||
glob: dist/cjs/src/bin.js
|
||||
checksum: 555205a74607d6f8d9874ba888924b305b5ea1abfaa2e9ccb11ac713d040aac7edbf7d8702a2f4a1cd81b2d7666412170ce7ef061d33cddde189dae8c1a1a054
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"glob@npm:^7.0.0, glob@npm:^7.1.1, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.1.7, glob@npm:^7.2.0":
|
||||
version: 7.2.3
|
||||
resolution: "glob@npm:7.2.3"
|
||||
@@ -26968,7 +27059,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0":
|
||||
"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0, http-cache-semantics@npm:^4.1.1":
|
||||
version: 4.1.1
|
||||
resolution: "http-cache-semantics@npm:4.1.1"
|
||||
checksum: 83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a236
|
||||
@@ -28287,6 +28378,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"isolated-vm@npm:^4.5.0":
|
||||
version: 4.5.0
|
||||
resolution: "isolated-vm@npm:4.5.0"
|
||||
dependencies:
|
||||
node-gyp: latest
|
||||
checksum: 86626a72d35ed0ee731e00ad19bc6e8a0433c4f34a5dd5b1d415d425f1f0f6b0d04c6d10e7a588025b2956d562fcf7a69e9e20f96746978d3a4e7862374a3806
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"isomorphic-dompurify@npm:^0.13.0":
|
||||
version: 0.13.0
|
||||
resolution: "isomorphic-dompurify@npm:0.13.0"
|
||||
@@ -28430,6 +28530,19 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"jackspeak@npm:^2.0.3":
|
||||
version: 2.2.1
|
||||
resolution: "jackspeak@npm:2.2.1"
|
||||
dependencies:
|
||||
"@isaacs/cliui": ^8.0.2
|
||||
"@pkgjs/parseargs": ^0.11.0
|
||||
dependenciesMeta:
|
||||
"@pkgjs/parseargs":
|
||||
optional: true
|
||||
checksum: e29291c0d0f280a063fa18fbd1e891ab8c2d7519fd34052c0ebde38538a15c603140d60c2c7f432375ff7ee4c5f1c10daa8b2ae19a97c3d4affe308c8360c1df
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"jake@npm:^10.8.5":
|
||||
version: 10.8.5
|
||||
resolution: "jake@npm:10.8.5"
|
||||
@@ -30773,10 +30886,10 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"lru-cache@npm:^9.0.0":
|
||||
version: 9.1.1
|
||||
resolution: "lru-cache@npm:9.1.1"
|
||||
checksum: 4d703bb9b66216bbee55ead82a9682820a2b6acbdfca491b235390b1ef1056000a032d56dfb373fdf9ad4492f1fa9d04cc9a05a77f25bd7ce6901d21ad9b68b7
|
||||
"lru-cache@npm:^9.0.0, lru-cache@npm:^9.1.1":
|
||||
version: 9.1.2
|
||||
resolution: "lru-cache@npm:9.1.2"
|
||||
checksum: d3415634be3908909081fc4c56371a8d562d9081eba70543d86871b978702fffd0e9e362b83921b27a29ae2b37b90f55675aad770a54ac83bb3e4de5049d4b15
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -30863,7 +30976,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"make-fetch-happen@npm:^10.0.1, make-fetch-happen@npm:^10.0.3":
|
||||
"make-fetch-happen@npm:^10.0.1":
|
||||
version: 10.2.1
|
||||
resolution: "make-fetch-happen@npm:10.2.1"
|
||||
dependencies:
|
||||
@@ -30887,6 +31000,29 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"make-fetch-happen@npm:^11.0.3":
|
||||
version: 11.1.1
|
||||
resolution: "make-fetch-happen@npm:11.1.1"
|
||||
dependencies:
|
||||
agentkeepalive: ^4.2.1
|
||||
cacache: ^17.0.0
|
||||
http-cache-semantics: ^4.1.1
|
||||
http-proxy-agent: ^5.0.0
|
||||
https-proxy-agent: ^5.0.0
|
||||
is-lambda: ^1.0.1
|
||||
lru-cache: ^7.7.1
|
||||
minipass: ^5.0.0
|
||||
minipass-fetch: ^3.0.0
|
||||
minipass-flush: ^1.0.5
|
||||
minipass-pipeline: ^1.2.4
|
||||
negotiator: ^0.6.3
|
||||
promise-retry: ^2.0.1
|
||||
socks-proxy-agent: ^7.0.0
|
||||
ssri: ^10.0.0
|
||||
checksum: 7268bf274a0f6dcf0343829489a4506603ff34bd0649c12058753900b0eb29191dce5dba12680719a5d0a983d3e57810f594a12f3c18494e93a1fbc6348a4540
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"make-fetch-happen@npm:^9.1.0":
|
||||
version: 9.1.0
|
||||
resolution: "make-fetch-happen@npm:9.1.0"
|
||||
@@ -31861,6 +31997,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"minimatch@npm:^9.0.1":
|
||||
version: 9.0.1
|
||||
resolution: "minimatch@npm:9.0.1"
|
||||
dependencies:
|
||||
brace-expansion: ^2.0.1
|
||||
checksum: 97f5f5284bb57dc65b9415dec7f17a0f6531a33572193991c60ff18450dcfad5c2dad24ffeaf60b5261dccd63aae58cc3306e2209d57e7f88c51295a532d8ec3
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"minimist-options@npm:^4.0.2":
|
||||
version: 4.1.0
|
||||
resolution: "minimist-options@npm:4.1.0"
|
||||
@@ -31927,6 +32072,21 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"minipass-fetch@npm:^3.0.0":
|
||||
version: 3.0.3
|
||||
resolution: "minipass-fetch@npm:3.0.3"
|
||||
dependencies:
|
||||
encoding: ^0.1.13
|
||||
minipass: ^5.0.0
|
||||
minipass-sized: ^1.0.3
|
||||
minizlib: ^2.1.2
|
||||
dependenciesMeta:
|
||||
encoding:
|
||||
optional: true
|
||||
checksum: af5ab2552a16fcf505d35fd7ffb84b57f4a0eeb269e6e1d9a2a75824dda48b36e527083250b7cca4a4def21d9544e2ade441e4730e233c0bc2133f6abda31e18
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"minipass-flush@npm:^1.0.5":
|
||||
version: 1.0.5
|
||||
resolution: "minipass-flush@npm:1.0.5"
|
||||
@@ -31989,6 +32149,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"minipass@npm:^5.0.0 || ^6.0.2":
|
||||
version: 6.0.2
|
||||
resolution: "minipass@npm:6.0.2"
|
||||
checksum: d140b91f4ab2e5ce5a9b6c468c0e82223504acc89114c1a120d4495188b81fedf8cade72a9f4793642b4e66672f990f1e0d902dd858485216a07cd3c8a62fac9
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"minizlib@npm:^2.0.0, minizlib@npm:^2.1.1, minizlib@npm:^2.1.2":
|
||||
version: 2.1.2
|
||||
resolution: "minizlib@npm:2.1.2"
|
||||
@@ -32498,14 +32665,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"node-gyp@npm:^9.1.0":
|
||||
version: 9.3.1
|
||||
resolution: "node-gyp@npm:9.3.1"
|
||||
"node-gyp@npm:^9.4.0, node-gyp@npm:latest":
|
||||
version: 9.4.0
|
||||
resolution: "node-gyp@npm:9.4.0"
|
||||
dependencies:
|
||||
env-paths: ^2.2.0
|
||||
exponential-backoff: ^3.1.1
|
||||
glob: ^7.1.4
|
||||
graceful-fs: ^4.2.6
|
||||
make-fetch-happen: ^10.0.3
|
||||
make-fetch-happen: ^11.0.3
|
||||
nopt: ^6.0.0
|
||||
npmlog: ^6.0.0
|
||||
rimraf: ^3.0.2
|
||||
@@ -32514,27 +32682,7 @@ __metadata:
|
||||
which: ^2.0.2
|
||||
bin:
|
||||
node-gyp: bin/node-gyp.js
|
||||
checksum: b860e9976fa645ca0789c69e25387401b4396b93c8375489b5151a6c55cf2640a3b6183c212b38625ef7c508994930b72198338e3d09b9d7ade5acc4aaf51ea7
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"node-gyp@npm:latest":
|
||||
version: 9.1.0
|
||||
resolution: "node-gyp@npm:9.1.0"
|
||||
dependencies:
|
||||
env-paths: ^2.2.0
|
||||
glob: ^7.1.4
|
||||
graceful-fs: ^4.2.6
|
||||
make-fetch-happen: ^10.0.3
|
||||
nopt: ^5.0.0
|
||||
npmlog: ^6.0.0
|
||||
rimraf: ^3.0.2
|
||||
semver: ^7.3.5
|
||||
tar: ^6.1.2
|
||||
which: ^2.0.2
|
||||
bin:
|
||||
node-gyp: bin/node-gyp.js
|
||||
checksum: 1437fa4a879b5b9010604128e8da8609b57c66034262087539ee04a8b764b8436af2be01bab66f8fc729a3adba2dcc21b10a32b9f552696c3fa8cd657d134fc4
|
||||
checksum: 78b404e2e0639d64e145845f7f5a3cb20c0520cdaf6dda2f6e025e9b644077202ea7de1232396ba5bde3fee84cdc79604feebe6ba3ec84d464c85d407bb5da99
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -33922,6 +34070,16 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"path-scurry@npm:^1.7.0":
|
||||
version: 1.9.2
|
||||
resolution: "path-scurry@npm:1.9.2"
|
||||
dependencies:
|
||||
lru-cache: ^9.1.1
|
||||
minipass: ^5.0.0 || ^6.0.2
|
||||
checksum: 92888dfb68e285043c6d3291c8e971d5d2bc2f5082f4d7b5392896f34be47024c9d0a8b688dd7ae6d125acc424699195474927cb4f00049a9b1ec7c4256fa8e0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"path-to-regexp@npm:0.1.7":
|
||||
version: 0.1.7
|
||||
resolution: "path-to-regexp@npm:0.1.7"
|
||||
@@ -37277,7 +37435,7 @@ __metadata:
|
||||
husky: ^8.0.0
|
||||
lint-staged: ^13.0.0
|
||||
minimist: ^1.2.5
|
||||
node-gyp: ^9.1.0
|
||||
node-gyp: ^9.4.0
|
||||
prettier: ^2.2.1
|
||||
semver: ^7.3.2
|
||||
shx: ^0.3.2
|
||||
@@ -37889,6 +38047,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"signal-exit@npm:^4.0.1":
|
||||
version: 4.0.2
|
||||
resolution: "signal-exit@npm:4.0.2"
|
||||
checksum: 41f5928431cc6e91087bf0343db786a6313dd7c6fd7e551dbc141c95bb5fb26663444fd9df8ea47c5d7fc202f60aa7468c3162a9365cbb0615fc5e1b1328fe31
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"signedsource@npm:^1.0.0":
|
||||
version: 1.0.0
|
||||
resolution: "signedsource@npm:1.0.0"
|
||||
@@ -38399,6 +38564,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ssri@npm:^10.0.0":
|
||||
version: 10.0.4
|
||||
resolution: "ssri@npm:10.0.4"
|
||||
dependencies:
|
||||
minipass: ^5.0.0
|
||||
checksum: fb14da9f8a72b04eab163eb13a9dda11d5962cd2317f85457c4e0b575e9a6e0e3a6a87b5bf122c75cb36565830cd5f263fb457571bf6f1587eb5f95d095d6165
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ssri@npm:^8.0.0, ssri@npm:^8.0.1":
|
||||
version: 8.0.1
|
||||
resolution: "ssri@npm:8.0.1"
|
||||
@@ -38667,6 +38841,17 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3":
|
||||
version: 4.2.3
|
||||
resolution: "string-width@npm:4.2.3"
|
||||
dependencies:
|
||||
emoji-regex: ^8.0.0
|
||||
is-fullwidth-code-point: ^3.0.0
|
||||
strip-ansi: ^6.0.1
|
||||
checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"string-width@npm:^1.0.1, string-width@npm:^1.0.2":
|
||||
version: 1.0.2
|
||||
resolution: "string-width@npm:1.0.2"
|
||||
@@ -38678,18 +38863,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3":
|
||||
version: 4.2.3
|
||||
resolution: "string-width@npm:4.2.3"
|
||||
dependencies:
|
||||
emoji-regex: ^8.0.0
|
||||
is-fullwidth-code-point: ^3.0.0
|
||||
strip-ansi: ^6.0.1
|
||||
checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"string-width@npm:^5.0.0":
|
||||
"string-width@npm:^5.0.0, string-width@npm:^5.0.1, string-width@npm:^5.1.2":
|
||||
version: 5.1.2
|
||||
resolution: "string-width@npm:5.1.2"
|
||||
dependencies:
|
||||
@@ -38763,6 +38937,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1":
|
||||
version: 6.0.1
|
||||
resolution: "strip-ansi@npm:6.0.1"
|
||||
dependencies:
|
||||
ansi-regex: ^5.0.1
|
||||
checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"strip-ansi@npm:5.2.0":
|
||||
version: 5.2.0
|
||||
resolution: "strip-ansi@npm:5.2.0"
|
||||
@@ -38781,15 +38964,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1":
|
||||
version: 6.0.1
|
||||
resolution: "strip-ansi@npm:6.0.1"
|
||||
dependencies:
|
||||
ansi-regex: ^5.0.1
|
||||
checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"strip-ansi@npm:^7.0.1":
|
||||
version: 7.0.1
|
||||
resolution: "strip-ansi@npm:7.0.1"
|
||||
@@ -40344,6 +40518,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"unique-filename@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "unique-filename@npm:3.0.0"
|
||||
dependencies:
|
||||
unique-slug: ^4.0.0
|
||||
checksum: 8e2f59b356cb2e54aab14ff98a51ac6c45781d15ceaab6d4f1c2228b780193dc70fae4463ce9e1df4479cb9d3304d7c2043a3fb905bdeca71cc7e8ce27e063df
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"unique-slug@npm:^2.0.0":
|
||||
version: 2.0.2
|
||||
resolution: "unique-slug@npm:2.0.2"
|
||||
@@ -40353,6 +40536,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"unique-slug@npm:^4.0.0":
|
||||
version: 4.0.0
|
||||
resolution: "unique-slug@npm:4.0.0"
|
||||
dependencies:
|
||||
imurmurhash: ^0.1.4
|
||||
checksum: 0884b58365af59f89739e6f71e3feacb5b1b41f2df2d842d0757933620e6de08eff347d27e9d499b43c40476cbaf7988638d3acb2ffbcb9d35fd035591adfd15
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"unist-builder@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "unist-builder@npm:3.0.0"
|
||||
@@ -40969,18 +41161,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"vm2@npm:^3.9.18":
|
||||
version: 3.9.19
|
||||
resolution: "vm2@npm:3.9.19"
|
||||
dependencies:
|
||||
acorn: ^8.7.0
|
||||
acorn-walk: ^8.2.0
|
||||
bin:
|
||||
vm2: bin/vm2
|
||||
checksum: fc6cf553134145cd7bb5246985bf242b056e3fb5ea71e2eef6710b2a5d6c6119cc6bc960435ff62480ee82efb43369be8f4db07b6690916ae7d3b2e714f395d8
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"vscode-languageserver-types@npm:^3.15.1":
|
||||
version: 3.15.1
|
||||
resolution: "vscode-languageserver-types@npm:3.15.1"
|
||||
@@ -41539,6 +41719,17 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0":
|
||||
version: 7.0.0
|
||||
resolution: "wrap-ansi@npm:7.0.0"
|
||||
dependencies:
|
||||
ansi-styles: ^4.0.0
|
||||
string-width: ^4.1.0
|
||||
strip-ansi: ^6.0.0
|
||||
checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"wrap-ansi@npm:^2.0.0":
|
||||
version: 2.1.0
|
||||
resolution: "wrap-ansi@npm:2.1.0"
|
||||
@@ -41560,14 +41751,14 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"wrap-ansi@npm:^7.0.0":
|
||||
version: 7.0.0
|
||||
resolution: "wrap-ansi@npm:7.0.0"
|
||||
"wrap-ansi@npm:^8.1.0":
|
||||
version: 8.1.0
|
||||
resolution: "wrap-ansi@npm:8.1.0"
|
||||
dependencies:
|
||||
ansi-styles: ^4.0.0
|
||||
string-width: ^4.1.0
|
||||
strip-ansi: ^6.0.0
|
||||
checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b
|
||||
ansi-styles: ^6.1.0
|
||||
string-width: ^5.0.1
|
||||
strip-ansi: ^7.0.1
|
||||
checksum: 371733296dc2d616900ce15a0049dca0ef67597d6394c57347ba334393599e800bab03c41d4d45221b6bc967b8c453ec3ae4749eff3894202d16800fdfe0e238
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
||||
Reference in New Issue
Block a user