@contractspec/lib.overlay-engine 1.57.0 → 1.58.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 (44) hide show
  1. package/dist/index.d.ts +8 -8
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +535 -8
  4. package/dist/merger.d.ts +5 -9
  5. package/dist/merger.d.ts.map +1 -1
  6. package/dist/merger.js +120 -101
  7. package/dist/node/index.js +534 -0
  8. package/dist/node/merger.js +125 -0
  9. package/dist/node/react.js +21 -0
  10. package/dist/node/registry.js +262 -0
  11. package/dist/node/runtime.js +176 -0
  12. package/dist/node/signer.js +81 -0
  13. package/dist/node/spec.js +15 -0
  14. package/dist/node/types.js +0 -0
  15. package/dist/node/validator.js +131 -0
  16. package/dist/react.d.ts +6 -9
  17. package/dist/react.d.ts.map +1 -1
  18. package/dist/react.js +17 -18
  19. package/dist/registry.d.ts +22 -25
  20. package/dist/registry.d.ts.map +1 -1
  21. package/dist/registry.js +254 -98
  22. package/dist/runtime.d.ts +19 -23
  23. package/dist/runtime.d.ts.map +1 -1
  24. package/dist/runtime.js +174 -51
  25. package/dist/signer.d.ts +13 -17
  26. package/dist/signer.d.ts.map +1 -1
  27. package/dist/signer.js +71 -52
  28. package/dist/spec.d.ts +65 -69
  29. package/dist/spec.d.ts.map +1 -1
  30. package/dist/spec.js +13 -12
  31. package/dist/types.d.ts +25 -28
  32. package/dist/types.d.ts.map +1 -1
  33. package/dist/types.js +1 -0
  34. package/dist/validator.d.ts +12 -16
  35. package/dist/validator.d.ts.map +1 -1
  36. package/dist/validator.js +123 -92
  37. package/package.json +75 -31
  38. package/dist/merger.js.map +0 -1
  39. package/dist/react.js.map +0 -1
  40. package/dist/registry.js.map +0 -1
  41. package/dist/runtime.js.map +0 -1
  42. package/dist/signer.js.map +0 -1
  43. package/dist/spec.js.map +0 -1
  44. package/dist/validator.js.map +0 -1
package/dist/runtime.js CHANGED
@@ -1,54 +1,177 @@
1
- import { applyOverlayModifications } from "./merger.js";
1
+ // @bun
2
+ // src/merger.ts
3
+ function applyOverlayModifications(target, overlays, options = {}) {
4
+ if (!overlays.length) {
5
+ return target;
6
+ }
7
+ const states = target.fields.map((field) => ({
8
+ key: field.key,
9
+ field: { ...field },
10
+ hidden: field.visible === false
11
+ }));
12
+ const fieldMap = new Map(states.map((state) => [state.key, state]));
13
+ let orderSequence = target.fields.map((field) => field.key);
14
+ const handleMissing = (field, overlayId) => {
15
+ if (options.strict) {
16
+ throw new Error(`Overlay "${overlayId}" referenced unknown field "${field}".`);
17
+ }
18
+ };
19
+ overlays.forEach((overlay) => {
20
+ overlay.modifications.forEach((modification) => {
21
+ switch (modification.type) {
22
+ case "hideField": {
23
+ const state = fieldMap.get(modification.field);
24
+ if (!state)
25
+ return handleMissing(modification.field, overlay.overlayId);
26
+ state.hidden = true;
27
+ state.field.visible = false;
28
+ break;
29
+ }
30
+ case "renameLabel": {
31
+ const state = fieldMap.get(modification.field);
32
+ if (!state)
33
+ return handleMissing(modification.field, overlay.overlayId);
34
+ state.field.label = modification.newLabel;
35
+ break;
36
+ }
37
+ case "setDefault": {
38
+ const state = fieldMap.get(modification.field);
39
+ if (!state)
40
+ return handleMissing(modification.field, overlay.overlayId);
41
+ state.field.defaultValue = modification.value;
42
+ break;
43
+ }
44
+ case "addHelpText": {
45
+ const state = fieldMap.get(modification.field);
46
+ if (!state)
47
+ return handleMissing(modification.field, overlay.overlayId);
48
+ state.field.helpText = modification.text;
49
+ break;
50
+ }
51
+ case "makeRequired": {
52
+ const state = fieldMap.get(modification.field);
53
+ if (!state)
54
+ return handleMissing(modification.field, overlay.overlayId);
55
+ state.field.required = modification.required ?? true;
56
+ break;
57
+ }
58
+ case "reorderFields": {
59
+ const { filtered, missing } = normalizeOrderList(modification.fields, fieldMap);
60
+ if (missing.length && options.strict) {
61
+ missing.forEach((field) => handleMissing(field, overlay.overlayId));
62
+ }
63
+ orderSequence = applyReorder(orderSequence, filtered);
64
+ break;
65
+ }
66
+ default:
67
+ break;
68
+ }
69
+ });
70
+ });
71
+ const visibleFields = [];
72
+ const seen = new Set;
73
+ orderSequence.forEach((key) => {
74
+ const state = fieldMap.get(key);
75
+ if (!state || state.hidden) {
76
+ return;
77
+ }
78
+ seen.add(key);
79
+ visibleFields.push(state.field);
80
+ });
81
+ states.forEach((state) => {
82
+ if (state.hidden || seen.has(state.key)) {
83
+ return;
84
+ }
85
+ visibleFields.push(state.field);
86
+ });
87
+ visibleFields.forEach((field, index) => {
88
+ field.order = index;
89
+ field.visible = true;
90
+ });
91
+ return {
92
+ ...target,
93
+ fields: visibleFields
94
+ };
95
+ }
96
+ function normalizeOrderList(fields, fieldMap) {
97
+ const filtered = [];
98
+ const missing = [];
99
+ const seen = new Set;
100
+ fields.forEach((field) => {
101
+ if (!field?.trim()) {
102
+ return;
103
+ }
104
+ if (!fieldMap.has(field)) {
105
+ missing.push(field);
106
+ return;
107
+ }
108
+ if (seen.has(field)) {
109
+ return;
110
+ }
111
+ seen.add(field);
112
+ filtered.push(field);
113
+ });
114
+ return { filtered, missing };
115
+ }
116
+ function applyReorder(sequence, orderedFields) {
117
+ if (!orderedFields.length) {
118
+ return sequence;
119
+ }
120
+ const orderedSet = new Set(orderedFields);
121
+ const remainder = sequence.filter((key) => !orderedSet.has(key));
122
+ return [...orderedFields, ...remainder];
123
+ }
2
124
 
3
- //#region src/runtime.ts
4
- var OverlayEngine = class {
5
- registry;
6
- audit;
7
- constructor(options) {
8
- this.registry = options.registry;
9
- this.audit = options.audit;
10
- }
11
- apply(params) {
12
- const overlays = params.overlays ?? this.registry.forContext({
13
- capability: params.capability,
14
- workflow: params.workflow,
15
- dataView: params.dataView,
16
- presentation: params.presentation,
17
- operation: params.operation,
18
- tenantId: params.tenantId,
19
- role: params.role,
20
- userId: params.userId,
21
- device: params.device,
22
- tags: params.tags
23
- });
24
- const merged = applyOverlayModifications(params.target, overlays, { strict: params.strict });
25
- const context = extractContext(params);
26
- overlays.forEach((overlay) => {
27
- this.audit?.({
28
- overlay: {
29
- overlayId: overlay.overlayId,
30
- version: overlay.version
31
- },
32
- context,
33
- timestamp: (/* @__PURE__ */ new Date()).toISOString()
34
- });
35
- });
36
- return {
37
- target: merged,
38
- overlaysApplied: overlays
39
- };
40
- }
41
- };
125
+ // src/runtime.ts
126
+ class OverlayEngine {
127
+ registry;
128
+ audit;
129
+ constructor(options) {
130
+ this.registry = options.registry;
131
+ this.audit = options.audit;
132
+ }
133
+ apply(params) {
134
+ const overlays = params.overlays ?? this.registry.forContext({
135
+ capability: params.capability,
136
+ workflow: params.workflow,
137
+ dataView: params.dataView,
138
+ presentation: params.presentation,
139
+ operation: params.operation,
140
+ tenantId: params.tenantId,
141
+ role: params.role,
142
+ userId: params.userId,
143
+ device: params.device,
144
+ tags: params.tags
145
+ });
146
+ const merged = applyOverlayModifications(params.target, overlays, {
147
+ strict: params.strict
148
+ });
149
+ const context = extractContext(params);
150
+ overlays.forEach((overlay) => {
151
+ this.audit?.({
152
+ overlay: {
153
+ overlayId: overlay.overlayId,
154
+ version: overlay.version
155
+ },
156
+ context,
157
+ timestamp: new Date().toISOString()
158
+ });
159
+ });
160
+ return {
161
+ target: merged,
162
+ overlaysApplied: overlays
163
+ };
164
+ }
165
+ }
42
166
  function extractContext(params) {
43
- return {
44
- tenantId: params.tenantId,
45
- role: params.role,
46
- userId: params.userId,
47
- device: params.device,
48
- tags: params.tags
49
- };
167
+ return {
168
+ tenantId: params.tenantId,
169
+ role: params.role,
170
+ userId: params.userId,
171
+ device: params.device,
172
+ tags: params.tags
173
+ };
50
174
  }
51
-
52
- //#endregion
53
- export { OverlayEngine };
54
- //# sourceMappingURL=runtime.js.map
175
+ export {
176
+ OverlayEngine
177
+ };
package/dist/signer.d.ts CHANGED
@@ -1,19 +1,15 @@
1
- import { OverlaySignatureAlgorithm, OverlaySpec, SignedOverlaySpec } from "./spec.js";
2
- import { KeyLike } from "crypto";
3
-
4
- //#region src/signer.d.ts
5
- interface SignOverlayOptions {
6
- algorithm?: OverlaySignatureAlgorithm;
7
- keyId?: string;
8
- issuedAt?: Date | string;
9
- expiresAt?: Date | string;
10
- metadata?: Record<string, unknown>;
11
- publicKey?: string;
1
+ import { type KeyLike } from 'crypto';
2
+ import type { OverlaySignatureAlgorithm, OverlaySpec, SignedOverlaySpec } from './spec';
3
+ export interface SignOverlayOptions {
4
+ algorithm?: OverlaySignatureAlgorithm;
5
+ keyId?: string;
6
+ issuedAt?: Date | string;
7
+ expiresAt?: Date | string;
8
+ metadata?: Record<string, unknown>;
9
+ publicKey?: string;
12
10
  }
13
- declare function signOverlay(spec: OverlaySpec, privateKey: KeyLike | string | Buffer, options?: SignOverlayOptions): SignedOverlaySpec;
14
- declare function verifyOverlaySignature(overlay: SignedOverlaySpec): boolean;
15
- declare function canonicalizeOverlay(spec: OverlaySpec | SignedOverlaySpec): string;
16
- declare function stripSignature<T extends OverlaySpec | SignedOverlaySpec>(spec: T): OverlaySpec;
17
- //#endregion
18
- export { SignOverlayOptions, canonicalizeOverlay, signOverlay, stripSignature, verifyOverlaySignature };
11
+ export declare function signOverlay(spec: OverlaySpec, privateKey: KeyLike | string | Buffer, options?: SignOverlayOptions): SignedOverlaySpec;
12
+ export declare function verifyOverlaySignature(overlay: SignedOverlaySpec): boolean;
13
+ export declare function canonicalizeOverlay(spec: OverlaySpec | SignedOverlaySpec): string;
14
+ export declare function stripSignature<T extends OverlaySpec | SignedOverlaySpec>(spec: T): OverlaySpec;
19
15
  //# sourceMappingURL=signer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"signer.d.ts","names":[],"sources":["../src/signer.ts"],"mappings":";;;;UAeiB,kBAAA;EACf,SAAA,GAAY,yBAAA;EACZ,KAAA;EACA,QAAA,GAAW,IAAA;EACX,SAAA,GAAY,IAAA;EACZ,QAAA,GAAW,MAAA;EACX,SAAA;AAAA;AAAA,iBAGc,WAAA,CACd,IAAA,EAAM,WAAA,EACN,UAAA,EAAY,OAAA,YAAmB,MAAA,EAC/B,OAAA,GAAS,kBAAA,GACR,iBAAA;AAAA,iBAyCa,sBAAA,CAAuB,OAAA,EAAS,iBAAA;AAAA,iBAgChC,mBAAA,CACd,IAAA,EAAM,WAAA,GAAc,iBAAA;AAAA,iBAMN,cAAA,WAAyB,WAAA,GAAc,iBAAA,CAAA,CACrD,IAAA,EAAM,CAAA,GACL,WAAA"}
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,OAAO,EAGb,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EACV,yBAAyB,EACzB,WAAW,EACX,iBAAiB,EAClB,MAAM,QAAQ,CAAC;AAEhB,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,yBAAyB,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CACzB,IAAI,EAAE,WAAW,EACjB,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,EACrC,OAAO,GAAE,kBAAuB,GAC/B,iBAAiB,CAuCnB;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CA8B1E;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,WAAW,GAAG,iBAAiB,GACpC,MAAM,CAGR;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,WAAW,GAAG,iBAAiB,EACtE,IAAI,EAAE,CAAC,GACN,WAAW,CAGb"}
package/dist/signer.js CHANGED
@@ -1,63 +1,82 @@
1
+ // @bun
2
+ // src/signer.ts
1
3
  import stringify from "fast-json-stable-stringify";
2
- import { constants, createPrivateKey, createPublicKey, sign, verify } from "crypto";
3
-
4
- //#region src/signer.ts
4
+ import {
5
+ constants,
6
+ createPrivateKey,
7
+ createPublicKey,
8
+ sign,
9
+ verify
10
+ } from "crypto";
5
11
  function signOverlay(spec, privateKey, options = {}) {
6
- const algorithm = options.algorithm ?? "ed25519";
7
- const keyObject = typeof privateKey === "string" || Buffer.isBuffer(privateKey) ? createPrivateKey(privateKey) : privateKey;
8
- const payload = Buffer.from(canonicalizeOverlay(spec), "utf8");
9
- let rawSignature;
10
- if (algorithm === "ed25519") rawSignature = sign(null, payload, keyObject);
11
- else if (algorithm === "rsa-pss-sha256") rawSignature = sign("sha256", payload, {
12
- key: keyObject,
13
- padding: constants.RSA_PKCS1_PSS_PADDING,
14
- saltLength: 32
15
- });
16
- else throw new Error(`Unsupported overlay signature algorithm: ${algorithm}`);
17
- const publicKey = options.publicKey ?? createPublicKey(keyObject).export({
18
- format: "pem",
19
- type: "spki"
20
- }).toString();
21
- return {
22
- ...spec,
23
- signature: {
24
- algorithm,
25
- signature: rawSignature.toString("base64"),
26
- publicKey,
27
- keyId: options.keyId,
28
- issuedAt: toIso(options.issuedAt) ?? (/* @__PURE__ */ new Date()).toISOString(),
29
- expiresAt: toIso(options.expiresAt),
30
- metadata: options.metadata
31
- }
32
- };
12
+ const algorithm = options.algorithm ?? "ed25519";
13
+ const keyObject = typeof privateKey === "string" || Buffer.isBuffer(privateKey) ? createPrivateKey(privateKey) : privateKey;
14
+ const payload = Buffer.from(canonicalizeOverlay(spec), "utf8");
15
+ let rawSignature;
16
+ if (algorithm === "ed25519") {
17
+ rawSignature = sign(null, payload, keyObject);
18
+ } else if (algorithm === "rsa-pss-sha256") {
19
+ rawSignature = sign("sha256", payload, {
20
+ key: keyObject,
21
+ padding: constants.RSA_PKCS1_PSS_PADDING,
22
+ saltLength: 32
23
+ });
24
+ } else {
25
+ throw new Error(`Unsupported overlay signature algorithm: ${algorithm}`);
26
+ }
27
+ const publicKey = options.publicKey ?? createPublicKey(keyObject).export({ format: "pem", type: "spki" }).toString();
28
+ return {
29
+ ...spec,
30
+ signature: {
31
+ algorithm,
32
+ signature: rawSignature.toString("base64"),
33
+ publicKey,
34
+ keyId: options.keyId,
35
+ issuedAt: toIso(options.issuedAt) ?? new Date().toISOString(),
36
+ expiresAt: toIso(options.expiresAt),
37
+ metadata: options.metadata
38
+ }
39
+ };
33
40
  }
34
41
  function verifyOverlaySignature(overlay) {
35
- if (!overlay.signature?.signature) throw new Error(`Overlay "${overlay.overlayId}" is missing signature metadata.`);
36
- const payload = Buffer.from(canonicalizeOverlay(overlay), "utf8");
37
- const signature = Buffer.from(overlay.signature.signature, "base64");
38
- const publicKey = createPublicKey(overlay.signature.publicKey);
39
- if (overlay.signature.algorithm === "ed25519") return verify(null, payload, publicKey, signature);
40
- if (overlay.signature.algorithm === "rsa-pss-sha256") return verify("sha256", payload, {
41
- key: publicKey,
42
- padding: constants.RSA_PKCS1_PSS_PADDING,
43
- saltLength: 32
44
- }, signature);
45
- throw new Error(`Unsupported overlay signature algorithm: ${overlay.signature.algorithm}`);
42
+ if (!overlay.signature?.signature) {
43
+ throw new Error(`Overlay "${overlay.overlayId}" is missing signature metadata.`);
44
+ }
45
+ const payload = Buffer.from(canonicalizeOverlay(overlay), "utf8");
46
+ const signature = Buffer.from(overlay.signature.signature, "base64");
47
+ const publicKey = createPublicKey(overlay.signature.publicKey);
48
+ if (overlay.signature.algorithm === "ed25519") {
49
+ return verify(null, payload, publicKey, signature);
50
+ }
51
+ if (overlay.signature.algorithm === "rsa-pss-sha256") {
52
+ return verify("sha256", payload, {
53
+ key: publicKey,
54
+ padding: constants.RSA_PKCS1_PSS_PADDING,
55
+ saltLength: 32
56
+ }, signature);
57
+ }
58
+ throw new Error(`Unsupported overlay signature algorithm: ${overlay.signature.algorithm}`);
46
59
  }
47
60
  function canonicalizeOverlay(spec) {
48
- const { signature, ...rest } = spec;
49
- return stringify(rest);
61
+ const { signature, ...rest } = spec;
62
+ return stringify(rest);
50
63
  }
51
64
  function stripSignature(spec) {
52
- const { signature, ...rest } = spec;
53
- return { ...rest };
65
+ const { signature, ...rest } = spec;
66
+ return { ...rest };
54
67
  }
55
68
  function toIso(value) {
56
- if (!value) return;
57
- if (typeof value === "string") return new Date(value).toISOString();
58
- return value.toISOString();
69
+ if (!value) {
70
+ return;
71
+ }
72
+ if (typeof value === "string") {
73
+ return new Date(value).toISOString();
74
+ }
75
+ return value.toISOString();
59
76
  }
60
-
61
- //#endregion
62
- export { canonicalizeOverlay, signOverlay, stripSignature, verifyOverlaySignature };
63
- //# sourceMappingURL=signer.js.map
77
+ export {
78
+ verifyOverlaySignature,
79
+ stripSignature,
80
+ signOverlay,
81
+ canonicalizeOverlay
82
+ };
package/dist/spec.d.ts CHANGED
@@ -1,83 +1,79 @@
1
- import { AnyOperationSpec } from "@contractspec/lib.contracts";
2
-
3
- //#region src/spec.d.ts
4
- type OverlayScopeKey = 'tenantId' | 'role' | 'userId' | 'device' | 'tags';
5
- interface OverlayScopeContext {
6
- tenantId?: string;
7
- role?: string;
8
- userId?: string;
9
- device?: string;
10
- tags?: string[];
1
+ import type { AnyOperationSpec } from '@contractspec/lib.contracts';
2
+ export type OverlayScopeKey = 'tenantId' | 'role' | 'userId' | 'device' | 'tags';
3
+ export interface OverlayScopeContext {
4
+ tenantId?: string;
5
+ role?: string;
6
+ userId?: string;
7
+ device?: string;
8
+ tags?: string[];
11
9
  }
12
- interface OverlayTargetRef {
13
- capability?: string;
14
- workflow?: string;
15
- dataView?: string;
16
- presentation?: string;
17
- operation?: AnyOperationSpec['meta']['key'];
10
+ export interface OverlayTargetRef {
11
+ capability?: string;
12
+ workflow?: string;
13
+ dataView?: string;
14
+ presentation?: string;
15
+ operation?: AnyOperationSpec['meta']['key'];
18
16
  }
19
- interface OverlayAppliesTo extends OverlayScopeContext, OverlayTargetRef {
20
- /**
21
- * Optional label to describe why this overlay exists (displayed in tooling).
22
- */
23
- label?: string;
17
+ export interface OverlayAppliesTo extends OverlayScopeContext, OverlayTargetRef {
18
+ /**
19
+ * Optional label to describe why this overlay exists (displayed in tooling).
20
+ */
21
+ label?: string;
24
22
  }
25
- type OverlayModification = HideFieldModification | RenameLabelModification | ReorderFieldsModification | SetDefaultModification | AddHelpTextModification | MakeRequiredModification;
26
- interface OverlayFieldModificationBase {
27
- field: string;
28
- description?: string;
23
+ export type OverlayModification = HideFieldModification | RenameLabelModification | ReorderFieldsModification | SetDefaultModification | AddHelpTextModification | MakeRequiredModification;
24
+ export interface OverlayFieldModificationBase {
25
+ field: string;
26
+ description?: string;
29
27
  }
30
- interface HideFieldModification extends OverlayFieldModificationBase {
31
- type: 'hideField';
32
- reason?: string;
28
+ export interface HideFieldModification extends OverlayFieldModificationBase {
29
+ type: 'hideField';
30
+ reason?: string;
33
31
  }
34
- interface RenameLabelModification extends OverlayFieldModificationBase {
35
- type: 'renameLabel';
36
- newLabel: string;
32
+ export interface RenameLabelModification extends OverlayFieldModificationBase {
33
+ type: 'renameLabel';
34
+ newLabel: string;
37
35
  }
38
- interface ReorderFieldsModification {
39
- type: 'reorderFields';
40
- fields: string[];
41
- description?: string;
36
+ export interface ReorderFieldsModification {
37
+ type: 'reorderFields';
38
+ fields: string[];
39
+ description?: string;
42
40
  }
43
- interface SetDefaultModification extends OverlayFieldModificationBase {
44
- type: 'setDefault';
45
- value: unknown;
41
+ export interface SetDefaultModification extends OverlayFieldModificationBase {
42
+ type: 'setDefault';
43
+ value: unknown;
46
44
  }
47
- interface AddHelpTextModification extends OverlayFieldModificationBase {
48
- type: 'addHelpText';
49
- text: string;
45
+ export interface AddHelpTextModification extends OverlayFieldModificationBase {
46
+ type: 'addHelpText';
47
+ text: string;
50
48
  }
51
- interface MakeRequiredModification extends OverlayFieldModificationBase {
52
- type: 'makeRequired';
53
- required?: boolean;
49
+ export interface MakeRequiredModification extends OverlayFieldModificationBase {
50
+ type: 'makeRequired';
51
+ required?: boolean;
54
52
  }
55
- interface OverlaySpec {
56
- overlayId: string;
57
- version: string;
58
- description?: string;
59
- appliesTo: OverlayAppliesTo;
60
- modifications: OverlayModification[];
61
- metadata?: Record<string, unknown>;
62
- createdBy?: string;
63
- createdAt?: string;
53
+ export interface OverlaySpec {
54
+ overlayId: string;
55
+ version: string;
56
+ description?: string;
57
+ appliesTo: OverlayAppliesTo;
58
+ modifications: OverlayModification[];
59
+ metadata?: Record<string, unknown>;
60
+ createdBy?: string;
61
+ createdAt?: string;
64
62
  }
65
- type OverlaySignatureAlgorithm = 'ed25519' | 'rsa-pss-sha256';
66
- interface OverlaySignatureBlock {
67
- algorithm: OverlaySignatureAlgorithm;
68
- signature: string;
69
- publicKey: string;
70
- keyId?: string;
71
- issuedAt?: string;
72
- expiresAt?: string;
73
- metadata?: Record<string, unknown>;
63
+ export type OverlaySignatureAlgorithm = 'ed25519' | 'rsa-pss-sha256';
64
+ export interface OverlaySignatureBlock {
65
+ algorithm: OverlaySignatureAlgorithm;
66
+ signature: string;
67
+ publicKey: string;
68
+ keyId?: string;
69
+ issuedAt?: string;
70
+ expiresAt?: string;
71
+ metadata?: Record<string, unknown>;
74
72
  }
75
- type SignedOverlaySpec = OverlaySpec & {
76
- signature: OverlaySignatureBlock;
73
+ export type SignedOverlaySpec = OverlaySpec & {
74
+ signature: OverlaySignatureBlock;
77
75
  };
78
- type OverlayInput = OverlaySpec | SignedOverlaySpec;
79
- declare const OVERLAY_SCOPE_ORDER: OverlayScopeKey[];
80
- declare function defineOverlay<T extends OverlaySpec>(spec: T): T;
81
- //#endregion
82
- export { AddHelpTextModification, HideFieldModification, MakeRequiredModification, OVERLAY_SCOPE_ORDER, OverlayAppliesTo, OverlayFieldModificationBase, OverlayInput, OverlayModification, OverlayScopeContext, OverlayScopeKey, OverlaySignatureAlgorithm, OverlaySignatureBlock, OverlaySpec, OverlayTargetRef, RenameLabelModification, ReorderFieldsModification, SetDefaultModification, SignedOverlaySpec, defineOverlay };
76
+ export type OverlayInput = OverlaySpec | SignedOverlaySpec;
77
+ export declare const OVERLAY_SCOPE_ORDER: OverlayScopeKey[];
78
+ export declare function defineOverlay<T extends OverlaySpec>(spec: T): T;
83
79
  //# sourceMappingURL=spec.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spec.d.ts","names":[],"sources":["../src/spec.ts"],"mappings":";;;KAEY,eAAA;AAAA,UAOK,mBAAA;EACf,QAAA;EACA,IAAA;EACA,MAAA;EACA,MAAA;EACA,IAAA;AAAA;AAAA,UAGe,gBAAA;EACf,UAAA;EACA,QAAA;EACA,QAAA;EACA,YAAA;EACA,SAAA,GAAY,gBAAA;AAAA;AAAA,UAGG,gBAAA,SACP,mBAAA,EAAqB,gBAAA;EAZzB;;AAGN;EAaE,KAAA;AAAA;AAAA,KAGU,mBAAA,GACR,qBAAA,GACA,uBAAA,GACA,yBAAA,GACA,sBAAA,GACA,uBAAA,GACA,wBAAA;AAAA,UAEa,4BAAA;EACf,KAAA;EACA,WAAA;AAAA;AAAA,UAGe,qBAAA,SAA8B,4BAAA;EAC7C,IAAA;EACA,MAAA;AAAA;AAAA,UAGe,uBAAA,SAAgC,4BAAA;EAC/C,IAAA;EACA,QAAA;AAAA;AAAA,UAGe,yBAAA;EACf,IAAA;EACA,MAAA;EACA,WAAA;AAAA;AAAA,UAGe,sBAAA,SAA+B,4BAAA;EAC9C,IAAA;EACA,KAAA;AAAA;AAAA,UAGe,uBAAA,SAAgC,4BAAA;EAC/C,IAAA;EACA,IAAA;AAAA;AAAA,UAGe,wBAAA,SAAiC,4BAAA;EAChD,IAAA;EACA,QAAA;AAAA;AAAA,UAGe,WAAA;EACf,SAAA;EACA,OAAA;EACA,WAAA;EACA,SAAA,EAAW,gBAAA;EACX,aAAA,EAAe,mBAAA;EACf,QAAA,GAAW,MAAA;EACX,SAAA;EACA,SAAA;AAAA;AAAA,KAGU,yBAAA;AAAA,UAEK,qBAAA;EACf,SAAA,EAAW,yBAAA;EACX,SAAA;EACA,SAAA;EACA,KAAA;EACA,QAAA;EACA,SAAA;EACA,QAAA,GAAW,MAAA;AAAA;AAAA,KAGD,iBAAA,GAAoB,WAAA;EAC9B,SAAA,EAAW,qBAAA;AAAA;AAAA,KAGD,YAAA,GAAe,WAAA,GAAc,iBAAA;AAAA,cAE5B,mBAAA,EAAqB,eAAA;AAAA,iBAQlB,aAAA,WAAwB,WAAA,CAAA,CAAa,IAAA,EAAM,CAAA,GAAI,CAAA"}
1
+ {"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"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"}
package/dist/spec.js CHANGED
@@ -1,15 +1,16 @@
1
- //#region src/spec.ts
2
- const OVERLAY_SCOPE_ORDER = [
3
- "tenantId",
4
- "role",
5
- "userId",
6
- "device",
7
- "tags"
1
+ // @bun
2
+ // src/spec.ts
3
+ var OVERLAY_SCOPE_ORDER = [
4
+ "tenantId",
5
+ "role",
6
+ "userId",
7
+ "device",
8
+ "tags"
8
9
  ];
9
10
  function defineOverlay(spec) {
10
- return spec;
11
+ return spec;
11
12
  }
12
-
13
- //#endregion
14
- export { OVERLAY_SCOPE_ORDER, defineOverlay };
15
- //# sourceMappingURL=spec.js.map
13
+ export {
14
+ defineOverlay,
15
+ OVERLAY_SCOPE_ORDER
16
+ };