@g3nomaly/core 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/commands/add.d.ts +24 -4
- package/dist/cli/commands/add.d.ts.map +1 -1
- package/dist/cli/commands/add.js +37 -14
- package/dist/cli/commands/add.js.map +1 -1
- package/dist/cli/commands/conflict.d.ts +52 -0
- package/dist/cli/commands/conflict.d.ts.map +1 -0
- package/dist/cli/commands/conflict.js +88 -0
- package/dist/cli/commands/conflict.js.map +1 -0
- package/dist/cli/commands/installFromSources.d.ts +42 -13
- package/dist/cli/commands/installFromSources.d.ts.map +1 -1
- package/dist/cli/commands/installFromSources.js +68 -19
- package/dist/cli/commands/installFromSources.js.map +1 -1
- package/dist/cli/commands/ls.d.ts +13 -3
- package/dist/cli/commands/ls.d.ts.map +1 -1
- package/dist/cli/commands/ls.js +26 -6
- package/dist/cli/commands/ls.js.map +1 -1
- package/dist/cli/commands/remove.d.ts +7 -1
- package/dist/cli/commands/remove.d.ts.map +1 -1
- package/dist/cli/commands/remove.js +15 -1
- package/dist/cli/commands/remove.js.map +1 -1
- package/dist/cli/commands/sources.d.ts +34 -10
- package/dist/cli/commands/sources.d.ts.map +1 -1
- package/dist/cli/commands/sources.js +17 -3
- package/dist/cli/commands/sources.js.map +1 -1
- package/dist/cli/commands/update.d.ts +11 -4
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +32 -14
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/dialogue.d.ts +65 -13
- package/dist/cli/dialogue.d.ts.map +1 -1
- package/dist/cli/dialogue.js +46 -7
- package/dist/cli/dialogue.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/installDialogues.d.ts +11 -3
- package/dist/cli/installDialogues.d.ts.map +1 -1
- package/dist/cli/installDialogues.js +22 -5
- package/dist/cli/installDialogues.js.map +1 -1
- package/dist/cli/pick.d.ts +11 -2
- package/dist/cli/pick.d.ts.map +1 -1
- package/dist/cli/pick.js +11 -2
- package/dist/cli/pick.js.map +1 -1
- package/dist/cli/report.d.ts +32 -8
- package/dist/cli/report.d.ts.map +1 -1
- package/dist/cli/report.js +26 -5
- package/dist/cli/report.js.map +1 -1
- package/dist/cli/theme.d.ts +4 -0
- package/dist/cli/theme.d.ts.map +1 -1
- package/dist/cli/theme.js +4 -0
- package/dist/cli/theme.js.map +1 -1
- package/dist/cli/types.d.ts +56 -5
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/config/config.d.ts +32 -7
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +37 -7
- package/dist/config/config.js.map +1 -1
- package/dist/config/types.d.ts +58 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +0 -10
- package/dist/config/types.js.map +1 -1
- package/dist/hash/hash.d.ts +6 -8
- package/dist/hash/hash.d.ts.map +1 -1
- package/dist/hash/hash.js +7 -8
- package/dist/hash/hash.js.map +1 -1
- package/dist/hash/index.d.ts.map +1 -1
- package/dist/hash/index.js +1 -0
- package/dist/hash/index.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/installer/classify.d.ts +27 -1
- package/dist/installer/classify.d.ts.map +1 -1
- package/dist/installer/classify.js +36 -1
- package/dist/installer/classify.js.map +1 -1
- package/dist/installer/files.d.ts +10 -6
- package/dist/installer/files.d.ts.map +1 -1
- package/dist/installer/files.js +4 -3
- package/dist/installer/files.js.map +1 -1
- package/dist/installer/index.d.ts +1 -1
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +1 -1
- package/dist/installer/index.js.map +1 -1
- package/dist/installer/install.d.ts +18 -6
- package/dist/installer/install.d.ts.map +1 -1
- package/dist/installer/install.js +20 -7
- package/dist/installer/install.js.map +1 -1
- package/dist/installer/io.d.ts +6 -1
- package/dist/installer/io.d.ts.map +1 -1
- package/dist/installer/io.js +6 -1
- package/dist/installer/io.js.map +1 -1
- package/dist/installer/manifest.d.ts +29 -19
- package/dist/installer/manifest.d.ts.map +1 -1
- package/dist/installer/manifest.js +20 -10
- package/dist/installer/manifest.js.map +1 -1
- package/dist/installer/manifestSources.d.ts +18 -7
- package/dist/installer/manifestSources.d.ts.map +1 -1
- package/dist/installer/manifestSources.js +18 -7
- package/dist/installer/manifestSources.js.map +1 -1
- package/dist/installer/marketplace.d.ts +24 -12
- package/dist/installer/marketplace.d.ts.map +1 -1
- package/dist/installer/marketplace.js +18 -10
- package/dist/installer/marketplace.js.map +1 -1
- package/dist/installer/origin.d.ts +23 -7
- package/dist/installer/origin.d.ts.map +1 -1
- package/dist/installer/origin.js +14 -7
- package/dist/installer/origin.js.map +1 -1
- package/dist/installer/remove.d.ts +17 -5
- package/dist/installer/remove.d.ts.map +1 -1
- package/dist/installer/remove.js +17 -5
- package/dist/installer/remove.js.map +1 -1
- package/dist/installer/resolve.d.ts +80 -31
- package/dist/installer/resolve.d.ts.map +1 -1
- package/dist/installer/resolve.js +96 -29
- package/dist/installer/resolve.js.map +1 -1
- package/dist/installer/sourceRegistry.d.ts +59 -22
- package/dist/installer/sourceRegistry.d.ts.map +1 -1
- package/dist/installer/sourceRegistry.js +25 -10
- package/dist/installer/sourceRegistry.js.map +1 -1
- package/dist/installer/types.d.ts +72 -19
- package/dist/installer/types.d.ts.map +1 -1
- package/dist/installer/types.js +18 -8
- package/dist/installer/types.js.map +1 -1
- package/dist/registry/index.d.ts +0 -4
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js +1 -4
- package/dist/registry/index.js.map +1 -1
- package/dist/registry/registry.handlers.d.ts +7 -0
- package/dist/registry/registry.handlers.d.ts.map +1 -1
- package/dist/registry/registry.handlers.js.map +1 -1
- package/dist/registry/registry.io.d.ts +23 -7
- package/dist/registry/registry.io.d.ts.map +1 -1
- package/dist/registry/registry.io.js +37 -14
- package/dist/registry/registry.io.js.map +1 -1
- package/dist/registry/registry.mutations.d.ts +10 -3
- package/dist/registry/registry.mutations.d.ts.map +1 -1
- package/dist/registry/registry.mutations.js +10 -3
- package/dist/registry/registry.mutations.js.map +1 -1
- package/dist/registry/registry.selectors.d.ts +41 -11
- package/dist/registry/registry.selectors.d.ts.map +1 -1
- package/dist/registry/registry.selectors.js +41 -11
- package/dist/registry/registry.selectors.js.map +1 -1
- package/dist/registry/registry.store.d.ts +22 -9
- package/dist/registry/registry.store.d.ts.map +1 -1
- package/dist/registry/registry.store.js +12 -3
- package/dist/registry/registry.store.js.map +1 -1
- package/dist/registry/registry.template.d.ts +12 -6
- package/dist/registry/registry.template.d.ts.map +1 -1
- package/dist/registry/registry.template.js +13 -6
- package/dist/registry/registry.template.js.map +1 -1
- package/dist/registry/types.d.ts +17 -3
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/registry/types.js +16 -6
- package/dist/registry/types.js.map +1 -1
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +1 -0
- package/dist/security/index.js.map +1 -1
- package/dist/security/securityParser.d.ts +9 -8
- package/dist/security/securityParser.d.ts.map +1 -1
- package/dist/security/securityParser.js +12 -22
- package/dist/security/securityParser.js.map +1 -1
- package/dist/security/securityWorker.d.ts +11 -0
- package/dist/security/securityWorker.d.ts.map +1 -1
- package/dist/security/securityWorker.js +17 -38
- package/dist/security/securityWorker.js.map +1 -1
- package/dist/sources/checkout.d.ts +10 -4
- package/dist/sources/checkout.d.ts.map +1 -1
- package/dist/sources/checkout.js +10 -4
- package/dist/sources/checkout.js.map +1 -1
- package/dist/sources/git.d.ts +5 -3
- package/dist/sources/git.d.ts.map +1 -1
- package/dist/sources/git.js +5 -3
- package/dist/sources/git.js.map +1 -1
- package/dist/sources/local.d.ts +6 -4
- package/dist/sources/local.d.ts.map +1 -1
- package/dist/sources/local.js +6 -4
- package/dist/sources/local.js.map +1 -1
- package/dist/sources/npm.d.ts +10 -7
- package/dist/sources/npm.d.ts.map +1 -1
- package/dist/sources/npm.js +49 -15
- package/dist/sources/npm.js.map +1 -1
- package/dist/sources/parse.d.ts +24 -16
- package/dist/sources/parse.d.ts.map +1 -1
- package/dist/sources/parse.js +40 -18
- package/dist/sources/parse.js.map +1 -1
- package/dist/sources/process.d.ts +10 -7
- package/dist/sources/process.d.ts.map +1 -1
- package/dist/sources/process.js +10 -7
- package/dist/sources/process.js.map +1 -1
- package/dist/sources/register.d.ts +20 -5
- package/dist/sources/register.d.ts.map +1 -1
- package/dist/sources/register.js +20 -5
- package/dist/sources/register.js.map +1 -1
- package/dist/sources/types.d.ts +43 -8
- package/dist/sources/types.d.ts.map +1 -1
- package/dist/sources/types.js +21 -4
- package/dist/sources/types.js.map +1 -1
- package/dist/utils/errors.d.ts +6 -1
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +6 -1
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/merge.d.ts +8 -2
- package/dist/utils/merge.d.ts.map +1 -1
- package/dist/utils/merge.js +9 -2
- package/dist/utils/merge.js.map +1 -1
- package/dist/utils/packageMeta.d.ts +16 -2
- package/dist/utils/packageMeta.d.ts.map +1 -1
- package/dist/utils/packageMeta.js +6 -2
- package/dist/utils/packageMeta.js.map +1 -1
- package/dist/utils/paths.d.ts +16 -5
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +16 -5
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/prompt.d.ts +6 -1
- package/dist/utils/prompt.d.ts.map +1 -1
- package/dist/utils/prompt.js +6 -1
- package/dist/utils/prompt.js.map +1 -1
- package/dist/utils/version.d.ts +7 -2
- package/dist/utils/version.d.ts.map +1 -1
- package/dist/utils/version.js +40 -3
- package/dist/utils/version.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,12 @@
|
|
|
1
|
+
// packages/core/src/registry/registry.template.ts
|
|
1
2
|
/**
|
|
2
|
-
* Recursively serializes a value to a TypeScript object literal string.
|
|
3
|
-
*
|
|
3
|
+
* @brief Recursively serializes a value to a TypeScript object literal string.
|
|
4
|
+
*
|
|
5
|
+
* Used by `generateRegistryFile` to produce human-readable `.ts` output.
|
|
6
|
+
*
|
|
7
|
+
* @param value - Value to serialize. Objects, arrays, strings, numbers, booleans and null are written as literals.
|
|
8
|
+
* @param depth - Nesting level of `value`, used for indentation.
|
|
9
|
+
* @returns Source text of the literal.
|
|
4
10
|
*/
|
|
5
11
|
export function stringifyValue(value, depth = 0) {
|
|
6
12
|
const indent = " ".repeat(depth);
|
|
@@ -33,11 +39,12 @@ export function stringifyValue(value, depth = 0) {
|
|
|
33
39
|
return String(value);
|
|
34
40
|
}
|
|
35
41
|
/**
|
|
36
|
-
* Generates the full content of a typed
|
|
42
|
+
* @brief Generates the full content of a typed `.ts` registry manifest file.
|
|
37
43
|
*
|
|
38
|
-
* @param entries
|
|
39
|
-
* @param typeName
|
|
40
|
-
* @param importFrom - Package
|
|
44
|
+
* @param entries - Registry entries to serialize, by key.
|
|
45
|
+
* @param typeName - TypeScript type name for the `satisfies` clause, e.g. `G3nerateRegistry`.
|
|
46
|
+
* @param importFrom - Package the type is imported from, e.g. `@g3nomaly/g3nerate`.
|
|
47
|
+
* @returns Source text of the file, ending with a newline.
|
|
41
48
|
*
|
|
42
49
|
* @example
|
|
43
50
|
* generateRegistryFile(entries, "G3nerateRegistry", "@g3nomaly/g3nerate")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.template.js","sourceRoot":"","sources":["../../src/registry/registry.template.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"registry.template.js","sourceRoot":"","sources":["../../src/registry/registry.template.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc,EAAE,KAAK,GAAG,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACjC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;IAE1C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAA;IACjC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,WAAW,CAAA;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IAEjF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QACnC,MAAM,KAAK,GAAG,KAAK;aAChB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,WAAW,GAAG,cAAc,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;aAC3D,IAAI,CAAC,KAAK,CAAC,CAAA;QACd,OAAO,MAAM,KAAK,MAAM,MAAM,GAAG,CAAA;IACnC,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAA;QAChE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QACrC,MAAM,KAAK,GAAG,OAAO;aAClB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;aACtF,IAAI,CAAC,KAAK,CAAC,CAAA;QACd,OAAO,MAAM,KAAK,MAAM,MAAM,GAAG,CAAA;IACnC,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACtB,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAgC,EAChC,QAAgB,EAChB,UAAkB;IAElB,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,KAAK,CAAC,IAAI,CAAC,iBAAiB,QAAQ,YAAY,UAAU,GAAG,CAAC,CAAA;IAC9D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;IAEvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;IACtE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAA;IAC9C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEd,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
|
package/dist/registry/types.d.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* @brief One file of a registry entry. Each package extends it with its own `type` values.
|
|
4
|
+
*
|
|
5
|
+
* @property path - Path of the file relative to the entry's folder.
|
|
6
|
+
* @property type - Kind of file, set by each package.
|
|
7
|
+
* @property hash - Content hash. Set at build or install time, absent in unbuilt source meta files.
|
|
8
|
+
* @property version - Version of the file. Set at build or install time, absent in unbuilt source meta files.
|
|
4
9
|
*/
|
|
5
10
|
export declare const BaseFileEntrySchema: z.ZodObject<{
|
|
6
11
|
path: z.ZodString;
|
|
@@ -8,9 +13,17 @@ export declare const BaseFileEntrySchema: z.ZodObject<{
|
|
|
8
13
|
hash: z.ZodOptional<z.ZodString>;
|
|
9
14
|
version: z.ZodOptional<z.ZodString>;
|
|
10
15
|
}, z.core.$strip>;
|
|
16
|
+
/** One file of a registry entry, inferred from `BaseFileEntrySchema`. */
|
|
11
17
|
export type BaseFileEntry = z.infer<typeof BaseFileEntrySchema>;
|
|
12
18
|
/**
|
|
13
|
-
*
|
|
19
|
+
* @brief One entry of a registry. Each package extends it with its own fields.
|
|
20
|
+
*
|
|
21
|
+
* @property name - Unique name of the entry.
|
|
22
|
+
* @property description - What the entry is for.
|
|
23
|
+
* @property version - Version of the entry.
|
|
24
|
+
* @property group - Display group for `ls`. Packages derive it when the registry is built or loaded.
|
|
25
|
+
* @property registryDependencies - Keys of entries this entry needs installed alongside it.
|
|
26
|
+
* @property files - Files that make up the entry. At least one.
|
|
14
27
|
*/
|
|
15
28
|
export declare const BaseRegistryEntrySchema: z.ZodObject<{
|
|
16
29
|
name: z.ZodString;
|
|
@@ -25,9 +38,10 @@ export declare const BaseRegistryEntrySchema: z.ZodObject<{
|
|
|
25
38
|
version: z.ZodOptional<z.ZodString>;
|
|
26
39
|
}, z.core.$strip>>;
|
|
27
40
|
}, z.core.$strip>;
|
|
41
|
+
/** One registry entry, inferred from `BaseRegistryEntrySchema`. */
|
|
28
42
|
export type BaseRegistryEntry = z.infer<typeof BaseRegistryEntrySchema>;
|
|
29
43
|
/**
|
|
30
|
-
*
|
|
44
|
+
* Registry map from key to entry.
|
|
31
45
|
*/
|
|
32
46
|
export type BaseRegistry<T extends BaseRegistryEntry = BaseRegistryEntry> = Record<string, T>;
|
|
33
47
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB;;;;;iBAK9B,CAAA;AAEF,yEAAyE;AACzE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE/D;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;iBAOlC,CAAA;AAEF,mEAAmE;AACnE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAEvE;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA"}
|
package/dist/registry/types.js
CHANGED
|
@@ -1,24 +1,34 @@
|
|
|
1
1
|
// packages/core/src/registry/types.ts
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* @brief One file of a registry entry. Each package extends it with its own `type` values.
|
|
5
|
+
*
|
|
6
|
+
* @property path - Path of the file relative to the entry's folder.
|
|
7
|
+
* @property type - Kind of file, set by each package.
|
|
8
|
+
* @property hash - Content hash. Set at build or install time, absent in unbuilt source meta files.
|
|
9
|
+
* @property version - Version of the file. Set at build or install time, absent in unbuilt source meta files.
|
|
5
10
|
*/
|
|
6
11
|
export const BaseFileEntrySchema = z.object({
|
|
7
12
|
path: z.string().min(1),
|
|
8
13
|
type: z.string(),
|
|
9
|
-
hash: z.string().min(1).optional(),
|
|
10
|
-
version: z.string().min(1).optional(),
|
|
14
|
+
hash: z.string().min(1).optional(),
|
|
15
|
+
version: z.string().min(1).optional(),
|
|
11
16
|
});
|
|
12
17
|
/**
|
|
13
|
-
*
|
|
18
|
+
* @brief One entry of a registry. Each package extends it with its own fields.
|
|
19
|
+
*
|
|
20
|
+
* @property name - Unique name of the entry.
|
|
21
|
+
* @property description - What the entry is for.
|
|
22
|
+
* @property version - Version of the entry.
|
|
23
|
+
* @property group - Display group for `ls`. Packages derive it when the registry is built or loaded.
|
|
24
|
+
* @property registryDependencies - Keys of entries this entry needs installed alongside it.
|
|
25
|
+
* @property files - Files that make up the entry. At least one.
|
|
14
26
|
*/
|
|
15
27
|
export const BaseRegistryEntrySchema = z.object({
|
|
16
28
|
name: z.string().min(1),
|
|
17
29
|
description: z.string().optional(),
|
|
18
30
|
version: z.string().optional(),
|
|
19
|
-
/** Display group for `ls`; packages derive it at registry build/load time */
|
|
20
31
|
group: z.string().optional(),
|
|
21
|
-
/** Keys of entries this entry needs installed alongside it */
|
|
22
32
|
registryDependencies: z.array(z.string().min(1)).optional(),
|
|
23
33
|
files: z.array(BaseFileEntrySchema).min(1),
|
|
24
34
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAK,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,IAAI,EAAK,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAK,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACrC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAA;AAKF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,oBAAoB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3D,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAC3C,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/security/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import type { ZodType, z } from "zod";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* Transpiles the file, extracts the object literal via regex, evaluates it
|
|
5
|
-
* inside a sandboxed Worker with a timeout, then validates with the provided
|
|
6
|
-
* Zod schema.
|
|
3
|
+
* @brief Parses a TypeScript file that has a default export object literal, without running it in the main thread.
|
|
7
4
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* @
|
|
5
|
+
* Transpiles the file, extracts the object literal with a regex, evaluates it in a sandboxed Worker with a
|
|
6
|
+
* timeout, then validates the result with `schema`.
|
|
7
|
+
*
|
|
8
|
+
* @param filePath - Absolute path to the `.ts` file to parse.
|
|
9
|
+
* @param schema - Zod schema the extracted object must match.
|
|
10
|
+
* @param timeoutMs - Worker timeout in milliseconds.
|
|
11
|
+
* @returns Validated object, typed by `schema`.
|
|
12
|
+
* @throws {Error} When static analysis blocks the source, no object literal is found, the worker fails or times out, or validation fails.
|
|
12
13
|
*/
|
|
13
14
|
export declare function getSafeObject<TSchema extends ZodType>(filePath: string, schema: TSchema, timeoutMs?: number): Promise<z.infer<TSchema>>;
|
|
14
15
|
//# sourceMappingURL=securityParser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"securityParser.d.ts","sourceRoot":"","sources":["../../src/security/securityParser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAEtC
|
|
1
|
+
{"version":3,"file":"securityParser.d.ts","sourceRoot":"","sources":["../../src/security/securityParser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAEtC;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,OAAO,SAAS,OAAO,EACzD,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,EACf,SAAS,SAAO,GACf,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAsF3B"}
|
|
@@ -1,47 +1,37 @@
|
|
|
1
1
|
// packages/core/src/security/securityParser.ts
|
|
2
2
|
import { Transpiler } from "bun";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
* Transpiles the file, extracts the object literal via regex, evaluates it
|
|
6
|
-
* inside a sandboxed Worker with a timeout, then validates with the provided
|
|
7
|
-
* Zod schema.
|
|
4
|
+
* @brief Parses a TypeScript file that has a default export object literal, without running it in the main thread.
|
|
8
5
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* @
|
|
6
|
+
* Transpiles the file, extracts the object literal with a regex, evaluates it in a sandboxed Worker with a
|
|
7
|
+
* timeout, then validates the result with `schema`.
|
|
8
|
+
*
|
|
9
|
+
* @param filePath - Absolute path to the `.ts` file to parse.
|
|
10
|
+
* @param schema - Zod schema the extracted object must match.
|
|
11
|
+
* @param timeoutMs - Worker timeout in milliseconds.
|
|
12
|
+
* @returns Validated object, typed by `schema`.
|
|
13
|
+
* @throws {Error} When static analysis blocks the source, no object literal is found, the worker fails or times out, or validation fails.
|
|
13
14
|
*/
|
|
14
15
|
export async function getSafeObject(filePath, schema, timeoutMs = 1000) {
|
|
15
16
|
const file = Bun.file(filePath);
|
|
16
17
|
const rawContent = await file.text();
|
|
17
18
|
const transpiler = new Transpiler({ loader: "ts" });
|
|
18
19
|
const jsCode = transpiler.transformSync(rawContent);
|
|
19
|
-
//
|
|
20
|
-
// Pre-eval static analysis
|
|
21
|
-
// Catches attacks that are undetectable at runtime because they complete
|
|
22
|
-
// successfully before the sanitiser sees any output.
|
|
23
|
-
// ---------------------------------------------------------------------------
|
|
20
|
+
// Static analysis runs before evaluation, since some attacks finish before the sanitiser sees any output.
|
|
24
21
|
const DANGEROUS_PATTERNS = [
|
|
25
22
|
[/\bimport\s*\(/, "dynamic import()"],
|
|
26
23
|
[/\bimport\.meta\b/, "import.meta"],
|
|
27
24
|
[/\bnew\s+Worker\b/, "Worker construction"],
|
|
28
25
|
[/\beval\s*\(/, "eval()"],
|
|
29
26
|
[/\.constructor\s*\.\s*constructor/, "constructor.constructor chain"],
|
|
30
|
-
//
|
|
31
|
-
// Object literal construction bypasses any runtime stub (the Object()
|
|
32
|
-
// constructor is not called for `{}`), so the only reliable catch is
|
|
33
|
-
// source-level: reject any for/while loop that contains an object literal.
|
|
34
|
-
// Pattern: a for(...) or while(...) body that contains `{` (object/block).
|
|
27
|
+
// Object literals skip the Object() constructor, so loops that build objects are rejected in the source.
|
|
35
28
|
[/\bfor\s*\([\s\S]{0,200}?\)\s*\{[\s\S]{0,500}?\bnested\b/,
|
|
36
29
|
"deep object construction loop"],
|
|
37
|
-
// Broader: any loop body that reassigns via `= {` (obj = { ... })
|
|
38
30
|
[/\bfor\s*\([^)]*\)[^{]*\{[^}]*=\s*\{/,
|
|
39
31
|
"object-building loop"],
|
|
40
32
|
[/\bwhile\s*\([^)]*\)[^{]*\{[^}]*=\s*\{/,
|
|
41
33
|
"object-building loop"],
|
|
42
|
-
//
|
|
43
|
-
// stub in the worker never fires for literals. Detect nested quantifiers
|
|
44
|
-
// statically: pattern (x+)+ or (x*)* or (x+)* are canonical ReDoS forms.
|
|
34
|
+
// Regex literals bypass the RegExp stub in the worker, so nested quantifiers such as (x+)+ are rejected in the source.
|
|
45
35
|
[/\/[^/]*\([^)]*[+*]\)[+*]/, "catastrophic regex literal (nested quantifier)"],
|
|
46
36
|
];
|
|
47
37
|
for (const [pattern, label] of DANGEROUS_PATTERNS) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"securityParser.js","sourceRoot":"","sources":["../../src/security/securityParser.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAGjC
|
|
1
|
+
{"version":3,"file":"securityParser.js","sourceRoot":"","sources":["../../src/security/securityParser.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAGjC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAgB,EAChB,MAAe,EACf,SAAS,GAAG,IAAI;IAEhB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IAErC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAEpD,0GAA0G;IAC1G,MAAM,kBAAkB,GAA4B;QAClD,CAAC,eAAe,EAAuB,kBAAkB,CAAC;QAC1D,CAAC,kBAAkB,EAAoB,aAAa,CAAC;QACrD,CAAC,kBAAkB,EAAoB,qBAAqB,CAAC;QAC7D,CAAC,aAAa,EAAyB,QAAQ,CAAC;QAChD,CAAC,kCAAkC,EAAI,+BAA+B,CAAC;QAEvE,yGAAyG;QACzG,CAAC,yDAAyD;YACnB,+BAA+B,CAAC;QACvE,CAAC,qCAAqC;YACC,sBAAsB,CAAC;QAC9D,CAAC,uCAAuC;YACD,sBAAsB,CAAC;QAC9D,uHAAuH;QACvH,CAAC,0BAA0B,EAAU,gDAAgD,CAAC;KACvF,CAAC;IAEF,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,kBAAkB,EAAE,CAAC;QAClD,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,4BAA4B,KAAK,SAAS,QAAQ,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAC7E,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,qCAAqC,QAAQ,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,4FAA4F;IAC5F,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,wBAAwB,EAAE,mBAAmB,CAAC,CAAC;IAC1F,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;IAEtC,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACrD,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,GAAG,CACD,IAAI,KAAK,CACP,8CAA8C,SAAS,kCAAkC,QAAQ,EAAE,CACpG,CACF,CAAC;QACJ,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,MAAM,CAAC,SAAS,GAAG,CAAC,KAAmB,EAAE,EAAE;YACzC,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,MAAM,CAAC,SAAS,EAAE,CAAC;YAEnB,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,IAItC,CAAC;YAEF,IAAI,OAAO,EAAE,CAAC;gBACZ,GAAG,CAAC,IAAI,CAAC,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,IAAI,KAAK,CAAC,+BAA+B,QAAQ,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC;YACtE,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,CAAC,OAAO,GAAG,CAAC,GAAe,EAAE,EAAE;YACnC,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,GAAG,CAAC,IAAI,KAAK,CAAC,oBAAoB,QAAQ,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC;QAEF,MAAM,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,gCAAgC,QAAQ,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CACrE,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,IAAwB,CAAC;AACzC,CAAC"}
|
|
@@ -3,6 +3,17 @@ declare const MAX_DEPTH = 20;
|
|
|
3
3
|
declare const MAX_KEYS = 1000;
|
|
4
4
|
declare const MAX_STRLEN = 100000;
|
|
5
5
|
declare let totalKeys: number;
|
|
6
|
+
/**
|
|
7
|
+
* @brief Copies evaluated sandbox data into plain values, rejecting anything that can carry code, memory or stacks.
|
|
8
|
+
*
|
|
9
|
+
* Getters and setters are dropped without running them.
|
|
10
|
+
*
|
|
11
|
+
* @param value - Value to copy. Usually the result of the sandbox evaluation.
|
|
12
|
+
* @param depth - Current nesting depth, starting at 0.
|
|
13
|
+
* @returns Plain copy of `value`.
|
|
14
|
+
* @throws {Error} When the value nests too deep, has too many keys, is a function, symbol, RegExp, buffer, error,
|
|
15
|
+
* promise or non-plain object, or is a string that is too long or looks like a stack trace.
|
|
16
|
+
*/
|
|
6
17
|
declare function sanitise(value: unknown, depth?: number): unknown;
|
|
7
18
|
declare const SANDBOX_PREAMBLE = "\n \"use strict\";\n\n const process = undefined;\n const global = undefined;\n const globalThis = Object.create(null); // isolated dummy \u2014 writes succeed but go nowhere\n const module = undefined;\n const require = undefined;\n const __dirname = undefined;\n const __filename = undefined;\n const importScripts = undefined;\n const Function = undefined;\n const Reflect = undefined;\n const Proxy = undefined;\n\n // Stub ArrayBuffer \u2014 catches IIFE allocation bombs before they run.\n const ArrayBuffer = function() {\n throw new RangeError(\"ArrayBuffer construction is not allowed in meta files\");\n };\n\n // Stub RegExp constructor \u2014 catches IIFE regex bombs constructed via\n // new RegExp(...) or RegExp(...). Regex *literals* are a different path\n // (they don't call the RegExp constructor at parse time) but executing\n // .match()/.exec() on them still goes through the engine's regex executor.\n // The Worker timeout is the backstop for literal-based regex bombs.\n const RegExp = function() {\n throw new Error(\"RegExp construction is not allowed in meta files\");\n };\n";
|
|
8
19
|
//# sourceMappingURL=securityWorker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"securityWorker.d.ts","sourceRoot":"","sources":["../../src/security/securityWorker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"securityWorker.d.ts","sourceRoot":"","sources":["../../src/security/securityWorker.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,MAAM,EAAsB,0BAA0B,CAAC;AAM7D,QAAA,MAAM,SAAS,KAAM,CAAC;AACtB,QAAA,MAAM,QAAQ,OAAU,CAAC;AACzB,QAAA,MAAM,UAAU,SAAU,CAAC;AAC3B,QAAA,IAAM,SAAS,QAAK,CAAC;AAErB;;;;;;;;;;GAUG;AACH,iBAAS,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,OAAO,CAoEpD;AAWD,QAAA,MAAM,gBAAgB,uqCA4BrB,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
// packages/core/src/security/securityWorker.ts
|
|
2
3
|
const worker = self;
|
|
3
4
|
// ---------------------------------------------------------------------------
|
|
4
5
|
// Deep object sanitiser
|
|
@@ -7,6 +8,17 @@ const MAX_DEPTH = 20;
|
|
|
7
8
|
const MAX_KEYS = 1_000;
|
|
8
9
|
const MAX_STRLEN = 100_000;
|
|
9
10
|
let totalKeys = 0;
|
|
11
|
+
/**
|
|
12
|
+
* @brief Copies evaluated sandbox data into plain values, rejecting anything that can carry code, memory or stacks.
|
|
13
|
+
*
|
|
14
|
+
* Getters and setters are dropped without running them.
|
|
15
|
+
*
|
|
16
|
+
* @param value - Value to copy. Usually the result of the sandbox evaluation.
|
|
17
|
+
* @param depth - Current nesting depth, starting at 0.
|
|
18
|
+
* @returns Plain copy of `value`.
|
|
19
|
+
* @throws {Error} When the value nests too deep, has too many keys, is a function, symbol, RegExp, buffer, error,
|
|
20
|
+
* promise or non-plain object, or is a string that is too long or looks like a stack trace.
|
|
21
|
+
*/
|
|
10
22
|
function sanitise(value, depth = 0) {
|
|
11
23
|
if (depth > MAX_DEPTH) {
|
|
12
24
|
throw new Error(`Object exceeds maximum nesting depth (${MAX_DEPTH})`);
|
|
@@ -48,8 +60,6 @@ function sanitise(value, depth = 0) {
|
|
|
48
60
|
throw new Error("Object exceeds maximum key/element count");
|
|
49
61
|
const desc = descriptors[key];
|
|
50
62
|
if (desc.get || desc.set) {
|
|
51
|
-
// Silently skip getter/setter properties — the getter-side-effect test
|
|
52
|
-
// expects a clean resolve and verifies the side effect did not happen.
|
|
53
63
|
continue;
|
|
54
64
|
}
|
|
55
65
|
out[key] = sanitise(value[key], depth + 1);
|
|
@@ -60,9 +70,7 @@ function sanitise(value, depth = 0) {
|
|
|
60
70
|
if (value.length > MAX_STRLEN) {
|
|
61
71
|
throw new Error(`String value exceeds maximum length (${MAX_STRLEN})`);
|
|
62
72
|
}
|
|
63
|
-
//
|
|
64
|
-
// error-stack.meta.ts catches an Error and returns e.stack as a plain
|
|
65
|
-
// string — detectable by the " at " stack frame marker.
|
|
73
|
+
// A stack frame line starts with four spaces and "at ".
|
|
66
74
|
if (/\n {4}at /.test(value)) {
|
|
67
75
|
throw new Error("String value appears to contain a stack trace");
|
|
68
76
|
}
|
|
@@ -72,39 +80,10 @@ function sanitise(value, depth = 0) {
|
|
|
72
80
|
// ---------------------------------------------------------------------------
|
|
73
81
|
// Resource-limit stubs injected into the sandbox
|
|
74
82
|
//
|
|
75
|
-
// IIFEs run during object construction, before
|
|
76
|
-
//
|
|
77
|
-
//
|
|
78
|
-
//
|
|
79
|
-
// regex-bomb.meta.ts → /(a+)+$/.exec(str) — stubbed via RegExp
|
|
80
|
-
// deep-object.meta.ts → 100k nested { nested: obj } literals
|
|
81
|
-
// Object literals bypass the Object() constructor so
|
|
82
|
-
// they cannot be intercepted via a stub. Instead we
|
|
83
|
-
// cap total object allocations with a counter in the
|
|
84
|
-
// Object stub for `new Object()` / `Object.assign`
|
|
85
|
-
// style calls, AND we rely on the IIFE loop itself
|
|
86
|
-
// being detectable via a loop-iteration counter.
|
|
87
|
-
//
|
|
88
|
-
// The loop counter trick: we inject a global __iterCount variable into the
|
|
89
|
-
// sandbox and wrap the sandbox body so that — via a Proxy on the iteration
|
|
90
|
-
// variable — we detect runaway loops. However, this is complex and fragile.
|
|
91
|
-
//
|
|
92
|
-
// Simpler reliable approach for deep-object: the fixture runs a for-loop
|
|
93
|
-
// 100,000 times. We shadow the Number constructor and use a Proxy on the
|
|
94
|
-
// iteration space? No — object literals are truly uninterceptable at the
|
|
95
|
-
// VM level without a custom realm.
|
|
96
|
-
//
|
|
97
|
-
// Pragmatic solution: raise a hard iteration budget by injecting a
|
|
98
|
-
// __checkBudget() call... but we can't inject into the transpiled fixture.
|
|
99
|
-
//
|
|
100
|
-
// FINAL approach: use a SharedArrayBuffer + Atomics watchdog from the
|
|
101
|
-
// parent thread to measure wall-clock time inside the worker, and terminate
|
|
102
|
-
// if the IIFE phase takes too long. Since we already have a Worker timeout,
|
|
103
|
-
// the deep-object IIFE completing in 6ms means it's genuinely fast — the
|
|
104
|
-
// nesting is built but immediately discarded and the string is returned.
|
|
105
|
-
//
|
|
106
|
-
// The ONLY reliable fix for deep-object is to reject the *input source* via
|
|
107
|
-
// static analysis in securityParser.ts before it reaches the worker.
|
|
83
|
+
// IIFEs run during object construction, before sanitise() sees the result, so the
|
|
84
|
+
// builtins they can allocate or match with are stubbed to throw at the call.
|
|
85
|
+
// Object literals cannot be stubbed; loops that build them are rejected by
|
|
86
|
+
// static analysis in securityParser.ts.
|
|
108
87
|
// ---------------------------------------------------------------------------
|
|
109
88
|
const SANDBOX_PREAMBLE = `
|
|
110
89
|
"use strict";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"securityWorker.js","sourceRoot":"","sources":["../../src/security/securityWorker.ts"],"names":[],"mappings":";AAAA,MAAM,MAAM,GAAG,IAA6C,CAAC;AAE7D,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E,MAAM,SAAS,GAAI,EAAE,CAAC;AACtB,MAAM,QAAQ,GAAK,KAAK,CAAC;AACzB,MAAM,UAAU,GAAG,OAAO,CAAC;AAC3B,IAAM,SAAS,GAAI,CAAC,CAAC;AAErB,SAAS,QAAQ,CAAC,KAAc,EAAE,KAAK,GAAG,CAAC;IACzC,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,yCAAyC,SAAS,GAAG,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAElD,IAAI,GAAG,KAAK,iBAAiB,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,IACE,GAAG,KAAK,sBAAsB;QAC9B,GAAG,KAAK,4BAA4B;QACpC,WAAW,CAAC,MAAM,CAAC,KAAY,CAAC,EAChC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,GAAG,KAAK,gBAAgB,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,GAAG,KAAK,kBAAkB,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,EAAE,SAAS,GAAG,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QACxF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,IAAI,GAAG,KAAK,iBAAiB,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,2CAA2C,GAAG,GAAG,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,MAAM,WAAW,GAAG,MAAM,CAAC,yBAAyB,CAAC,KAAe,CAAC,CAAC;QAEtE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3C,IAAI,EAAE,SAAS,GAAG,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAExF,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACzB,
|
|
1
|
+
{"version":3,"file":"securityWorker.js","sourceRoot":"","sources":["../../src/security/securityWorker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
import type { SourceCheckout, SourceSpec } from "./types";
|
|
2
2
|
/**
|
|
3
|
-
* Resolves a source to a folder holding its files: a shallow clone for git,
|
|
4
|
-
* an installed or downloaded package for npm, the folder itself for local.
|
|
3
|
+
* @brief Resolves a source to a folder holding its files: a shallow clone for git, an installed or downloaded package for npm, the folder itself for local.
|
|
5
4
|
*
|
|
6
|
-
* @param
|
|
5
|
+
* @param source - Name and spec of the source to check out.
|
|
6
|
+
* @param projectRoot - Absolute project root. Local paths and the `node_modules` lookup start there.
|
|
7
|
+
* @returns Checkout of the source's folder.
|
|
7
8
|
*/
|
|
8
9
|
export declare function checkoutSource(source: {
|
|
9
10
|
name: string;
|
|
10
11
|
spec: SourceSpec;
|
|
11
12
|
}, projectRoot: string): Promise<SourceCheckout>;
|
|
12
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* @brief Names where a source comes from, in one line.
|
|
15
|
+
*
|
|
16
|
+
* @param spec - Spec to describe.
|
|
17
|
+
* @returns Text such as `git https://github.com/me/skills.git#main`.
|
|
18
|
+
*/
|
|
13
19
|
export declare function describeSource(spec: SourceSpec): string;
|
|
14
20
|
//# sourceMappingURL=checkout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/sources/checkout.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1D
|
|
1
|
+
{"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/sources/checkout.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1D;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAO7H;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAMvD"}
|
package/dist/sources/checkout.js
CHANGED
|
@@ -3,10 +3,11 @@ import { checkoutGit } from "./git";
|
|
|
3
3
|
import { checkoutLocal } from "./local";
|
|
4
4
|
import { checkoutNpm } from "./npm";
|
|
5
5
|
/**
|
|
6
|
-
* Resolves a source to a folder holding its files: a shallow clone for git,
|
|
7
|
-
* an installed or downloaded package for npm, the folder itself for local.
|
|
6
|
+
* @brief Resolves a source to a folder holding its files: a shallow clone for git, an installed or downloaded package for npm, the folder itself for local.
|
|
8
7
|
*
|
|
9
|
-
* @param
|
|
8
|
+
* @param source - Name and spec of the source to check out.
|
|
9
|
+
* @param projectRoot - Absolute project root. Local paths and the `node_modules` lookup start there.
|
|
10
|
+
* @returns Checkout of the source's folder.
|
|
10
11
|
*/
|
|
11
12
|
export async function checkoutSource(source, projectRoot) {
|
|
12
13
|
const { name, spec } = source;
|
|
@@ -16,7 +17,12 @@ export async function checkoutSource(source, projectRoot) {
|
|
|
16
17
|
case "local": return checkoutLocal(name, spec, projectRoot);
|
|
17
18
|
}
|
|
18
19
|
}
|
|
19
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* @brief Names where a source comes from, in one line.
|
|
22
|
+
*
|
|
23
|
+
* @param spec - Spec to describe.
|
|
24
|
+
* @returns Text such as `git https://github.com/me/skills.git#main`.
|
|
25
|
+
*/
|
|
20
26
|
export function describeSource(spec) {
|
|
21
27
|
switch (spec.kind) {
|
|
22
28
|
case "git": return `git ${spec.url}${spec.ref === undefined ? "" : `#${spec.ref}`}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../src/sources/checkout.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGpC
|
|
1
|
+
{"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../src/sources/checkout.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGpC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAA0C,EAAE,WAAmB;IAClG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAC9B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,KAAK,EAAI,OAAO,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7C,KAAK,KAAK,EAAI,OAAO,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QAC1D,KAAK,OAAO,EAAE,OAAO,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAgB;IAC7C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,KAAK,EAAI,OAAO,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACtF,KAAK,KAAK,EAAI,OAAO,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QAClG,KAAK,OAAO,EAAE,OAAO,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5C,CAAC;AACH,CAAC"}
|
package/dist/sources/git.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { GitSourceSpec, SourceCheckout } from "./types";
|
|
2
2
|
/**
|
|
3
|
-
* Shallow-clones a git source into a temporary folder, at its `ref` when set
|
|
4
|
-
* and at the default branch otherwise, and resolves the commit it landed on.
|
|
3
|
+
* @brief Shallow-clones a git source into a temporary folder, at its `ref` when set and at the default branch otherwise.
|
|
5
4
|
*
|
|
6
|
-
* @
|
|
5
|
+
* @param name - Name of the source.
|
|
6
|
+
* @param spec - Git spec with the URL and optional ref.
|
|
7
|
+
* @returns Checkout with the commit the clone resolved to.
|
|
8
|
+
* @throws {Error} When the clone fails, e.g. an unknown ref or an unreachable host.
|
|
7
9
|
*/
|
|
8
10
|
export declare function checkoutGit(name: string, spec: GitSourceSpec): Promise<SourceCheckout>;
|
|
9
11
|
//# sourceMappingURL=git.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/sources/git.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE7D
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/sources/git.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE7D;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAW5F"}
|
package/dist/sources/git.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
// packages/core/src/sources/git.ts
|
|
2
2
|
import { createTempDir, removeDir, runCommand } from "./process";
|
|
3
3
|
/**
|
|
4
|
-
* Shallow-clones a git source into a temporary folder, at its `ref` when set
|
|
5
|
-
* and at the default branch otherwise, and resolves the commit it landed on.
|
|
4
|
+
* @brief Shallow-clones a git source into a temporary folder, at its `ref` when set and at the default branch otherwise.
|
|
6
5
|
*
|
|
7
|
-
* @
|
|
6
|
+
* @param name - Name of the source.
|
|
7
|
+
* @param spec - Git spec with the URL and optional ref.
|
|
8
|
+
* @returns Checkout with the commit the clone resolved to.
|
|
9
|
+
* @throws {Error} When the clone fails, e.g. an unknown ref or an unreachable host.
|
|
8
10
|
*/
|
|
9
11
|
export async function checkoutGit(name, spec) {
|
|
10
12
|
const dir = createTempDir("git");
|
package/dist/sources/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/sources/git.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGjE
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/sources/git.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGjE;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,IAAmB;IACjE,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,UAAU,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3F,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;QACnE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,SAAS,CAAC,GAAG,CAAC,CAAC;QACf,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/dist/sources/local.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { LocalSourceSpec, SourceCheckout } from "./types";
|
|
2
2
|
/**
|
|
3
|
-
* Resolves a local source to its folder. Nothing is copied, so `dispose` is a
|
|
4
|
-
* no-op and the version is the one in the folder's package.json, if any.
|
|
3
|
+
* @brief Resolves a local source to its folder. Nothing is copied, so `dispose` is a no-op.
|
|
5
4
|
*
|
|
6
|
-
* @param
|
|
7
|
-
* @
|
|
5
|
+
* @param name - Name of the source.
|
|
6
|
+
* @param spec - Local spec with the folder path.
|
|
7
|
+
* @param projectRoot - Absolute path a relative `spec.path` is resolved against.
|
|
8
|
+
* @returns Checkout whose version is read from the folder's package.json, if any.
|
|
9
|
+
* @throws {Error} When the folder does not exist.
|
|
8
10
|
*/
|
|
9
11
|
export declare function checkoutLocal(name: string, spec: LocalSourceSpec, projectRoot: string): SourceCheckout;
|
|
10
12
|
//# sourceMappingURL=local.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/sources/local.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE/D
|
|
1
|
+
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/sources/local.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE/D;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,GAAG,cAAc,CAMtG"}
|
package/dist/sources/local.js
CHANGED
|
@@ -4,11 +4,13 @@ import path from "node:path";
|
|
|
4
4
|
import { expandHome } from "./parse";
|
|
5
5
|
import { readPackageVersion } from "./packageJson";
|
|
6
6
|
/**
|
|
7
|
-
* Resolves a local source to its folder. Nothing is copied, so `dispose` is a
|
|
8
|
-
* no-op and the version is the one in the folder's package.json, if any.
|
|
7
|
+
* @brief Resolves a local source to its folder. Nothing is copied, so `dispose` is a no-op.
|
|
9
8
|
*
|
|
10
|
-
* @param
|
|
11
|
-
* @
|
|
9
|
+
* @param name - Name of the source.
|
|
10
|
+
* @param spec - Local spec with the folder path.
|
|
11
|
+
* @param projectRoot - Absolute path a relative `spec.path` is resolved against.
|
|
12
|
+
* @returns Checkout whose version is read from the folder's package.json, if any.
|
|
13
|
+
* @throws {Error} When the folder does not exist.
|
|
12
14
|
*/
|
|
13
15
|
export function checkoutLocal(name, spec, projectRoot) {
|
|
14
16
|
const dir = path.resolve(projectRoot, expandHome(spec.path));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/sources/local.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGnD
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/sources/local.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGnD;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,IAAqB,EAAE,WAAmB;IACpF,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,kBAAkB,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;AAClF,CAAC"}
|
package/dist/sources/npm.d.ts
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import type { NpmSourceSpec, SourceCheckout } from "./types";
|
|
2
2
|
/**
|
|
3
|
-
* Resolves an npm source to a folder.
|
|
4
|
-
* project root is read in place when it satisfies `spec.version` (any copy
|
|
5
|
-
* does when no version is set). Otherwise the package tarball is downloaded
|
|
6
|
-
* from the registry in `npm_config_registry`, checked against its integrity
|
|
7
|
-
* hash and unpacked into a temporary folder.
|
|
3
|
+
* @brief Resolves an npm source to a folder.
|
|
8
4
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
5
|
+
* A copy in `node_modules` at or above the project root is read in place when it satisfies `spec.version`
|
|
6
|
+
* (any copy does when no version is set). Otherwise the package tarball is downloaded from the registry
|
|
7
|
+
* in `npm_config_registry`, checked against its integrity hash and unpacked into a temporary folder.
|
|
8
|
+
*
|
|
9
|
+
* @param name - Name of the source.
|
|
10
|
+
* @param spec - npm spec with the package name and optional version.
|
|
11
|
+
* @param projectRoot - Absolute folder the `node_modules` lookup starts from.
|
|
12
|
+
* @returns Checkout of the package folder.
|
|
13
|
+
* @throws {Error} When the registry has no matching version or the download fails its integrity check.
|
|
11
14
|
*/
|
|
12
15
|
export declare function checkoutNpm(name: string, spec: NpmSourceSpec, projectRoot: string): Promise<SourceCheckout>;
|
|
13
16
|
//# sourceMappingURL=npm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npm.d.ts","sourceRoot":"","sources":["../../src/sources/npm.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"npm.d.ts","sourceRoot":"","sources":["../../src/sources/npm.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAsB7D;;;;;;;;;;;;GAYG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAMjH"}
|