@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.
Files changed (122) hide show
  1. package/dist/.source-stamp.json +2 -2
  2. package/dist/authorization-facts/index.d.ts +6 -0
  3. package/dist/authorization-facts/index.d.ts.map +1 -0
  4. package/dist/authorization-facts/index.js +22 -0
  5. package/dist/authorization-facts/index.js.map +1 -0
  6. package/dist/authorization-facts/lib/fact-tuple.d.ts +38 -0
  7. package/dist/authorization-facts/lib/fact-tuple.d.ts.map +1 -0
  8. package/dist/authorization-facts/lib/fact-tuple.js +48 -0
  9. package/dist/authorization-facts/lib/fact-tuple.js.map +1 -0
  10. package/dist/authorization-facts/lib/facts-apply.d.ts +244 -0
  11. package/dist/authorization-facts/lib/facts-apply.d.ts.map +1 -0
  12. package/dist/authorization-facts/lib/facts-apply.js +141 -0
  13. package/dist/authorization-facts/lib/facts-apply.js.map +1 -0
  14. package/dist/authorization-facts/lib/facts-snapshot.d.ts +70 -0
  15. package/dist/authorization-facts/lib/facts-snapshot.d.ts.map +1 -0
  16. package/dist/authorization-facts/lib/facts-snapshot.js +39 -0
  17. package/dist/authorization-facts/lib/facts-snapshot.js.map +1 -0
  18. package/dist/authorization-facts/lib/facts-writer-authority.d.ts +15 -0
  19. package/dist/authorization-facts/lib/facts-writer-authority.d.ts.map +1 -0
  20. package/dist/authorization-facts/lib/facts-writer-authority.js +55 -0
  21. package/dist/authorization-facts/lib/facts-writer-authority.js.map +1 -0
  22. package/dist/authorization-facts/lib/revoke-intent.d.ts +23 -0
  23. package/dist/authorization-facts/lib/revoke-intent.d.ts.map +1 -0
  24. package/dist/authorization-facts/lib/revoke-intent.js +37 -0
  25. package/dist/authorization-facts/lib/revoke-intent.js.map +1 -0
  26. package/dist/authorization-module/index.d.ts +6 -0
  27. package/dist/authorization-module/index.d.ts.map +1 -0
  28. package/dist/authorization-module/index.js +22 -0
  29. package/dist/authorization-module/index.js.map +1 -0
  30. package/dist/authorization-module/lib/authorization-composition-error.d.ts +45 -0
  31. package/dist/authorization-module/lib/authorization-composition-error.d.ts.map +1 -0
  32. package/dist/authorization-module/lib/authorization-composition-error.js +52 -0
  33. package/dist/authorization-module/lib/authorization-composition-error.js.map +1 -0
  34. package/dist/authorization-module/lib/authorization-module-contribution.d.ts +143 -0
  35. package/dist/authorization-module/lib/authorization-module-contribution.d.ts.map +1 -0
  36. package/dist/authorization-module/lib/authorization-module-contribution.js +111 -0
  37. package/dist/authorization-module/lib/authorization-module-contribution.js.map +1 -0
  38. package/dist/authorization-module/lib/authorization-module-envelope.d.ts +116 -0
  39. package/dist/authorization-module/lib/authorization-module-envelope.d.ts.map +1 -0
  40. package/dist/authorization-module/lib/authorization-module-envelope.js +104 -0
  41. package/dist/authorization-module/lib/authorization-module-envelope.js.map +1 -0
  42. package/dist/authorization-module/lib/authorization-namespace.d.ts +23 -0
  43. package/dist/authorization-module/lib/authorization-namespace.d.ts.map +1 -0
  44. package/dist/authorization-module/lib/authorization-namespace.js +82 -0
  45. package/dist/authorization-module/lib/authorization-namespace.js.map +1 -0
  46. package/dist/authorization-module/lib/platform-authorization-modules.d.ts +17 -0
  47. package/dist/authorization-module/lib/platform-authorization-modules.d.ts.map +1 -0
  48. package/dist/authorization-module/lib/platform-authorization-modules.js +46 -0
  49. package/dist/authorization-module/lib/platform-authorization-modules.js.map +1 -0
  50. package/dist/authorization-module/platform/xema_capability.fga +23 -0
  51. package/dist/authorization-module/platform/xema_capability.fga.yaml +108 -0
  52. package/dist/authorization-module/platform/xema_core.fga +81 -0
  53. package/dist/authorization-module/platform/xema_core.fga.yaml +121 -0
  54. package/dist/authorization-module/platform/xema_sharing.fga +113 -0
  55. package/dist/authorization-module/platform/xema_sharing.fga.yaml +67 -0
  56. package/dist/authorization-module/server/authorization-compatibility.d.ts +16 -0
  57. package/dist/authorization-module/server/authorization-compatibility.d.ts.map +1 -0
  58. package/dist/authorization-module/server/authorization-compatibility.js +94 -0
  59. package/dist/authorization-module/server/authorization-compatibility.js.map +1 -0
  60. package/dist/authorization-module/server/authorization-model-json.d.ts +65 -0
  61. package/dist/authorization-module/server/authorization-model-json.d.ts.map +1 -0
  62. package/dist/authorization-module/server/authorization-model-json.js +21 -0
  63. package/dist/authorization-module/server/authorization-model-json.js.map +1 -0
  64. package/dist/authorization-module/server/compose-authorization-base.d.ts +67 -0
  65. package/dist/authorization-module/server/compose-authorization-base.d.ts.map +1 -0
  66. package/dist/authorization-module/server/compose-authorization-base.js +511 -0
  67. package/dist/authorization-module/server/compose-authorization-base.js.map +1 -0
  68. package/dist/authorization-module/server/index.d.ts +5 -0
  69. package/dist/authorization-module/server/index.d.ts.map +1 -0
  70. package/dist/authorization-module/server/index.js +21 -0
  71. package/dist/authorization-module/server/index.js.map +1 -0
  72. package/dist/authorization-module/server/platform-module-files.d.ts +16 -0
  73. package/dist/authorization-module/server/platform-module-files.d.ts.map +1 -0
  74. package/dist/authorization-module/server/platform-module-files.js +42 -0
  75. package/dist/authorization-module/server/platform-module-files.js.map +1 -0
  76. package/dist/authzen/index.d.ts +7 -0
  77. package/dist/authzen/index.d.ts.map +1 -0
  78. package/dist/authzen/index.js +23 -0
  79. package/dist/authzen/index.js.map +1 -0
  80. package/dist/authzen/lib/authzen-entities.d.ts +40 -0
  81. package/dist/authzen/lib/authzen-entities.d.ts.map +1 -0
  82. package/dist/authzen/lib/authzen-entities.js +48 -0
  83. package/dist/authzen/lib/authzen-entities.js.map +1 -0
  84. package/dist/authzen/lib/authzen-evaluation.d.ts +101 -0
  85. package/dist/authzen/lib/authzen-evaluation.d.ts.map +1 -0
  86. package/dist/authzen/lib/authzen-evaluation.js +103 -0
  87. package/dist/authzen/lib/authzen-evaluation.js.map +1 -0
  88. package/dist/authzen/lib/authzen-metadata.d.ts +25 -0
  89. package/dist/authzen/lib/authzen-metadata.d.ts.map +1 -0
  90. package/dist/authzen/lib/authzen-metadata.js +54 -0
  91. package/dist/authzen/lib/authzen-metadata.js.map +1 -0
  92. package/dist/authzen/lib/authzen-search.d.ts +135 -0
  93. package/dist/authzen/lib/authzen-search.d.ts.map +1 -0
  94. package/dist/authzen/lib/authzen-search.js +89 -0
  95. package/dist/authzen/lib/authzen-search.js.map +1 -0
  96. package/dist/authzen/lib/authzen-snapshot.d.ts +47 -0
  97. package/dist/authzen/lib/authzen-snapshot.d.ts.map +1 -0
  98. package/dist/authzen/lib/authzen-snapshot.js +96 -0
  99. package/dist/authzen/lib/authzen-snapshot.js.map +1 -0
  100. package/dist/authzen/lib/xema-authzen-profile.d.ts +155 -0
  101. package/dist/authzen/lib/xema-authzen-profile.d.ts.map +1 -0
  102. package/dist/authzen/lib/xema-authzen-profile.js +152 -0
  103. package/dist/authzen/lib/xema-authzen-profile.js.map +1 -0
  104. package/dist/contribution/lib/contribution-kind.d.ts +1 -0
  105. package/dist/contribution/lib/contribution-kind.d.ts.map +1 -1
  106. package/dist/contribution/lib/contribution-kind.js +1 -0
  107. package/dist/contribution/lib/contribution-kind.js.map +1 -1
  108. package/dist/platform-generation/index.d.ts +2 -0
  109. package/dist/platform-generation/index.d.ts.map +1 -0
  110. package/dist/platform-generation/index.js +18 -0
  111. package/dist/platform-generation/index.js.map +1 -0
  112. package/dist/platform-generation/lib/platform-generation.d.ts +20 -0
  113. package/dist/platform-generation/lib/platform-generation.d.ts.map +1 -0
  114. package/dist/platform-generation/lib/platform-generation.js +77 -0
  115. package/dist/platform-generation/lib/platform-generation.js.map +1 -0
  116. package/dist/resource/lib/resource-kind-descriptor.d.ts.map +1 -1
  117. package/dist/resource/lib/resource-kind-descriptor.js.map +1 -1
  118. package/dist/resource/lib/resource-kind-registry.d.ts.map +1 -1
  119. package/dist/resource/lib/resource-kind-registry.js.map +1 -1
  120. package/dist/resource/lib/resource-ownership-contribution.d.ts.map +1 -1
  121. package/dist/resource/lib/resource-ownership-contribution.js.map +1 -1
  122. 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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"}