@endo/compartment-mapper 1.6.3 → 2.1.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 (95) hide show
  1. package/package.json +24 -14
  2. package/src/archive-lite.d.ts +7 -7
  3. package/src/archive-lite.d.ts.map +1 -1
  4. package/src/archive-lite.js +81 -30
  5. package/src/archive.d.ts.map +1 -1
  6. package/src/archive.js +7 -0
  7. package/src/bundle-lite.d.ts +3 -3
  8. package/src/bundle-lite.d.ts.map +1 -1
  9. package/src/bundle-lite.js +19 -24
  10. package/src/bundle.d.ts +3 -3
  11. package/src/bundle.d.ts.map +1 -1
  12. package/src/bundle.js +19 -24
  13. package/src/capture-lite.d.ts +2 -2
  14. package/src/capture-lite.d.ts.map +1 -1
  15. package/src/capture-lite.js +243 -25
  16. package/src/compartment-map.d.ts +9 -2
  17. package/src/compartment-map.d.ts.map +1 -1
  18. package/src/compartment-map.js +738 -254
  19. package/src/digest.d.ts +22 -2
  20. package/src/digest.d.ts.map +1 -1
  21. package/src/digest.js +180 -57
  22. package/src/generic-graph.d.ts +7 -25
  23. package/src/generic-graph.d.ts.map +1 -1
  24. package/src/generic-graph.js +83 -108
  25. package/src/guards.d.ts +18 -0
  26. package/src/guards.d.ts.map +1 -0
  27. package/src/guards.js +109 -0
  28. package/src/hooks.md +124 -0
  29. package/src/import-archive-lite.d.ts.map +1 -1
  30. package/src/import-archive-lite.js +15 -11
  31. package/src/import-archive.d.ts +5 -19
  32. package/src/import-archive.d.ts.map +1 -1
  33. package/src/import-archive.js +7 -27
  34. package/src/import-hook.d.ts +4 -3
  35. package/src/import-hook.d.ts.map +1 -1
  36. package/src/import-hook.js +140 -70
  37. package/src/import-lite.d.ts +6 -6
  38. package/src/import-lite.d.ts.map +1 -1
  39. package/src/import-lite.js +8 -5
  40. package/src/import.d.ts +3 -3
  41. package/src/import.d.ts.map +1 -1
  42. package/src/import.js +16 -6
  43. package/src/infer-exports.d.ts +4 -2
  44. package/src/infer-exports.d.ts.map +1 -1
  45. package/src/infer-exports.js +172 -23
  46. package/src/link.d.ts +4 -3
  47. package/src/link.d.ts.map +1 -1
  48. package/src/link.js +122 -52
  49. package/src/node-modules.d.ts +4 -3
  50. package/src/node-modules.d.ts.map +1 -1
  51. package/src/node-modules.js +513 -151
  52. package/src/parse-cjs-shared-export-wrapper.d.ts.map +1 -1
  53. package/src/parse-cjs-shared-export-wrapper.js +3 -1
  54. package/src/pattern-replacement.d.ts +6 -0
  55. package/src/pattern-replacement.d.ts.map +1 -0
  56. package/src/pattern-replacement.js +198 -0
  57. package/src/policy-format.d.ts +22 -5
  58. package/src/policy-format.d.ts.map +1 -1
  59. package/src/policy-format.js +342 -108
  60. package/src/policy.d.ts +13 -28
  61. package/src/policy.d.ts.map +1 -1
  62. package/src/policy.js +161 -106
  63. package/src/types/canonical-name.d.ts +97 -0
  64. package/src/types/canonical-name.d.ts.map +1 -0
  65. package/src/types/canonical-name.ts +151 -0
  66. package/src/types/compartment-map-schema.d.ts +121 -35
  67. package/src/types/compartment-map-schema.d.ts.map +1 -1
  68. package/src/types/compartment-map-schema.ts +211 -37
  69. package/src/types/external.d.ts +240 -76
  70. package/src/types/external.d.ts.map +1 -1
  71. package/src/types/external.ts +305 -74
  72. package/src/types/generic-graph.d.ts +8 -2
  73. package/src/types/generic-graph.d.ts.map +1 -1
  74. package/src/types/generic-graph.ts +7 -2
  75. package/src/types/internal.d.ts +31 -50
  76. package/src/types/internal.d.ts.map +1 -1
  77. package/src/types/internal.ts +60 -58
  78. package/src/types/node-modules.d.ts +112 -14
  79. package/src/types/node-modules.d.ts.map +1 -1
  80. package/src/types/node-modules.ts +152 -13
  81. package/src/types/pattern-replacement.d.ts +62 -0
  82. package/src/types/pattern-replacement.d.ts.map +1 -0
  83. package/src/types/pattern-replacement.ts +70 -0
  84. package/src/types/policy-schema.d.ts +26 -11
  85. package/src/types/policy-schema.d.ts.map +1 -1
  86. package/src/types/policy-schema.ts +29 -16
  87. package/src/types/policy.d.ts +6 -2
  88. package/src/types/policy.d.ts.map +1 -1
  89. package/src/types/policy.ts +7 -2
  90. package/src/types/powers.d.ts +11 -9
  91. package/src/types/powers.d.ts.map +1 -1
  92. package/src/types/powers.ts +11 -10
  93. package/src/types/typescript.d.ts +28 -0
  94. package/src/types/typescript.d.ts.map +1 -1
  95. package/src/types/typescript.ts +37 -1
@@ -4,14 +4,19 @@
4
4
  * @module
5
5
  */
6
6
 
7
+ /**
8
+ * A node in a `GenericGraph`.
9
+ */
10
+ export type GenericGraphNode = string | { toString: () => string };
11
+
7
12
  /**
8
13
  * Context used for shortest-path traversal algorithm
9
14
  *
10
15
  * @template T The type of nodes in the graph
11
16
  * @internal
12
17
  */
13
- export interface TraversalContext<T = string, U = number> {
14
- distances: Map<T, U>;
18
+ export interface TraversalContext<T extends GenericGraphNode = string> {
19
+ paths: Map<T, T[]>;
15
20
  predecessors: Map<T, T>;
16
21
  queue: Set<T>;
17
22
  }
@@ -5,19 +5,20 @@
5
5
  * @module
6
6
  */
7
7
  import type { ImportHook, ImportNowHook, StaticModuleType } from 'ses';
8
- import type { CompartmentDescriptor, Language, LanguageForExtension, LanguageForModuleSpecifier, ModuleDescriptor } from './compartment-map-schema.js';
9
- import type { MaybeReadFn, MaybeReadNowFn, ReadFn, ReadPowers } from './powers.js';
8
+ import type { CompartmentDescriptor, Language, LanguageForExtension, LanguageForModuleSpecifier, PackageCompartmentDescriptor, PackageCompartmentDescriptors, CompartmentModuleConfiguration, PackageCompartmentDescriptorName } from './compartment-map-schema.js';
9
+ import type { ArchiveOnlyOption, AsyncParseFn, CompartmentSources, ComputeSha512Option, ExecuteOptions, ExitModuleImportHookOption, ExitModuleImportNowHookOption, FileUrlString, ModuleSourceHook, PackageConnectionsHook, PreloadOption, LogOptions, ModuleTransforms, ParseFn, ParserForLanguage, PolicyOption, SearchSuffixesOption, SourceMapHook, SourceMapHookOption, Sources, SyncModuleTransforms, CompartmentsRenameFn } from './external.js';
10
+ import type { PackageDescriptor } from './node-modules.js';
10
11
  import type { DeferredAttenuatorsProvider } from './policy.js';
11
- import type { ArchiveOnlyOption, AsyncParseFn, CompartmentSources, ComputeSha512Option, ExecuteOptions, ExitModuleImportHookOption, ExitModuleImportNowHookOption, LogOptions, ModuleTransforms, ParseFn, ParserForLanguage, SearchSuffixesOption, SourceMapHook, SourceMapHookOption, Sources, SyncModuleTransforms } from './external.js';
12
+ import type { MaybeReadFn, MaybeReadNowFn, ReadFn, ReadPowers } from './powers.js';
12
13
  export type LinkOptions = {
13
- resolve?: ResolveHook;
14
+ resolve?: ResolveHook | undefined;
14
15
  makeImportHook: ImportHookMaker;
15
- makeImportNowHook?: ImportNowHookMaker;
16
- parserForLanguage?: ParserForLanguage;
17
- moduleTransforms?: ModuleTransforms;
18
- syncModuleTransforms?: SyncModuleTransforms;
19
- __native__?: boolean;
20
- } & ArchiveOnlyOption & ExecuteOptions;
16
+ makeImportNowHook?: ImportNowHookMaker | undefined;
17
+ parserForLanguage?: ParserForLanguage | undefined;
18
+ moduleTransforms?: ModuleTransforms | undefined;
19
+ syncModuleTransforms?: SyncModuleTransforms | undefined;
20
+ __native__?: boolean | undefined;
21
+ } & ArchiveOnlyOption & ExecuteOptions & LogOptions;
21
22
  export type LinkResult = {
22
23
  compartment: Compartment;
23
24
  compartments: Record<string, Compartment>;
@@ -36,12 +37,13 @@ export type MakeImportHookMakersOptions = {
36
37
  /**
37
38
  * For depositing captured compartment descriptors.
38
39
  */
39
- compartmentDescriptors?: Record<string, CompartmentDescriptor>;
40
- } & ComputeSha512Option & SearchSuffixesOption & ArchiveOnlyOption & SourceMapHookOption;
40
+ compartmentDescriptors?: PackageCompartmentDescriptors;
41
+ moduleSourceHook?: ModuleSourceHook | undefined;
42
+ } & ComputeSha512Option & SearchSuffixesOption & ArchiveOnlyOption & SourceMapHookOption & LogOptions;
41
43
  export type MakeImportHookMakerOptions = MakeImportHookMakersOptions & ExitModuleImportHookOption;
42
44
  export type MakeImportNowHookMakerOptions = MakeImportHookMakersOptions & ExitModuleImportNowHookOption;
43
45
  export type ImportHookMaker = (params: {
44
- packageLocation: string;
46
+ packageLocation: PackageCompartmentDescriptorName;
45
47
  packageName: string;
46
48
  attenuators: DeferredAttenuatorsProvider;
47
49
  parse: ParseFn | AsyncParseFn;
@@ -49,7 +51,7 @@ export type ImportHookMaker = (params: {
49
51
  compartments: Record<string, Compartment>;
50
52
  }) => ImportHook;
51
53
  export type ImportNowHookMaker = (params: {
52
- packageLocation: string;
54
+ packageLocation: PackageCompartmentDescriptorName;
53
55
  packageName: string;
54
56
  parse: ParseFn | AsyncParseFn;
55
57
  compartments: Record<string, Compartment>;
@@ -71,13 +73,13 @@ export type ChooseModuleDescriptorParams = {
71
73
  /** Module specifiers with each search suffix appended */
72
74
  candidates: string[];
73
75
  moduleSpecifier: string;
74
- packageLocation: string;
76
+ packageLocation: FileUrlString;
75
77
  /** Compartment descriptor from the compartment map */
76
- compartmentDescriptor: CompartmentDescriptor;
78
+ compartmentDescriptor: PackageCompartmentDescriptor;
77
79
  /** All compartment descriptors from the compartment map */
78
- compartmentDescriptors: Record<string, CompartmentDescriptor>;
80
+ compartmentDescriptors: PackageCompartmentDescriptors;
79
81
  /** All module descriptors in same compartment */
80
- moduleDescriptors: Record<string, ModuleDescriptor>;
82
+ moduleDescriptors: Record<string, CompartmentModuleConfiguration>;
81
83
  /** All compartments */
82
84
  compartments: Record<string, Compartment>;
83
85
  packageSources: CompartmentSources;
@@ -86,9 +88,10 @@ export type ChooseModuleDescriptorParams = {
86
88
  * Whether to embed a sourceURL in applicable compiled sources.
87
89
  * Should be false for archives and bundles, but true for runtime.
88
90
  */
89
- sourceMapHook?: SourceMapHook;
91
+ sourceMapHook?: SourceMapHook | undefined;
92
+ moduleSourceHook?: ModuleSourceHook | undefined;
90
93
  strictlyRequiredForCompartment: StrictlyRequiredFn;
91
- } & ComputeSha512Option & ArchiveOnlyOption;
94
+ } & ComputeSha512Option & ArchiveOnlyOption & LogOptions;
92
95
  type ShouldDeferErrorOption = {
93
96
  shouldDeferError: ShouldDeferError;
94
97
  };
@@ -152,12 +155,12 @@ export type MakeMapParsersOptions = {
152
155
  * If non-empty, synchronous import (specifically dynamic `require` in
153
156
  * CommonJS or `compartment.importNow`) are unsupported.
154
157
  */
155
- moduleTransforms?: ModuleTransforms;
158
+ moduleTransforms?: ModuleTransforms | undefined;
156
159
  /**
157
160
  * Sync module transforms.
158
161
  * Always supported.
159
162
  */
160
- syncModuleTransforms?: SyncModuleTransforms;
163
+ syncModuleTransforms?: SyncModuleTransforms | undefined;
161
164
  };
162
165
  /**
163
166
  * Options for `search()`
@@ -198,34 +201,6 @@ export type ReadDescriptorFn<T = PackageDescriptor> = (location: string) => Prom
198
201
  * @template T Format of package descriptor
199
202
  */
200
203
  export type MaybeReadDescriptorFn<T = PackageDescriptor> = (location: string) => Promise<T | undefined>;
201
- /**
202
- * The type of a `package.json` file containing relevant fields; used by `graphPackages` and its ilk
203
- */
204
- export interface PackageDescriptor {
205
- /**
206
- * TODO: In reality, this is optional, but `graphPackage` does not consider it to be. This will need to be fixed once support for "anonymous" packages lands; see https://github.com/endojs/endo/pull/2664
207
- */
208
- name: string;
209
- version?: string;
210
- /**
211
- * TODO: Update with proper type when this field is handled.
212
- */
213
- exports?: unknown;
214
- type?: 'module' | 'commonjs';
215
- dependencies?: Record<string, string>;
216
- devDependencies?: Record<string, string>;
217
- peerDependencies?: Record<string, string>;
218
- optionalDependencies?: Record<string, string>;
219
- bundleDependencies?: string[];
220
- peerDependenciesMeta?: Record<string, {
221
- optional?: boolean;
222
- [k: string]: unknown;
223
- }>;
224
- module?: string;
225
- browser?: Record<string, string> | string;
226
- main?: string;
227
- [k: string]: unknown;
228
- }
229
204
  /**
230
205
  * Function returning a set of module names (scoped to the compartment) whose
231
206
  * parser is not using heuristics to determine imports.
@@ -246,5 +221,11 @@ specifier: string,
246
221
  * The error that was thrown
247
222
  */
248
223
  error: Error) => StaticModuleType;
224
+ export type MakeLoadCompartmentsOptions = LogOptions & PolicyOption & PreloadOption;
225
+ export type DigestCompartmentMapOptions<OldCompartmentName extends string = FileUrlString, NewCompartmentName extends string = PackageCompartmentDescriptorName> = LogOptions & {
226
+ packageConnectionsHook?: PackageConnectionsHook | undefined;
227
+ renameCompartments?: CompartmentsRenameFn<OldCompartmentName, NewCompartmentName>;
228
+ };
229
+ export type CaptureCompartmentMapOptions = DigestCompartmentMapOptions;
249
230
  export {};
250
231
  //# sourceMappingURL=internal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["internal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["internal.ts"],"names":[],"mappings":"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"}
@@ -13,15 +13,11 @@ import type {
13
13
  Language,
14
14
  LanguageForExtension,
15
15
  LanguageForModuleSpecifier,
16
- ModuleDescriptor,
16
+ PackageCompartmentDescriptor,
17
+ PackageCompartmentDescriptors,
18
+ CompartmentModuleConfiguration,
19
+ PackageCompartmentDescriptorName,
17
20
  } from './compartment-map-schema.js';
18
- import type {
19
- MaybeReadFn,
20
- MaybeReadNowFn,
21
- ReadFn,
22
- ReadPowers,
23
- } from './powers.js';
24
- import type { DeferredAttenuatorsProvider } from './policy.js';
25
21
  import type {
26
22
  ArchiveOnlyOption,
27
23
  AsyncParseFn,
@@ -30,27 +26,43 @@ import type {
30
26
  ExecuteOptions,
31
27
  ExitModuleImportHookOption,
32
28
  ExitModuleImportNowHookOption,
29
+ FileUrlString,
30
+ ModuleSourceHook,
31
+ PackageConnectionsHook,
32
+ PreloadOption,
33
33
  LogOptions,
34
34
  ModuleTransforms,
35
35
  ParseFn,
36
36
  ParserForLanguage,
37
+ PolicyOption,
37
38
  SearchSuffixesOption,
38
39
  SourceMapHook,
39
40
  SourceMapHookOption,
40
41
  Sources,
41
42
  SyncModuleTransforms,
43
+ CompartmentsRenameFn,
44
+ RedundantPreloadHook,
42
45
  } from './external.js';
46
+ import type { PackageDescriptor } from './node-modules.js';
47
+ import type { DeferredAttenuatorsProvider } from './policy.js';
48
+ import type {
49
+ MaybeReadFn,
50
+ MaybeReadNowFn,
51
+ ReadFn,
52
+ ReadPowers,
53
+ } from './powers.js';
43
54
 
44
55
  export type LinkOptions = {
45
- resolve?: ResolveHook;
56
+ resolve?: ResolveHook | undefined;
46
57
  makeImportHook: ImportHookMaker;
47
- makeImportNowHook?: ImportNowHookMaker;
48
- parserForLanguage?: ParserForLanguage;
49
- moduleTransforms?: ModuleTransforms;
50
- syncModuleTransforms?: SyncModuleTransforms;
51
- __native__?: boolean;
58
+ makeImportNowHook?: ImportNowHookMaker | undefined;
59
+ parserForLanguage?: ParserForLanguage | undefined;
60
+ moduleTransforms?: ModuleTransforms | undefined;
61
+ syncModuleTransforms?: SyncModuleTransforms | undefined;
62
+ __native__?: boolean | undefined;
52
63
  } & ArchiveOnlyOption &
53
- ExecuteOptions;
64
+ ExecuteOptions &
65
+ LogOptions;
54
66
 
55
67
  export type LinkResult = {
56
68
  compartment: Compartment;
@@ -76,11 +88,13 @@ export type MakeImportHookMakersOptions = {
76
88
  /**
77
89
  * For depositing captured compartment descriptors.
78
90
  */
79
- compartmentDescriptors?: Record<string, CompartmentDescriptor>;
91
+ compartmentDescriptors?: PackageCompartmentDescriptors;
92
+ moduleSourceHook?: ModuleSourceHook | undefined;
80
93
  } & ComputeSha512Option &
81
94
  SearchSuffixesOption &
82
95
  ArchiveOnlyOption &
83
- SourceMapHookOption;
96
+ SourceMapHookOption &
97
+ LogOptions;
84
98
 
85
99
  export type MakeImportHookMakerOptions = MakeImportHookMakersOptions &
86
100
  ExitModuleImportHookOption;
@@ -88,7 +102,7 @@ export type MakeImportNowHookMakerOptions = MakeImportHookMakersOptions &
88
102
  ExitModuleImportNowHookOption;
89
103
 
90
104
  export type ImportHookMaker = (params: {
91
- packageLocation: string;
105
+ packageLocation: PackageCompartmentDescriptorName;
92
106
  packageName: string;
93
107
  attenuators: DeferredAttenuatorsProvider;
94
108
  parse: ParseFn | AsyncParseFn;
@@ -97,7 +111,7 @@ export type ImportHookMaker = (params: {
97
111
  }) => ImportHook;
98
112
 
99
113
  export type ImportNowHookMaker = (params: {
100
- packageLocation: string;
114
+ packageLocation: PackageCompartmentDescriptorName;
101
115
  packageName: string;
102
116
  parse: ParseFn | AsyncParseFn;
103
117
  compartments: Record<string, Compartment>;
@@ -125,13 +139,13 @@ export type ChooseModuleDescriptorParams = {
125
139
  /** Module specifiers with each search suffix appended */
126
140
  candidates: string[];
127
141
  moduleSpecifier: string;
128
- packageLocation: string;
142
+ packageLocation: FileUrlString;
129
143
  /** Compartment descriptor from the compartment map */
130
- compartmentDescriptor: CompartmentDescriptor;
144
+ compartmentDescriptor: PackageCompartmentDescriptor;
131
145
  /** All compartment descriptors from the compartment map */
132
- compartmentDescriptors: Record<string, CompartmentDescriptor>;
146
+ compartmentDescriptors: PackageCompartmentDescriptors;
133
147
  /** All module descriptors in same compartment */
134
- moduleDescriptors: Record<string, ModuleDescriptor>;
148
+ moduleDescriptors: Record<string, CompartmentModuleConfiguration>;
135
149
  /** All compartments */
136
150
  compartments: Record<string, Compartment>;
137
151
  packageSources: CompartmentSources;
@@ -140,11 +154,13 @@ export type ChooseModuleDescriptorParams = {
140
154
  * Whether to embed a sourceURL in applicable compiled sources.
141
155
  * Should be false for archives and bundles, but true for runtime.
142
156
  */
143
- sourceMapHook?: SourceMapHook;
157
+ sourceMapHook?: SourceMapHook | undefined;
158
+ moduleSourceHook?: ModuleSourceHook | undefined;
144
159
 
145
160
  strictlyRequiredForCompartment: StrictlyRequiredFn;
146
161
  } & ComputeSha512Option &
147
- ArchiveOnlyOption;
162
+ ArchiveOnlyOption &
163
+ LogOptions;
148
164
 
149
165
  type ShouldDeferErrorOption = {
150
166
  shouldDeferError: ShouldDeferError;
@@ -219,12 +235,12 @@ export type MakeMapParsersOptions = {
219
235
  * If non-empty, synchronous import (specifically dynamic `require` in
220
236
  * CommonJS or `compartment.importNow`) are unsupported.
221
237
  */
222
- moduleTransforms?: ModuleTransforms;
238
+ moduleTransforms?: ModuleTransforms | undefined;
223
239
  /**
224
240
  * Sync module transforms.
225
241
  * Always supported.
226
242
  */
227
- syncModuleTransforms?: SyncModuleTransforms;
243
+ syncModuleTransforms?: SyncModuleTransforms | undefined;
228
244
  };
229
245
 
230
246
  /**
@@ -276,37 +292,6 @@ export type MaybeReadDescriptorFn<T = PackageDescriptor> = (
276
292
  location: string,
277
293
  ) => Promise<T | undefined>;
278
294
 
279
- /**
280
- * The type of a `package.json` file containing relevant fields; used by `graphPackages` and its ilk
281
- */
282
- export interface PackageDescriptor {
283
- /**
284
- * TODO: In reality, this is optional, but `graphPackage` does not consider it to be. This will need to be fixed once support for "anonymous" packages lands; see https://github.com/endojs/endo/pull/2664
285
- */
286
- name: string;
287
- version?: string;
288
- /**
289
- * TODO: Update with proper type when this field is handled.
290
- */
291
- exports?: unknown;
292
- type?: 'module' | 'commonjs';
293
- dependencies?: Record<string, string>;
294
- devDependencies?: Record<string, string>;
295
- peerDependencies?: Record<string, string>;
296
- optionalDependencies?: Record<string, string>;
297
- bundleDependencies?: string[];
298
- peerDependenciesMeta?: Record<
299
- string,
300
- { optional?: boolean; [k: string]: unknown }
301
- >;
302
- module?: string;
303
- browser?: Record<string, string> | string;
304
-
305
- main?: string;
306
-
307
- [k: string]: unknown;
308
- }
309
-
310
295
  /**
311
296
  * Function returning a set of module names (scoped to the compartment) whose
312
297
  * parser is not using heuristics to determine imports.
@@ -329,3 +314,20 @@ export type DeferErrorFn = (
329
314
  */
330
315
  error: Error,
331
316
  ) => StaticModuleType;
317
+
318
+ export type MakeLoadCompartmentsOptions = LogOptions &
319
+ PolicyOption &
320
+ PreloadOption;
321
+
322
+ export type DigestCompartmentMapOptions<
323
+ OldCompartmentName extends string = FileUrlString,
324
+ NewCompartmentName extends string = PackageCompartmentDescriptorName,
325
+ > = LogOptions & {
326
+ packageConnectionsHook?: PackageConnectionsHook | undefined;
327
+ renameCompartments?: CompartmentsRenameFn<
328
+ OldCompartmentName,
329
+ NewCompartmentName
330
+ >;
331
+ };
332
+
333
+ export type CaptureCompartmentMapOptions = DigestCompartmentMapOptions;
@@ -1,8 +1,42 @@
1
1
  import type { GenericGraph } from '../generic-graph.js';
2
+ import type { CanonicalName, PackageCompartmentDescriptorName, PolicyOption } from '../types.js';
2
3
  import type { Language, LanguageForExtension } from './compartment-map-schema.js';
3
- import type { LogOptions, FileUrlString } from './external.js';
4
- import type { PackageDescriptor } from './internal.js';
4
+ import type { FileUrlString, LogOptions, PackageDependenciesHook } from './external.js';
5
+ import type { PatternDescriptor } from './pattern-replacement.js';
5
6
  import type { LiteralUnion } from './typescript.js';
7
+ import { ATTENUATORS_COMPARTMENT } from '../policy-format.js';
8
+ /**
9
+ * A mapping of conditions to their resolved exports.
10
+ * Each condition key (e.g., "import", "require", "node", "default")
11
+ * maps to an {@link Exports} value.
12
+ *
13
+ * @see {@link https://github.com/sindresorhus/type-fest/blob/850b33c4dd292e0ff8cff039ee167d69be324fce/source/package-json.d.ts#L227-L248 | type-fest ExportConditions}
14
+ */
15
+ export type ExportConditions = {
16
+ [condition: string]: Exports;
17
+ };
18
+ /**
19
+ * Entry points of a module, optionally with conditions and subpath exports.
20
+ * Follows the recursive structure defined by Node.js for `package.json`
21
+ * `exports` and `imports` fields.
22
+ *
23
+ * - `null` excludes a subpath (null target).
24
+ * - `string` is a direct path.
25
+ * - `Array` is a fallback list (first match wins).
26
+ * - `ExportConditions` is a mapping of conditions to nested `Exports`.
27
+ *
28
+ * @see {@link https://github.com/sindresorhus/type-fest/blob/850b33c4dd292e0ff8cff039ee167d69be324fce/source/package-json.d.ts#L227-L248 | type-fest Exports}
29
+ */
30
+ export type Exports = null | string | Array<string | ExportConditions> | ExportConditions;
31
+ /**
32
+ * The `imports` field of `package.json`.
33
+ * Keys must start with `#`.
34
+ *
35
+ * @see {@link https://github.com/sindresorhus/type-fest/blob/850b33c4dd292e0ff8cff039ee167d69be324fce/source/package-json.d.ts#L227-L248 | type-fest Imports}
36
+ */
37
+ export type Imports = {
38
+ [key: `#${string}`]: Exports;
39
+ };
6
40
  export type CommonDependencyDescriptors = Record<string, {
7
41
  spec: string;
8
42
  alias: string;
@@ -15,28 +49,63 @@ export type CommonDependencyDescriptorsOptions = {
15
49
  /**
16
50
  * Dependencies added to _all_ packages
17
51
  */
18
- commonDependencyDescriptors?: CommonDependencyDescriptors;
52
+ commonDependencyDescriptors?: CommonDependencyDescriptors | undefined;
53
+ };
54
+ /**
55
+ * Options bag containing a {@link PackageDependenciesHook}
56
+ */
57
+ export type PackageDependenciesHookOption = {
58
+ packageDependenciesHook?: PackageDependenciesHook | undefined;
19
59
  };
20
60
  /**
21
61
  * Options for `graphPackage()`
22
62
  */
23
- export type GraphPackageOptions = {
24
- logicalPath?: string[];
25
- } & LogOptions & CommonDependencyDescriptorsOptions;
63
+ export type GraphPackageOptions = LogOptions & PolicyOption & PackageDependenciesHookOption & CommonDependencyDescriptorsOptions;
26
64
  /**
27
65
  * Options for `graphPackages()`
28
66
  */
29
- export type GraphPackagesOptions = LogOptions;
67
+ export type GraphPackagesOptions = LogOptions & PolicyOption & PackageDependenciesHookOption;
30
68
  /**
31
69
  * Options for `gatherDependency()`
32
70
  */
33
71
  export type GatherDependencyOptions = {
34
- childLogicalPath?: string[];
72
+ childLogicalPath?: string[] | undefined;
35
73
  /**
36
74
  * If `true` the dependency is optional
37
75
  */
38
- optional?: boolean;
39
- } & LogOptions & CommonDependencyDescriptorsOptions;
76
+ optional?: boolean | undefined;
77
+ } & LogOptions & PackageDependenciesHookOption & PolicyOption & CommonDependencyDescriptorsOptions;
78
+ /**
79
+ * The type of a `package.json` file containing relevant fields; used by `graphPackages` and its ilk
80
+ */
81
+ export interface PackageDescriptor {
82
+ /**
83
+ * TODO: In reality, this is optional, but `graphPackage` does not consider it
84
+ * to be. This will need to be fixed once support for "anonymous" packages
85
+ * lands; see https://github.com/endojs/endo/pull/2664
86
+ */
87
+ name: string;
88
+ version?: string;
89
+ exports?: Exports;
90
+ imports?: Imports;
91
+ type?: 'module' | 'commonjs';
92
+ dependencies?: Record<string, string>;
93
+ devDependencies?: Record<string, string>;
94
+ peerDependencies?: Record<string, string>;
95
+ optionalDependencies?: Record<string, string>;
96
+ bundleDependencies?: string[];
97
+ peerDependenciesMeta?: Record<string, {
98
+ optional?: boolean;
99
+ [k: string]: unknown;
100
+ }>;
101
+ module?: string;
102
+ browser?: Record<string, string> | string;
103
+ main?: string;
104
+ [k: string]: unknown;
105
+ }
106
+ /**
107
+ * Value in {@link Graph}
108
+ */
40
109
  export interface Node {
41
110
  /**
42
111
  * Informative compartment label based on the package name and version (if available)
@@ -46,14 +115,18 @@ export interface Node {
46
115
  * Package name
47
116
  */
48
117
  name: string;
49
- path: Array<string>;
50
- logicalPath: Array<string>;
118
+ location: FileUrlString;
51
119
  /**
52
120
  * `true` if the package's {@link PackageDescriptor} has an `exports` field
53
121
  */
54
122
  explicitExports: boolean;
55
123
  internalAliases: Record<string, string>;
56
124
  externalAliases: Record<string, string>;
125
+ /**
126
+ * Wildcard patterns extracted from the `exports` and `imports` fields.
127
+ * `*` matches exactly one path segment (Node.js semantics).
128
+ */
129
+ patterns: PatternDescriptor[];
57
130
  /**
58
131
  * The name of the original package's parent directory, for reconstructing
59
132
  * a sourceURL that is likely to converge with the original location in an IDE.
@@ -66,9 +139,20 @@ export interface Node {
66
139
  *
67
140
  * The values are the keys of other {@link Node Nodes} in the {@link Graph}.
68
141
  */
69
- dependencyLocations: Record<string, string>;
142
+ dependencyLocations: Record<string, FileUrlString>;
70
143
  parsers: LanguageForExtension;
71
144
  types: Record<string, Language>;
145
+ packageDescriptor: PackageDescriptor;
146
+ }
147
+ /**
148
+ * A node in the graph that has been finalized, meaning it has a `label` and is
149
+ * ready for conversion into a `CompartmentDescriptor`.
150
+ */
151
+ export interface FinalNode extends Node {
152
+ /**
153
+ * Canonical name of the package; used to identify it in policy
154
+ */
155
+ label: string;
72
156
  }
73
157
  /**
74
158
  * The graph is an intermediate object model that the functions of this module
@@ -79,7 +163,13 @@ export interface Node {
79
163
  * Keys may either be a file URL string to a package or the special
80
164
  * `<ATTENUATORS>` string.
81
165
  */
82
- export type Graph = Record<LiteralUnion<'<ATTENUATORS>', FileUrlString>, Node>;
166
+ export type Graph = Record<LiteralUnion<typeof ATTENUATORS_COMPARTMENT, FileUrlString>, Node>;
167
+ /**
168
+ * A graph, but contains {@link FinalNode}s instead of {@link Node}s.
169
+ *
170
+ * A "final node" has a `label` prop.
171
+ */
172
+ export type FinalGraph = Record<PackageCompartmentDescriptorName, Readonly<FinalNode>>;
83
173
  export interface LanguageOptions {
84
174
  commonjsLanguageForExtension: LanguageForExtension;
85
175
  moduleLanguageForExtension: LanguageForExtension;
@@ -99,4 +189,12 @@ export interface PackageDetails {
99
189
  * used by `mapNodeModules()` and its ilk.
100
190
  */
101
191
  export type LogicalPathGraph = GenericGraph<FileUrlString>;
192
+ /**
193
+ * Options for `translateGraph()`
194
+ */
195
+ export type TranslateGraphOptions = LogOptions & PolicyOption & PackageDependenciesHookOption;
196
+ /**
197
+ * Mapping to enable reverse-lookups of `CompartmentDescriptor`s from policy.
198
+ */
199
+ export type CanonicalNameMap = Map<CanonicalName, PackageCompartmentDescriptorName>;
102
200
  //# sourceMappingURL=node-modules.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node-modules.d.ts","sourceRoot":"","sources":["node-modules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EACV,QAAQ,EACR,oBAAoB,EACrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAC9C,MAAM,EACN;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAChC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,kCAAkC,GAAG;IAC/C;;OAEG;IACH,2BAA2B,CAAC,EAAE,2BAA2B,CAAC;CAC3D,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB,GAAG,UAAU,GACZ,kCAAkC,CAAC;AAErC;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,UAAU,GACZ,kCAAkC,CAAC;AAErC,MAAM,WAAW,IAAI;IACnB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACpB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;;OAMG;IACH,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,OAAO,EAAE,oBAAoB,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CACjC;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,eAAe,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,CAAC;AAE/E,MAAM,WAAW,eAAe;IAC9B,4BAA4B,EAAE,oBAAoB,CAAC;IACnD,0BAA0B,EAAE,oBAAoB,CAAC;IACjD,qCAAqC,EAAE,oBAAoB,CAAC;IAC5D,mCAAmC,EAAE,oBAAoB,CAAC;IAC1D,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,aAAa,CAAC;IAC/B,iBAAiB,EAAE,iBAAiB,CAAC;CACtC;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC"}
1
+ {"version":3,"file":"node-modules.d.ts","sourceRoot":"","sources":["node-modules.ts"],"names":[],"mappings":"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"}