@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,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PLATFORM_AUTHORIZATION_MODULE_DIRECTORY = void 0;
4
+ exports.loadPlatformAuthorizationModuleFiles = loadPlatformAuthorizationModuleFiles;
5
+ exports.fillXemaCoreParentSlots = fillXemaCoreParentSlots;
6
+ const node_fs_1 = require("node:fs");
7
+ const node_path_1 = require("node:path");
8
+ const platform_authorization_modules_1 = require("../lib/platform-authorization-modules");
9
+ exports.PLATFORM_AUTHORIZATION_MODULE_DIRECTORY = (0, node_path_1.join)(__dirname, '..', 'platform');
10
+ function loadPlatformAuthorizationModuleFiles() {
11
+ return Object.values(platform_authorization_modules_1.PlatformAuthorizationModule).map((module) => {
12
+ const read = (name) => ({
13
+ name,
14
+ contents: (0, node_fs_1.readFileSync)((0, node_path_1.join)(exports.PLATFORM_AUTHORIZATION_MODULE_DIRECTORY, name), 'utf8'),
15
+ });
16
+ return {
17
+ module,
18
+ moduleFile: read(`${module}.fga`),
19
+ testFile: read(`${module}.fga.yaml`),
20
+ };
21
+ });
22
+ }
23
+ const SLOT_TEXT = `, ${platform_authorization_modules_1.XEMA_PARENT_TYPES_SLOT}`;
24
+ function fillXemaCoreParentSlots(template, implementers) {
25
+ const isComment = (line) => line.trimStart().startsWith('#');
26
+ const lines = template.split('\n');
27
+ const executable = lines.filter((line) => !isComment(line)).join('\n');
28
+ const occurrences = executable.split(platform_authorization_modules_1.XEMA_PARENT_TYPES_SLOT).length - 1;
29
+ const slotted = executable.split(SLOT_TEXT).length - 1;
30
+ if (occurrences !== platform_authorization_modules_1.XEMA_INHERITING_PLATFORM_TYPES.length ||
31
+ slotted !== occurrences) {
32
+ return null;
33
+ }
34
+ const fill = [...implementers]
35
+ .sort()
36
+ .map((type) => `, ${type}`)
37
+ .join('');
38
+ return lines
39
+ .map((line) => (isComment(line) ? line : line.split(SLOT_TEXT).join(fill)))
40
+ .join('\n');
41
+ }
42
+ //# sourceMappingURL=platform-module-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-module-files.js","sourceRoot":"","sources":["../../../src/authorization-module/server/platform-module-files.ts"],"names":[],"mappings":";;;AA8BA,oFAeC;AAeD,0DAsBC;AAlFD,qCAAuC;AACvC,yCAAiC;AAEjC,0FAI+C;AAgBlC,QAAA,uCAAuC,GAAG,IAAA,gBAAI,EACzD,SAAS,EACT,IAAI,EACJ,UAAU,CACX,CAAC;AAGF,SAAgB,oCAAoC;IAClD,OAAO,MAAM,CAAC,MAAM,CAAC,4DAA2B,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC/D,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC;YAC9B,IAAI;YACJ,QAAQ,EAAE,IAAA,sBAAY,EACpB,IAAA,gBAAI,EAAC,+CAAuC,EAAE,IAAI,CAAC,EACnD,MAAM,CACP;SACF,CAAC,CAAC;QACH,OAAO;YACL,MAAM;YACN,UAAU,EAAE,IAAI,CAAC,GAAG,MAAM,MAAM,CAAC;YACjC,QAAQ,EAAE,IAAI,CAAC,GAAG,MAAM,WAAW,CAAC;SACrC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAGD,MAAM,SAAS,GAAG,KAAK,uDAAsB,EAAE,CAAC;AAYhD,SAAgB,uBAAuB,CACrC,QAAgB,EAChB,YAA+B;IAE/B,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvE,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,uDAAsB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACvD,IACE,WAAW,KAAK,+DAA8B,CAAC,MAAM;QACrD,OAAO,KAAK,WAAW,EACvB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,GAAG,YAAY,CAAC;SAC3B,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;SAC1B,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SAC1E,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from './lib/authzen-entities';
2
+ export * from './lib/authzen-evaluation';
3
+ export * from './lib/authzen-search';
4
+ export * from './lib/authzen-metadata';
5
+ export * from './lib/xema-authzen-profile';
6
+ export * from './lib/authzen-snapshot';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/authzen/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,23 @@
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/authzen-entities"), exports);
18
+ __exportStar(require("./lib/authzen-evaluation"), exports);
19
+ __exportStar(require("./lib/authzen-search"), exports);
20
+ __exportStar(require("./lib/authzen-metadata"), exports);
21
+ __exportStar(require("./lib/xema-authzen-profile"), exports);
22
+ __exportStar(require("./lib/authzen-snapshot"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/authzen/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AACvC,2DAAyC;AACzC,uDAAqC;AACrC,yDAAuC;AACvC,6DAA2C;AAC3C,yDAAuC"}
@@ -0,0 +1,40 @@
1
+ import { z } from 'zod';
2
+ export declare const AuthzenAttributesSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
3
+ export type AuthzenAttributes = z.infer<typeof AuthzenAttributesSchema>;
4
+ export declare const AuthzenSubjectSchema: z.ZodObject<{
5
+ type: z.ZodString;
6
+ id: z.ZodString;
7
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
8
+ }, z.core.$strict>;
9
+ export type AuthzenSubject = z.infer<typeof AuthzenSubjectSchema>;
10
+ export declare const AuthzenResourceSchema: z.ZodObject<{
11
+ type: z.ZodString;
12
+ id: z.ZodString;
13
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
14
+ }, z.core.$strict>;
15
+ export type AuthzenResource = z.infer<typeof AuthzenResourceSchema>;
16
+ export declare const AuthzenActionSchema: z.ZodObject<{
17
+ name: z.ZodString;
18
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
19
+ }, z.core.$strict>;
20
+ export type AuthzenAction = z.infer<typeof AuthzenActionSchema>;
21
+ export declare const AuthzenContextSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
22
+ export type AuthzenContext = AuthzenAttributes;
23
+ export declare const AuthzenDecisionSchema: z.ZodObject<{
24
+ decision: z.ZodBoolean;
25
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
26
+ }, z.core.$strict>;
27
+ export type AuthzenDecision = z.infer<typeof AuthzenDecisionSchema>;
28
+ export declare const AuthzenSubjectQuerySchema: z.ZodObject<{
29
+ type: z.ZodString;
30
+ id: z.ZodOptional<z.ZodString>;
31
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
32
+ }, z.core.$strict>;
33
+ export type AuthzenSubjectQuery = z.infer<typeof AuthzenSubjectQuerySchema>;
34
+ export declare const AuthzenResourceQuerySchema: z.ZodObject<{
35
+ type: z.ZodString;
36
+ id: z.ZodOptional<z.ZodString>;
37
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
38
+ }, z.core.$strict>;
39
+ export type AuthzenResourceQuery = z.infer<typeof AuthzenResourceQuerySchema>;
40
+ //# sourceMappingURL=authzen-entities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authzen-entities.d.ts","sourceRoot":"","sources":["../../../src/authzen/lib/authzen-entities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoBxB,eAAO,MAAM,uBAAuB,wCAAoC,CAAC;AACzE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAKxE,eAAO,MAAM,oBAAoB;;;;kBAMtB,CAAC;AACZ,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAGlE,eAAO,MAAM,qBAAqB;;;;kBAMvB,CAAC;AACZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAGpE,eAAO,MAAM,mBAAmB;;;kBAKrB,CAAC;AACZ,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAGhE,eAAO,MAAM,oBAAoB,wCAA0B,CAAC;AAC5D,MAAM,MAAM,cAAc,GAAG,iBAAiB,CAAC;AAS/C,eAAO,MAAM,qBAAqB;;;kBAKvB,CAAC;AACZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAOpE,eAAO,MAAM,yBAAyB;;;;kBAM3B,CAAC;AACZ,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAG5E,eAAO,MAAM,0BAA0B;;;;kBAM5B,CAAC;AACZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthzenResourceQuerySchema = exports.AuthzenSubjectQuerySchema = exports.AuthzenDecisionSchema = exports.AuthzenContextSchema = exports.AuthzenActionSchema = exports.AuthzenResourceSchema = exports.AuthzenSubjectSchema = exports.AuthzenAttributesSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.AuthzenAttributesSchema = zod_1.z.record(zod_1.z.string(), zod_1.z.unknown());
6
+ const NonEmptyString = zod_1.z.string().min(1);
7
+ exports.AuthzenSubjectSchema = zod_1.z
8
+ .object({
9
+ type: NonEmptyString,
10
+ id: NonEmptyString,
11
+ properties: exports.AuthzenAttributesSchema.optional(),
12
+ })
13
+ .strict();
14
+ exports.AuthzenResourceSchema = zod_1.z
15
+ .object({
16
+ type: NonEmptyString,
17
+ id: NonEmptyString,
18
+ properties: exports.AuthzenAttributesSchema.optional(),
19
+ })
20
+ .strict();
21
+ exports.AuthzenActionSchema = zod_1.z
22
+ .object({
23
+ name: NonEmptyString,
24
+ properties: exports.AuthzenAttributesSchema.optional(),
25
+ })
26
+ .strict();
27
+ exports.AuthzenContextSchema = exports.AuthzenAttributesSchema;
28
+ exports.AuthzenDecisionSchema = zod_1.z
29
+ .object({
30
+ decision: zod_1.z.boolean(),
31
+ context: exports.AuthzenAttributesSchema.optional(),
32
+ })
33
+ .strict();
34
+ exports.AuthzenSubjectQuerySchema = zod_1.z
35
+ .object({
36
+ type: NonEmptyString,
37
+ id: zod_1.z.string().optional(),
38
+ properties: exports.AuthzenAttributesSchema.optional(),
39
+ })
40
+ .strict();
41
+ exports.AuthzenResourceQuerySchema = zod_1.z
42
+ .object({
43
+ type: NonEmptyString,
44
+ id: zod_1.z.string().optional(),
45
+ properties: exports.AuthzenAttributesSchema.optional(),
46
+ })
47
+ .strict();
48
+ //# sourceMappingURL=authzen-entities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authzen-entities.js","sourceRoot":"","sources":["../../../src/authzen/lib/authzen-entities.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAoBX,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAGzE,MAAM,cAAc,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAG5B,QAAA,oBAAoB,GAAG,OAAC;KAClC,MAAM,CAAC;IACN,IAAI,EAAE,cAAc;IACpB,EAAE,EAAE,cAAc;IAClB,UAAU,EAAE,+BAAuB,CAAC,QAAQ,EAAE;CAC/C,CAAC;KACD,MAAM,EAAE,CAAC;AAIC,QAAA,qBAAqB,GAAG,OAAC;KACnC,MAAM,CAAC;IACN,IAAI,EAAE,cAAc;IACpB,EAAE,EAAE,cAAc;IAClB,UAAU,EAAE,+BAAuB,CAAC,QAAQ,EAAE;CAC/C,CAAC;KACD,MAAM,EAAE,CAAC;AAIC,QAAA,mBAAmB,GAAG,OAAC;KACjC,MAAM,CAAC;IACN,IAAI,EAAE,cAAc;IACpB,UAAU,EAAE,+BAAuB,CAAC,QAAQ,EAAE;CAC/C,CAAC;KACD,MAAM,EAAE,CAAC;AAIC,QAAA,oBAAoB,GAAG,+BAAuB,CAAC;AAU/C,QAAA,qBAAqB,GAAG,OAAC;KACnC,MAAM,CAAC;IACN,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE;IACrB,OAAO,EAAE,+BAAuB,CAAC,QAAQ,EAAE;CAC5C,CAAC;KACD,MAAM,EAAE,CAAC;AAQC,QAAA,yBAAyB,GAAG,OAAC;KACvC,MAAM,CAAC;IACN,IAAI,EAAE,cAAc;IACpB,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,UAAU,EAAE,+BAAuB,CAAC,QAAQ,EAAE;CAC/C,CAAC;KACD,MAAM,EAAE,CAAC;AAIC,QAAA,0BAA0B,GAAG,OAAC;KACxC,MAAM,CAAC;IACN,IAAI,EAAE,cAAc;IACpB,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,UAAU,EAAE,+BAAuB,CAAC,QAAQ,EAAE;CAC/C,CAAC;KACD,MAAM,EAAE,CAAC"}
@@ -0,0 +1,101 @@
1
+ import { z } from 'zod';
2
+ export declare const AccessEvaluationRequestSchema: z.ZodObject<{
3
+ subject: z.ZodObject<{
4
+ type: z.ZodString;
5
+ id: z.ZodString;
6
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
7
+ }, z.core.$strict>;
8
+ action: z.ZodObject<{
9
+ name: z.ZodString;
10
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
11
+ }, z.core.$strict>;
12
+ resource: z.ZodObject<{
13
+ type: z.ZodString;
14
+ id: z.ZodString;
15
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
16
+ }, z.core.$strict>;
17
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
18
+ }, z.core.$strict>;
19
+ export type AccessEvaluationRequest = z.infer<typeof AccessEvaluationRequestSchema>;
20
+ export declare const AccessEvaluationResponseSchema: z.ZodObject<{
21
+ decision: z.ZodBoolean;
22
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
23
+ }, z.core.$strict>;
24
+ export type AccessEvaluationResponse = z.infer<typeof AccessEvaluationResponseSchema>;
25
+ export declare enum AuthzenEvaluationsSemantic {
26
+ ExecuteAll = "execute_all",
27
+ DenyOnFirstDeny = "deny_on_first_deny",
28
+ PermitOnFirstPermit = "permit_on_first_permit"
29
+ }
30
+ export declare const AuthzenEvaluationsSemanticSchema: z.ZodEnum<typeof AuthzenEvaluationsSemantic>;
31
+ export declare const AuthzenEvaluationsOptionsSchema: z.ZodObject<{
32
+ evaluations_semantic: z.ZodOptional<z.ZodEnum<typeof AuthzenEvaluationsSemantic>>;
33
+ }, z.core.$catchall<z.ZodUnknown>>;
34
+ export type AuthzenEvaluationsOptions = z.infer<typeof AuthzenEvaluationsOptionsSchema>;
35
+ export declare const AccessEvaluationItemSchema: z.ZodObject<{
36
+ subject: z.ZodOptional<z.ZodObject<{
37
+ type: z.ZodString;
38
+ id: z.ZodString;
39
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
40
+ }, z.core.$strict>>;
41
+ action: z.ZodOptional<z.ZodObject<{
42
+ name: z.ZodString;
43
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
44
+ }, z.core.$strict>>;
45
+ resource: z.ZodOptional<z.ZodObject<{
46
+ type: z.ZodString;
47
+ id: z.ZodString;
48
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
49
+ }, z.core.$strict>>;
50
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
51
+ }, z.core.$strict>;
52
+ export type AccessEvaluationItem = z.infer<typeof AccessEvaluationItemSchema>;
53
+ export declare const AccessEvaluationsRequestSchema: z.ZodObject<{
54
+ subject: z.ZodOptional<z.ZodObject<{
55
+ type: z.ZodString;
56
+ id: z.ZodString;
57
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
58
+ }, z.core.$strict>>;
59
+ action: z.ZodOptional<z.ZodObject<{
60
+ name: z.ZodString;
61
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
62
+ }, z.core.$strict>>;
63
+ resource: z.ZodOptional<z.ZodObject<{
64
+ type: z.ZodString;
65
+ id: z.ZodString;
66
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
67
+ }, z.core.$strict>>;
68
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
69
+ evaluations: z.ZodOptional<z.ZodArray<z.ZodObject<{
70
+ subject: z.ZodOptional<z.ZodObject<{
71
+ type: z.ZodString;
72
+ id: z.ZodString;
73
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
74
+ }, z.core.$strict>>;
75
+ action: z.ZodOptional<z.ZodObject<{
76
+ name: z.ZodString;
77
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
78
+ }, z.core.$strict>>;
79
+ resource: z.ZodOptional<z.ZodObject<{
80
+ type: z.ZodString;
81
+ id: z.ZodString;
82
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
83
+ }, z.core.$strict>>;
84
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
85
+ }, z.core.$strict>>>;
86
+ options: z.ZodOptional<z.ZodObject<{
87
+ evaluations_semantic: z.ZodOptional<z.ZodEnum<typeof AuthzenEvaluationsSemantic>>;
88
+ }, z.core.$catchall<z.ZodUnknown>>>;
89
+ }, z.core.$strict>;
90
+ export type AccessEvaluationsRequest = z.infer<typeof AccessEvaluationsRequestSchema>;
91
+ export declare const AccessEvaluationsResponseSchema: z.ZodObject<{
92
+ decision: z.ZodOptional<z.ZodBoolean>;
93
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
94
+ evaluations: z.ZodOptional<z.ZodArray<z.ZodObject<{
95
+ decision: z.ZodBoolean;
96
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
97
+ }, z.core.$strict>>>;
98
+ }, z.core.$strict>;
99
+ export type AccessEvaluationsResponse = z.infer<typeof AccessEvaluationsResponseSchema>;
100
+ export declare function expandAccessEvaluations(request: AccessEvaluationsRequest): AccessEvaluationRequest[];
101
+ //# sourceMappingURL=authzen-evaluation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authzen-evaluation.d.ts","sourceRoot":"","sources":["../../../src/authzen/lib/authzen-evaluation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoBxB,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;kBAO/B,CAAC;AACZ,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAC3C,OAAO,6BAA6B,CACrC,CAAC;AAGF,eAAO,MAAM,8BAA8B;;;kBAAwB,CAAC;AACpE,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAC5C,OAAO,8BAA8B,CACtC,CAAC;AAGF,oBAAY,0BAA0B;IACpC,UAAU,gBAAgB;IAC1B,eAAe,uBAAuB;IACtC,mBAAmB,2BAA2B;CAC/C;AAED,eAAO,MAAM,gCAAgC,8CAE5C,CAAC;AAOF,eAAO,MAAM,+BAA+B;;kCAIpB,CAAC;AACzB,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAC7C,OAAO,+BAA+B,CACvC,CAAC;AAGF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;kBAO5B,CAAC;AACZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAQ9E,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAoCvC,CAAC;AACL,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAC5C,OAAO,8BAA8B,CACtC,CAAC;AASF,eAAO,MAAM,+BAA+B;;;;;;;kBAUxC,CAAC;AACL,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAC7C,OAAO,+BAA+B,CACvC,CAAC;AAWF,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,wBAAwB,GAChC,uBAAuB,EAAE,CA0B3B"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccessEvaluationsResponseSchema = exports.AccessEvaluationsRequestSchema = exports.AccessEvaluationItemSchema = exports.AuthzenEvaluationsOptionsSchema = exports.AuthzenEvaluationsSemanticSchema = exports.AuthzenEvaluationsSemantic = exports.AccessEvaluationResponseSchema = exports.AccessEvaluationRequestSchema = void 0;
4
+ exports.expandAccessEvaluations = expandAccessEvaluations;
5
+ const zod_1 = require("zod");
6
+ const authzen_entities_1 = require("./authzen-entities");
7
+ exports.AccessEvaluationRequestSchema = zod_1.z
8
+ .object({
9
+ subject: authzen_entities_1.AuthzenSubjectSchema,
10
+ action: authzen_entities_1.AuthzenActionSchema,
11
+ resource: authzen_entities_1.AuthzenResourceSchema,
12
+ context: authzen_entities_1.AuthzenContextSchema.optional(),
13
+ })
14
+ .strict();
15
+ exports.AccessEvaluationResponseSchema = authzen_entities_1.AuthzenDecisionSchema;
16
+ var AuthzenEvaluationsSemantic;
17
+ (function (AuthzenEvaluationsSemantic) {
18
+ AuthzenEvaluationsSemantic["ExecuteAll"] = "execute_all";
19
+ AuthzenEvaluationsSemantic["DenyOnFirstDeny"] = "deny_on_first_deny";
20
+ AuthzenEvaluationsSemantic["PermitOnFirstPermit"] = "permit_on_first_permit";
21
+ })(AuthzenEvaluationsSemantic || (exports.AuthzenEvaluationsSemantic = AuthzenEvaluationsSemantic = {}));
22
+ exports.AuthzenEvaluationsSemanticSchema = zod_1.z.nativeEnum(AuthzenEvaluationsSemantic);
23
+ exports.AuthzenEvaluationsOptionsSchema = zod_1.z
24
+ .object({
25
+ evaluations_semantic: exports.AuthzenEvaluationsSemanticSchema.optional(),
26
+ })
27
+ .catchall(zod_1.z.unknown());
28
+ exports.AccessEvaluationItemSchema = zod_1.z
29
+ .object({
30
+ subject: authzen_entities_1.AuthzenSubjectSchema.optional(),
31
+ action: authzen_entities_1.AuthzenActionSchema.optional(),
32
+ resource: authzen_entities_1.AuthzenResourceSchema.optional(),
33
+ context: authzen_entities_1.AuthzenContextSchema.optional(),
34
+ })
35
+ .strict();
36
+ exports.AccessEvaluationsRequestSchema = zod_1.z
37
+ .object({
38
+ subject: authzen_entities_1.AuthzenSubjectSchema.optional(),
39
+ action: authzen_entities_1.AuthzenActionSchema.optional(),
40
+ resource: authzen_entities_1.AuthzenResourceSchema.optional(),
41
+ context: authzen_entities_1.AuthzenContextSchema.optional(),
42
+ evaluations: zod_1.z.array(exports.AccessEvaluationItemSchema).optional(),
43
+ options: exports.AuthzenEvaluationsOptionsSchema.optional(),
44
+ })
45
+ .strict()
46
+ .superRefine((request, ctx) => {
47
+ const items = request.evaluations ?? [];
48
+ const required = ['subject', 'action', 'resource'];
49
+ if (items.length === 0) {
50
+ for (const key of required) {
51
+ if (request[key] === undefined) {
52
+ ctx.addIssue({
53
+ code: 'custom',
54
+ path: [key],
55
+ message: `\`${key}\` is required when \`evaluations\` is absent or empty (§7.1).`,
56
+ });
57
+ }
58
+ }
59
+ return;
60
+ }
61
+ items.forEach((item, index) => {
62
+ for (const key of required) {
63
+ if (item[key] === undefined && request[key] === undefined) {
64
+ ctx.addIssue({
65
+ code: 'custom',
66
+ path: ['evaluations', index, key],
67
+ message: `\`${key}\` is missing from evaluation ${index} and has no top-level default (§7.1.1).`,
68
+ });
69
+ }
70
+ }
71
+ });
72
+ });
73
+ exports.AccessEvaluationsResponseSchema = zod_1.z
74
+ .object({
75
+ decision: zod_1.z.boolean().optional(),
76
+ context: authzen_entities_1.AuthzenContextSchema.optional(),
77
+ evaluations: zod_1.z.array(authzen_entities_1.AuthzenDecisionSchema).optional(),
78
+ })
79
+ .strict()
80
+ .refine((r) => r.evaluations !== undefined || r.decision !== undefined, {
81
+ message: 'an Access Evaluations response carries `evaluations`, or — for a single-evaluation request — `decision`.',
82
+ });
83
+ function expandAccessEvaluations(request) {
84
+ const parsed = exports.AccessEvaluationsRequestSchema.parse(request);
85
+ const items = parsed.evaluations === undefined || parsed.evaluations.length === 0
86
+ ? [{}]
87
+ : parsed.evaluations;
88
+ return items.map((item, index) => {
89
+ const subject = item.subject ?? parsed.subject;
90
+ const action = item.action ?? parsed.action;
91
+ const resource = item.resource ?? parsed.resource;
92
+ const context = item.context ?? parsed.context;
93
+ if (subject === undefined ||
94
+ action === undefined ||
95
+ resource === undefined) {
96
+ throw new Error(`expandAccessEvaluations: evaluation ${index} is incomplete after defaults (unreachable after schema validation).`);
97
+ }
98
+ return context === undefined
99
+ ? { subject, action, resource }
100
+ : { subject, action, resource, context };
101
+ });
102
+ }
103
+ //# sourceMappingURL=authzen-evaluation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authzen-evaluation.js","sourceRoot":"","sources":["../../../src/authzen/lib/authzen-evaluation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { z } from 'zod';
2
+ export declare const AUTHZEN_WELL_KNOWN_PATH = "/.well-known/authzen-configuration";
3
+ export declare const AUTHZEN_REQUEST_ID_HEADER = "X-Request-ID";
4
+ export declare enum AuthzenEndpointPath {
5
+ Evaluation = "/access/v1/evaluation",
6
+ Evaluations = "/access/v1/evaluations",
7
+ SearchSubject = "/access/v1/search/subject",
8
+ SearchResource = "/access/v1/search/resource",
9
+ SearchAction = "/access/v1/search/action"
10
+ }
11
+ export declare const AuthzenPdpIdentifierSchema: z.ZodString;
12
+ export declare const AuthzenPdpMetadataSchema: z.ZodObject<{
13
+ policy_decision_point: z.ZodString;
14
+ access_evaluation_endpoint: z.ZodString;
15
+ access_evaluations_endpoint: z.ZodOptional<z.ZodString>;
16
+ search_subject_endpoint: z.ZodOptional<z.ZodString>;
17
+ search_action_endpoint: z.ZodOptional<z.ZodString>;
18
+ search_resource_endpoint: z.ZodOptional<z.ZodString>;
19
+ capabilities: z.ZodOptional<z.ZodArray<z.ZodString>>;
20
+ signed_metadata: z.ZodOptional<z.ZodString>;
21
+ }, z.core.$strip>;
22
+ export type AuthzenPdpMetadata = z.infer<typeof AuthzenPdpMetadataSchema>;
23
+ export declare function buildAuthzenPdpMetadata(policyDecisionPoint: string): AuthzenPdpMetadata;
24
+ export declare function assertAuthzenPdpMetadataIdentifier(metadata: AuthzenPdpMetadata, expectedPolicyDecisionPoint: string): void;
25
+ //# sourceMappingURL=authzen-metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authzen-metadata.d.ts","sourceRoot":"","sources":["../../../src/authzen/lib/authzen-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,uBAAuB,uCAAuC,CAAC;AAG5E,eAAO,MAAM,yBAAyB,iBAAiB,CAAC;AAOxD,oBAAY,mBAAmB;IAC7B,UAAU,0BAA0B;IACpC,WAAW,2BAA2B;IACtC,aAAa,8BAA8B;IAC3C,cAAc,+BAA+B;IAC7C,YAAY,6BAA6B;CAC1C;AAKD,eAAO,MAAM,0BAA0B,aAYpC,CAAC;AAYJ,eAAO,MAAM,wBAAwB;;;;;;;;;iBAWnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAO1E,wBAAgB,uBAAuB,CACrC,mBAAmB,EAAE,MAAM,GAC1B,kBAAkB,CAWpB;AAQD,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,kBAAkB,EAC5B,2BAA2B,EAAE,MAAM,GAClC,IAAI,CAMN"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthzenPdpMetadataSchema = exports.AuthzenPdpIdentifierSchema = exports.AuthzenEndpointPath = exports.AUTHZEN_REQUEST_ID_HEADER = exports.AUTHZEN_WELL_KNOWN_PATH = void 0;
4
+ exports.buildAuthzenPdpMetadata = buildAuthzenPdpMetadata;
5
+ exports.assertAuthzenPdpMetadataIdentifier = assertAuthzenPdpMetadataIdentifier;
6
+ const zod_1 = require("zod");
7
+ exports.AUTHZEN_WELL_KNOWN_PATH = '/.well-known/authzen-configuration';
8
+ exports.AUTHZEN_REQUEST_ID_HEADER = 'X-Request-ID';
9
+ var AuthzenEndpointPath;
10
+ (function (AuthzenEndpointPath) {
11
+ AuthzenEndpointPath["Evaluation"] = "/access/v1/evaluation";
12
+ AuthzenEndpointPath["Evaluations"] = "/access/v1/evaluations";
13
+ AuthzenEndpointPath["SearchSubject"] = "/access/v1/search/subject";
14
+ AuthzenEndpointPath["SearchResource"] = "/access/v1/search/resource";
15
+ AuthzenEndpointPath["SearchAction"] = "/access/v1/search/action";
16
+ })(AuthzenEndpointPath || (exports.AuthzenEndpointPath = AuthzenEndpointPath = {}));
17
+ exports.AuthzenPdpIdentifierSchema = zod_1.z
18
+ .string()
19
+ .url()
20
+ .refine((value) => {
21
+ const url = new URL(value);
22
+ return url.protocol === 'https:' && url.search === '' && url.hash === '';
23
+ }, {
24
+ message: 'policy_decision_point must be an https URL with no query or fragment (§9.1.1).',
25
+ });
26
+ const EndpointUrlSchema = zod_1.z.string().url();
27
+ exports.AuthzenPdpMetadataSchema = zod_1.z.object({
28
+ policy_decision_point: exports.AuthzenPdpIdentifierSchema,
29
+ access_evaluation_endpoint: EndpointUrlSchema,
30
+ access_evaluations_endpoint: EndpointUrlSchema.optional(),
31
+ search_subject_endpoint: EndpointUrlSchema.optional(),
32
+ search_action_endpoint: EndpointUrlSchema.optional(),
33
+ search_resource_endpoint: EndpointUrlSchema.optional(),
34
+ capabilities: zod_1.z.array(zod_1.z.string().min(1)).min(1).optional(),
35
+ signed_metadata: zod_1.z.string().min(1).optional(),
36
+ });
37
+ function buildAuthzenPdpMetadata(policyDecisionPoint) {
38
+ const pdp = exports.AuthzenPdpIdentifierSchema.parse(policyDecisionPoint);
39
+ const base = pdp.endsWith('/') ? pdp.slice(0, -1) : pdp;
40
+ return {
41
+ policy_decision_point: pdp,
42
+ access_evaluation_endpoint: `${base}${AuthzenEndpointPath.Evaluation}`,
43
+ access_evaluations_endpoint: `${base}${AuthzenEndpointPath.Evaluations}`,
44
+ search_subject_endpoint: `${base}${AuthzenEndpointPath.SearchSubject}`,
45
+ search_resource_endpoint: `${base}${AuthzenEndpointPath.SearchResource}`,
46
+ search_action_endpoint: `${base}${AuthzenEndpointPath.SearchAction}`,
47
+ };
48
+ }
49
+ function assertAuthzenPdpMetadataIdentifier(metadata, expectedPolicyDecisionPoint) {
50
+ if (metadata.policy_decision_point !== expectedPolicyDecisionPoint) {
51
+ throw new Error(`AuthZEN PDP metadata names "${metadata.policy_decision_point}" but was fetched for "${expectedPolicyDecisionPoint}"; it MUST NOT be used (§9.2.3).`);
52
+ }
53
+ }
54
+ //# sourceMappingURL=authzen-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authzen-metadata.js","sourceRoot":"","sources":["../../../src/authzen/lib/authzen-metadata.ts"],"names":[],"mappings":";;;AAwEA,0DAaC;AAQD,gFASC;AAtGD,6BAAwB;AAQX,QAAA,uBAAuB,GAAG,oCAAoC,CAAC;AAG/D,QAAA,yBAAyB,GAAG,cAAc,CAAC;AAOxD,IAAY,mBAMX;AAND,WAAY,mBAAmB;IAC7B,2DAAoC,CAAA;IACpC,6DAAsC,CAAA;IACtC,kEAA2C,CAAA;IAC3C,oEAA6C,CAAA;IAC7C,gEAAyC,CAAA;AAC3C,CAAC,EANW,mBAAmB,mCAAnB,mBAAmB,QAM9B;AAKY,QAAA,0BAA0B,GAAG,OAAC;KACxC,MAAM,EAAE;KACR,GAAG,EAAE;KACL,MAAM,CACL,CAAC,KAAK,EAAE,EAAE;IACR,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3B,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,IAAI,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;AAC3E,CAAC,EACD;IACE,OAAO,EACL,gFAAgF;CACnF,CACF,CAAC;AAEJ,MAAM,iBAAiB,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;AAU9B,QAAA,wBAAwB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC/C,qBAAqB,EAAE,kCAA0B;IACjD,0BAA0B,EAAE,iBAAiB;IAC7C,2BAA2B,EAAE,iBAAiB,CAAC,QAAQ,EAAE;IACzD,uBAAuB,EAAE,iBAAiB,CAAC,QAAQ,EAAE;IACrD,sBAAsB,EAAE,iBAAiB,CAAC,QAAQ,EAAE;IACpD,wBAAwB,EAAE,iBAAiB,CAAC,QAAQ,EAAE;IAEtD,YAAY,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAE1D,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC;AAQH,SAAgB,uBAAuB,CACrC,mBAA2B;IAE3B,MAAM,GAAG,GAAG,kCAA0B,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACxD,OAAO;QACL,qBAAqB,EAAE,GAAG;QAC1B,0BAA0B,EAAE,GAAG,IAAI,GAAG,mBAAmB,CAAC,UAAU,EAAE;QACtE,2BAA2B,EAAE,GAAG,IAAI,GAAG,mBAAmB,CAAC,WAAW,EAAE;QACxE,uBAAuB,EAAE,GAAG,IAAI,GAAG,mBAAmB,CAAC,aAAa,EAAE;QACtE,wBAAwB,EAAE,GAAG,IAAI,GAAG,mBAAmB,CAAC,cAAc,EAAE;QACxE,sBAAsB,EAAE,GAAG,IAAI,GAAG,mBAAmB,CAAC,YAAY,EAAE;KACrE,CAAC;AACJ,CAAC;AAQD,SAAgB,kCAAkC,CAChD,QAA4B,EAC5B,2BAAmC;IAEnC,IAAI,QAAQ,CAAC,qBAAqB,KAAK,2BAA2B,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CACb,+BAA+B,QAAQ,CAAC,qBAAqB,0BAA0B,2BAA2B,kCAAkC,CACrJ,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,135 @@
1
+ import { z } from 'zod';
2
+ export declare const AuthzenPageRequestSchema: z.ZodObject<{
3
+ token: z.ZodOptional<z.ZodString>;
4
+ limit: z.ZodOptional<z.ZodNumber>;
5
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
6
+ }, z.core.$strict>;
7
+ export type AuthzenPageRequest = z.infer<typeof AuthzenPageRequestSchema>;
8
+ export declare const AuthzenPageResponseSchema: z.ZodObject<{
9
+ next_token: z.ZodString;
10
+ count: z.ZodOptional<z.ZodNumber>;
11
+ total: z.ZodOptional<z.ZodNumber>;
12
+ }, z.core.$strict>;
13
+ export type AuthzenPageResponse = z.infer<typeof AuthzenPageResponseSchema>;
14
+ export declare const AUTHZEN_LAST_PAGE_TOKEN = "";
15
+ export declare const SubjectSearchRequestSchema: z.ZodObject<{
16
+ subject: z.ZodObject<{
17
+ type: z.ZodString;
18
+ id: z.ZodOptional<z.ZodString>;
19
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
20
+ }, z.core.$strict>;
21
+ action: z.ZodObject<{
22
+ name: z.ZodString;
23
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
24
+ }, z.core.$strict>;
25
+ resource: z.ZodObject<{
26
+ type: z.ZodString;
27
+ id: z.ZodString;
28
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
29
+ }, z.core.$strict>;
30
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
31
+ page: z.ZodOptional<z.ZodObject<{
32
+ token: z.ZodOptional<z.ZodString>;
33
+ limit: z.ZodOptional<z.ZodNumber>;
34
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
35
+ }, z.core.$strict>>;
36
+ }, z.core.$strict>;
37
+ export type SubjectSearchRequest = z.infer<typeof SubjectSearchRequestSchema>;
38
+ export declare const ResourceSearchRequestSchema: z.ZodObject<{
39
+ subject: z.ZodObject<{
40
+ type: z.ZodString;
41
+ id: z.ZodString;
42
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
43
+ }, z.core.$strict>;
44
+ action: z.ZodObject<{
45
+ name: z.ZodString;
46
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
47
+ }, z.core.$strict>;
48
+ resource: z.ZodObject<{
49
+ type: z.ZodString;
50
+ id: z.ZodOptional<z.ZodString>;
51
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
52
+ }, z.core.$strict>;
53
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
54
+ page: z.ZodOptional<z.ZodObject<{
55
+ token: z.ZodOptional<z.ZodString>;
56
+ limit: z.ZodOptional<z.ZodNumber>;
57
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
58
+ }, z.core.$strict>>;
59
+ }, z.core.$strict>;
60
+ export type ResourceSearchRequest = z.infer<typeof ResourceSearchRequestSchema>;
61
+ export declare const ActionSearchRequestSchema: z.ZodObject<{
62
+ subject: z.ZodObject<{
63
+ type: z.ZodString;
64
+ id: z.ZodString;
65
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
66
+ }, z.core.$strict>;
67
+ resource: z.ZodObject<{
68
+ type: z.ZodString;
69
+ id: z.ZodString;
70
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
71
+ }, z.core.$strict>;
72
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
73
+ page: z.ZodOptional<z.ZodObject<{
74
+ token: z.ZodOptional<z.ZodString>;
75
+ limit: z.ZodOptional<z.ZodNumber>;
76
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
77
+ }, z.core.$strict>>;
78
+ }, z.core.$strict>;
79
+ export type ActionSearchRequest = z.infer<typeof ActionSearchRequestSchema>;
80
+ export declare const SubjectSearchResponseSchema: z.ZodObject<{
81
+ page: z.ZodOptional<z.ZodObject<{
82
+ next_token: z.ZodString;
83
+ count: z.ZodOptional<z.ZodNumber>;
84
+ total: z.ZodOptional<z.ZodNumber>;
85
+ }, z.core.$strict>>;
86
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
87
+ results: z.ZodArray<z.ZodObject<{
88
+ type: z.ZodString;
89
+ id: z.ZodString;
90
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
91
+ }, z.core.$strict>>;
92
+ }, z.core.$strict>;
93
+ export type SubjectSearchResponse = z.infer<typeof SubjectSearchResponseSchema>;
94
+ export declare const ResourceSearchResponseSchema: z.ZodObject<{
95
+ page: z.ZodOptional<z.ZodObject<{
96
+ next_token: z.ZodString;
97
+ count: z.ZodOptional<z.ZodNumber>;
98
+ total: z.ZodOptional<z.ZodNumber>;
99
+ }, z.core.$strict>>;
100
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
101
+ results: z.ZodArray<z.ZodObject<{
102
+ type: z.ZodString;
103
+ id: z.ZodString;
104
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
105
+ }, z.core.$strict>>;
106
+ }, z.core.$strict>;
107
+ export type ResourceSearchResponse = z.infer<typeof ResourceSearchResponseSchema>;
108
+ export declare const ActionSearchResponseSchema: z.ZodObject<{
109
+ page: z.ZodOptional<z.ZodObject<{
110
+ next_token: z.ZodString;
111
+ count: z.ZodOptional<z.ZodNumber>;
112
+ total: z.ZodOptional<z.ZodNumber>;
113
+ }, z.core.$strict>>;
114
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
115
+ results: z.ZodArray<z.ZodObject<{
116
+ name: z.ZodString;
117
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
118
+ }, z.core.$strict>>;
119
+ }, z.core.$strict>;
120
+ export type ActionSearchResponse = z.infer<typeof ActionSearchResponseSchema>;
121
+ export declare function searchResultsOutsideQueriedType(results: ReadonlyArray<{
122
+ readonly type: string;
123
+ }>, queriedType: string): ReadonlyArray<{
124
+ readonly type: string;
125
+ }>;
126
+ export declare function searchContinuationMatches(previous: {
127
+ readonly page?: {
128
+ readonly token?: string;
129
+ };
130
+ }, next: {
131
+ readonly page?: {
132
+ readonly token?: string;
133
+ };
134
+ }): boolean;
135
+ //# sourceMappingURL=authzen-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authzen-search.d.ts","sourceRoot":"","sources":["../../../src/authzen/lib/authzen-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA2BxB,eAAO,MAAM,wBAAwB;;;;kBAM1B,CAAC;AACZ,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAM1E,eAAO,MAAM,yBAAyB;;;;kBAM3B,CAAC;AACZ,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAG5E,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAG1C,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;kBAQ5B,CAAC;AACZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAG9E,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;kBAQ7B,CAAC;AACZ,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CACzC,OAAO,2BAA2B,CACnC,CAAC;AAOF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;kBAO3B,CAAC;AACZ,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAa5E,eAAO,MAAM,2BAA2B;;;;;;;;;;;;kBACI,CAAC;AAC7C,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CACzC,OAAO,2BAA2B,CACnC,CAAC;AAEF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;kBAExC,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAC1C,OAAO,4BAA4B,CACpC,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;kBACI,CAAC;AAC5C,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAQ9E,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,aAAa,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EACjD,WAAW,EAAE,MAAM,GAClB,aAAa,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAE1C;AAQD,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EACzD,IAAI,EAAE;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACpD,OAAO,CAGT"}