@endo/compartment-mapper 1.2.1 → 1.3.0

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.
Files changed (67) hide show
  1. package/archive-lite.d.ts.map +1 -0
  2. package/archive-parsers.d.ts.map +1 -0
  3. package/archive.d.ts.map +1 -0
  4. package/bundle.d.ts.map +1 -0
  5. package/capture-lite.d.ts.map +1 -0
  6. package/import-archive-lite.d.ts.map +1 -0
  7. package/import-archive-parsers.d.ts.map +1 -0
  8. package/import-archive.d.ts.map +1 -0
  9. package/import-lite.d.ts.map +1 -0
  10. package/import-parsers.d.ts.map +1 -0
  11. package/import.d.ts.map +1 -0
  12. package/index.d.ts.map +1 -0
  13. package/node-modules.d.ts.map +1 -0
  14. package/node-powers.d.ts +1 -1
  15. package/node-powers.d.ts.map +1 -0
  16. package/node-powers.js +5 -1
  17. package/package.json +15 -11
  18. package/src/compartment-map.d.ts +1 -1
  19. package/src/compartment-map.d.ts.map +1 -1
  20. package/src/compartment-map.js +1 -1
  21. package/src/import-hook.d.ts +14 -1
  22. package/src/import-hook.d.ts.map +1 -1
  23. package/src/import-hook.js +493 -144
  24. package/src/import-lite.d.ts +20 -3
  25. package/src/import-lite.d.ts.map +1 -1
  26. package/src/import-lite.js +137 -15
  27. package/src/import.d.ts +45 -5
  28. package/src/import.d.ts.map +1 -1
  29. package/src/import.js +52 -6
  30. package/src/link.d.ts +2 -11
  31. package/src/link.d.ts.map +1 -1
  32. package/src/link.js +76 -154
  33. package/src/map-parser.d.ts +4 -0
  34. package/src/map-parser.d.ts.map +1 -0
  35. package/src/map-parser.js +339 -0
  36. package/src/node-modules.d.ts +2 -5
  37. package/src/node-modules.d.ts.map +1 -1
  38. package/src/node-modules.js +12 -5
  39. package/src/node-powers.d.ts +29 -23
  40. package/src/node-powers.d.ts.map +1 -1
  41. package/src/node-powers.js +102 -25
  42. package/src/parse-archive-cjs.js +2 -1
  43. package/src/parse-archive-mjs.js +2 -1
  44. package/src/parse-bytes.d.ts.map +1 -1
  45. package/src/parse-bytes.js +2 -6
  46. package/src/parse-cjs-shared-export-wrapper.d.ts.map +1 -1
  47. package/src/parse-cjs-shared-export-wrapper.js +23 -6
  48. package/src/parse-cjs.js +3 -2
  49. package/src/parse-json.d.ts +5 -3
  50. package/src/parse-json.d.ts.map +1 -1
  51. package/src/parse-json.js +9 -9
  52. package/src/parse-mjs.js +2 -1
  53. package/src/parse-pre-cjs.js +3 -2
  54. package/src/parse-pre-mjs.js +2 -1
  55. package/src/parse-text.d.ts.map +1 -1
  56. package/src/parse-text.js +2 -6
  57. package/src/policy.d.ts +21 -14
  58. package/src/policy.d.ts.map +1 -1
  59. package/src/policy.js +56 -37
  60. package/src/powers.d.ts +8 -1
  61. package/src/powers.d.ts.map +1 -1
  62. package/src/powers.js +60 -10
  63. package/src/search.d.ts.map +1 -1
  64. package/src/search.js +1 -2
  65. package/src/types.d.ts +343 -21
  66. package/src/types.d.ts.map +1 -1
  67. 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, there is a corresponding module descriptor.
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?: Function | undefined;
124
- pathToFileURL?: Function | undefined;
125
- requireResolve?: Function | undefined;
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
- export type ParseFn = (bytes: Uint8Array, specifier: string, location: string, packageLocation: string, options?: {
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) => Promise<{
168
- bytes: Uint8Array;
169
- parser: Language;
170
- record: FinalStaticModuleType;
171
- sourceMap?: string;
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 ModuleTransform = (bytes: Uint8Array, specifier: string, location: string, packageLocation: string, options?: {
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, unknown, unknown> | undefined;
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 = unknown, U = T> = (params: Params, ns: T) => U;
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<any, any, any, any>;
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';
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.js"],"names":[],"mappings":"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"}