@endo/compartment-mapper 1.6.2 → 2.0.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 (94) hide show
  1. package/package.json +12 -16
  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 +78 -27
  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 +217 -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 +737 -254
  19. package/src/digest.d.ts +22 -2
  20. package/src/digest.d.ts.map +1 -1
  21. package/src/digest.js +179 -56
  22. package/src/generic-graph.d.ts +84 -0
  23. package/src/generic-graph.d.ts.map +1 -0
  24. package/src/generic-graph.js +356 -0
  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 +156 -71
  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.map +1 -1
  44. package/src/infer-exports.js +16 -6
  45. package/src/json.d.ts +1 -1
  46. package/src/json.d.ts.map +1 -1
  47. package/src/json.js +10 -3
  48. package/src/link.d.ts +4 -3
  49. package/src/link.d.ts.map +1 -1
  50. package/src/link.js +70 -58
  51. package/src/node-modules.d.ts +5 -3
  52. package/src/node-modules.d.ts.map +1 -1
  53. package/src/node-modules.js +648 -245
  54. package/src/node-powers.d.ts +6 -5
  55. package/src/node-powers.d.ts.map +1 -1
  56. package/src/node-powers.js +11 -8
  57. package/src/parse-cjs-shared-export-wrapper.d.ts.map +1 -1
  58. package/src/parse-cjs-shared-export-wrapper.js +3 -1
  59. package/src/policy-format.d.ts +22 -5
  60. package/src/policy-format.d.ts.map +1 -1
  61. package/src/policy-format.js +342 -108
  62. package/src/policy.d.ts +13 -28
  63. package/src/policy.d.ts.map +1 -1
  64. package/src/policy.js +161 -106
  65. package/src/types/canonical-name.d.ts +97 -0
  66. package/src/types/canonical-name.d.ts.map +1 -0
  67. package/src/types/canonical-name.ts +151 -0
  68. package/src/types/compartment-map-schema.d.ts +114 -35
  69. package/src/types/compartment-map-schema.d.ts.map +1 -1
  70. package/src/types/compartment-map-schema.ts +202 -37
  71. package/src/types/external.d.ts +173 -29
  72. package/src/types/external.d.ts.map +1 -1
  73. package/src/types/external.ts +221 -27
  74. package/src/types/generic-graph.d.ts +17 -0
  75. package/src/types/generic-graph.d.ts.map +1 -0
  76. package/src/types/generic-graph.ts +17 -0
  77. package/src/types/internal.d.ts +24 -42
  78. package/src/types/internal.d.ts.map +1 -1
  79. package/src/types/internal.ts +52 -50
  80. package/src/types/node-modules.d.ts +101 -17
  81. package/src/types/node-modules.d.ts.map +1 -1
  82. package/src/types/node-modules.ts +142 -17
  83. package/src/types/policy-schema.d.ts +26 -11
  84. package/src/types/policy-schema.d.ts.map +1 -1
  85. package/src/types/policy-schema.ts +29 -16
  86. package/src/types/policy.d.ts +6 -2
  87. package/src/types/policy.d.ts.map +1 -1
  88. package/src/types/policy.ts +7 -2
  89. package/src/types/powers.d.ts +38 -11
  90. package/src/types/powers.d.ts.map +1 -1
  91. package/src/types/powers.ts +50 -17
  92. package/src/types/typescript.d.ts +28 -0
  93. package/src/types/typescript.d.ts.map +1 -1
  94. package/src/types/typescript.ts +37 -1
@@ -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,16 +26,30 @@ 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,
42
44
  } from './external.js';
45
+ import type { PackageDescriptor } from './node-modules.js';
46
+ import type { DeferredAttenuatorsProvider } from './policy.js';
47
+ import type {
48
+ MaybeReadFn,
49
+ MaybeReadNowFn,
50
+ ReadFn,
51
+ ReadPowers,
52
+ } from './powers.js';
43
53
 
44
54
  export type LinkOptions = {
45
55
  resolve?: ResolveHook;
@@ -50,7 +60,8 @@ export type LinkOptions = {
50
60
  syncModuleTransforms?: SyncModuleTransforms;
51
61
  __native__?: boolean;
52
62
  } & ArchiveOnlyOption &
53
- ExecuteOptions;
63
+ ExecuteOptions &
64
+ LogOptions;
54
65
 
55
66
  export type LinkResult = {
56
67
  compartment: Compartment;
@@ -76,11 +87,13 @@ export type MakeImportHookMakersOptions = {
76
87
  /**
77
88
  * For depositing captured compartment descriptors.
78
89
  */
79
- compartmentDescriptors?: Record<string, CompartmentDescriptor>;
90
+ compartmentDescriptors?: PackageCompartmentDescriptors;
91
+ moduleSourceHook?: ModuleSourceHook | undefined;
80
92
  } & ComputeSha512Option &
81
93
  SearchSuffixesOption &
82
94
  ArchiveOnlyOption &
83
- SourceMapHookOption;
95
+ SourceMapHookOption &
96
+ LogOptions;
84
97
 
85
98
  export type MakeImportHookMakerOptions = MakeImportHookMakersOptions &
86
99
  ExitModuleImportHookOption;
@@ -88,7 +101,7 @@ export type MakeImportNowHookMakerOptions = MakeImportHookMakersOptions &
88
101
  ExitModuleImportNowHookOption;
89
102
 
90
103
  export type ImportHookMaker = (params: {
91
- packageLocation: string;
104
+ packageLocation: PackageCompartmentDescriptorName;
92
105
  packageName: string;
93
106
  attenuators: DeferredAttenuatorsProvider;
94
107
  parse: ParseFn | AsyncParseFn;
@@ -97,7 +110,7 @@ export type ImportHookMaker = (params: {
97
110
  }) => ImportHook;
98
111
 
99
112
  export type ImportNowHookMaker = (params: {
100
- packageLocation: string;
113
+ packageLocation: PackageCompartmentDescriptorName;
101
114
  packageName: string;
102
115
  parse: ParseFn | AsyncParseFn;
103
116
  compartments: Record<string, Compartment>;
@@ -125,13 +138,13 @@ export type ChooseModuleDescriptorParams = {
125
138
  /** Module specifiers with each search suffix appended */
126
139
  candidates: string[];
127
140
  moduleSpecifier: string;
128
- packageLocation: string;
141
+ packageLocation: FileUrlString;
129
142
  /** Compartment descriptor from the compartment map */
130
- compartmentDescriptor: CompartmentDescriptor;
143
+ compartmentDescriptor: PackageCompartmentDescriptor;
131
144
  /** All compartment descriptors from the compartment map */
132
- compartmentDescriptors: Record<string, CompartmentDescriptor>;
145
+ compartmentDescriptors: PackageCompartmentDescriptors;
133
146
  /** All module descriptors in same compartment */
134
- moduleDescriptors: Record<string, ModuleDescriptor>;
147
+ moduleDescriptors: Record<string, CompartmentModuleConfiguration>;
135
148
  /** All compartments */
136
149
  compartments: Record<string, Compartment>;
137
150
  packageSources: CompartmentSources;
@@ -140,11 +153,13 @@ export type ChooseModuleDescriptorParams = {
140
153
  * Whether to embed a sourceURL in applicable compiled sources.
141
154
  * Should be false for archives and bundles, but true for runtime.
142
155
  */
143
- sourceMapHook?: SourceMapHook;
156
+ sourceMapHook?: SourceMapHook | undefined;
157
+ moduleSourceHook?: ModuleSourceHook | undefined;
144
158
 
145
159
  strictlyRequiredForCompartment: StrictlyRequiredFn;
146
160
  } & ComputeSha512Option &
147
- ArchiveOnlyOption;
161
+ ArchiveOnlyOption &
162
+ LogOptions;
148
163
 
149
164
  type ShouldDeferErrorOption = {
150
165
  shouldDeferError: ShouldDeferError;
@@ -262,6 +277,7 @@ export type SearchDescriptorOptions = LogOptions;
262
277
  /**
263
278
  * A power to read a package descriptor
264
279
  * @template T Format of package descriptor
280
+ * @deprecated Use {@link MaybeReadDescriptorFn} instead.
265
281
  */
266
282
  export type ReadDescriptorFn<T = PackageDescriptor> = (
267
283
  location: string,
@@ -275,37 +291,6 @@ export type MaybeReadDescriptorFn<T = PackageDescriptor> = (
275
291
  location: string,
276
292
  ) => Promise<T | undefined>;
277
293
 
278
- /**
279
- * The type of a `package.json` file containing relevant fields; used by `graphPackages` and its ilk
280
- */
281
- export interface PackageDescriptor {
282
- /**
283
- * 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
284
- */
285
- name: string;
286
- version?: string;
287
- /**
288
- * TODO: Update with proper type when this field is handled.
289
- */
290
- exports?: unknown;
291
- type?: 'module' | 'commonjs';
292
- dependencies?: Record<string, string>;
293
- devDependencies?: Record<string, string>;
294
- peerDependencies?: Record<string, string>;
295
- optionalDependencies?: Record<string, string>;
296
- bundleDependencies?: string[];
297
- peerDependenciesMeta?: Record<
298
- string,
299
- { optional?: boolean; [k: string]: unknown }
300
- >;
301
- module?: string;
302
- browser?: Record<string, string> | string;
303
-
304
- main?: string;
305
-
306
- [k: string]: unknown;
307
- }
308
-
309
294
  /**
310
295
  * Function returning a set of module names (scoped to the compartment) whose
311
296
  * parser is not using heuristics to determine imports.
@@ -328,3 +313,20 @@ export type DeferErrorFn = (
328
313
  */
329
314
  error: Error,
330
315
  ) => StaticModuleType;
316
+
317
+ export type MakeLoadCompartmentsOptions = LogOptions &
318
+ PolicyOption &
319
+ PreloadOption;
320
+
321
+ export type DigestCompartmentMapOptions<
322
+ OldCompartmentName extends string = FileUrlString,
323
+ NewCompartmentName extends string = PackageCompartmentDescriptorName,
324
+ > = LogOptions & {
325
+ packageConnectionsHook?: PackageConnectionsHook | undefined;
326
+ renameCompartments?: CompartmentsRenameFn<
327
+ OldCompartmentName,
328
+ NewCompartmentName
329
+ >;
330
+ };
331
+
332
+ export type CaptureCompartmentMapOptions = DigestCompartmentMapOptions;
@@ -1,27 +1,79 @@
1
+ import type { GenericGraph } from '../generic-graph.js';
2
+ import type { CanonicalName, PackageCompartmentDescriptorName, PolicyOption } from '../types.js';
1
3
  import type { Language, LanguageForExtension } from './compartment-map-schema.js';
2
- import type { LogOptions } from './external.js';
3
- import type { PackageDescriptor } from './internal.js';
4
+ import type { FileUrlString, LogOptions, PackageDependenciesHook } from './external.js';
5
+ import type { LiteralUnion } from './typescript.js';
4
6
  export type CommonDependencyDescriptors = Record<string, {
5
7
  spec: string;
6
8
  alias: string;
7
9
  }>;
8
- export type GraphPackageOptions = {
9
- preferredPackageLogicalPathMap?: Map<string, string[]>;
10
- logicalPath?: string[];
10
+ /**
11
+ * Options bag containing {@link CommonDependencyDescriptors} that will be added to
12
+ * _all_ packages in the graph.
13
+ */
14
+ export type CommonDependencyDescriptorsOptions = {
15
+ /**
16
+ * Dependencies added to _all_ packages
17
+ */
11
18
  commonDependencyDescriptors?: CommonDependencyDescriptors;
12
- } & LogOptions;
13
- export type GraphPackagesOptions = LogOptions;
19
+ };
20
+ /**
21
+ * Options bag containing a {@link PackageDependenciesHook}
22
+ */
23
+ export type PackageDependenciesHookOption = {
24
+ packageDependenciesHook?: PackageDependenciesHook | undefined;
25
+ };
26
+ /**
27
+ * Options for `graphPackage()`
28
+ */
29
+ export type GraphPackageOptions = LogOptions & PolicyOption & PackageDependenciesHookOption & CommonDependencyDescriptorsOptions;
30
+ /**
31
+ * Options for `graphPackages()`
32
+ */
33
+ export type GraphPackagesOptions = LogOptions & PolicyOption & PackageDependenciesHookOption;
34
+ /**
35
+ * Options for `gatherDependency()`
36
+ */
14
37
  export type GatherDependencyOptions = {
15
38
  childLogicalPath?: string[];
16
39
  /**
17
40
  * If `true` the dependency is optional
18
41
  */
19
42
  optional?: boolean;
43
+ } & LogOptions & PackageDependenciesHookOption & PolicyOption & CommonDependencyDescriptorsOptions;
44
+ /**
45
+ * The type of a `package.json` file containing relevant fields; used by `graphPackages` and its ilk
46
+ */
47
+ export interface PackageDescriptor {
20
48
  /**
21
- * Dependencies added to _all_ packages
49
+ * TODO: In reality, this is optional, but `graphPackage` does not consider it
50
+ * to be. This will need to be fixed once support for "anonymous" packages
51
+ * lands; see https://github.com/endojs/endo/pull/2664
22
52
  */
23
- commonDependencyDescriptors?: CommonDependencyDescriptors;
24
- } & LogOptions;
53
+ name: string;
54
+ version?: string;
55
+ /**
56
+ * TODO: Update with proper type when this field is handled.
57
+ */
58
+ exports?: unknown;
59
+ type?: 'module' | 'commonjs';
60
+ dependencies?: Record<string, string>;
61
+ devDependencies?: Record<string, string>;
62
+ peerDependencies?: Record<string, string>;
63
+ optionalDependencies?: Record<string, string>;
64
+ bundleDependencies?: string[];
65
+ peerDependenciesMeta?: Record<string, {
66
+ optional?: boolean;
67
+ [k: string]: unknown;
68
+ }>;
69
+ module?: string;
70
+ browser?: Record<string, string> | string;
71
+ main?: string;
72
+ [k: string]: unknown;
73
+ }
74
+ /**
75
+ * Value in {@link Graph}
76
+ */
25
77
  export interface Node {
26
78
  /**
27
79
  * Informative compartment label based on the package name and version (if available)
@@ -31,8 +83,7 @@ export interface Node {
31
83
  * Package name
32
84
  */
33
85
  name: string;
34
- path: Array<string>;
35
- logicalPath: Array<string>;
86
+ location: FileUrlString;
36
87
  /**
37
88
  * `true` if the package's {@link PackageDescriptor} has an `exports` field
38
89
  */
@@ -51,17 +102,37 @@ export interface Node {
51
102
  *
52
103
  * The values are the keys of other {@link Node Nodes} in the {@link Graph}.
53
104
  */
54
- dependencyLocations: Record<string, string>;
105
+ dependencyLocations: Record<string, FileUrlString>;
55
106
  parsers: LanguageForExtension;
56
107
  types: Record<string, Language>;
108
+ packageDescriptor: PackageDescriptor;
109
+ }
110
+ /**
111
+ * A node in the graph that has been finalized, meaning it has a `label` and is
112
+ * ready for conversion into a `CompartmentDescriptor`.
113
+ */
114
+ export interface FinalNode extends Node {
115
+ /**
116
+ * Canonical name of the package; used to identify it in policy
117
+ */
118
+ label: string;
57
119
  }
58
120
  /**
59
121
  * The graph is an intermediate object model that the functions of this module
60
122
  * build by exploring the `node_modules` tree dropped by tools like npm and
61
- * consumed by tools like Node.js.
62
- * This gets translated finally into a compartment map.
123
+ * consumed by tools like Node.js. This gets translated finally into a
124
+ * compartment map.
125
+ *
126
+ * Keys may either be a file URL string to a package or the special
127
+ * `<ATTENUATORS>` string.
128
+ */
129
+ export type Graph = Record<LiteralUnion<'<ATTENUATORS>', FileUrlString>, Node>;
130
+ /**
131
+ * A graph, but contains {@link FinalNode}s instead of {@link Node}s.
132
+ *
133
+ * A "final node" has a `label` prop.
63
134
  */
64
- export type Graph = Record<string, Node>;
135
+ export type FinalGraph = Record<PackageCompartmentDescriptorName, Readonly<FinalNode>>;
65
136
  export interface LanguageOptions {
66
137
  commonjsLanguageForExtension: LanguageForExtension;
67
138
  moduleLanguageForExtension: LanguageForExtension;
@@ -73,7 +144,20 @@ export interface LanguageOptions {
73
144
  * Object result of `findPackage()`
74
145
  */
75
146
  export interface PackageDetails {
76
- packageLocation: string;
147
+ packageLocation: FileUrlString;
77
148
  packageDescriptor: PackageDescriptor;
78
149
  }
150
+ /**
151
+ * Specific type of {@link GenericGraph} that uses file URL strings for nodes;
152
+ * used by `mapNodeModules()` and its ilk.
153
+ */
154
+ export type LogicalPathGraph = GenericGraph<FileUrlString>;
155
+ /**
156
+ * Options for `translateGraph()`
157
+ */
158
+ export type TranslateGraphOptions = LogOptions & PolicyOption & PackageDependenciesHookOption;
159
+ /**
160
+ * Mapping to enable reverse-lookups of `CompartmentDescriptor`s from policy.
161
+ */
162
+ export type CanonicalNameMap = Map<CanonicalName, PackageCompartmentDescriptorName>;
79
163
  //# 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,EACV,QAAQ,EACR,oBAAoB,EACrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAC9C,MAAM,EACN;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAChC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,8BAA8B,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACvD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,2BAA2B,CAAC,EAAE,2BAA2B,CAAC;CAC3D,GAAG,UAAU,CAAC;AAEf,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC;AAE9C,MAAM,MAAM,uBAAuB,GAAG;IACpC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,2BAA2B,CAAC,EAAE,2BAA2B,CAAC;CAC3D,GAAG,UAAU,CAAC;AAEf,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;;;;;GAKG;AACH,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAEzC,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,MAAM,CAAC;IACxB,iBAAiB,EAAE,iBAAiB,CAAC;CACtC"}
1
+ {"version":3,"file":"node-modules.d.ts","sourceRoot":"","sources":["node-modules.ts"],"names":[],"mappings":"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"}
@@ -1,35 +1,115 @@
1
+ import type { GenericGraph } from '../generic-graph.js';
2
+ import type {
3
+ ATTENUATORS_COMPARTMENT,
4
+ ENTRY_COMPARTMENT,
5
+ } from '../policy-format.js';
6
+ import type {
7
+ CanonicalName,
8
+ CompartmentMapDescriptor,
9
+ PackageCompartmentDescriptorName,
10
+ PolicyOption,
11
+ SomePolicy,
12
+ } from '../types.js';
1
13
  import type {
2
14
  Language,
3
15
  LanguageForExtension,
16
+ PackageCompartmentMapDescriptor,
4
17
  } from './compartment-map-schema.js';
5
- import type { LogOptions } from './external.js';
6
- import type { PackageDescriptor } from './internal.js';
18
+ import type {
19
+ FileUrlString,
20
+ LogOptions,
21
+ PackageDependenciesHook,
22
+ } from './external.js';
23
+ import type { LiteralUnion } from './typescript.js';
7
24
 
8
25
  export type CommonDependencyDescriptors = Record<
9
26
  string,
10
27
  { spec: string; alias: string }
11
28
  >;
12
29
 
13
- export type GraphPackageOptions = {
14
- preferredPackageLogicalPathMap?: Map<string, string[]>;
15
- logicalPath?: string[];
30
+ /**
31
+ * Options bag containing {@link CommonDependencyDescriptors} that will be added to
32
+ * _all_ packages in the graph.
33
+ */
34
+ export type CommonDependencyDescriptorsOptions = {
35
+ /**
36
+ * Dependencies added to _all_ packages
37
+ */
16
38
  commonDependencyDescriptors?: CommonDependencyDescriptors;
17
- } & LogOptions;
39
+ };
18
40
 
19
- export type GraphPackagesOptions = LogOptions;
41
+ /**
42
+ * Options bag containing a {@link PackageDependenciesHook}
43
+ */
44
+ export type PackageDependenciesHookOption = {
45
+ packageDependenciesHook?: PackageDependenciesHook | undefined;
46
+ };
20
47
 
48
+ /**
49
+ * Options for `graphPackage()`
50
+ */
51
+ export type GraphPackageOptions = LogOptions &
52
+ PolicyOption &
53
+ PackageDependenciesHookOption &
54
+ CommonDependencyDescriptorsOptions;
55
+
56
+ /**
57
+ * Options for `graphPackages()`
58
+ */
59
+ export type GraphPackagesOptions = LogOptions &
60
+ PolicyOption &
61
+ PackageDependenciesHookOption;
62
+
63
+ /**
64
+ * Options for `gatherDependency()`
65
+ */
21
66
  export type GatherDependencyOptions = {
22
67
  childLogicalPath?: string[];
23
68
  /**
24
69
  * If `true` the dependency is optional
25
70
  */
26
71
  optional?: boolean;
72
+ } & LogOptions &
73
+ PackageDependenciesHookOption &
74
+ PolicyOption &
75
+ CommonDependencyDescriptorsOptions;
76
+
77
+ /**
78
+ * The type of a `package.json` file containing relevant fields; used by `graphPackages` and its ilk
79
+ */
80
+ export interface PackageDescriptor {
27
81
  /**
28
- * Dependencies added to _all_ packages
82
+ * TODO: In reality, this is optional, but `graphPackage` does not consider it
83
+ * to be. This will need to be fixed once support for "anonymous" packages
84
+ * lands; see https://github.com/endojs/endo/pull/2664
29
85
  */
30
- commonDependencyDescriptors?: CommonDependencyDescriptors;
31
- } & LogOptions;
86
+ name: string;
87
+ version?: string;
88
+ /**
89
+ * TODO: Update with proper type when this field is handled.
90
+ */
91
+ exports?: unknown;
92
+ type?: 'module' | 'commonjs';
93
+ dependencies?: Record<string, string>;
94
+ devDependencies?: Record<string, string>;
95
+ peerDependencies?: Record<string, string>;
96
+ optionalDependencies?: Record<string, string>;
97
+ bundleDependencies?: string[];
98
+ peerDependenciesMeta?: Record<
99
+ string,
100
+ { optional?: boolean; [k: string]: unknown }
101
+ >;
102
+ module?: string;
103
+ browser?: Record<string, string> | string;
104
+
105
+ main?: string;
32
106
 
107
+ [k: string]: unknown;
108
+ }
109
+
110
+ /**
111
+ * Value in {@link Graph}
112
+ */
33
113
  export interface Node {
34
114
  /**
35
115
  * Informative compartment label based on the package name and version (if available)
@@ -39,8 +119,7 @@ export interface Node {
39
119
  * Package name
40
120
  */
41
121
  name: string;
42
- path: Array<string>;
43
- logicalPath: Array<string>;
122
+ location: FileUrlString;
44
123
  /**
45
124
  * `true` if the package's {@link PackageDescriptor} has an `exports` field
46
125
  */
@@ -59,18 +138,43 @@ export interface Node {
59
138
  *
60
139
  * The values are the keys of other {@link Node Nodes} in the {@link Graph}.
61
140
  */
62
- dependencyLocations: Record<string, string>;
141
+ dependencyLocations: Record<string, FileUrlString>;
63
142
  parsers: LanguageForExtension;
64
143
  types: Record<string, Language>;
144
+ packageDescriptor: PackageDescriptor;
145
+ }
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;
65
156
  }
66
157
 
67
158
  /**
68
159
  * The graph is an intermediate object model that the functions of this module
69
160
  * build by exploring the `node_modules` tree dropped by tools like npm and
70
- * consumed by tools like Node.js.
71
- * This gets translated finally into a compartment map.
161
+ * consumed by tools like Node.js. This gets translated finally into a
162
+ * compartment map.
163
+ *
164
+ * Keys may either be a file URL string to a package or the special
165
+ * `<ATTENUATORS>` string.
166
+ */
167
+ export type Graph = Record<LiteralUnion<'<ATTENUATORS>', FileUrlString>, Node>;
168
+
169
+ /**
170
+ * A graph, but contains {@link FinalNode}s instead of {@link Node}s.
171
+ *
172
+ * A "final node" has a `label` prop.
72
173
  */
73
- export type Graph = Record<string, Node>;
174
+ export type FinalGraph = Record<
175
+ PackageCompartmentDescriptorName,
176
+ Readonly<FinalNode>
177
+ >;
74
178
 
75
179
  export interface LanguageOptions {
76
180
  commonjsLanguageForExtension: LanguageForExtension;
@@ -84,6 +188,27 @@ export interface LanguageOptions {
84
188
  * Object result of `findPackage()`
85
189
  */
86
190
  export interface PackageDetails {
87
- packageLocation: string;
191
+ packageLocation: FileUrlString;
88
192
  packageDescriptor: PackageDescriptor;
89
193
  }
194
+
195
+ /**
196
+ * Specific type of {@link GenericGraph} that uses file URL strings for nodes;
197
+ * used by `mapNodeModules()` and its ilk.
198
+ */
199
+ export type LogicalPathGraph = GenericGraph<FileUrlString>;
200
+
201
+ /**
202
+ * Options for `translateGraph()`
203
+ */
204
+ export type TranslateGraphOptions = LogOptions &
205
+ PolicyOption &
206
+ PackageDependenciesHookOption;
207
+
208
+ /**
209
+ * Mapping to enable reverse-lookups of `CompartmentDescriptor`s from policy.
210
+ */
211
+ export type CanonicalNameMap = Map<
212
+ CanonicalName,
213
+ PackageCompartmentDescriptorName
214
+ >;
@@ -4,6 +4,7 @@
4
4
  *
5
5
  * @module
6
6
  */
7
+ import type { WILDCARD_POLICY_VALUE } from '../policy-format.js';
7
8
  /**
8
9
  * An object representing a full attenuation definition.
9
10
  */
@@ -11,7 +12,7 @@ export type FullAttenuationDefinition = {
11
12
  /** The type of attenuation. */
12
13
  attenuate: string;
13
14
  /** The parameters for the attenuation. */
14
- params: ImplicitAttenuationDefinition;
15
+ params?: ImplicitAttenuationDefinition;
15
16
  };
16
17
  /**
17
18
  * An array of any type representing an implicit attenuation definition.
@@ -30,7 +31,7 @@ export type UnifiedAttenuationDefinition = {
30
31
  /**
31
32
  * A type representing a wildcard policy, which can be 'any'.
32
33
  */
33
- export type WildcardPolicy = 'any';
34
+ export type WildcardPolicy = typeof WILDCARD_POLICY_VALUE;
34
35
  /**
35
36
  * A type representing a property policy, which is a record of string keys and
36
37
  * boolean values
@@ -41,7 +42,7 @@ export type PropertyPolicy = Record<string, boolean>;
41
42
  * wildcard policy}, a property policy, `undefined`, or defined by an
42
43
  * attenuator
43
44
  */
44
- export type PolicyItem<T = void> = WildcardPolicy | PropertyPolicy | T;
45
+ export type PolicyItem<T = void> = [T] extends [void] ? WildcardPolicy | PropertyPolicy : WildcardPolicy | PropertyPolicy | T;
45
46
  /**
46
47
  * An object representing a nested attenuation definition.
47
48
  */
@@ -50,19 +51,33 @@ export type NestedAttenuationDefinition = Record<string, AttenuationDefinition |
50
51
  * An object representing a base package policy.
51
52
  */
52
53
  export type PackagePolicy<PackagePolicyItem = void, GlobalsPolicyItem = void, BuiltinsPolicyItem = void, ExtraOptions = unknown> = {
53
- /** The default attenuator. */
54
+ /**
55
+ * The default attenuator, if any.
56
+ */
54
57
  defaultAttenuator?: string | undefined;
55
- /** The policy item for packages. */
58
+ /**
59
+ * The policy item for packages.
60
+ */
56
61
  packages?: PolicyItem<PackagePolicyItem> | undefined;
57
- /** The policy item or full attenuation definition for globals. */
62
+ /**
63
+ * The policy item or full attenuation definition for globals.
64
+ */
58
65
  globals?: AttenuationDefinition | PolicyItem<GlobalsPolicyItem> | undefined;
59
- /** The policy item or nested attenuation definition for builtins. */
66
+ /**
67
+ * The policy item or nested attenuation definition for builtins.
68
+ */
60
69
  builtins?: NestedAttenuationDefinition | PolicyItem<BuiltinsPolicyItem> | undefined;
61
- /** Whether to disable global freeze. */
70
+ /**
71
+ * Whether to disable global freeze.
72
+ */
62
73
  noGlobalFreeze?: boolean | undefined;
63
- /** Whether to allow dynamic imports */
74
+ /**
75
+ * Whether to allow dynamic imports
76
+ */
64
77
  dynamic?: boolean | undefined;
65
- /** Any additional user-defined options can be added to the policy here */
78
+ /**
79
+ * Any additional user-defined options can be added to the policy here
80
+ */
66
81
  options?: ExtraOptions | undefined;
67
82
  };
68
83
  /**
@@ -79,5 +94,5 @@ export type Policy<PackagePolicyItem = void, GlobalsPolicyItem = void, BuiltinsP
79
94
  /** Any {@link Policy} */
80
95
  export type SomePolicy = Policy<any, any, any, any>;
81
96
  /** Any {@link PackagePolicy} */
82
- export type SomePackagePolicy = PackagePolicy<PolicyItem, PolicyItem, PolicyItem, unknown>;
97
+ export type SomePackagePolicy = PackagePolicy<void, void, void, unknown>;
83
98
  //# sourceMappingURL=policy-schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"policy-schema.d.ts","sourceRoot":"","sources":["policy-schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,MAAM,EAAE,6BAA6B,CAAC;CACvC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,6BAA6B,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;AAE5D;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAC7B,yBAAyB,GACzB,6BAA6B,CAAC;AAClC,MAAM,MAAM,4BAA4B,GAAG;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;CAC5B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC;AAEnC;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAErD;;;;GAIG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,IAAI,IAAI,cAAc,GAAG,cAAc,GAAG,CAAC,CAAC;AAEvE;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAC9C,MAAM,EACN,qBAAqB,GAAG,OAAO,CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,CACvB,iBAAiB,GAAG,IAAI,EACxB,iBAAiB,GAAG,IAAI,EACxB,kBAAkB,GAAG,IAAI,EACzB,YAAY,GAAG,OAAO,IACpB;IACF,8BAA8B;IAC9B,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,oCAAoC;IACpC,QAAQ,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAC;IACrD,kEAAkE;IAClE,OAAO,CAAC,EAAE,qBAAqB,GAAG,UAAU,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAC;IAC5E,qEAAqE;IACrE,QAAQ,CAAC,EACL,2BAA2B,GAC3B,UAAU,CAAC,kBAAkB,CAAC,GAC9B,SAAS,CAAC;IACd,wCAAwC;IACxC,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,0EAA0E;IAC1E,OAAO,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;CACpC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,MAAM,CAChB,iBAAiB,GAAG,IAAI,EACxB,iBAAiB,GAAG,IAAI,EACxB,kBAAkB,GAAG,IAAI,EACzB,YAAY,GAAG,OAAO,IACpB;IACF,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CACf,MAAM,EACN,aAAa,CACX,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,CACb,CACF,CAAC;IACF,8BAA8B;IAC9B,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,wCAAwC;IACxC,KAAK,CAAC,EACF,aAAa,CACX,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,CACb,GACD,SAAS,CAAC;CACf,CAAC;AAEF,yBAAyB;AACzB,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEpD,gCAAgC;AAChC,MAAM,MAAM,iBAAiB,GAAG,aAAa,CAC3C,UAAU,EACV,UAAU,EACV,UAAU,EACV,OAAO,CACR,CAAC"}
1
+ {"version":3,"file":"policy-schema.d.ts","sourceRoot":"","sources":["policy-schema.ts"],"names":[],"mappings":"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"}