@xemahq/contracts 0.32.0 → 0.33.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.
- package/dist/.source-stamp.json +2 -2
- package/dist/authorization-facts/index.d.ts +6 -0
- package/dist/authorization-facts/index.d.ts.map +1 -0
- package/dist/authorization-facts/index.js +22 -0
- package/dist/authorization-facts/index.js.map +1 -0
- package/dist/authorization-facts/lib/fact-tuple.d.ts +38 -0
- package/dist/authorization-facts/lib/fact-tuple.d.ts.map +1 -0
- package/dist/authorization-facts/lib/fact-tuple.js +48 -0
- package/dist/authorization-facts/lib/fact-tuple.js.map +1 -0
- package/dist/authorization-facts/lib/facts-apply.d.ts +244 -0
- package/dist/authorization-facts/lib/facts-apply.d.ts.map +1 -0
- package/dist/authorization-facts/lib/facts-apply.js +141 -0
- package/dist/authorization-facts/lib/facts-apply.js.map +1 -0
- package/dist/authorization-facts/lib/facts-snapshot.d.ts +70 -0
- package/dist/authorization-facts/lib/facts-snapshot.d.ts.map +1 -0
- package/dist/authorization-facts/lib/facts-snapshot.js +39 -0
- package/dist/authorization-facts/lib/facts-snapshot.js.map +1 -0
- package/dist/authorization-facts/lib/facts-writer-authority.d.ts +15 -0
- package/dist/authorization-facts/lib/facts-writer-authority.d.ts.map +1 -0
- package/dist/authorization-facts/lib/facts-writer-authority.js +55 -0
- package/dist/authorization-facts/lib/facts-writer-authority.js.map +1 -0
- package/dist/authorization-facts/lib/revoke-intent.d.ts +23 -0
- package/dist/authorization-facts/lib/revoke-intent.d.ts.map +1 -0
- package/dist/authorization-facts/lib/revoke-intent.js +37 -0
- package/dist/authorization-facts/lib/revoke-intent.js.map +1 -0
- package/dist/authorization-module/index.d.ts +6 -0
- package/dist/authorization-module/index.d.ts.map +1 -0
- package/dist/authorization-module/index.js +22 -0
- package/dist/authorization-module/index.js.map +1 -0
- package/dist/authorization-module/lib/authorization-composition-error.d.ts +45 -0
- package/dist/authorization-module/lib/authorization-composition-error.d.ts.map +1 -0
- package/dist/authorization-module/lib/authorization-composition-error.js +52 -0
- package/dist/authorization-module/lib/authorization-composition-error.js.map +1 -0
- package/dist/authorization-module/lib/authorization-module-contribution.d.ts +143 -0
- package/dist/authorization-module/lib/authorization-module-contribution.d.ts.map +1 -0
- package/dist/authorization-module/lib/authorization-module-contribution.js +111 -0
- package/dist/authorization-module/lib/authorization-module-contribution.js.map +1 -0
- package/dist/authorization-module/lib/authorization-module-envelope.d.ts +116 -0
- package/dist/authorization-module/lib/authorization-module-envelope.d.ts.map +1 -0
- package/dist/authorization-module/lib/authorization-module-envelope.js +104 -0
- package/dist/authorization-module/lib/authorization-module-envelope.js.map +1 -0
- package/dist/authorization-module/lib/authorization-namespace.d.ts +23 -0
- package/dist/authorization-module/lib/authorization-namespace.d.ts.map +1 -0
- package/dist/authorization-module/lib/authorization-namespace.js +82 -0
- package/dist/authorization-module/lib/authorization-namespace.js.map +1 -0
- package/dist/authorization-module/lib/platform-authorization-modules.d.ts +17 -0
- package/dist/authorization-module/lib/platform-authorization-modules.d.ts.map +1 -0
- package/dist/authorization-module/lib/platform-authorization-modules.js +46 -0
- package/dist/authorization-module/lib/platform-authorization-modules.js.map +1 -0
- package/dist/authorization-module/platform/xema_capability.fga +23 -0
- package/dist/authorization-module/platform/xema_capability.fga.yaml +108 -0
- package/dist/authorization-module/platform/xema_core.fga +81 -0
- package/dist/authorization-module/platform/xema_core.fga.yaml +121 -0
- package/dist/authorization-module/platform/xema_sharing.fga +113 -0
- package/dist/authorization-module/platform/xema_sharing.fga.yaml +67 -0
- package/dist/authorization-module/server/authorization-compatibility.d.ts +16 -0
- package/dist/authorization-module/server/authorization-compatibility.d.ts.map +1 -0
- package/dist/authorization-module/server/authorization-compatibility.js +94 -0
- package/dist/authorization-module/server/authorization-compatibility.js.map +1 -0
- package/dist/authorization-module/server/authorization-model-json.d.ts +65 -0
- package/dist/authorization-module/server/authorization-model-json.d.ts.map +1 -0
- package/dist/authorization-module/server/authorization-model-json.js +21 -0
- package/dist/authorization-module/server/authorization-model-json.js.map +1 -0
- package/dist/authorization-module/server/compose-authorization-base.d.ts +67 -0
- package/dist/authorization-module/server/compose-authorization-base.d.ts.map +1 -0
- package/dist/authorization-module/server/compose-authorization-base.js +511 -0
- package/dist/authorization-module/server/compose-authorization-base.js.map +1 -0
- package/dist/authorization-module/server/index.d.ts +5 -0
- package/dist/authorization-module/server/index.d.ts.map +1 -0
- package/dist/authorization-module/server/index.js +21 -0
- package/dist/authorization-module/server/index.js.map +1 -0
- package/dist/authorization-module/server/platform-module-files.d.ts +16 -0
- package/dist/authorization-module/server/platform-module-files.d.ts.map +1 -0
- package/dist/authorization-module/server/platform-module-files.js +42 -0
- package/dist/authorization-module/server/platform-module-files.js.map +1 -0
- package/dist/authzen/index.d.ts +7 -0
- package/dist/authzen/index.d.ts.map +1 -0
- package/dist/authzen/index.js +23 -0
- package/dist/authzen/index.js.map +1 -0
- package/dist/authzen/lib/authzen-entities.d.ts +40 -0
- package/dist/authzen/lib/authzen-entities.d.ts.map +1 -0
- package/dist/authzen/lib/authzen-entities.js +48 -0
- package/dist/authzen/lib/authzen-entities.js.map +1 -0
- package/dist/authzen/lib/authzen-evaluation.d.ts +101 -0
- package/dist/authzen/lib/authzen-evaluation.d.ts.map +1 -0
- package/dist/authzen/lib/authzen-evaluation.js +103 -0
- package/dist/authzen/lib/authzen-evaluation.js.map +1 -0
- package/dist/authzen/lib/authzen-metadata.d.ts +25 -0
- package/dist/authzen/lib/authzen-metadata.d.ts.map +1 -0
- package/dist/authzen/lib/authzen-metadata.js +54 -0
- package/dist/authzen/lib/authzen-metadata.js.map +1 -0
- package/dist/authzen/lib/authzen-search.d.ts +135 -0
- package/dist/authzen/lib/authzen-search.d.ts.map +1 -0
- package/dist/authzen/lib/authzen-search.js +89 -0
- package/dist/authzen/lib/authzen-search.js.map +1 -0
- package/dist/authzen/lib/authzen-snapshot.d.ts +47 -0
- package/dist/authzen/lib/authzen-snapshot.d.ts.map +1 -0
- package/dist/authzen/lib/authzen-snapshot.js +96 -0
- package/dist/authzen/lib/authzen-snapshot.js.map +1 -0
- package/dist/authzen/lib/xema-authzen-profile.d.ts +155 -0
- package/dist/authzen/lib/xema-authzen-profile.d.ts.map +1 -0
- package/dist/authzen/lib/xema-authzen-profile.js +152 -0
- package/dist/authzen/lib/xema-authzen-profile.js.map +1 -0
- package/dist/contribution/lib/contribution-kind.d.ts +1 -0
- package/dist/contribution/lib/contribution-kind.d.ts.map +1 -1
- package/dist/contribution/lib/contribution-kind.js +1 -0
- package/dist/contribution/lib/contribution-kind.js.map +1 -1
- package/dist/platform-generation/index.d.ts +2 -0
- package/dist/platform-generation/index.d.ts.map +1 -0
- package/dist/platform-generation/index.js +18 -0
- package/dist/platform-generation/index.js.map +1 -0
- package/dist/platform-generation/lib/platform-generation.d.ts +20 -0
- package/dist/platform-generation/lib/platform-generation.d.ts.map +1 -0
- package/dist/platform-generation/lib/platform-generation.js +77 -0
- package/dist/platform-generation/lib/platform-generation.js.map +1 -0
- package/dist/resource/lib/resource-kind-descriptor.d.ts.map +1 -1
- package/dist/resource/lib/resource-kind-descriptor.js.map +1 -1
- package/dist/resource/lib/resource-kind-registry.d.ts.map +1 -1
- package/dist/resource/lib/resource-kind-registry.js.map +1 -1
- package/dist/resource/lib/resource-ownership-contribution.d.ts.map +1 -1
- package/dist/resource/lib/resource-ownership-contribution.js.map +1 -1
- package/package.json +6 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"facts-snapshot.js","sourceRoot":"","sources":["../../../src/authorization-facts/lib/facts-snapshot.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,6CAAmE;AACnE,+CAA6D;AAchD,QAAA,8BAA8B,GAAG,OAAC;KAC5C,MAAM,CAAC;IACN,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,IAAI,EAAE,2BAAc;IAEpB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACpC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;CAC5C,CAAC;KACD,MAAM,EAAE,CAAC;AAKC,QAAA,+BAA+B,GAAG,OAAC;KAC7C,MAAM,CAAC;IACN,OAAO,EAAE,OAAC,CAAC,KAAK,CAAC,0CAA4B,CAAC;IAE9C,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE;CACvB,CAAC;KACD,MAAM,EAAE,CAAC;AAMC,QAAA,gCAAgC,GAAG,OAAC;KAC9C,MAAM,CAAC;IACN,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,MAAM,EAAE,gCAAmB;CAC5B,CAAC;KACD,MAAM,EAAE,CAAC;AAMC,QAAA,iCAAiC,GAAG,OAAC,CAAC,kBAAkB,CACnE,SAAS,EACT;IACE,OAAC;SACE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,0CAA4B,EAAE,CAAC;SAC3E,MAAM,EAAE;IACX,OAAC;SACE,MAAM,CAAC;QACN,OAAO,EAAE,OAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QACxB,MAAM,EAAE,gCAAmB;QAC3B,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;KACrC,CAAC;SACD,MAAM,EAAE;CACZ,CACF,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { FactsApplyRefusal, type FactsApplyRequest } from './facts-apply';
|
|
3
|
+
export declare const WritableRelationsSchema: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
|
|
4
|
+
export type WritableRelations = z.infer<typeof WritableRelationsSchema>;
|
|
5
|
+
export interface FactsWriterAuthority {
|
|
6
|
+
readonly biomeId: string;
|
|
7
|
+
readonly writableRelations: WritableRelations;
|
|
8
|
+
}
|
|
9
|
+
export interface FactsFenceViolation {
|
|
10
|
+
readonly refusal: FactsApplyRefusal;
|
|
11
|
+
readonly changeIndex: number | null;
|
|
12
|
+
readonly message: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function factsFenceViolations(request: FactsApplyRequest, authority: FactsWriterAuthority): FactsFenceViolation[];
|
|
15
|
+
//# sourceMappingURL=facts-writer-authority.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"facts-writer-authority.d.ts","sourceRoot":"","sources":["../../../src/authorization-facts/lib/facts-writer-authority.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAEL,iBAAiB,EACjB,KAAK,iBAAiB,EACvB,MAAM,eAAe,CAAC;AAevB,eAAO,MAAM,uBAAuB,mDAGnC,CAAC;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,MAAM,WAAW,oBAAoB;IAEnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;CAC/C;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAWD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,oBAAoB,GAC9B,mBAAmB,EAAE,CA6CvB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WritableRelationsSchema = void 0;
|
|
4
|
+
exports.factsFenceViolations = factsFenceViolations;
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const authzen_1 = require("../../authzen");
|
|
7
|
+
const fact_tuple_1 = require("./fact-tuple");
|
|
8
|
+
const facts_apply_1 = require("./facts-apply");
|
|
9
|
+
exports.WritableRelationsSchema = zod_1.z.record(fact_tuple_1.FactTypeSchema, zod_1.z.array(fact_tuple_1.FactRelationSchema).min(1));
|
|
10
|
+
function factsFenceViolations(request, authority) {
|
|
11
|
+
const violations = [];
|
|
12
|
+
if (request.biomeId !== authority.biomeId) {
|
|
13
|
+
violations.push({
|
|
14
|
+
refusal: facts_apply_1.FactsApplyRefusal.WriterMismatch,
|
|
15
|
+
changeIndex: null,
|
|
16
|
+
message: `the request writes as biome "${request.biomeId}" but the caller is biome "${authority.biomeId}".`,
|
|
17
|
+
});
|
|
18
|
+
return violations;
|
|
19
|
+
}
|
|
20
|
+
request.changes.forEach((change, index) => {
|
|
21
|
+
const { object } = change;
|
|
22
|
+
const writable = authority.writableRelations[object.type];
|
|
23
|
+
if (writable === undefined) {
|
|
24
|
+
violations.push({
|
|
25
|
+
refusal: facts_apply_1.FactsApplyRefusal.TypeNotWritable,
|
|
26
|
+
changeIndex: index,
|
|
27
|
+
message: `biome "${authority.biomeId}" may not write facts on type "${object.type}".`,
|
|
28
|
+
});
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (!(0, authzen_1.resourceBelongsToOrg)(object, request.orgId)) {
|
|
32
|
+
violations.push({
|
|
33
|
+
refusal: facts_apply_1.FactsApplyRefusal.TenantMismatch,
|
|
34
|
+
changeIndex: index,
|
|
35
|
+
message: `object ${object.type}:${object.id} is not in org "${request.orgId}".`,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
const relations = change.kind === facts_apply_1.FactChangeKind.Delta
|
|
39
|
+
? [...change.writes, ...change.deletes].map((t) => t.relation)
|
|
40
|
+
: change.kind === facts_apply_1.FactChangeKind.DesiredState
|
|
41
|
+
? Object.keys(change.relations)
|
|
42
|
+
: [];
|
|
43
|
+
for (const relation of new Set(relations)) {
|
|
44
|
+
if (!writable.includes(relation)) {
|
|
45
|
+
violations.push({
|
|
46
|
+
refusal: facts_apply_1.FactsApplyRefusal.RelationNotWritable,
|
|
47
|
+
changeIndex: index,
|
|
48
|
+
message: `relation "${object.type}#${relation}" is not writable by biome "${authority.biomeId}".`,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
return violations;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=facts-writer-authority.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"facts-writer-authority.js","sourceRoot":"","sources":["../../../src/authorization-facts/lib/facts-writer-authority.ts"],"names":[],"mappings":";;;AAmDA,oDAgDC;AAnGD,6BAAwB;AAExB,2CAAqD;AAErD,6CAAkE;AAClE,+CAIuB;AAeV,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAC7C,2BAAc,EACd,OAAC,CAAC,KAAK,CAAC,+BAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CACnC,CAAC;AAwBF,SAAgB,oBAAoB,CAClC,OAA0B,EAC1B,SAA+B;IAE/B,MAAM,UAAU,GAA0B,EAAE,CAAC;IAC7C,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;QAC1C,UAAU,CAAC,IAAI,CAAC;YACd,OAAO,EAAE,+BAAiB,CAAC,cAAc;YACzC,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,gCAAgC,OAAO,CAAC,OAAO,8BAA8B,SAAS,CAAC,OAAO,IAAI;SAC5G,CAAC,CAAC;QACH,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACxC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QAC1B,MAAM,QAAQ,GAAG,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,UAAU,CAAC,IAAI,CAAC;gBACd,OAAO,EAAE,+BAAiB,CAAC,eAAe;gBAC1C,WAAW,EAAE,KAAK;gBAClB,OAAO,EAAE,UAAU,SAAS,CAAC,OAAO,kCAAkC,MAAM,CAAC,IAAI,IAAI;aACtF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAA,8BAAoB,EAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,UAAU,CAAC,IAAI,CAAC;gBACd,OAAO,EAAE,+BAAiB,CAAC,cAAc;gBACzC,WAAW,EAAE,KAAK;gBAClB,OAAO,EAAE,UAAU,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,mBAAmB,OAAO,CAAC,KAAK,IAAI;aAChF,CAAC,CAAC;QACL,CAAC;QACD,MAAM,SAAS,GACb,MAAM,CAAC,IAAI,KAAK,4BAAc,CAAC,KAAK;YAClC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC9D,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,4BAAc,CAAC,YAAY;gBAC3C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;gBAC/B,CAAC,CAAC,EAAE,CAAC;QACX,KAAK,MAAM,QAAQ,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjC,UAAU,CAAC,IAAI,CAAC;oBACd,OAAO,EAAE,+BAAiB,CAAC,mBAAmB;oBAC9C,WAAW,EAAE,KAAK;oBAClB,OAAO,EAAE,aAAa,MAAM,CAAC,IAAI,IAAI,QAAQ,+BAA+B,SAAS,CAAC,OAAO,IAAI;iBAClG,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare enum RevokeIntentState {
|
|
3
|
+
Pending = "pending",
|
|
4
|
+
Applied = "applied",
|
|
5
|
+
Settled = "settled"
|
|
6
|
+
}
|
|
7
|
+
export declare const RevokeIntentStateSchema: z.ZodEnum<typeof RevokeIntentState>;
|
|
8
|
+
export declare const REVOKE_INTENT_TRANSITIONS: Readonly<Record<RevokeIntentState, readonly RevokeIntentState[]>>;
|
|
9
|
+
export declare function isLegalRevokeIntentTransition(from: RevokeIntentState, to: RevokeIntentState): boolean;
|
|
10
|
+
export declare const RevokeIntentSchema: z.ZodObject<{
|
|
11
|
+
id: z.ZodString;
|
|
12
|
+
orgId: z.ZodString;
|
|
13
|
+
object: z.ZodObject<{
|
|
14
|
+
type: z.ZodString;
|
|
15
|
+
id: z.ZodString;
|
|
16
|
+
}, z.core.$strict>;
|
|
17
|
+
version: z.ZodNumber;
|
|
18
|
+
state: z.ZodEnum<typeof RevokeIntentState>;
|
|
19
|
+
createdAt: z.ZodString;
|
|
20
|
+
attempts: z.ZodNumber;
|
|
21
|
+
}, z.core.$strict>;
|
|
22
|
+
export type RevokeIntent = z.infer<typeof RevokeIntentSchema>;
|
|
23
|
+
//# sourceMappingURL=revoke-intent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revoke-intent.d.ts","sourceRoot":"","sources":["../../../src/authorization-facts/lib/revoke-intent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA4BxB,oBAAY,iBAAiB;IAE3B,OAAO,YAAY;IAEnB,OAAO,YAAY;IAEnB,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,uBAAuB,qCAAkC,CAAC;AAOvE,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAC9C,MAAM,CAAC,iBAAiB,EAAE,SAAS,iBAAiB,EAAE,CAAC,CAQvD,CAAC;AAEH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,iBAAiB,EACvB,EAAE,EAAE,iBAAiB,GACpB,OAAO,CAET;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;kBAUpB,CAAC;AACZ,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RevokeIntentSchema = exports.REVOKE_INTENT_TRANSITIONS = exports.RevokeIntentStateSchema = exports.RevokeIntentState = void 0;
|
|
4
|
+
exports.isLegalRevokeIntentTransition = isLegalRevokeIntentTransition;
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const fact_tuple_1 = require("./fact-tuple");
|
|
7
|
+
const facts_apply_1 = require("./facts-apply");
|
|
8
|
+
var RevokeIntentState;
|
|
9
|
+
(function (RevokeIntentState) {
|
|
10
|
+
RevokeIntentState["Pending"] = "pending";
|
|
11
|
+
RevokeIntentState["Applied"] = "applied";
|
|
12
|
+
RevokeIntentState["Settled"] = "settled";
|
|
13
|
+
})(RevokeIntentState || (exports.RevokeIntentState = RevokeIntentState = {}));
|
|
14
|
+
exports.RevokeIntentStateSchema = zod_1.z.nativeEnum(RevokeIntentState);
|
|
15
|
+
exports.REVOKE_INTENT_TRANSITIONS = Object.freeze({
|
|
16
|
+
[RevokeIntentState.Pending]: Object.freeze([
|
|
17
|
+
RevokeIntentState.Applied,
|
|
18
|
+
RevokeIntentState.Settled,
|
|
19
|
+
]),
|
|
20
|
+
[RevokeIntentState.Applied]: Object.freeze([RevokeIntentState.Settled]),
|
|
21
|
+
[RevokeIntentState.Settled]: Object.freeze([]),
|
|
22
|
+
});
|
|
23
|
+
function isLegalRevokeIntentTransition(from, to) {
|
|
24
|
+
return exports.REVOKE_INTENT_TRANSITIONS[from].includes(to);
|
|
25
|
+
}
|
|
26
|
+
exports.RevokeIntentSchema = zod_1.z
|
|
27
|
+
.object({
|
|
28
|
+
id: zod_1.z.string().min(1),
|
|
29
|
+
orgId: zod_1.z.string().min(1),
|
|
30
|
+
object: fact_tuple_1.FactObjectRefSchema,
|
|
31
|
+
version: facts_apply_1.FactsVersionSchema,
|
|
32
|
+
state: exports.RevokeIntentStateSchema,
|
|
33
|
+
createdAt: zod_1.z.string().datetime(),
|
|
34
|
+
attempts: zod_1.z.number().int().nonnegative(),
|
|
35
|
+
})
|
|
36
|
+
.strict();
|
|
37
|
+
//# sourceMappingURL=revoke-intent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revoke-intent.js","sourceRoot":"","sources":["../../../src/authorization-facts/lib/revoke-intent.ts"],"names":[],"mappings":";;;AAuDA,sEAKC;AA5DD,6BAAwB;AAExB,6CAAmD;AACnD,+CAAmD;AAyBnD,IAAY,iBAOX;AAPD,WAAY,iBAAiB;IAE3B,wCAAmB,CAAA;IAEnB,wCAAmB,CAAA;IAEnB,wCAAmB,CAAA;AACrB,CAAC,EAPW,iBAAiB,iCAAjB,iBAAiB,QAO5B;AAEY,QAAA,uBAAuB,GAAG,OAAC,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AAO1D,QAAA,yBAAyB,GAElC,MAAM,CAAC,MAAM,CAAC;IAChB,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;QACzC,iBAAiB,CAAC,OAAO;QACzB,iBAAiB,CAAC,OAAO;KAC1B,CAAC;IACF,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;CAC/C,CAAC,CAAC;AAEH,SAAgB,6BAA6B,CAC3C,IAAuB,EACvB,EAAqB;IAErB,OAAO,iCAAyB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACtD,CAAC;AAEY,QAAA,kBAAkB,GAAG,OAAC;KAChC,MAAM,CAAC;IACN,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,MAAM,EAAE,gCAAmB;IAC3B,OAAO,EAAE,gCAAkB;IAC3B,KAAK,EAAE,+BAAuB;IAC9B,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;CACzC,CAAC;KACD,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './lib/authorization-namespace';
|
|
2
|
+
export * from './lib/platform-authorization-modules';
|
|
3
|
+
export * from './lib/authorization-module-envelope';
|
|
4
|
+
export * from './lib/authorization-module-contribution';
|
|
5
|
+
export * from './lib/authorization-composition-error';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/authorization-module/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sCAAsC,CAAC;AACrD,cAAc,qCAAqC,CAAC;AACpD,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
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/authorization-namespace"), exports);
|
|
18
|
+
__exportStar(require("./lib/platform-authorization-modules"), exports);
|
|
19
|
+
__exportStar(require("./lib/authorization-module-envelope"), exports);
|
|
20
|
+
__exportStar(require("./lib/authorization-module-contribution"), exports);
|
|
21
|
+
__exportStar(require("./lib/authorization-composition-error"), exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/authorization-module/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C;AAC9C,uEAAqD;AACrD,sEAAoD;AACpD,0EAAwD;AACxD,wEAAsD"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare enum AuthorizationCompositionViolationCode {
|
|
3
|
+
InvalidBiomeId = "invalid_biome_id",
|
|
4
|
+
NamespaceMismatch = "namespace_mismatch",
|
|
5
|
+
NamespaceCollision = "namespace_collision",
|
|
6
|
+
PlatformGenerationRefused = "platform_generation_refused",
|
|
7
|
+
ModuleFileMismatch = "module_file_mismatch",
|
|
8
|
+
ModuleNameMismatch = "module_name_mismatch",
|
|
9
|
+
TypeOutsideNamespace = "type_outside_namespace",
|
|
10
|
+
ConditionOutsideNamespace = "condition_outside_namespace",
|
|
11
|
+
ExtendsForeignType = "extends_foreign_type",
|
|
12
|
+
ReferenceNotExported = "reference_not_exported",
|
|
13
|
+
ReferenceNotImported = "reference_not_imported",
|
|
14
|
+
ReferenceNotDependedOn = "reference_not_depended_on",
|
|
15
|
+
ResourceTypesMismatch = "resource_types_mismatch",
|
|
16
|
+
UndeclaredWildcard = "undeclared_wildcard",
|
|
17
|
+
UnconditionedWildcardNotAllowed = "unconditioned_wildcard_not_allowed",
|
|
18
|
+
DependencyNotDeclaredByBiome = "dependency_not_declared_by_biome",
|
|
19
|
+
DependencyMissing = "dependency_missing",
|
|
20
|
+
DependencyVersionTooLow = "dependency_version_too_low",
|
|
21
|
+
DependencyTierViolation = "dependency_tier_violation",
|
|
22
|
+
DependencyCycle = "dependency_cycle",
|
|
23
|
+
InterfaceNotImplemented = "interface_not_implemented",
|
|
24
|
+
ImplementsForeignType = "implements_foreign_type",
|
|
25
|
+
WritableRelationInvalid = "writable_relation_invalid",
|
|
26
|
+
SearchableInvalid = "searchable_invalid",
|
|
27
|
+
PlatformTemplateInvalid = "platform_template_invalid",
|
|
28
|
+
TransformerRefused = "transformer_refused",
|
|
29
|
+
BudgetExceeded = "budget_exceeded",
|
|
30
|
+
ModuleVersionDowngrade = "module_version_downgrade",
|
|
31
|
+
ModuleVersionReused = "module_version_reused",
|
|
32
|
+
IncompatibleChangeUndeclared = "incompatible_change_undeclared",
|
|
33
|
+
MigrationFromWrongVersion = "migration_from_wrong_version"
|
|
34
|
+
}
|
|
35
|
+
export declare const AuthorizationCompositionViolationCodeSchema: z.ZodEnum<typeof AuthorizationCompositionViolationCode>;
|
|
36
|
+
export interface AuthorizationCompositionViolation {
|
|
37
|
+
readonly code: AuthorizationCompositionViolationCode;
|
|
38
|
+
readonly owner: string;
|
|
39
|
+
readonly message: string;
|
|
40
|
+
}
|
|
41
|
+
export declare class AuthorizationCompositionError extends Error {
|
|
42
|
+
readonly violations: readonly AuthorizationCompositionViolation[];
|
|
43
|
+
constructor(violations: readonly AuthorizationCompositionViolation[]);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=authorization-composition-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorization-composition-error.d.ts","sourceRoot":"","sources":["../../../src/authorization-module/lib/authorization-composition-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,oBAAY,qCAAqC;IAE/C,cAAc,qBAAqB;IACnC,iBAAiB,uBAAuB;IACxC,kBAAkB,wBAAwB;IAC1C,yBAAyB,gCAAgC;IACzD,kBAAkB,yBAAyB;IAC3C,kBAAkB,yBAAyB;IAE3C,oBAAoB,2BAA2B;IAC/C,yBAAyB,gCAAgC;IACzD,kBAAkB,yBAAyB;IAC3C,oBAAoB,2BAA2B;IAC/C,oBAAoB,2BAA2B;IAC/C,sBAAsB,8BAA8B;IACpD,qBAAqB,4BAA4B;IACjD,kBAAkB,wBAAwB;IAC1C,+BAA+B,uCAAuC;IAEtE,4BAA4B,qCAAqC;IACjE,iBAAiB,uBAAuB;IACxC,uBAAuB,+BAA+B;IACtD,uBAAuB,8BAA8B;IACrD,eAAe,qBAAqB;IAEpC,uBAAuB,8BAA8B;IACrD,qBAAqB,4BAA4B;IACjD,uBAAuB,8BAA8B;IACrD,iBAAiB,uBAAuB;IAExC,uBAAuB,8BAA8B;IAErD,kBAAkB,wBAAwB;IAE1C,cAAc,oBAAoB;IAElC,sBAAsB,6BAA6B;IACnD,mBAAmB,0BAA0B;IAC7C,4BAA4B,mCAAmC;IAC/D,yBAAyB,iCAAiC;CAC3D;AAED,eAAO,MAAM,2CAA2C,yDAEvD,CAAC;AAEF,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,IAAI,EAAE,qCAAqC,CAAC;IAErD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAGD,qBAAa,6BAA8B,SAAQ,KAAK;IACtD,QAAQ,CAAC,UAAU,EAAE,SAAS,iCAAiC,EAAE,CAAC;gBAEtD,UAAU,EAAE,SAAS,iCAAiC,EAAE;CAUrE"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuthorizationCompositionError = exports.AuthorizationCompositionViolationCodeSchema = exports.AuthorizationCompositionViolationCode = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
var AuthorizationCompositionViolationCode;
|
|
6
|
+
(function (AuthorizationCompositionViolationCode) {
|
|
7
|
+
AuthorizationCompositionViolationCode["InvalidBiomeId"] = "invalid_biome_id";
|
|
8
|
+
AuthorizationCompositionViolationCode["NamespaceMismatch"] = "namespace_mismatch";
|
|
9
|
+
AuthorizationCompositionViolationCode["NamespaceCollision"] = "namespace_collision";
|
|
10
|
+
AuthorizationCompositionViolationCode["PlatformGenerationRefused"] = "platform_generation_refused";
|
|
11
|
+
AuthorizationCompositionViolationCode["ModuleFileMismatch"] = "module_file_mismatch";
|
|
12
|
+
AuthorizationCompositionViolationCode["ModuleNameMismatch"] = "module_name_mismatch";
|
|
13
|
+
AuthorizationCompositionViolationCode["TypeOutsideNamespace"] = "type_outside_namespace";
|
|
14
|
+
AuthorizationCompositionViolationCode["ConditionOutsideNamespace"] = "condition_outside_namespace";
|
|
15
|
+
AuthorizationCompositionViolationCode["ExtendsForeignType"] = "extends_foreign_type";
|
|
16
|
+
AuthorizationCompositionViolationCode["ReferenceNotExported"] = "reference_not_exported";
|
|
17
|
+
AuthorizationCompositionViolationCode["ReferenceNotImported"] = "reference_not_imported";
|
|
18
|
+
AuthorizationCompositionViolationCode["ReferenceNotDependedOn"] = "reference_not_depended_on";
|
|
19
|
+
AuthorizationCompositionViolationCode["ResourceTypesMismatch"] = "resource_types_mismatch";
|
|
20
|
+
AuthorizationCompositionViolationCode["UndeclaredWildcard"] = "undeclared_wildcard";
|
|
21
|
+
AuthorizationCompositionViolationCode["UnconditionedWildcardNotAllowed"] = "unconditioned_wildcard_not_allowed";
|
|
22
|
+
AuthorizationCompositionViolationCode["DependencyNotDeclaredByBiome"] = "dependency_not_declared_by_biome";
|
|
23
|
+
AuthorizationCompositionViolationCode["DependencyMissing"] = "dependency_missing";
|
|
24
|
+
AuthorizationCompositionViolationCode["DependencyVersionTooLow"] = "dependency_version_too_low";
|
|
25
|
+
AuthorizationCompositionViolationCode["DependencyTierViolation"] = "dependency_tier_violation";
|
|
26
|
+
AuthorizationCompositionViolationCode["DependencyCycle"] = "dependency_cycle";
|
|
27
|
+
AuthorizationCompositionViolationCode["InterfaceNotImplemented"] = "interface_not_implemented";
|
|
28
|
+
AuthorizationCompositionViolationCode["ImplementsForeignType"] = "implements_foreign_type";
|
|
29
|
+
AuthorizationCompositionViolationCode["WritableRelationInvalid"] = "writable_relation_invalid";
|
|
30
|
+
AuthorizationCompositionViolationCode["SearchableInvalid"] = "searchable_invalid";
|
|
31
|
+
AuthorizationCompositionViolationCode["PlatformTemplateInvalid"] = "platform_template_invalid";
|
|
32
|
+
AuthorizationCompositionViolationCode["TransformerRefused"] = "transformer_refused";
|
|
33
|
+
AuthorizationCompositionViolationCode["BudgetExceeded"] = "budget_exceeded";
|
|
34
|
+
AuthorizationCompositionViolationCode["ModuleVersionDowngrade"] = "module_version_downgrade";
|
|
35
|
+
AuthorizationCompositionViolationCode["ModuleVersionReused"] = "module_version_reused";
|
|
36
|
+
AuthorizationCompositionViolationCode["IncompatibleChangeUndeclared"] = "incompatible_change_undeclared";
|
|
37
|
+
AuthorizationCompositionViolationCode["MigrationFromWrongVersion"] = "migration_from_wrong_version";
|
|
38
|
+
})(AuthorizationCompositionViolationCode || (exports.AuthorizationCompositionViolationCode = AuthorizationCompositionViolationCode = {}));
|
|
39
|
+
exports.AuthorizationCompositionViolationCodeSchema = zod_1.z.nativeEnum(AuthorizationCompositionViolationCode);
|
|
40
|
+
class AuthorizationCompositionError extends Error {
|
|
41
|
+
violations;
|
|
42
|
+
constructor(violations) {
|
|
43
|
+
super(`authorization model composition refused with ${violations.length} violation(s):\n` +
|
|
44
|
+
violations
|
|
45
|
+
.map((v) => ` - [${v.code}] ${v.owner}: ${v.message}`)
|
|
46
|
+
.join('\n'));
|
|
47
|
+
this.name = 'AuthorizationCompositionError';
|
|
48
|
+
this.violations = violations;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.AuthorizationCompositionError = AuthorizationCompositionError;
|
|
52
|
+
//# sourceMappingURL=authorization-composition-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorization-composition-error.js","sourceRoot":"","sources":["../../../src/authorization-module/lib/authorization-composition-error.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAOxB,IAAY,qCAwCX;AAxCD,WAAY,qCAAqC;IAE/C,4EAAmC,CAAA;IACnC,iFAAwC,CAAA;IACxC,mFAA0C,CAAA;IAC1C,kGAAyD,CAAA;IACzD,oFAA2C,CAAA;IAC3C,oFAA2C,CAAA;IAE3C,wFAA+C,CAAA;IAC/C,kGAAyD,CAAA;IACzD,oFAA2C,CAAA;IAC3C,wFAA+C,CAAA;IAC/C,wFAA+C,CAAA;IAC/C,6FAAoD,CAAA;IACpD,0FAAiD,CAAA;IACjD,mFAA0C,CAAA;IAC1C,+GAAsE,CAAA;IAEtE,0GAAiE,CAAA;IACjE,iFAAwC,CAAA;IACxC,+FAAsD,CAAA;IACtD,8FAAqD,CAAA;IACrD,6EAAoC,CAAA;IAEpC,8FAAqD,CAAA;IACrD,0FAAiD,CAAA;IACjD,8FAAqD,CAAA;IACrD,iFAAwC,CAAA;IAExC,8FAAqD,CAAA;IAErD,mFAA0C,CAAA;IAE1C,2EAAkC,CAAA;IAElC,4FAAmD,CAAA;IACnD,sFAA6C,CAAA;IAC7C,wGAA+D,CAAA;IAC/D,mGAA0D,CAAA;AAC5D,CAAC,EAxCW,qCAAqC,qDAArC,qCAAqC,QAwChD;AAEY,QAAA,2CAA2C,GAAG,OAAC,CAAC,UAAU,CACrE,qCAAqC,CACtC,CAAC;AAUF,MAAa,6BAA8B,SAAQ,KAAK;IAC7C,UAAU,CAA+C;IAElE,YAAY,UAAwD;QAClE,KAAK,CACH,gDAAgD,UAAU,CAAC,MAAM,kBAAkB;YACjF,UAAU;iBACP,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;iBACtD,IAAI,CAAC,IAAI,CAAC,CAChB,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;QAC5C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAbD,sEAaC"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const AuthorizationModuleFileSchema: z.ZodObject<{
|
|
3
|
+
name: z.ZodString;
|
|
4
|
+
contents: z.ZodString;
|
|
5
|
+
}, z.core.$strict>;
|
|
6
|
+
export type AuthorizationModuleFile = z.infer<typeof AuthorizationModuleFileSchema>;
|
|
7
|
+
export declare const AuthorizationModuleTestFileSchema: z.ZodObject<{
|
|
8
|
+
name: z.ZodString;
|
|
9
|
+
contents: z.ZodString;
|
|
10
|
+
}, z.core.$strict>;
|
|
11
|
+
export type AuthorizationModuleTestFile = z.infer<typeof AuthorizationModuleTestFileSchema>;
|
|
12
|
+
export declare const AuthorizationModuleSourceManifestSchema: z.ZodObject<{
|
|
13
|
+
envelope: z.ZodObject<{
|
|
14
|
+
namespace: z.ZodOptional<z.ZodString>;
|
|
15
|
+
moduleVersion: z.ZodNumber;
|
|
16
|
+
platformGeneration: z.ZodString;
|
|
17
|
+
files: z.ZodArray<z.ZodString>;
|
|
18
|
+
tests: z.ZodString;
|
|
19
|
+
imports: z.ZodArray<z.ZodEnum<typeof import("./platform-authorization-modules").PlatformAuthorizationModule>>;
|
|
20
|
+
dependsOn: z.ZodArray<z.ZodObject<{
|
|
21
|
+
biome: z.ZodString;
|
|
22
|
+
minModuleVersion: z.ZodNumber;
|
|
23
|
+
}, z.core.$strict>>;
|
|
24
|
+
implements: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodEnum<typeof import("./platform-authorization-modules").XemaAuthorizationInterface>>>;
|
|
25
|
+
resourceTypes: z.ZodArray<z.ZodString>;
|
|
26
|
+
writableRelations: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
|
|
27
|
+
searchable: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
28
|
+
anchor: z.ZodOptional<z.ZodString>;
|
|
29
|
+
highCardinality: z.ZodBoolean;
|
|
30
|
+
}, z.core.$strict>>;
|
|
31
|
+
publicWildcards: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
|
|
32
|
+
migrations: z.ZodArray<z.ZodObject<{
|
|
33
|
+
from: z.ZodNumber;
|
|
34
|
+
steps: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
35
|
+
kind: z.ZodLiteral<import("./authorization-module-envelope").AuthorizationMigrationStepKind.RenameType>;
|
|
36
|
+
from: z.ZodString;
|
|
37
|
+
to: z.ZodString;
|
|
38
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
39
|
+
kind: z.ZodLiteral<import("./authorization-module-envelope").AuthorizationMigrationStepKind.RenameRelation>;
|
|
40
|
+
type: z.ZodString;
|
|
41
|
+
from: z.ZodString;
|
|
42
|
+
to: z.ZodString;
|
|
43
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
44
|
+
kind: z.ZodLiteral<import("./authorization-module-envelope").AuthorizationMigrationStepKind.DropType>;
|
|
45
|
+
type: z.ZodString;
|
|
46
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
47
|
+
kind: z.ZodLiteral<import("./authorization-module-envelope").AuthorizationMigrationStepKind.DropRelation>;
|
|
48
|
+
type: z.ZodString;
|
|
49
|
+
relation: z.ZodString;
|
|
50
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
51
|
+
kind: z.ZodLiteral<import("./authorization-module-envelope").AuthorizationMigrationStepKind.NarrowRestriction>;
|
|
52
|
+
type: z.ZodString;
|
|
53
|
+
relation: z.ZodString;
|
|
54
|
+
removed: z.ZodArray<z.ZodString>;
|
|
55
|
+
}, z.core.$strict>], "kind">>;
|
|
56
|
+
}, z.core.$strict>>;
|
|
57
|
+
}, z.core.$strict>;
|
|
58
|
+
moduleFiles: z.ZodArray<z.ZodObject<{
|
|
59
|
+
name: z.ZodString;
|
|
60
|
+
contents: z.ZodString;
|
|
61
|
+
}, z.core.$strict>>;
|
|
62
|
+
testFile: z.ZodObject<{
|
|
63
|
+
name: z.ZodString;
|
|
64
|
+
contents: z.ZodString;
|
|
65
|
+
}, z.core.$strict>;
|
|
66
|
+
}, z.core.$strict>;
|
|
67
|
+
export type AuthorizationModuleSourceManifest = z.infer<typeof AuthorizationModuleSourceManifestSchema>;
|
|
68
|
+
export declare const SignedBiomeAuthorizationFactsSchema: z.ZodObject<{
|
|
69
|
+
tier: z.ZodEnum<typeof import("../../biome").BiomeTier>;
|
|
70
|
+
declaredBiomeDependencies: z.ZodArray<z.ZodString>;
|
|
71
|
+
serviceNames: z.ZodArray<z.ZodString>;
|
|
72
|
+
}, z.core.$strict>;
|
|
73
|
+
export type SignedBiomeAuthorizationFacts = z.infer<typeof SignedBiomeAuthorizationFactsSchema>;
|
|
74
|
+
export declare const AuthorizationModuleContributionManifestSchema: z.ZodObject<{
|
|
75
|
+
envelope: z.ZodObject<{
|
|
76
|
+
namespace: z.ZodOptional<z.ZodString>;
|
|
77
|
+
moduleVersion: z.ZodNumber;
|
|
78
|
+
platformGeneration: z.ZodString;
|
|
79
|
+
files: z.ZodArray<z.ZodString>;
|
|
80
|
+
tests: z.ZodString;
|
|
81
|
+
imports: z.ZodArray<z.ZodEnum<typeof import("./platform-authorization-modules").PlatformAuthorizationModule>>;
|
|
82
|
+
dependsOn: z.ZodArray<z.ZodObject<{
|
|
83
|
+
biome: z.ZodString;
|
|
84
|
+
minModuleVersion: z.ZodNumber;
|
|
85
|
+
}, z.core.$strict>>;
|
|
86
|
+
implements: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodEnum<typeof import("./platform-authorization-modules").XemaAuthorizationInterface>>>;
|
|
87
|
+
resourceTypes: z.ZodArray<z.ZodString>;
|
|
88
|
+
writableRelations: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
|
|
89
|
+
searchable: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
90
|
+
anchor: z.ZodOptional<z.ZodString>;
|
|
91
|
+
highCardinality: z.ZodBoolean;
|
|
92
|
+
}, z.core.$strict>>;
|
|
93
|
+
publicWildcards: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
|
|
94
|
+
migrations: z.ZodArray<z.ZodObject<{
|
|
95
|
+
from: z.ZodNumber;
|
|
96
|
+
steps: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
97
|
+
kind: z.ZodLiteral<import("./authorization-module-envelope").AuthorizationMigrationStepKind.RenameType>;
|
|
98
|
+
from: z.ZodString;
|
|
99
|
+
to: z.ZodString;
|
|
100
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
101
|
+
kind: z.ZodLiteral<import("./authorization-module-envelope").AuthorizationMigrationStepKind.RenameRelation>;
|
|
102
|
+
type: z.ZodString;
|
|
103
|
+
from: z.ZodString;
|
|
104
|
+
to: z.ZodString;
|
|
105
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
106
|
+
kind: z.ZodLiteral<import("./authorization-module-envelope").AuthorizationMigrationStepKind.DropType>;
|
|
107
|
+
type: z.ZodString;
|
|
108
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
109
|
+
kind: z.ZodLiteral<import("./authorization-module-envelope").AuthorizationMigrationStepKind.DropRelation>;
|
|
110
|
+
type: z.ZodString;
|
|
111
|
+
relation: z.ZodString;
|
|
112
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
113
|
+
kind: z.ZodLiteral<import("./authorization-module-envelope").AuthorizationMigrationStepKind.NarrowRestriction>;
|
|
114
|
+
type: z.ZodString;
|
|
115
|
+
relation: z.ZodString;
|
|
116
|
+
removed: z.ZodArray<z.ZodString>;
|
|
117
|
+
}, z.core.$strict>], "kind">>;
|
|
118
|
+
}, z.core.$strict>>;
|
|
119
|
+
}, z.core.$strict>;
|
|
120
|
+
moduleFiles: z.ZodArray<z.ZodObject<{
|
|
121
|
+
name: z.ZodString;
|
|
122
|
+
contents: z.ZodString;
|
|
123
|
+
}, z.core.$strict>>;
|
|
124
|
+
testFile: z.ZodObject<{
|
|
125
|
+
name: z.ZodString;
|
|
126
|
+
contents: z.ZodString;
|
|
127
|
+
}, z.core.$strict>;
|
|
128
|
+
signedBiome: z.ZodObject<{
|
|
129
|
+
tier: z.ZodEnum<typeof import("../../biome").BiomeTier>;
|
|
130
|
+
declaredBiomeDependencies: z.ZodArray<z.ZodString>;
|
|
131
|
+
serviceNames: z.ZodArray<z.ZodString>;
|
|
132
|
+
}, z.core.$strict>;
|
|
133
|
+
}, z.core.$strict>;
|
|
134
|
+
export type AuthorizationModuleContributionManifest = z.infer<typeof AuthorizationModuleContributionManifestSchema>;
|
|
135
|
+
export declare class AuthorizationModuleContributionError extends Error {
|
|
136
|
+
constructor(message: string);
|
|
137
|
+
}
|
|
138
|
+
export declare function stampAuthorizationModuleContribution(source: unknown, signedBiome: SignedBiomeAuthorizationFacts): AuthorizationModuleContributionManifest;
|
|
139
|
+
export declare function resolveFactsWriterBiome(callerServiceName: string, modules: ReadonlyArray<{
|
|
140
|
+
readonly biomeId: string;
|
|
141
|
+
readonly manifest: AuthorizationModuleContributionManifest;
|
|
142
|
+
}>): string | null;
|
|
143
|
+
//# sourceMappingURL=authorization-module-contribution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorization-module-contribution.d.ts","sourceRoot":"","sources":["../../../src/authorization-module/lib/authorization-module-contribution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA0BxB,eAAO,MAAM,6BAA6B;;;kBAK/B,CAAC;AACZ,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAC3C,OAAO,6BAA6B,CACrC,CAAC;AAEF,eAAO,MAAM,iCAAiC;;;kBAKnC,CAAC;AACZ,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAC/C,OAAO,iCAAiC,CACzC,CAAC;AAGF,eAAO,MAAM,uCAAuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA2BhD,CAAC;AACL,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,KAAK,CACrD,OAAO,uCAAuC,CAC/C,CAAC;AAsBF,eAAO,MAAM,mCAAmC;;;;kBAQrC,CAAC;AACZ,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CACjD,OAAO,mCAAmC,CAC3C,CAAC;AAGF,eAAO,MAAM,6CAA6C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAgBtD,CAAC;AACL,MAAM,MAAM,uCAAuC,GAAG,CAAC,CAAC,KAAK,CAC3D,OAAO,6CAA6C,CACrD,CAAC;AAGF,qBAAa,oCAAqC,SAAQ,KAAK;gBACjD,OAAO,EAAE,MAAM;CAI5B;AAOD,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,6BAA6B,GACzC,uCAAuC,CAsBzC;AAQD,wBAAgB,uBAAuB,CACrC,iBAAiB,EAAE,MAAM,EACzB,OAAO,EAAE,aAAa,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,uCAAuC,CAAC;CAC5D,CAAC,GACD,MAAM,GAAG,IAAI,CAUf"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuthorizationModuleContributionError = exports.AuthorizationModuleContributionManifestSchema = exports.SignedBiomeAuthorizationFactsSchema = exports.AuthorizationModuleSourceManifestSchema = exports.AuthorizationModuleTestFileSchema = exports.AuthorizationModuleFileSchema = void 0;
|
|
4
|
+
exports.stampAuthorizationModuleContribution = stampAuthorizationModuleContribution;
|
|
5
|
+
exports.resolveFactsWriterBiome = resolveFactsWriterBiome;
|
|
6
|
+
const zod_1 = require("zod");
|
|
7
|
+
const biome_1 = require("../../biome");
|
|
8
|
+
const authorization_module_envelope_1 = require("./authorization-module-envelope");
|
|
9
|
+
exports.AuthorizationModuleFileSchema = zod_1.z
|
|
10
|
+
.object({
|
|
11
|
+
name: zod_1.z.string().regex(authorization_module_envelope_1.AUTHORIZATION_MODULE_FILE_PATTERN),
|
|
12
|
+
contents: zod_1.z.string().min(1),
|
|
13
|
+
})
|
|
14
|
+
.strict();
|
|
15
|
+
exports.AuthorizationModuleTestFileSchema = zod_1.z
|
|
16
|
+
.object({
|
|
17
|
+
name: zod_1.z.string().regex(authorization_module_envelope_1.AUTHORIZATION_MODULE_TEST_FILE_PATTERN),
|
|
18
|
+
contents: zod_1.z.string().min(1),
|
|
19
|
+
})
|
|
20
|
+
.strict();
|
|
21
|
+
exports.AuthorizationModuleSourceManifestSchema = zod_1.z
|
|
22
|
+
.object({
|
|
23
|
+
envelope: authorization_module_envelope_1.AuthorizationModuleEnvelopeSchema,
|
|
24
|
+
moduleFiles: zod_1.z.array(exports.AuthorizationModuleFileSchema).min(1),
|
|
25
|
+
testFile: exports.AuthorizationModuleTestFileSchema,
|
|
26
|
+
})
|
|
27
|
+
.strict()
|
|
28
|
+
.superRefine((manifest, ctx) => {
|
|
29
|
+
const declared = [...manifest.envelope.files].sort();
|
|
30
|
+
const carried = manifest.moduleFiles.map((f) => f.name).sort();
|
|
31
|
+
if (declared.length !== carried.length ||
|
|
32
|
+
declared.some((name, i) => name !== carried[i])) {
|
|
33
|
+
ctx.addIssue({
|
|
34
|
+
code: 'custom',
|
|
35
|
+
path: ['moduleFiles'],
|
|
36
|
+
message: `the carried module files [${carried.join(', ')}] must be exactly the envelope's files [${declared.join(', ')}].`,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
if (manifest.testFile.name !== manifest.envelope.tests) {
|
|
40
|
+
ctx.addIssue({
|
|
41
|
+
code: 'custom',
|
|
42
|
+
path: ['testFile', 'name'],
|
|
43
|
+
message: `the carried test file "${manifest.testFile.name}" is not the envelope's tests "${manifest.envelope.tests}".`,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
function uniqueNonEmptyStrings(what) {
|
|
48
|
+
return zod_1.z
|
|
49
|
+
.array(zod_1.z.string().min(1))
|
|
50
|
+
.refine((values) => new Set(values).size === values.length, {
|
|
51
|
+
message: `${what} must not repeat an entry.`,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
exports.SignedBiomeAuthorizationFactsSchema = zod_1.z
|
|
55
|
+
.object({
|
|
56
|
+
tier: biome_1.BiomeTierSchema,
|
|
57
|
+
declaredBiomeDependencies: uniqueNonEmptyStrings('declaredBiomeDependencies'),
|
|
58
|
+
serviceNames: uniqueNonEmptyStrings('serviceNames'),
|
|
59
|
+
})
|
|
60
|
+
.strict();
|
|
61
|
+
exports.AuthorizationModuleContributionManifestSchema = zod_1.z
|
|
62
|
+
.object({
|
|
63
|
+
envelope: authorization_module_envelope_1.AuthorizationModuleEnvelopeSchema,
|
|
64
|
+
moduleFiles: zod_1.z.array(exports.AuthorizationModuleFileSchema).min(1),
|
|
65
|
+
testFile: exports.AuthorizationModuleTestFileSchema,
|
|
66
|
+
signedBiome: exports.SignedBiomeAuthorizationFactsSchema,
|
|
67
|
+
})
|
|
68
|
+
.strict()
|
|
69
|
+
.superRefine((manifest, ctx) => {
|
|
70
|
+
const { signedBiome: _signedBiome, ...source } = manifest;
|
|
71
|
+
const result = exports.AuthorizationModuleSourceManifestSchema.safeParse(source);
|
|
72
|
+
if (!result.success) {
|
|
73
|
+
for (const issue of result.error.issues) {
|
|
74
|
+
ctx.addIssue({ code: 'custom', path: issue.path, message: issue.message });
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
class AuthorizationModuleContributionError extends Error {
|
|
79
|
+
constructor(message) {
|
|
80
|
+
super(message);
|
|
81
|
+
this.name = 'AuthorizationModuleContributionError';
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.AuthorizationModuleContributionError = AuthorizationModuleContributionError;
|
|
85
|
+
function stampAuthorizationModuleContribution(source, signedBiome) {
|
|
86
|
+
if (source !== null &&
|
|
87
|
+
typeof source === 'object' &&
|
|
88
|
+
Object.prototype.hasOwnProperty.call(source, 'signedBiome')) {
|
|
89
|
+
throw new AuthorizationModuleContributionError('the contribution declares `signedBiome`; that block is stamped by the parser from the signed biome manifest and an author must never set it.');
|
|
90
|
+
}
|
|
91
|
+
const parsed = exports.AuthorizationModuleSourceManifestSchema.safeParse(source);
|
|
92
|
+
if (!parsed.success) {
|
|
93
|
+
throw new AuthorizationModuleContributionError(`the authorization-module contribution does not parse: ${parsed.error.issues
|
|
94
|
+
.map((i) => `${i.path.join('.')}: ${i.message}`)
|
|
95
|
+
.join('; ')}`);
|
|
96
|
+
}
|
|
97
|
+
return exports.AuthorizationModuleContributionManifestSchema.parse({
|
|
98
|
+
...parsed.data,
|
|
99
|
+
signedBiome: exports.SignedBiomeAuthorizationFactsSchema.parse(signedBiome),
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
function resolveFactsWriterBiome(callerServiceName, modules) {
|
|
103
|
+
const owners = modules
|
|
104
|
+
.filter((m) => m.manifest.signedBiome.serviceNames.includes(callerServiceName))
|
|
105
|
+
.map((m) => m.biomeId);
|
|
106
|
+
if (owners.length > 1) {
|
|
107
|
+
throw new AuthorizationModuleContributionError(`service "${callerServiceName}" is claimed by more than one biome (${owners.sort().join(', ')}); refusing to choose.`);
|
|
108
|
+
}
|
|
109
|
+
return owners[0] ?? null;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=authorization-module-contribution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorization-module-contribution.js","sourceRoot":"","sources":["../../../src/authorization-module/lib/authorization-module-contribution.ts"],"names":[],"mappings":"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"}
|