@endo/compartment-mapper 1.2.2 → 1.3.1
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/archive-lite.d.ts.map +1 -0
- package/archive-parsers.d.ts.map +1 -0
- package/archive.d.ts.map +1 -0
- package/bundle.d.ts.map +1 -0
- package/capture-lite.d.ts.map +1 -0
- package/import-archive-lite.d.ts.map +1 -0
- package/import-archive-parsers.d.ts.map +1 -0
- package/import-archive.d.ts.map +1 -0
- package/import-lite.d.ts.map +1 -0
- package/import-parsers.d.ts.map +1 -0
- package/import.d.ts.map +1 -0
- package/index.d.ts.map +1 -0
- package/node-modules.d.ts.map +1 -0
- package/node-powers.d.ts +1 -1
- package/node-powers.d.ts.map +1 -0
- package/node-powers.js +5 -1
- package/package.json +15 -11
- package/src/compartment-map.d.ts +1 -1
- package/src/compartment-map.d.ts.map +1 -1
- package/src/compartment-map.js +1 -3
- package/src/import-hook.d.ts +14 -1
- package/src/import-hook.d.ts.map +1 -1
- package/src/import-hook.js +493 -144
- package/src/import-lite.d.ts +20 -3
- package/src/import-lite.d.ts.map +1 -1
- package/src/import-lite.js +137 -15
- package/src/import.d.ts +45 -5
- package/src/import.d.ts.map +1 -1
- package/src/import.js +52 -6
- package/src/link.d.ts +2 -11
- package/src/link.d.ts.map +1 -1
- package/src/link.js +76 -154
- package/src/map-parser.d.ts +4 -0
- package/src/map-parser.d.ts.map +1 -0
- package/src/map-parser.js +339 -0
- package/src/node-modules.d.ts +2 -5
- package/src/node-modules.d.ts.map +1 -1
- package/src/node-modules.js +12 -5
- package/src/node-powers.d.ts +29 -23
- package/src/node-powers.d.ts.map +1 -1
- package/src/node-powers.js +102 -25
- package/src/parse-archive-cjs.js +2 -1
- package/src/parse-archive-mjs.js +2 -1
- package/src/parse-bytes.d.ts.map +1 -1
- package/src/parse-bytes.js +2 -6
- package/src/parse-cjs-shared-export-wrapper.d.ts.map +1 -1
- package/src/parse-cjs-shared-export-wrapper.js +23 -6
- package/src/parse-cjs.js +3 -2
- package/src/parse-json.d.ts +5 -3
- package/src/parse-json.d.ts.map +1 -1
- package/src/parse-json.js +9 -9
- package/src/parse-mjs.js +2 -1
- package/src/parse-pre-cjs.js +3 -2
- package/src/parse-pre-mjs.js +2 -1
- package/src/parse-text.d.ts.map +1 -1
- package/src/parse-text.js +2 -6
- package/src/policy.d.ts +21 -14
- package/src/policy.d.ts.map +1 -1
- package/src/policy.js +53 -43
- package/src/powers.d.ts +8 -1
- package/src/powers.d.ts.map +1 -1
- package/src/powers.js +60 -10
- package/src/search.d.ts.map +1 -1
- package/src/search.js +1 -2
- package/src/types.d.ts +343 -21
- package/src/types.d.ts.map +1 -1
- package/src/types.js +369 -22
package/src/types.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ export type EntryDescriptor = {
|
|
|
18
18
|
/**
|
|
19
19
|
* A compartment descriptor corresponds to a single Compartment
|
|
20
20
|
* of an assembled Application and describes how to construct
|
|
21
|
-
* one for a given library or application package.json
|
|
21
|
+
* one for a given library or application `package.json`.
|
|
22
22
|
*/
|
|
23
23
|
export type CompartmentDescriptor = {
|
|
24
24
|
label: string;
|
|
@@ -54,10 +54,14 @@ export type CompartmentDescriptor = {
|
|
|
54
54
|
* - policy specific to compartment
|
|
55
55
|
*/
|
|
56
56
|
policy: SomePackagePolicy;
|
|
57
|
+
/**
|
|
58
|
+
* - List of compartment names this Compartment depends upon
|
|
59
|
+
*/
|
|
60
|
+
compartments: Set<string>;
|
|
57
61
|
};
|
|
58
62
|
/**
|
|
59
63
|
* For every module explicitly mentioned in an `exports` field of a
|
|
60
|
-
* package.json
|
|
64
|
+
* `package.json`, there is a corresponding module descriptor.
|
|
61
65
|
*/
|
|
62
66
|
export type ModuleDescriptor = {
|
|
63
67
|
compartment?: string | undefined;
|
|
@@ -75,7 +79,7 @@ export type ModuleDescriptor = {
|
|
|
75
79
|
* Scope descriptors link all names under a prefix to modules in another
|
|
76
80
|
* compartment, like a wildcard.
|
|
77
81
|
* These are employed to link any module not explicitly mentioned
|
|
78
|
-
* in a package.json file, when that package.json file does not have
|
|
82
|
+
* in a `package.json` file, when that `package.json` file does not have
|
|
79
83
|
* an explicit `exports` map.
|
|
80
84
|
*/
|
|
81
85
|
export type ScopeDescriptor = {
|
|
@@ -99,10 +103,15 @@ export type ArchiveReader = {
|
|
|
99
103
|
read: ReadFn;
|
|
100
104
|
};
|
|
101
105
|
export type ReadFn = (location: string) => Promise<Uint8Array>;
|
|
106
|
+
export type ReadNowFn = (location: string) => Uint8Array;
|
|
102
107
|
/**
|
|
103
108
|
* A resolution of `undefined` indicates `ENOENT` or the equivalent.
|
|
104
109
|
*/
|
|
105
110
|
export type MaybeReadFn = (location: string) => Promise<Uint8Array | undefined>;
|
|
111
|
+
/**
|
|
112
|
+
* A resolution of `undefined` indicates `ENOENT` or the equivalent.
|
|
113
|
+
*/
|
|
114
|
+
export type MaybeReadNowFn = (location: string) => Uint8Array | undefined;
|
|
106
115
|
/**
|
|
107
116
|
* Returns a canonical URL for a given URL, following redirects or symbolic
|
|
108
117
|
* links if any exist along the path.
|
|
@@ -116,15 +125,58 @@ export type Application = {
|
|
|
116
125
|
};
|
|
117
126
|
export type ExecuteFn = (options?: ExecuteOptions | undefined) => Promise<SomeObject>;
|
|
118
127
|
export type SnapshotFn = () => Promise<Uint8Array>;
|
|
128
|
+
export type FileURLToPathFn = (location: string | URL) => string;
|
|
129
|
+
export type IsAbsoluteFn = (location: string) => boolean;
|
|
130
|
+
/**
|
|
131
|
+
* Node.js' `url.pathToFileURL` only returns a {@link URL}.
|
|
132
|
+
*/
|
|
133
|
+
export type PathToFileURLFn = (location: string) => URL | string;
|
|
134
|
+
export type RequireResolveFn = (fromLocation: string, specifier: string, options?: {
|
|
135
|
+
paths?: string[];
|
|
136
|
+
} | undefined) => any;
|
|
119
137
|
export type ReadPowers = {
|
|
120
138
|
read: ReadFn;
|
|
121
139
|
canonical: CanonicalFn;
|
|
140
|
+
maybeReadNow?: MaybeReadNowFn | undefined;
|
|
122
141
|
computeSha512?: HashFn | undefined;
|
|
123
|
-
fileURLToPath?:
|
|
124
|
-
pathToFileURL?:
|
|
125
|
-
requireResolve?:
|
|
142
|
+
fileURLToPath?: FileURLToPathFn | undefined;
|
|
143
|
+
pathToFileURL?: PathToFileURLFn | undefined;
|
|
144
|
+
requireResolve?: RequireResolveFn | undefined;
|
|
145
|
+
isAbsolute?: IsAbsoluteFn | undefined;
|
|
146
|
+
};
|
|
147
|
+
/**
|
|
148
|
+
* These properties are necessary for dynamic require support
|
|
149
|
+
*/
|
|
150
|
+
export type ReadNowPowersProp = "fileURLToPath" | "isAbsolute" | "maybeReadNow";
|
|
151
|
+
/**
|
|
152
|
+
* The extension of {@link ReadPowers} necessary for dynamic require support
|
|
153
|
+
*
|
|
154
|
+
* For a `ReadPowers` to be a `ReadNowPowers`:
|
|
155
|
+
*
|
|
156
|
+
* 1. It must be an object (not a {@link ReadFn})
|
|
157
|
+
* 2. Prop `maybeReadNow` is a function
|
|
158
|
+
* 3. Prop `fileURLToPath` is a function
|
|
159
|
+
* 4. Prop `isAbsolute` is a function
|
|
160
|
+
*/
|
|
161
|
+
export type ReadNowPowers = Omit<ReadPowers, ReadNowPowersProp> & Required<Pick<ReadPowers, ReadNowPowersProp>>;
|
|
162
|
+
export type MakeImportNowHookMakerOptions = {
|
|
163
|
+
sources?: Sources | undefined;
|
|
164
|
+
compartmentDescriptors?: Record<string, CompartmentDescriptor> | undefined;
|
|
165
|
+
computeSha512?: HashFn | undefined;
|
|
166
|
+
/**
|
|
167
|
+
* Suffixes to search if the unmodified
|
|
168
|
+
* specifier is not found. Pass `[]` to emulate Node.js' strict behavior. The
|
|
169
|
+
* default handles Node.js' CommonJS behavior. Unlike Node.js, the Compartment
|
|
170
|
+
* Mapper lifts CommonJS up, more like a bundler, and does not attempt to vary
|
|
171
|
+
* the behavior of resolution depending on the language of the importing module.
|
|
172
|
+
*/
|
|
173
|
+
searchSuffixes?: string[] | undefined;
|
|
174
|
+
sourceMapHook?: SourceMapHook | undefined;
|
|
175
|
+
exitModuleImportNowHook?: ExitModuleImportNowHook | undefined;
|
|
176
|
+
};
|
|
177
|
+
export type MaybeReadPowers = ReadPowers & {
|
|
178
|
+
maybeRead: MaybeReadFn;
|
|
126
179
|
};
|
|
127
|
-
export type MaybeReadPowers = ReadPowers | object;
|
|
128
180
|
export type HashPowers = {
|
|
129
181
|
read: ReadFn;
|
|
130
182
|
canonical: CanonicalFn;
|
|
@@ -139,11 +191,18 @@ export type ImportHookMakerOptions = {
|
|
|
139
191
|
packageLocation: string;
|
|
140
192
|
packageName: string;
|
|
141
193
|
attenuators: DeferredAttenuatorsProvider;
|
|
142
|
-
parse: ParseFn;
|
|
194
|
+
parse: ParseFn | ParseFnAsync;
|
|
143
195
|
shouldDeferError: ShouldDeferError;
|
|
144
196
|
compartments: Record<string, Compartment>;
|
|
145
197
|
};
|
|
146
198
|
export type ImportHookMaker = (options: ImportHookMakerOptions) => ImportHook;
|
|
199
|
+
export type ImportNowHookMakerParams = {
|
|
200
|
+
packageLocation: string;
|
|
201
|
+
packageName: string;
|
|
202
|
+
parse: ParseFn | ParseFnAsync;
|
|
203
|
+
compartments: Record<string, Compartment>;
|
|
204
|
+
};
|
|
205
|
+
export type ImportNowHookMaker = (params: ImportNowHookMakerParams) => ImportNowHook;
|
|
147
206
|
export type SourceMapHookDetails = {
|
|
148
207
|
compartment: string;
|
|
149
208
|
module: string;
|
|
@@ -158,28 +217,43 @@ export type ComputeSourceMapLocationDetails = {
|
|
|
158
217
|
sha512: string;
|
|
159
218
|
};
|
|
160
219
|
export type ComputeSourceMapLocationHook = (details: ComputeSourceMapLocationDetails) => string;
|
|
161
|
-
|
|
220
|
+
/**
|
|
221
|
+
* Result of a {@link ParseFn}
|
|
222
|
+
*/
|
|
223
|
+
export type ParseResult = {
|
|
224
|
+
bytes: Uint8Array;
|
|
225
|
+
parser: Language;
|
|
226
|
+
record: FinalStaticModuleType;
|
|
227
|
+
sourceMap?: string | undefined;
|
|
228
|
+
};
|
|
229
|
+
export type ParseFn_ = (bytes: Uint8Array, specifier: string, location: string, packageLocation: string, options?: {
|
|
162
230
|
sourceMap?: string | undefined;
|
|
163
231
|
sourceMapHook?: SourceMapHook | undefined;
|
|
164
232
|
sourceMapUrl?: string | undefined;
|
|
165
233
|
readPowers?: ReadFn | ReadPowers | undefined;
|
|
166
234
|
compartmentDescriptor?: CompartmentDescriptor | undefined;
|
|
167
|
-
} | undefined) =>
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
235
|
+
} | undefined) => ParseResult;
|
|
236
|
+
export type ParseFn = ParseFn_ & {
|
|
237
|
+
isSyncParser?: true;
|
|
238
|
+
};
|
|
239
|
+
export type ParseFnAsync = (bytes: Uint8Array, specifier: string, location: string, packageLocation: string, options?: {
|
|
240
|
+
sourceMap?: string | undefined;
|
|
241
|
+
sourceMapHook?: SourceMapHook | undefined;
|
|
242
|
+
sourceMapUrl?: string | undefined;
|
|
243
|
+
readPowers?: ReadFn | ReadPowers | undefined;
|
|
244
|
+
} | undefined) => Promise<ParseResult>;
|
|
173
245
|
/**
|
|
174
246
|
* ParserImplementation declares if a heuristic is used by parser to detect
|
|
175
247
|
* imports - is set to true for cjs, which uses a lexer to find require calls
|
|
176
248
|
*/
|
|
177
249
|
export type ParserImplementation = {
|
|
178
250
|
heuristicImports: boolean;
|
|
251
|
+
synchronous?: boolean | undefined;
|
|
179
252
|
parse: ParseFn;
|
|
180
253
|
};
|
|
181
254
|
export type ComputeSourceLocationHook = (compartmentName: string, moduleSpecifier: string) => string | undefined;
|
|
182
255
|
export type ExitModuleImportHook = (specifier: string) => Promise<ThirdPartyStaticModuleInterface | undefined>;
|
|
256
|
+
export type ExitModuleImportNowHook = (specifier: string, referrer: string) => ThirdPartyStaticModuleInterface | undefined;
|
|
183
257
|
export type ExtraLoadArchiveOptions = {
|
|
184
258
|
expectedSha512?: string | undefined;
|
|
185
259
|
modules?: Record<string, any> | undefined;
|
|
@@ -222,27 +296,46 @@ export type LanguageForModuleSpecifier = Record<string, Language>;
|
|
|
222
296
|
/**
|
|
223
297
|
* Options for `loadLocation()`
|
|
224
298
|
*/
|
|
225
|
-
export type LoadLocationOptions = ArchiveOptions;
|
|
299
|
+
export type LoadLocationOptions = ArchiveOptions | SyncArchiveOptions;
|
|
226
300
|
export type ExtraLinkOptions = {
|
|
227
301
|
resolve?: ResolveHook | undefined;
|
|
228
302
|
makeImportHook: ImportHookMaker;
|
|
303
|
+
makeImportNowHook?: ImportNowHookMaker | undefined;
|
|
229
304
|
parserForLanguage?: ParserForLanguage | undefined;
|
|
230
305
|
languageForExtension?: LanguageForExtension | undefined;
|
|
231
306
|
moduleTransforms?: ModuleTransforms | undefined;
|
|
307
|
+
syncModuleTransforms?: SyncModuleTransforms | undefined;
|
|
232
308
|
archiveOnly?: boolean | undefined;
|
|
233
309
|
};
|
|
310
|
+
export type LinkResult = {
|
|
311
|
+
/**
|
|
312
|
+
* ,
|
|
313
|
+
*/
|
|
314
|
+
compartment: Compartment;
|
|
315
|
+
compartments: Record<string, Compartment>;
|
|
316
|
+
attenuatorsCompartment: Compartment;
|
|
317
|
+
pendingJobsPromise: Promise<void>;
|
|
318
|
+
};
|
|
234
319
|
/**
|
|
235
320
|
* Options for `link()`
|
|
236
321
|
*/
|
|
237
322
|
export type LinkOptions = ExecuteOptions & ExtraLinkOptions;
|
|
238
323
|
export type ModuleTransforms = Record<string, ModuleTransform>;
|
|
239
|
-
export type
|
|
324
|
+
export type SyncModuleTransforms = Record<string, SyncModuleTransform>;
|
|
325
|
+
export type ModuleTransform = (bytes: Uint8Array, specifier: string, location: string, packageLocation: string, params?: {
|
|
240
326
|
sourceMap?: string | undefined;
|
|
241
327
|
} | undefined) => Promise<{
|
|
242
328
|
bytes: Uint8Array;
|
|
243
329
|
parser: Language;
|
|
244
330
|
sourceMap?: string;
|
|
245
331
|
}>;
|
|
332
|
+
export type SyncModuleTransform = (bytes: Uint8Array, specifier: string, location: string, packageLocation: string, params?: {
|
|
333
|
+
sourceMap?: string | undefined;
|
|
334
|
+
} | undefined) => {
|
|
335
|
+
bytes: Uint8Array;
|
|
336
|
+
parser: Language;
|
|
337
|
+
sourceMap?: string;
|
|
338
|
+
};
|
|
246
339
|
export type Sources = Record<string, CompartmentSources>;
|
|
247
340
|
export type CompartmentSources = Record<string, ModuleSource>;
|
|
248
341
|
export type ModuleSource = {
|
|
@@ -274,6 +367,7 @@ export type Artifact = {
|
|
|
274
367
|
export type CaptureSourceLocationHook = (compartmentName: string, moduleSpecifier: string, sourceLocation: string) => any;
|
|
275
368
|
export type ArchiveOptions = {
|
|
276
369
|
moduleTransforms?: ModuleTransforms | undefined;
|
|
370
|
+
syncModuleTransforms?: SyncModuleTransforms | undefined;
|
|
277
371
|
modules?: Record<string, any> | undefined;
|
|
278
372
|
dev?: boolean | undefined;
|
|
279
373
|
policy?: SomePolicy | undefined;
|
|
@@ -290,6 +384,21 @@ export type ArchiveOptions = {
|
|
|
290
384
|
parserForLanguage?: Record<string, ParserImplementation> | undefined;
|
|
291
385
|
languageForExtension?: LanguageForExtension | undefined;
|
|
292
386
|
};
|
|
387
|
+
export type SyncArchiveOptions = {
|
|
388
|
+
syncModuleTransforms?: SyncModuleTransforms | undefined;
|
|
389
|
+
modules?: Record<string, any> | undefined;
|
|
390
|
+
dev?: boolean | undefined;
|
|
391
|
+
policy?: object;
|
|
392
|
+
tags?: Set<string> | undefined;
|
|
393
|
+
captureSourceLocation?: CaptureSourceLocationHook | undefined;
|
|
394
|
+
importHook?: ExitModuleImportHook | undefined;
|
|
395
|
+
searchSuffixes?: string[] | undefined;
|
|
396
|
+
commonDependencies?: Record<string, string> | undefined;
|
|
397
|
+
sourceMapHook?: SourceMapHook | undefined;
|
|
398
|
+
importNowHook?: ExitModuleImportNowHook | undefined;
|
|
399
|
+
parserForLanguage?: Record<string, ParserImplementation> | undefined;
|
|
400
|
+
languageForExtension?: LanguageForExtension | undefined;
|
|
401
|
+
};
|
|
293
402
|
export type PackageNamingKit = {
|
|
294
403
|
/**
|
|
295
404
|
* - true if location is the entry compartment
|
|
@@ -326,10 +435,10 @@ export type UnifiedAttenuationDefinition = {
|
|
|
326
435
|
};
|
|
327
436
|
export type Attenuator<GlobalParams extends [any, ...any[]] = [any, ...any[]], ModuleParams extends [any, ...any[]] = [any, ...any[]]> = {
|
|
328
437
|
attenuateGlobals?: GlobalAttenuatorFn<GlobalParams> | undefined;
|
|
329
|
-
attenuateModule?: ModuleAttenuatorFn<ModuleParams,
|
|
438
|
+
attenuateModule?: ModuleAttenuatorFn<ModuleParams, SomeObject, SomeObject> | undefined;
|
|
330
439
|
};
|
|
331
440
|
export type GlobalAttenuatorFn<Params extends [any, ...any[]] = [any, ...any[]]> = (params: Params, originalObject: Record<PropertyKey, any>, globalThis: Record<PropertyKey, any>) => void;
|
|
332
|
-
export type ModuleAttenuatorFn<Params extends [any, ...any[]] = [any, ...any[]], T =
|
|
441
|
+
export type ModuleAttenuatorFn<Params extends [any, ...any[]] = [any, ...any[]], T = SomeObject, U = T> = (params: Params, ns: T) => U;
|
|
333
442
|
export type DeferredAttenuatorsProvider = {
|
|
334
443
|
import: (attenuatorSpecifier: string | null) => Promise<Attenuator>;
|
|
335
444
|
};
|
|
@@ -338,7 +447,7 @@ export type DeferredAttenuatorsProvider = {
|
|
|
338
447
|
*/
|
|
339
448
|
export type WildcardPolicy = "any";
|
|
340
449
|
/**
|
|
341
|
-
* A type representing a property policy, which is a record of string keys and boolean values
|
|
450
|
+
* A type representing a property policy, which is a record of string keys and boolean values
|
|
342
451
|
*/
|
|
343
452
|
export type PropertyPolicy = Record<string, boolean>;
|
|
344
453
|
/**
|
|
@@ -373,6 +482,10 @@ export type PackagePolicy<PackagePolicyItem = void, GlobalsPolicyItem = void, Bu
|
|
|
373
482
|
* - Whether to disable global freeze.
|
|
374
483
|
*/
|
|
375
484
|
noGlobalFreeze?: boolean | undefined;
|
|
485
|
+
/**
|
|
486
|
+
* - Whether to allow dynamic imports
|
|
487
|
+
*/
|
|
488
|
+
dynamic?: boolean | undefined;
|
|
376
489
|
/**
|
|
377
490
|
* - Any additional user-defined options can be added to the policy here
|
|
378
491
|
*/
|
|
@@ -399,10 +512,60 @@ export type Policy<PackagePolicyItem = void, GlobalsPolicyItem = void, BuiltinsP
|
|
|
399
512
|
* Any object. All objects. Not `null`, though.
|
|
400
513
|
*/
|
|
401
514
|
export type SomeObject = Record<PropertyKey, any>;
|
|
515
|
+
/**
|
|
516
|
+
* Function in {@link CryptoInterface}
|
|
517
|
+
*/
|
|
518
|
+
export type CreateHashFn = (algorithm: "sha512") => Hash;
|
|
519
|
+
/**
|
|
520
|
+
* Object returned by function in {@link CryptoInterface}
|
|
521
|
+
*/
|
|
522
|
+
export type Hash = {
|
|
523
|
+
update: (data: Uint8Array | string) => Hash;
|
|
524
|
+
digest: () => Buffer;
|
|
525
|
+
};
|
|
526
|
+
/**
|
|
527
|
+
* Function in {@link FsPromisesInterface}
|
|
528
|
+
*/
|
|
529
|
+
export type RealpathFn = (filepath: string) => Promise<string>;
|
|
530
|
+
/**
|
|
531
|
+
* Object within {@link FsPromisesInterface}
|
|
532
|
+
*/
|
|
533
|
+
export type FsPromisesInterface = {
|
|
534
|
+
realpath: RealpathFn;
|
|
535
|
+
writeFile: WriteFn;
|
|
536
|
+
readFile: ReadFn;
|
|
537
|
+
};
|
|
538
|
+
/**
|
|
539
|
+
* For creating {@link ReadPowers}
|
|
540
|
+
*/
|
|
541
|
+
export type FsInterface = {
|
|
542
|
+
promises: FsPromisesInterface;
|
|
543
|
+
readFileSync: ReadNowFn;
|
|
544
|
+
};
|
|
545
|
+
/**
|
|
546
|
+
* For creating {@link ReadPowers}
|
|
547
|
+
*/
|
|
548
|
+
export type UrlInterface = {
|
|
549
|
+
fileURLToPath: FileURLToPathFn;
|
|
550
|
+
pathToFileURL: PathToFileURLFn;
|
|
551
|
+
};
|
|
552
|
+
/**
|
|
553
|
+
* For creating {@link ReadPowers}
|
|
554
|
+
*/
|
|
555
|
+
export type CryptoInterface = {
|
|
556
|
+
createHash: CreateHashFn;
|
|
557
|
+
};
|
|
558
|
+
export type PathInterface = {
|
|
559
|
+
isAbsolute: IsAbsoluteFn;
|
|
560
|
+
};
|
|
561
|
+
/**
|
|
562
|
+
* Options for `compartmentMapForNodeModules`
|
|
563
|
+
*/
|
|
564
|
+
export type CompartmentMapForNodeModulesOptions = Pick<ArchiveOptions, "dev" | "commonDependencies" | "policy">;
|
|
402
565
|
/**
|
|
403
566
|
* Any {@link PackagePolicy}
|
|
404
567
|
*/
|
|
405
|
-
export type SomePackagePolicy = PackagePolicy<
|
|
568
|
+
export type SomePackagePolicy = PackagePolicy<PolicyItem, PolicyItem, PolicyItem, unknown>;
|
|
406
569
|
/**
|
|
407
570
|
* Any {@link Policy}
|
|
408
571
|
*/
|
|
@@ -429,11 +592,17 @@ export type LiteralUnion<LiteralType, PrimitiveType extends Primitive> = Literal
|
|
|
429
592
|
* Options for `importLocation()`
|
|
430
593
|
*/
|
|
431
594
|
export type ImportLocationOptions = ExecuteOptions & ArchiveOptions;
|
|
595
|
+
/**
|
|
596
|
+
* Options for `importLocation()` necessary (but not sufficient--see
|
|
597
|
+
* {@link ReadNowPowers}) for dynamic require support
|
|
598
|
+
*/
|
|
599
|
+
export type SyncImportLocationOptions = ExecuteOptions & SyncArchiveOptions;
|
|
432
600
|
/**
|
|
433
601
|
* Options for `captureFromMap()`
|
|
434
602
|
*/
|
|
435
603
|
export type CaptureOptions = {
|
|
436
604
|
moduleTransforms?: ModuleTransforms | undefined;
|
|
605
|
+
syncModuleTransforms?: SyncModuleTransforms | undefined;
|
|
437
606
|
modules?: Record<string, any> | undefined;
|
|
438
607
|
dev?: boolean | undefined;
|
|
439
608
|
policy?: SomePolicy | undefined;
|
|
@@ -448,6 +617,7 @@ export type CaptureOptions = {
|
|
|
448
617
|
sourceMapHook?: SourceMapHook | undefined;
|
|
449
618
|
parserForLanguage?: Record<string, ParserImplementation> | undefined;
|
|
450
619
|
languageForExtension?: LanguageForExtension | undefined;
|
|
620
|
+
importNowHook?: ExitModuleImportNowHook | undefined;
|
|
451
621
|
};
|
|
452
622
|
/**
|
|
453
623
|
* The result of `captureFromMap()`
|
|
@@ -457,7 +627,159 @@ export type CaptureResult = {
|
|
|
457
627
|
captureSources: Sources;
|
|
458
628
|
compartmentRenames: Record<string, string>;
|
|
459
629
|
};
|
|
630
|
+
/**
|
|
631
|
+
* Options object for `chooseModuleDescriptor`.
|
|
632
|
+
*/
|
|
633
|
+
export type ChooseModuleDescriptorOptions = {
|
|
634
|
+
/**
|
|
635
|
+
* List of `moduleSpecifier` with search
|
|
636
|
+
* suffixes appended
|
|
637
|
+
*/
|
|
638
|
+
candidates: string[];
|
|
639
|
+
/**
|
|
640
|
+
* Compartment
|
|
641
|
+
* descriptor
|
|
642
|
+
*/
|
|
643
|
+
compartmentDescriptor: CompartmentDescriptor;
|
|
644
|
+
/**
|
|
645
|
+
* All
|
|
646
|
+
* compartment descriptors
|
|
647
|
+
*/
|
|
648
|
+
compartmentDescriptors: Record<string, CompartmentDescriptor>;
|
|
649
|
+
/**
|
|
650
|
+
* All compartments
|
|
651
|
+
*/
|
|
652
|
+
compartments: Record<string, Compartment>;
|
|
653
|
+
/**
|
|
654
|
+
* Function to compute SHA-512 hash
|
|
655
|
+
*/
|
|
656
|
+
computeSha512?: HashFn | undefined;
|
|
657
|
+
/**
|
|
658
|
+
* All module
|
|
659
|
+
* descriptors
|
|
660
|
+
*/
|
|
661
|
+
moduleDescriptors: Record<string, ModuleDescriptor>;
|
|
662
|
+
/**
|
|
663
|
+
* Module specifier
|
|
664
|
+
*/
|
|
665
|
+
moduleSpecifier: string;
|
|
666
|
+
/**
|
|
667
|
+
* Package location
|
|
668
|
+
*/
|
|
669
|
+
packageLocation: string;
|
|
670
|
+
/**
|
|
671
|
+
* Sources
|
|
672
|
+
*/
|
|
673
|
+
packageSources: CompartmentSources;
|
|
674
|
+
/**
|
|
675
|
+
* Powers
|
|
676
|
+
*/
|
|
677
|
+
readPowers: ReadPowers | ReadFn;
|
|
678
|
+
/**
|
|
679
|
+
* Source map hook
|
|
680
|
+
*/
|
|
681
|
+
sourceMapHook?: SourceMapHook | undefined;
|
|
682
|
+
/**
|
|
683
|
+
* Function
|
|
684
|
+
* returning a set of module names (scoped to the compartment) whose parser is not using
|
|
685
|
+
* heuristics to determine imports.
|
|
686
|
+
*/
|
|
687
|
+
strictlyRequiredForCompartment: (compartmentName: string) => Set<string>;
|
|
688
|
+
};
|
|
689
|
+
/**
|
|
690
|
+
* Operators for `chooseModuleDescriptor` representing synchronous operation.
|
|
691
|
+
*/
|
|
692
|
+
export type SyncChooseModuleDescriptorOperators = {
|
|
693
|
+
/**
|
|
694
|
+
* A function that reads a file, returning
|
|
695
|
+
* its binary contents _or_ `undefined` if the file is not found
|
|
696
|
+
*/
|
|
697
|
+
maybeRead: MaybeReadNowFn;
|
|
698
|
+
/**
|
|
699
|
+
* A function which parses the (defined) binary
|
|
700
|
+
* contents from `maybeRead` into a `ParseResult`
|
|
701
|
+
*/
|
|
702
|
+
parse: ParseFn;
|
|
703
|
+
/**
|
|
704
|
+
* Should be omitted.
|
|
705
|
+
*/
|
|
706
|
+
shouldDeferError?: undefined;
|
|
707
|
+
};
|
|
708
|
+
/**
|
|
709
|
+
* Operators for `chooseModuleDescriptor` representing asynchronous operation.
|
|
710
|
+
*/
|
|
711
|
+
export type AsyncChooseModuleDescriptorOperators = {
|
|
712
|
+
/**
|
|
713
|
+
* A function that reads a file, resolving w/
|
|
714
|
+
* its binary contents _or_ `undefined` if the file is not found
|
|
715
|
+
*/
|
|
716
|
+
maybeRead: MaybeReadFn;
|
|
717
|
+
/**
|
|
718
|
+
* A function which parses the (defined)
|
|
719
|
+
* binary contents from `maybeRead` into a `ParseResult`
|
|
720
|
+
*/
|
|
721
|
+
parse: ParseFnAsync | ParseFn;
|
|
722
|
+
/**
|
|
723
|
+
* A function that
|
|
724
|
+
* returns `true` if the language returned by `parse` should defer errors.
|
|
725
|
+
*/
|
|
726
|
+
shouldDeferError: (language: Language) => boolean;
|
|
727
|
+
};
|
|
728
|
+
/**
|
|
729
|
+
* Either synchronous or asynchronous operators for `chooseModuleDescriptor`.
|
|
730
|
+
*/
|
|
731
|
+
export type ChooseModuleDescriptorOperators = AsyncChooseModuleDescriptorOperators | SyncChooseModuleDescriptorOperators;
|
|
732
|
+
/**
|
|
733
|
+
* The agglomeration of things that the `chooseModuleDescriptor` generator can
|
|
734
|
+
* yield.
|
|
735
|
+
*
|
|
736
|
+
* The generator does not necessarily yield _all_ of these; it depends on
|
|
737
|
+
* whether the operators are {@link AsyncChooseModuleDescriptorOperators} or
|
|
738
|
+
* {@link SyncChooseModuleDescriptorOperators}.
|
|
739
|
+
*/
|
|
740
|
+
export type ChooseModuleDescriptorYieldables = ReturnType<ChooseModuleDescriptorOperators["maybeRead"]> | ReturnType<ChooseModuleDescriptorOperators["parse"]>;
|
|
741
|
+
/**
|
|
742
|
+
* Parameters for `findRedirect()`.
|
|
743
|
+
*/
|
|
744
|
+
export type FindRedirectParams = {
|
|
745
|
+
compartmentDescriptor: CompartmentDescriptor;
|
|
746
|
+
compartmentDescriptors: Record<string, CompartmentDescriptor>;
|
|
747
|
+
compartments: Record<string, Compartment>;
|
|
748
|
+
/**
|
|
749
|
+
* A module specifier which is an absolute path. NOT a file:// URL.
|
|
750
|
+
*/
|
|
751
|
+
absoluteModuleSpecifier: string;
|
|
752
|
+
/**
|
|
753
|
+
* Location of the compartment descriptor's package
|
|
754
|
+
*/
|
|
755
|
+
packageLocation: string;
|
|
756
|
+
};
|
|
757
|
+
/**
|
|
758
|
+
* Options for `makeMapParsers()`
|
|
759
|
+
*/
|
|
760
|
+
export type MakeMapParsersOptions = {
|
|
761
|
+
/**
|
|
762
|
+
* Mapping of language to
|
|
763
|
+
* {@link ParserImplementation}
|
|
764
|
+
*/
|
|
765
|
+
parserForLanguage: ParserForLanguage;
|
|
766
|
+
/**
|
|
767
|
+
* Async or sync module
|
|
768
|
+
* transforms. If non-empty, dynamic requires are unsupported.
|
|
769
|
+
*/
|
|
770
|
+
moduleTransforms?: ModuleTransforms | undefined;
|
|
771
|
+
/**
|
|
772
|
+
* Sync module
|
|
773
|
+
* transforms
|
|
774
|
+
*/
|
|
775
|
+
syncModuleTransforms?: SyncModuleTransforms | undefined;
|
|
776
|
+
};
|
|
777
|
+
/**
|
|
778
|
+
* The value returned by `makeMapParsers()`
|
|
779
|
+
*/
|
|
780
|
+
export type MapParsersFn<T extends ParseFn | ParseFnAsync = ParseFn | ParseFnAsync> = (languageForExtension: LanguageForExtension, languageForModuleSpecifier: LanguageForModuleSpecifier) => T;
|
|
460
781
|
import type { ImportHook } from 'ses';
|
|
782
|
+
import type { ImportNowHook } from 'ses';
|
|
461
783
|
import type { FinalStaticModuleType } from 'ses';
|
|
462
784
|
import type { ThirdPartyStaticModuleInterface } from 'ses';
|
|
463
785
|
import type { Transform } from 'ses';
|
package/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.js"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.js"],"names":[],"mappings":"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"}
|