@xemahq/contracts 0.26.0 → 0.28.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 (61) hide show
  1. package/dist/.source-stamp.json +2 -2
  2. package/dist/biome/index.d.ts +1 -0
  3. package/dist/biome/index.d.ts.map +1 -1
  4. package/dist/biome/index.js +1 -0
  5. package/dist/biome/index.js.map +1 -1
  6. package/dist/biome/lib/biome-component-process-facts.d.ts +11 -0
  7. package/dist/biome/lib/biome-component-process-facts.d.ts.map +1 -0
  8. package/dist/biome/lib/biome-component-process-facts.js +25 -0
  9. package/dist/biome/lib/biome-component-process-facts.js.map +1 -0
  10. package/dist/biome/lib/biome-component-vocabulary.d.ts +0 -6
  11. package/dist/biome/lib/biome-component-vocabulary.d.ts.map +1 -1
  12. package/dist/biome/lib/biome-component-vocabulary.js +1 -8
  13. package/dist/biome/lib/biome-component-vocabulary.js.map +1 -1
  14. package/dist/biome/lib/biome-component.d.ts +114 -5
  15. package/dist/biome/lib/biome-component.d.ts.map +1 -1
  16. package/dist/biome/lib/biome-component.js +16 -24
  17. package/dist/biome/lib/biome-component.js.map +1 -1
  18. package/dist/biome/lib/biome-manifest.d.ts +240 -6
  19. package/dist/biome/lib/biome-manifest.d.ts.map +1 -1
  20. package/dist/biome/xema-biome.schema.json +296 -14
  21. package/dist/biome-dependency/index.d.ts +1 -0
  22. package/dist/biome-dependency/index.d.ts.map +1 -1
  23. package/dist/biome-dependency/index.js +1 -0
  24. package/dist/biome-dependency/index.js.map +1 -1
  25. package/dist/biome-dependency/lib/peer-seam-table.d.ts +52 -0
  26. package/dist/biome-dependency/lib/peer-seam-table.d.ts.map +1 -0
  27. package/dist/biome-dependency/lib/peer-seam-table.js +131 -0
  28. package/dist/biome-dependency/lib/peer-seam-table.js.map +1 -0
  29. package/dist/distribution/lib/distribution-lock.d.ts +49 -5
  30. package/dist/distribution/lib/distribution-lock.d.ts.map +1 -1
  31. package/dist/distribution/lib/distribution-lock.js +187 -9
  32. package/dist/distribution/lib/distribution-lock.js.map +1 -1
  33. package/dist/distribution/lib/image-lock.d.ts +2 -1
  34. package/dist/distribution/lib/image-lock.d.ts.map +1 -1
  35. package/dist/distribution/lib/image-lock.js +1 -0
  36. package/dist/distribution/lib/image-lock.js.map +1 -1
  37. package/dist/process-topology/index.d.ts +1 -0
  38. package/dist/process-topology/index.d.ts.map +1 -1
  39. package/dist/process-topology/index.js +1 -0
  40. package/dist/process-topology/index.js.map +1 -1
  41. package/dist/process-topology/lib/composed-process-contract.d.ts +26 -0
  42. package/dist/process-topology/lib/composed-process-contract.d.ts.map +1 -0
  43. package/dist/process-topology/lib/composed-process-contract.js +46 -0
  44. package/dist/process-topology/lib/composed-process-contract.js.map +1 -0
  45. package/dist/process-topology/lib/process-topology.d.ts +23 -0
  46. package/dist/process-topology/lib/process-topology.d.ts.map +1 -1
  47. package/dist/process-topology/lib/process-topology.js +68 -1
  48. package/dist/process-topology/lib/process-topology.js.map +1 -1
  49. package/dist/process-topology/lib/resolve-process-topology.d.ts +29 -12
  50. package/dist/process-topology/lib/resolve-process-topology.d.ts.map +1 -1
  51. package/dist/process-topology/lib/resolve-process-topology.js +134 -86
  52. package/dist/process-topology/lib/resolve-process-topology.js.map +1 -1
  53. package/dist/resource-requirement/index.d.ts +2 -0
  54. package/dist/resource-requirement/index.d.ts.map +1 -0
  55. package/dist/resource-requirement/index.js +18 -0
  56. package/dist/resource-requirement/index.js.map +1 -0
  57. package/dist/resource-requirement/lib/resource-requirement.d.ts +59 -0
  58. package/dist/resource-requirement/lib/resource-requirement.d.ts.map +1 -0
  59. package/dist/resource-requirement/lib/resource-requirement.js +116 -0
  60. package/dist/resource-requirement/lib/resource-requirement.js.map +1 -0
  61. package/package.json +1 -1
@@ -1,8 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ProcessTopologySchema = exports.PROCESS_TOPOLOGY_SCHEMA_VERSION = exports.ProcessDefinitionSchema = exports.ProcessMemberSchema = void 0;
3
+ exports.ProcessTopologySchema = exports.PROCESS_TOPOLOGY_SCHEMA_VERSION = exports.ProcessTrustPolicySchema = exports.ProcessTrustAssignmentSchema = exports.THIRD_PARTY_TRUST_DOMAIN_PREFIX = exports.FIRST_PARTY_TRUST_DOMAIN = exports.ProcessDefinitionSchema = exports.ProcessMemberSchema = void 0;
4
4
  exports.processMemberKey = processMemberKey;
5
+ exports.defaultTrustDomain = defaultTrustDomain;
6
+ exports.resolveTrustDomain = resolveTrustDomain;
5
7
  const zod_1 = require("zod");
8
+ const biome_1 = require("../../biome");
6
9
  exports.ProcessMemberSchema = zod_1.z
7
10
  .object({
8
11
  biomeId: zod_1.z
@@ -73,12 +76,76 @@ exports.ProcessDefinitionSchema = zod_1.z
73
76
  seen.add(key);
74
77
  });
75
78
  });
79
+ const TrustDomainNameSchema = zod_1.z
80
+ .string()
81
+ .min(1)
82
+ .max(63)
83
+ .regex(/^[a-z]([a-z0-9-]*[a-z0-9])?$/, 'trust domain name must be lowercase kebab-case');
84
+ exports.FIRST_PARTY_TRUST_DOMAIN = 'first-party';
85
+ exports.THIRD_PARTY_TRUST_DOMAIN_PREFIX = 'third-party/';
86
+ function defaultTrustDomain(biomeId, origin) {
87
+ return origin === biome_1.BiomeOrigin.FirstParty
88
+ ? exports.FIRST_PARTY_TRUST_DOMAIN
89
+ : `${exports.THIRD_PARTY_TRUST_DOMAIN_PREFIX}${biomeId}`;
90
+ }
91
+ exports.ProcessTrustAssignmentSchema = zod_1.z
92
+ .object({
93
+ domain: TrustDomainNameSchema,
94
+ biomes: zod_1.z
95
+ .array(zod_1.z
96
+ .string()
97
+ .min(1)
98
+ .regex(/^[a-z][a-z0-9-]*$/, 'biome id must be lowercase kebab-case'))
99
+ .min(1),
100
+ })
101
+ .strict();
102
+ exports.ProcessTrustPolicySchema = zod_1.z
103
+ .object({
104
+ assignments: zod_1.z.array(exports.ProcessTrustAssignmentSchema).min(1),
105
+ })
106
+ .strict()
107
+ .superRefine((policy, ctx) => {
108
+ const domains = new Set();
109
+ const owner = new Map();
110
+ policy.assignments.forEach((assignment, index) => {
111
+ if (domains.has(assignment.domain)) {
112
+ ctx.addIssue({
113
+ code: 'custom',
114
+ path: ['assignments', index, 'domain'],
115
+ message: `trust domain "${assignment.domain}" is assigned twice — list its ` +
116
+ `biomes in one assignment`,
117
+ });
118
+ }
119
+ domains.add(assignment.domain);
120
+ for (const biomeId of assignment.biomes) {
121
+ const previous = owner.get(biomeId);
122
+ if (previous !== undefined) {
123
+ ctx.addIssue({
124
+ code: 'custom',
125
+ path: ['assignments', index, 'biomes'],
126
+ message: `biome "${biomeId}" is assigned to both "${previous}" and ` +
127
+ `"${assignment.domain}" — a biome is in exactly ONE trust domain`,
128
+ });
129
+ continue;
130
+ }
131
+ owner.set(biomeId, assignment.domain);
132
+ }
133
+ });
134
+ });
135
+ function resolveTrustDomain(biomeId, origin, policy) {
136
+ for (const assignment of policy?.assignments ?? []) {
137
+ if (assignment.biomes.includes(biomeId))
138
+ return assignment.domain;
139
+ }
140
+ return defaultTrustDomain(biomeId, origin);
141
+ }
76
142
  exports.PROCESS_TOPOLOGY_SCHEMA_VERSION = 1;
77
143
  exports.ProcessTopologySchema = zod_1.z
78
144
  .object({
79
145
  schemaVersion: zod_1.z.literal(exports.PROCESS_TOPOLOGY_SCHEMA_VERSION),
80
146
  distributionId: zod_1.z.string().min(1),
81
147
  processes: zod_1.z.array(exports.ProcessDefinitionSchema).min(1),
148
+ trustPolicy: exports.ProcessTrustPolicySchema.optional(),
82
149
  })
83
150
  .strict()
84
151
  .superRefine((topology, ctx) => {
@@ -1 +1 @@
1
- {"version":3,"file":"process-topology.js","sourceRoot":"","sources":["../../../src/process-topology/lib/process-topology.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process-topology.js","sourceRoot":"","sources":["../../../src/process-topology/lib/process-topology.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,18 @@
1
- import { BiomeComponentExecutionMode, BiomeScalingMode, CompositionTrustClass } from '../../biome';
1
+ import { BiomeComponentKind, BiomeComponentScheduler, BiomeOrigin, BiomeScalingMode, type BiomeComponent, type BiomeComponentProcessFacts } from '../../biome';
2
2
  import { type ProcessTopology } from './process-topology';
3
3
  export declare enum ProcessTopologyViolationCode {
4
4
  UnknownMember = "unknown-member",
5
- MemberNotComposable = "member-not-composable",
6
- MixedTrustClasses = "mixed-trust-classes",
7
- MissingTrustClass = "missing-trust-class",
8
- SingletonScaled = "singleton-scaled",
5
+ NotAService = "not-a-service",
6
+ RuntimeScheduled = "runtime-scheduled",
9
7
  InvocationOnlyMember = "invocation-only-member",
10
- UnplacedComponent = "unplaced-component",
8
+ SingletonScaled = "singleton-scaled",
9
+ ExclusiveShared = "exclusive-shared",
11
10
  FloatingMemberVersion = "floating-member-version",
12
- KernelMajorDisagreement = "kernel-major-disagreement"
11
+ KernelMajorDisagreement = "kernel-major-disagreement",
12
+ MixedBuildSources = "mixed-build-sources",
13
+ MixedTrustDomains = "mixed-trust-domains",
14
+ ForeignCodeBesideCustody = "foreign-code-beside-custody",
15
+ ForeignCodeBesideGovernedEgress = "foreign-code-beside-governed-egress"
13
16
  }
14
17
  export interface ProcessTopologyViolation {
15
18
  readonly code: ProcessTopologyViolationCode;
@@ -17,21 +20,35 @@ export interface ProcessTopologyViolation {
17
20
  readonly member?: string;
18
21
  readonly message: string;
19
22
  }
20
- export interface ComposableComponentFacts {
23
+ export interface ProcessMemberBuildSource {
24
+ readonly repository: string;
25
+ readonly commit: string;
26
+ }
27
+ export interface ProcessMemberFacts {
21
28
  readonly biomeId: string;
22
29
  readonly componentKey: string;
23
- readonly executionModes: readonly BiomeComponentExecutionMode[];
24
- readonly compositionTrustClass?: CompositionTrustClass;
30
+ readonly componentKind: BiomeComponentKind;
31
+ readonly scheduler?: BiomeComponentScheduler;
25
32
  readonly scalingMode: BiomeScalingMode;
33
+ readonly processFacts?: BiomeComponentProcessFacts;
34
+ readonly origin: BiomeOrigin;
35
+ readonly version: string;
36
+ readonly buildSource: ProcessMemberBuildSource;
37
+ readonly kernelMajor?: number;
38
+ }
39
+ export interface ProcessMemberContext {
40
+ readonly biomeId: string;
41
+ readonly origin: BiomeOrigin;
26
42
  readonly version: string;
43
+ readonly buildSource: ProcessMemberBuildSource;
27
44
  readonly kernelMajor?: number;
28
45
  }
46
+ export declare function deriveProcessMemberFacts(component: BiomeComponent, context: ProcessMemberContext): ProcessMemberFacts;
29
47
  export interface ResolveProcessTopologyInput {
30
48
  readonly topology: ProcessTopology;
31
- readonly composableComponents: readonly ComposableComponentFacts[];
49
+ readonly memberFacts: readonly ProcessMemberFacts[];
32
50
  }
33
51
  export declare function isExactVersion(value: string): boolean;
34
52
  export declare function resolveProcessTopology(input: ResolveProcessTopologyInput): readonly ProcessTopologyViolation[];
35
53
  export declare function assertProcessTopology(input: ResolveProcessTopologyInput): void;
36
- export declare function oneProcessPerComponent(distributionId: string, components: readonly ComposableComponentFacts[], listenPort: number): ProcessTopology;
37
54
  //# sourceMappingURL=resolve-process-topology.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-process-topology.d.ts","sourceRoot":"","sources":["../../../src/process-topology/lib/resolve-process-topology.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,gBAAgB,EAChB,qBAAqB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AA0B5E,oBAAY,4BAA4B;IAEtC,aAAa,mBAAmB;IAEhC,mBAAmB,0BAA0B;IAE7C,iBAAiB,wBAAwB;IAEzC,iBAAiB,wBAAwB;IAEzC,eAAe,qBAAqB;IAEpC,oBAAoB,2BAA2B;IAE/C,iBAAiB,uBAAuB;IAExC,qBAAqB,4BAA4B;IAEjD,uBAAuB,8BAA8B;CACtD;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,4BAA4B,CAAC;IAE5C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAUD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,SAAS,2BAA2B,EAAE,CAAC;IAChE,QAAQ,CAAC,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IACvD,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IASvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAUzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IAOnC,QAAQ,CAAC,oBAAoB,EAAE,SAAS,wBAAwB,EAAE,CAAC;CACpE;AAYD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAErD;AAYD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,2BAA2B,GACjC,SAAS,wBAAwB,EAAE,CAiKrC;AAWD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,2BAA2B,GAAG,IAAI,CAS9E;AAgBD,wBAAgB,sBAAsB,CACpC,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,SAAS,wBAAwB,EAAE,EAC/C,UAAU,EAAE,MAAM,GACjB,eAAe,CAajB"}
1
+ {"version":3,"file":"resolve-process-topology.d.ts","sourceRoot":"","sources":["../../../src/process-topology/lib/resolve-process-topology.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,WAAW,EACX,gBAAgB,EAChB,KAAK,cAAc,EACnB,KAAK,0BAA0B,EAChC,MAAM,aAAa,CAAC;AACrB,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAuC5B,oBAAY,4BAA4B;IAEtC,aAAa,mBAAmB;IAEhC,WAAW,kBAAkB;IAE7B,gBAAgB,sBAAsB;IAEtC,oBAAoB,2BAA2B;IAE/C,eAAe,qBAAqB;IAEpC,eAAe,qBAAqB;IAEpC,qBAAqB,4BAA4B;IAEjD,uBAAuB,8BAA8B;IAErD,iBAAiB,wBAAwB;IAEzC,iBAAiB,wBAAwB;IAEzC,wBAAwB,gCAAgC;IAExD,+BAA+B,wCAAwC;CACxE;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,4BAA4B,CAAC;IAE5C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAGD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAWD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,kBAAkB,CAAC;IAE3C,QAAQ,CAAC,SAAS,CAAC,EAAE,uBAAuB,CAAC;IAC7C,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IAEvC,QAAQ,CAAC,YAAY,CAAC,EAAE,0BAA0B,CAAC;IAMnD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAM7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAMzB,QAAQ,CAAC,WAAW,EAAE,wBAAwB,CAAC;IAM/C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAGD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,wBAAwB,CAAC;IAC/C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAQD,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,cAAc,EACzB,OAAO,EAAE,oBAAoB,GAC5B,kBAAkB,CAmBpB;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IAMnC,QAAQ,CAAC,WAAW,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACrD;AASD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAErD;AAqCD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,2BAA2B,GACjC,SAAS,wBAAwB,EAAE,CA+LrC;AAMD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,2BAA2B,GAAG,IAAI,CAW9E"}
@@ -1,24 +1,47 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ProcessTopologyViolationCode = void 0;
4
+ exports.deriveProcessMemberFacts = deriveProcessMemberFacts;
4
5
  exports.isExactVersion = isExactVersion;
5
6
  exports.resolveProcessTopology = resolveProcessTopology;
6
7
  exports.assertProcessTopology = assertProcessTopology;
7
- exports.oneProcessPerComponent = oneProcessPerComponent;
8
8
  const biome_1 = require("../../biome");
9
9
  const process_topology_1 = require("./process-topology");
10
10
  var ProcessTopologyViolationCode;
11
11
  (function (ProcessTopologyViolationCode) {
12
12
  ProcessTopologyViolationCode["UnknownMember"] = "unknown-member";
13
- ProcessTopologyViolationCode["MemberNotComposable"] = "member-not-composable";
14
- ProcessTopologyViolationCode["MixedTrustClasses"] = "mixed-trust-classes";
15
- ProcessTopologyViolationCode["MissingTrustClass"] = "missing-trust-class";
16
- ProcessTopologyViolationCode["SingletonScaled"] = "singleton-scaled";
13
+ ProcessTopologyViolationCode["NotAService"] = "not-a-service";
14
+ ProcessTopologyViolationCode["RuntimeScheduled"] = "runtime-scheduled";
17
15
  ProcessTopologyViolationCode["InvocationOnlyMember"] = "invocation-only-member";
18
- ProcessTopologyViolationCode["UnplacedComponent"] = "unplaced-component";
16
+ ProcessTopologyViolationCode["SingletonScaled"] = "singleton-scaled";
17
+ ProcessTopologyViolationCode["ExclusiveShared"] = "exclusive-shared";
19
18
  ProcessTopologyViolationCode["FloatingMemberVersion"] = "floating-member-version";
20
19
  ProcessTopologyViolationCode["KernelMajorDisagreement"] = "kernel-major-disagreement";
20
+ ProcessTopologyViolationCode["MixedBuildSources"] = "mixed-build-sources";
21
+ ProcessTopologyViolationCode["MixedTrustDomains"] = "mixed-trust-domains";
22
+ ProcessTopologyViolationCode["ForeignCodeBesideCustody"] = "foreign-code-beside-custody";
23
+ ProcessTopologyViolationCode["ForeignCodeBesideGovernedEgress"] = "foreign-code-beside-governed-egress";
21
24
  })(ProcessTopologyViolationCode || (exports.ProcessTopologyViolationCode = ProcessTopologyViolationCode = {}));
25
+ function deriveProcessMemberFacts(component, context) {
26
+ return {
27
+ biomeId: context.biomeId,
28
+ componentKey: component.key,
29
+ componentKind: component.kind,
30
+ ...(component.scheduler === undefined
31
+ ? {}
32
+ : { scheduler: component.scheduler }),
33
+ scalingMode: component.requirements.scaling.mode,
34
+ ...(component.processFacts === undefined
35
+ ? {}
36
+ : { processFacts: component.processFacts }),
37
+ origin: context.origin,
38
+ version: context.version,
39
+ buildSource: context.buildSource,
40
+ ...(context.kernelMajor === undefined
41
+ ? {}
42
+ : { kernelMajor: context.kernelMajor }),
43
+ };
44
+ }
22
45
  const EXACT_VERSION = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;
23
46
  function isExactVersion(value) {
24
47
  return EXACT_VERSION.test(value);
@@ -27,67 +50,85 @@ const REPLICABLE_SCALING_MODES = new Set([
27
50
  biome_1.BiomeScalingMode.Horizontal,
28
51
  biome_1.BiomeScalingMode.Partitioned,
29
52
  ]);
53
+ function isForeignCode(facts) {
54
+ return (facts.origin !== biome_1.BiomeOrigin.FirstParty ||
55
+ facts.processFacts?.foreignCodeExecution === true);
56
+ }
57
+ function buildSourceKey(source) {
58
+ return `${source.repository}@${source.commit}`;
59
+ }
60
+ function summarise(groups) {
61
+ return [...groups.entries()]
62
+ .map(([key, members]) => `${key} (${members.join(', ')})`)
63
+ .sort()
64
+ .join(' and ');
65
+ }
66
+ function group(map, key, member) {
67
+ const members = map.get(key) ?? [];
68
+ members.push(member);
69
+ map.set(key, members);
70
+ }
30
71
  function resolveProcessTopology(input) {
31
72
  const violations = [];
32
73
  const facts = new Map();
33
- for (const component of input.composableComponents) {
74
+ for (const member of input.memberFacts) {
34
75
  facts.set((0, process_topology_1.processMemberKey)({
35
- biomeId: component.biomeId,
36
- componentKey: component.componentKey,
37
- }), component);
76
+ biomeId: member.biomeId,
77
+ componentKey: member.componentKey,
78
+ }), member);
38
79
  }
39
- const placed = new Set();
80
+ const policy = input.topology.trustPolicy;
40
81
  for (const process of input.topology.processes) {
41
- const trustClasses = new Map();
82
+ const domains = new Map();
83
+ const buildSources = new Map();
42
84
  const kernelMajors = new Map();
85
+ const custody = [];
86
+ const egress = [];
87
+ const foreign = [];
88
+ const shared = process.members.length > 1;
43
89
  for (const member of process.members) {
44
90
  const key = (0, process_topology_1.processMemberKey)(member);
45
- placed.add(key);
46
91
  const component = facts.get(key);
47
92
  if (component === undefined) {
48
93
  violations.push({
49
94
  code: ProcessTopologyViolationCode.UnknownMember,
50
95
  process: process.name,
51
96
  member: key,
52
- message: `process "${process.name}" names member "${key}", which is not a ` +
53
- `composable component of distribution "${input.topology.distributionId}". ` +
54
- `Either the component does not exist, or it does not declare composed execution.`,
97
+ message: `process "${process.name}" names member "${key}", for which no ` +
98
+ `component facts were supplied from distribution ` +
99
+ `"${input.topology.distributionId}". Either the component does not ` +
100
+ `exist in the edition, or the caller did not read its facts — and ` +
101
+ `"could not check" is not "passed".`,
55
102
  });
56
103
  continue;
57
104
  }
58
- if (!component.executionModes.includes(biome_1.BiomeComponentExecutionMode.Composed)) {
105
+ if (component.componentKind !== biome_1.BiomeComponentKind.Service) {
59
106
  violations.push({
60
- code: ProcessTopologyViolationCode.MemberNotComposable,
107
+ code: ProcessTopologyViolationCode.NotAService,
61
108
  process: process.name,
62
109
  member: key,
63
- message: `"${key}" does not declare "${biome_1.BiomeComponentExecutionMode.Composed}" ` +
64
- `execution, so it cannot be loaded into process "${process.name}". ` +
65
- `A component runs in its own process unless its author says it tolerates a shared one.`,
110
+ message: `"${key}" is a ${component.componentKind} component, so it cannot be ` +
111
+ `a member of process "${process.name}". Only services are composed; ` +
112
+ `a ${component.componentKind} keeps the process its kind gives it.`,
66
113
  });
67
114
  }
68
- if (component.compositionTrustClass === undefined) {
115
+ else if (component.scheduler === biome_1.BiomeComponentScheduler.Runtime) {
69
116
  violations.push({
70
- code: ProcessTopologyViolationCode.MissingTrustClass,
117
+ code: ProcessTopologyViolationCode.RuntimeScheduled,
71
118
  process: process.name,
72
119
  member: key,
73
- message: `"${key}" declares no compositionTrustClass, so what may share its ` +
74
- `heap is unknown. An unclassified component is REFUSED rather than ` +
75
- `defaulted — defaulting would silently admit custody code into a product heap.`,
120
+ message: `"${key}" is runtime-scheduled — the runtime plane launches its ` +
121
+ `instances on demand — so it is not a standing workload and cannot ` +
122
+ `be a member of process "${process.name}".`,
76
123
  });
77
124
  }
78
- else {
79
- const members = trustClasses.get(component.compositionTrustClass) ?? [];
80
- members.push(key);
81
- trustClasses.set(component.compositionTrustClass, members);
82
- }
83
125
  if (component.scalingMode === biome_1.BiomeScalingMode.InvocationOnly) {
84
126
  violations.push({
85
127
  code: ProcessTopologyViolationCode.InvocationOnlyMember,
86
128
  process: process.name,
87
129
  member: key,
88
130
  message: `"${key}" is invocation-only, so nothing rosters it as a standing ` +
89
- `workload and it cannot be a member of process "${process.name}". ` +
90
- `An invocation-only component is launched per invocation by the runner plane.`,
131
+ `workload and it cannot be a member of process "${process.name}".`,
91
132
  });
92
133
  }
93
134
  else if (process.replicas.max > 1 &&
@@ -98,9 +139,18 @@ function resolveProcessTopology(input) {
98
139
  member: key,
99
140
  message: `"${key}" declares scaling.mode "${component.scalingMode}", so process ` +
100
141
  `"${process.name}" may run at most one replica — it declares ` +
101
- `replicas.max ${process.replicas.max}. ` +
102
- `"Leader-elected" is singleton plus a kernel-state lease, not a scaling mode: ` +
103
- `a component that elects still runs one instance of its scheduled work.`,
142
+ `replicas.max ${process.replicas.max}. "Leader-elected" is singleton ` +
143
+ `plus a kernel-state lease, not a scaling mode.`,
144
+ });
145
+ }
146
+ const exclusive = component.processFacts?.exclusive;
147
+ if (exclusive !== undefined && shared) {
148
+ violations.push({
149
+ code: ProcessTopologyViolationCode.ExclusiveShared,
150
+ process: process.name,
151
+ member: key,
152
+ message: `"${key}" declares a process-global constraint ("${exclusive.reason}"), ` +
153
+ `so it cannot share process "${process.name}" with any other member.`,
104
154
  });
105
155
  }
106
156
  if (!isExactVersion(component.version)) {
@@ -110,59 +160,71 @@ function resolveProcessTopology(input) {
110
160
  member: key,
111
161
  message: `"${key}" resolves to "${component.version}", which is not an exact ` +
112
162
  `version. A floating range would decide what shares a heap at install ` +
113
- `time, so two installs of one edition could differ and "which code was ` +
114
- `in that heap" would be unanswerable after the fact.`,
163
+ `time, so two installs of one edition could differ.`,
115
164
  });
116
165
  }
166
+ group(domains, (0, process_topology_1.resolveTrustDomain)(component.biomeId, component.origin, policy), key);
167
+ group(buildSources, buildSourceKey(component.buildSource), key);
117
168
  if (component.kernelMajor !== undefined) {
118
- const members = kernelMajors.get(component.kernelMajor) ?? [];
119
- members.push(key);
120
- kernelMajors.set(component.kernelMajor, members);
169
+ group(kernelMajors, String(component.kernelMajor), key);
121
170
  }
171
+ if (component.processFacts?.credentialCustody === true)
172
+ custody.push(key);
173
+ if (component.processFacts?.governedEgressEdge === true)
174
+ egress.push(key);
175
+ if (isForeignCode(component))
176
+ foreign.push(key);
122
177
  }
123
- if (trustClasses.size > 1) {
124
- const summary = [...trustClasses.entries()]
125
- .map(([trustClass, members]) => `${trustClass} (${members.join(', ')})`)
126
- .sort()
127
- .join(' and ');
178
+ if (domains.size > 1) {
128
179
  violations.push({
129
- code: ProcessTopologyViolationCode.MixedTrustClasses,
180
+ code: ProcessTopologyViolationCode.MixedTrustDomains,
130
181
  process: process.name,
131
- message: `process "${process.name}" mixes trust classes: ${summary}. ` +
132
- `A process contains components of exactly ONE class — composing two ` +
133
- `merges their blast radius into one heap, one uid and one set of ambient ` +
134
- `credentials. Declare more processes; a distribution may always isolate ` +
135
- `MORE, never less.`,
182
+ message: `process "${process.name}" mixes trust domains: ${summarise(domains)}. ` +
183
+ `One process is ONE security boundary, so its members must be one ` +
184
+ `domain. To co-locate them deliberately, assign their biomes to one ` +
185
+ `domain in the deployment's trustPolicy; otherwise declare more processes.`,
186
+ });
187
+ }
188
+ const foreignOnly = (keys) => foreign.filter((key) => !keys.includes(key));
189
+ if (custody.length > 0 && foreignOnly(custody).length > 0) {
190
+ violations.push({
191
+ code: ProcessTopologyViolationCode.ForeignCodeBesideCustody,
192
+ process: process.name,
193
+ message: `process "${process.name}" places foreign code (${foreignOnly(custody).join(', ')}) ` +
194
+ `beside credential-custody material (${custody.join(', ')}). Code in the ` +
195
+ `same heap can read the keys; no trust policy can admit this.`,
196
+ });
197
+ }
198
+ if (egress.length > 0 && foreignOnly(egress).length > 0) {
199
+ violations.push({
200
+ code: ProcessTopologyViolationCode.ForeignCodeBesideGovernedEgress,
201
+ process: process.name,
202
+ message: `process "${process.name}" places foreign code (${foreignOnly(egress).join(', ')}) ` +
203
+ `beside a governed egress edge (${egress.join(', ')}). Foreign code would ` +
204
+ `inherit the edge's network reach and bypass its control from the same ` +
205
+ `heap; no trust policy can admit this.`,
206
+ });
207
+ }
208
+ if (buildSources.size > 1) {
209
+ violations.push({
210
+ code: ProcessTopologyViolationCode.MixedBuildSources,
211
+ process: process.name,
212
+ message: `process "${process.name}" mixes builds: ${summarise(buildSources)}. ` +
213
+ `Members of one process share one module graph, and a composed image ` +
214
+ `is built from ONE repository at ONE commit — so every member must come ` +
215
+ `from the same build.`,
136
216
  });
137
217
  }
138
218
  if (kernelMajors.size > 1) {
139
- const summary = [...kernelMajors.entries()]
140
- .map(([major, members]) => `${major} (${members.join(', ')})`)
141
- .sort()
142
- .join(' and ');
143
219
  violations.push({
144
220
  code: ProcessTopologyViolationCode.KernelMajorDisagreement,
145
221
  process: process.name,
146
- message: `process "${process.name}" mixes kernel majors: ${summary}. ` +
222
+ message: `process "${process.name}" mixes kernel majors: ${summarise(kernelMajors)}. ` +
147
223
  `Members of one process share one module graph, so they must resolve one ` +
148
- `compatible kernel major. This is refused at resolve time rather than ` +
149
- `discovered at boot.`,
224
+ `compatible kernel major.`,
150
225
  });
151
226
  }
152
227
  }
153
- for (const component of input.composableComponents) {
154
- const key = (0, process_topology_1.processMemberKey)(component);
155
- if (placed.has(key))
156
- continue;
157
- violations.push({
158
- code: ProcessTopologyViolationCode.UnplacedComponent,
159
- member: key,
160
- message: `"${key}" is a composable component of distribution ` +
161
- `"${input.topology.distributionId}" and no process contains it. ` +
162
- `A topology declares where EVERY composable component runs; an omission ` +
163
- `would silently drop a service from the installation.`,
164
- });
165
- }
166
228
  return violations;
167
229
  }
168
230
  function assertProcessTopology(input) {
@@ -174,18 +236,4 @@ function assertProcessTopology(input) {
174
236
  `(${violations.length} violation${violations.length === 1 ? '' : 's'}):\n` +
175
237
  lines.join('\n'));
176
238
  }
177
- function oneProcessPerComponent(distributionId, components, listenPort) {
178
- return {
179
- schemaVersion: 1,
180
- distributionId,
181
- processes: components.map((component) => ({
182
- name: `${component.biomeId}-${component.componentKey}`,
183
- members: [
184
- { biomeId: component.biomeId, componentKey: component.componentKey },
185
- ],
186
- replicas: { min: 1, max: 1 },
187
- listen: { port: listenPort },
188
- })),
189
- };
190
- }
191
239
  //# sourceMappingURL=resolve-process-topology.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-process-topology.js","sourceRoot":"","sources":["../../../src/process-topology/lib/resolve-process-topology.ts"],"names":[],"mappings":";;;AAsHA,wCAEC;AAYD,wDAmKC;AAWD,sDASC;AAgBD,wDAiBC;AA5VD,uCAIqB;AACrB,yDAA4E;AA0B5E,IAAY,4BAmBX;AAnBD,WAAY,4BAA4B;IAEtC,gEAAgC,CAAA;IAEhC,6EAA6C,CAAA;IAE7C,yEAAyC,CAAA;IAEzC,yEAAyC,CAAA;IAEzC,oEAAoC,CAAA;IAEpC,+EAA+C,CAAA;IAE/C,wEAAwC,CAAA;IAExC,iFAAiD,CAAA;IAEjD,qFAAqD,CAAA;AACvD,CAAC,EAnBW,4BAA4B,4CAA5B,4BAA4B,QAmBvC;AAiED,MAAM,aAAa,GACjB,2HAA2H,CAAC;AAE9H,SAAgB,cAAc,CAAC,KAAa;IAC1C,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAGD,MAAM,wBAAwB,GAAkC,IAAI,GAAG,CAAC;IACtE,wBAAgB,CAAC,UAAU;IAC3B,wBAAgB,CAAC,WAAW;CAC7B,CAAC,CAAC;AAMH,SAAgB,sBAAsB,CACpC,KAAkC;IAElC,MAAM,UAAU,GAA+B,EAAE,CAAC;IAClD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoC,CAAC;IAC1D,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,oBAAoB,EAAE,CAAC;QACnD,KAAK,CAAC,GAAG,CACP,IAAA,mCAAgB,EAAC;YACf,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,YAAY,EAAE,SAAS,CAAC,YAAY;SACrC,CAAC,EACF,SAAS,CACV,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IAEjC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC/C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAmC,CAAC;QAChE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAoB,CAAC;QAEjD,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,IAAA,mCAAgB,EAAC,MAAM,CAAC,CAAC;YACrC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChB,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,4BAA4B,CAAC,aAAa;oBAChD,OAAO,EAAE,OAAO,CAAC,IAAI;oBACrB,MAAM,EAAE,GAAG;oBACX,OAAO,EACL,YAAY,OAAO,CAAC,IAAI,mBAAmB,GAAG,oBAAoB;wBAClE,yCAAyC,KAAK,CAAC,QAAQ,CAAC,cAAc,KAAK;wBAC3E,iFAAiF;iBACpF,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,IACE,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,mCAA2B,CAAC,QAAQ,CAAC,EACxE,CAAC;gBACD,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,4BAA4B,CAAC,mBAAmB;oBACtD,OAAO,EAAE,OAAO,CAAC,IAAI;oBACrB,MAAM,EAAE,GAAG;oBACX,OAAO,EACL,IAAI,GAAG,uBAAuB,mCAA2B,CAAC,QAAQ,IAAI;wBACtE,mDAAmD,OAAO,CAAC,IAAI,KAAK;wBACpE,uFAAuF;iBAC1F,CAAC,CAAC;YACL,CAAC;YAED,IAAI,SAAS,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;gBAClD,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,4BAA4B,CAAC,iBAAiB;oBACpD,OAAO,EAAE,OAAO,CAAC,IAAI;oBACrB,MAAM,EAAE,GAAG;oBACX,OAAO,EACL,IAAI,GAAG,6DAA6D;wBACpE,oEAAoE;wBACpE,+EAA+E;iBAClF,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;gBACxE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;YAC7D,CAAC;YAED,IAAI,SAAS,CAAC,WAAW,KAAK,wBAAgB,CAAC,cAAc,EAAE,CAAC;gBAC9D,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,4BAA4B,CAAC,oBAAoB;oBACvD,OAAO,EAAE,OAAO,CAAC,IAAI;oBACrB,MAAM,EAAE,GAAG;oBACX,OAAO,EACL,IAAI,GAAG,4DAA4D;wBACnE,kDAAkD,OAAO,CAAC,IAAI,KAAK;wBACnE,8EAA8E;iBACjF,CAAC,CAAC;YACL,CAAC;iBAAM,IACL,OAAO,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;gBACxB,CAAC,wBAAwB,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,EACpD,CAAC;gBACD,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,4BAA4B,CAAC,eAAe;oBAClD,OAAO,EAAE,OAAO,CAAC,IAAI;oBACrB,MAAM,EAAE,GAAG;oBACX,OAAO,EACL,IAAI,GAAG,4BAA4B,SAAS,CAAC,WAAW,gBAAgB;wBACxE,IAAI,OAAO,CAAC,IAAI,8CAA8C;wBAC9D,gBAAgB,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI;wBACxC,+EAA+E;wBAC/E,wEAAwE;iBAC3E,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvC,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,4BAA4B,CAAC,qBAAqB;oBACxD,OAAO,EAAE,OAAO,CAAC,IAAI;oBACrB,MAAM,EAAE,GAAG;oBACX,OAAO,EACL,IAAI,GAAG,kBAAkB,SAAS,CAAC,OAAO,2BAA2B;wBACrE,uEAAuE;wBACvE,wEAAwE;wBACxE,qDAAqD;iBACxD,CAAC,CAAC;YACL,CAAC;YAED,IAAI,SAAS,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACxC,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;gBAC9D,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAED,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;iBACxC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;iBACvE,IAAI,EAAE;iBACN,IAAI,CAAC,OAAO,CAAC,CAAC;YACjB,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,4BAA4B,CAAC,iBAAiB;gBACpD,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,OAAO,EACL,YAAY,OAAO,CAAC,IAAI,0BAA0B,OAAO,IAAI;oBAC7D,qEAAqE;oBACrE,0EAA0E;oBAC1E,yEAAyE;oBACzE,mBAAmB;aACtB,CAAC,CAAC;QACL,CAAC;QAED,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;iBACxC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;iBAC7D,IAAI,EAAE;iBACN,IAAI,CAAC,OAAO,CAAC,CAAC;YACjB,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,4BAA4B,CAAC,uBAAuB;gBAC1D,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,OAAO,EACL,YAAY,OAAO,CAAC,IAAI,0BAA0B,OAAO,IAAI;oBAC7D,0EAA0E;oBAC1E,uEAAuE;oBACvE,qBAAqB;aACxB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,oBAAoB,EAAE,CAAC;QACnD,MAAM,GAAG,GAAG,IAAA,mCAAgB,EAAC,SAAS,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC9B,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,4BAA4B,CAAC,iBAAiB;YACpD,MAAM,EAAE,GAAG;YACX,OAAO,EACL,IAAI,GAAG,8CAA8C;gBACrD,IAAI,KAAK,CAAC,QAAQ,CAAC,cAAc,gCAAgC;gBACjE,yEAAyE;gBACzE,sDAAsD;SACzD,CAAC,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAWD,SAAgB,qBAAqB,CAAC,KAAkC;IACtE,MAAM,UAAU,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACpC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5F,MAAM,IAAI,KAAK,CACb,sCAAsC,KAAK,CAAC,QAAQ,CAAC,cAAc,eAAe;QAChF,IAAI,UAAU,CAAC,MAAM,aAAa,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM;QAC1E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CACnB,CAAC;AACJ,CAAC;AAgBD,SAAgB,sBAAsB,CACpC,cAAsB,EACtB,UAA+C,EAC/C,UAAkB;IAElB,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,cAAc;QACd,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YACxC,IAAI,EAAE,GAAG,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,YAAY,EAAE;YACtD,OAAO,EAAE;gBACP,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE;aACrE;YACD,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;YAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;SAC7B,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"resolve-process-topology.js","sourceRoot":"","sources":["../../../src/process-topology/lib/resolve-process-topology.ts"],"names":[],"mappings":";;;AAyJA,4DAsBC;AAmBD,wCAEC;AAqCD,wDAiMC;AAMD,sDAWC;AA3bD,uCAOqB;AACrB,yDAI4B;AAuC5B,IAAY,4BAyBX;AAzBD,WAAY,4BAA4B;IAEtC,gEAAgC,CAAA;IAEhC,6DAA6B,CAAA;IAE7B,sEAAsC,CAAA;IAEtC,+EAA+C,CAAA;IAE/C,oEAAoC,CAAA;IAEpC,oEAAoC,CAAA;IAEpC,iFAAiD,CAAA;IAEjD,qFAAqD,CAAA;IAErD,yEAAyC,CAAA;IAEzC,yEAAyC,CAAA;IAEzC,wFAAwD,CAAA;IAExD,uGAAuE,CAAA;AACzE,CAAC,EAzBW,4BAA4B,4CAA5B,4BAA4B,QAyBvC;AA6ED,SAAgB,wBAAwB,CACtC,SAAyB,EACzB,OAA6B;IAE7B,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,YAAY,EAAE,SAAS,CAAC,GAAG;QAC3B,aAAa,EAAE,SAAS,CAAC,IAAI;QAC7B,GAAG,CAAC,SAAS,CAAC,SAAS,KAAK,SAAS;YACnC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC;QACvC,WAAW,EAAE,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI;QAChD,GAAG,CAAC,SAAS,CAAC,YAAY,KAAK,SAAS;YACtC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC;QAC7C,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS;YACnC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;KAC1C,CAAC;AACJ,CAAC;AAgBD,MAAM,aAAa,GACjB,2HAA2H,CAAC;AAE9H,SAAgB,cAAc,CAAC,KAAa;IAC1C,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAGD,MAAM,wBAAwB,GAAkC,IAAI,GAAG,CAAC;IACtE,wBAAgB,CAAC,UAAU;IAC3B,wBAAgB,CAAC,WAAW;CAC7B,CAAC,CAAC;AAGH,SAAS,aAAa,CAAC,KAAyB;IAC9C,OAAO,CACL,KAAK,CAAC,MAAM,KAAK,mBAAW,CAAC,UAAU;QACvC,KAAK,CAAC,YAAY,EAAE,oBAAoB,KAAK,IAAI,CAClD,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,MAAgC;IACtD,OAAO,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,SAAS,CAAC,MAA6B;IAC9C,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;SACzD,IAAI,EAAE;SACN,IAAI,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,KAAK,CAAC,GAA0B,EAAE,GAAW,EAAE,MAAc;IACpE,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACxB,CAAC;AAMD,SAAgB,sBAAsB,CACpC,KAAkC;IAElC,MAAM,UAAU,GAA+B,EAAE,CAAC;IAClD,MAAM,KAAK,GAAG,IAAI,GAAG,EAA8B,CAAC;IACpD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACvC,KAAK,CAAC,GAAG,CACP,IAAA,mCAAgB,EAAC;YACf,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAC,EACF,MAAM,CACP,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;IAE1C,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;QAC5C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAoB,CAAC;QACjD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAoB,CAAC;QACjD,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAE1C,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,IAAA,mCAAgB,EAAC,MAAM,CAAC,CAAC;YACrC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,4BAA4B,CAAC,aAAa;oBAChD,OAAO,EAAE,OAAO,CAAC,IAAI;oBACrB,MAAM,EAAE,GAAG;oBACX,OAAO,EACL,YAAY,OAAO,CAAC,IAAI,mBAAmB,GAAG,kBAAkB;wBAChE,kDAAkD;wBAClD,IAAI,KAAK,CAAC,QAAQ,CAAC,cAAc,mCAAmC;wBACpE,mEAAmE;wBACnE,oCAAoC;iBACvC,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAGD,IAAI,SAAS,CAAC,aAAa,KAAK,0BAAkB,CAAC,OAAO,EAAE,CAAC;gBAC3D,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,4BAA4B,CAAC,WAAW;oBAC9C,OAAO,EAAE,OAAO,CAAC,IAAI;oBACrB,MAAM,EAAE,GAAG;oBACX,OAAO,EACL,IAAI,GAAG,UAAU,SAAS,CAAC,aAAa,8BAA8B;wBACtE,wBAAwB,OAAO,CAAC,IAAI,iCAAiC;wBACrE,KAAK,SAAS,CAAC,aAAa,uCAAuC;iBACtE,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,SAAS,CAAC,SAAS,KAAK,+BAAuB,CAAC,OAAO,EAAE,CAAC;gBACnE,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,4BAA4B,CAAC,gBAAgB;oBACnD,OAAO,EAAE,OAAO,CAAC,IAAI;oBACrB,MAAM,EAAE,GAAG;oBACX,OAAO,EACL,IAAI,GAAG,0DAA0D;wBACjE,oEAAoE;wBACpE,2BAA2B,OAAO,CAAC,IAAI,IAAI;iBAC9C,CAAC,CAAC;YACL,CAAC;YAED,IAAI,SAAS,CAAC,WAAW,KAAK,wBAAgB,CAAC,cAAc,EAAE,CAAC;gBAC9D,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,4BAA4B,CAAC,oBAAoB;oBACvD,OAAO,EAAE,OAAO,CAAC,IAAI;oBACrB,MAAM,EAAE,GAAG;oBACX,OAAO,EACL,IAAI,GAAG,4DAA4D;wBACnE,kDAAkD,OAAO,CAAC,IAAI,IAAI;iBACrE,CAAC,CAAC;YACL,CAAC;iBAAM,IACL,OAAO,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;gBACxB,CAAC,wBAAwB,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,EACpD,CAAC;gBACD,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,4BAA4B,CAAC,eAAe;oBAClD,OAAO,EAAE,OAAO,CAAC,IAAI;oBACrB,MAAM,EAAE,GAAG;oBACX,OAAO,EACL,IAAI,GAAG,4BAA4B,SAAS,CAAC,WAAW,gBAAgB;wBACxE,IAAI,OAAO,CAAC,IAAI,8CAA8C;wBAC9D,gBAAgB,OAAO,CAAC,QAAQ,CAAC,GAAG,kCAAkC;wBACtE,gDAAgD;iBACnD,CAAC,CAAC;YACL,CAAC;YAED,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC;YACpD,IAAI,SAAS,KAAK,SAAS,IAAI,MAAM,EAAE,CAAC;gBACtC,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,4BAA4B,CAAC,eAAe;oBAClD,OAAO,EAAE,OAAO,CAAC,IAAI;oBACrB,MAAM,EAAE,GAAG;oBACX,OAAO,EACL,IAAI,GAAG,4CAA4C,SAAS,CAAC,MAAM,MAAM;wBACzE,+BAA+B,OAAO,CAAC,IAAI,0BAA0B;iBACxE,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvC,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,4BAA4B,CAAC,qBAAqB;oBACxD,OAAO,EAAE,OAAO,CAAC,IAAI;oBACrB,MAAM,EAAE,GAAG;oBACX,OAAO,EACL,IAAI,GAAG,kBAAkB,SAAS,CAAC,OAAO,2BAA2B;wBACrE,uEAAuE;wBACvE,oDAAoD;iBACvD,CAAC,CAAC;YACL,CAAC;YAGD,KAAK,CACH,OAAO,EACP,IAAA,qCAAkB,EAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/D,GAAG,CACJ,CAAC;YACF,KAAK,CAAC,YAAY,EAAE,cAAc,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC;YAChE,IAAI,SAAS,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACxC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC;YAC1D,CAAC;YACD,IAAI,SAAS,CAAC,YAAY,EAAE,iBAAiB,KAAK,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1E,IAAI,SAAS,CAAC,YAAY,EAAE,kBAAkB,KAAK,IAAI;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1E,IAAI,aAAa,CAAC,SAAS,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACrB,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,4BAA4B,CAAC,iBAAiB;gBACpD,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,OAAO,EACL,YAAY,OAAO,CAAC,IAAI,0BAA0B,SAAS,CAAC,OAAO,CAAC,IAAI;oBACxE,mEAAmE;oBACnE,qEAAqE;oBACrE,2EAA2E;aAC9E,CAAC,CAAC;QACL,CAAC;QAID,MAAM,WAAW,GAAG,CAAC,IAAuB,EAAE,EAAE,CAC9C,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,4BAA4B,CAAC,wBAAwB;gBAC3D,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,OAAO,EACL,YAAY,OAAO,CAAC,IAAI,0BAA0B,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;oBACrF,uCAAuC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB;oBAC1E,8DAA8D;aACjE,CAAC,CAAC;QACL,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,4BAA4B,CAAC,+BAA+B;gBAClE,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,OAAO,EACL,YAAY,OAAO,CAAC,IAAI,0BAA0B,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;oBACpF,kCAAkC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB;oBAC3E,wEAAwE;oBACxE,uCAAuC;aAC1C,CAAC,CAAC;QACL,CAAC;QAED,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC1B,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,4BAA4B,CAAC,iBAAiB;gBACpD,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,OAAO,EACL,YAAY,OAAO,CAAC,IAAI,mBAAmB,SAAS,CAAC,YAAY,CAAC,IAAI;oBACtE,sEAAsE;oBACtE,yEAAyE;oBACzE,sBAAsB;aACzB,CAAC,CAAC;QACL,CAAC;QAED,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC1B,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,4BAA4B,CAAC,uBAAuB;gBAC1D,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,OAAO,EACL,YAAY,OAAO,CAAC,IAAI,0BAA0B,SAAS,CAAC,YAAY,CAAC,IAAI;oBAC7E,0EAA0E;oBAC1E,0BAA0B;aAC7B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAMD,SAAgB,qBAAqB,CAAC,KAAkC;IACtE,MAAM,UAAU,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACpC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAC1B,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO,EAAE,CAC9D,CAAC;IACF,MAAM,IAAI,KAAK,CACb,sCAAsC,KAAK,CAAC,QAAQ,CAAC,cAAc,eAAe;QAChF,IAAI,UAAU,CAAC,MAAM,aAAa,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM;QAC1E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CACnB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './lib/resource-requirement';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resource-requirement/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./lib/resource-requirement"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resource-requirement/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C"}