@stratum-hq/core 0.1.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 (81) hide show
  1. package/dist/__tests__/ancestry.test.d.ts +2 -0
  2. package/dist/__tests__/ancestry.test.d.ts.map +1 -0
  3. package/dist/__tests__/ancestry.test.js +132 -0
  4. package/dist/__tests__/ancestry.test.js.map +1 -0
  5. package/dist/__tests__/config-types.test.d.ts +2 -0
  6. package/dist/__tests__/config-types.test.d.ts.map +1 -0
  7. package/dist/__tests__/config-types.test.js +143 -0
  8. package/dist/__tests__/config-types.test.js.map +1 -0
  9. package/dist/__tests__/errors.test.d.ts +2 -0
  10. package/dist/__tests__/errors.test.d.ts.map +1 -0
  11. package/dist/__tests__/errors.test.js +113 -0
  12. package/dist/__tests__/errors.test.js.map +1 -0
  13. package/dist/__tests__/isolation.test.d.ts +2 -0
  14. package/dist/__tests__/isolation.test.d.ts.map +1 -0
  15. package/dist/__tests__/isolation.test.js +34 -0
  16. package/dist/__tests__/isolation.test.js.map +1 -0
  17. package/dist/__tests__/validation.test.d.ts +2 -0
  18. package/dist/__tests__/validation.test.d.ts.map +1 -0
  19. package/dist/__tests__/validation.test.js +100 -0
  20. package/dist/__tests__/validation.test.js.map +1 -0
  21. package/dist/__tests__/webhook.test.d.ts +2 -0
  22. package/dist/__tests__/webhook.test.d.ts.map +1 -0
  23. package/dist/__tests__/webhook.test.js +165 -0
  24. package/dist/__tests__/webhook.test.js.map +1 -0
  25. package/dist/constants.d.ts +9 -0
  26. package/dist/constants.d.ts.map +1 -0
  27. package/dist/constants.js +12 -0
  28. package/dist/constants.js.map +1 -0
  29. package/dist/index.d.ts +14 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +102 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/types/api-key.d.ts +5 -0
  34. package/dist/types/api-key.d.ts.map +1 -0
  35. package/dist/types/api-key.js +7 -0
  36. package/dist/types/api-key.js.map +1 -0
  37. package/dist/types/audit.d.ts +81 -0
  38. package/dist/types/audit.d.ts.map +1 -0
  39. package/dist/types/audit.js +30 -0
  40. package/dist/types/audit.js.map +1 -0
  41. package/dist/types/config.d.ts +93 -0
  42. package/dist/types/config.d.ts.map +1 -0
  43. package/dist/types/config.js +22 -0
  44. package/dist/types/config.js.map +1 -0
  45. package/dist/types/consent.d.ts +63 -0
  46. package/dist/types/consent.d.ts.map +1 -0
  47. package/dist/types/consent.js +30 -0
  48. package/dist/types/consent.js.map +1 -0
  49. package/dist/types/isolation.d.ts +9 -0
  50. package/dist/types/isolation.d.ts.map +1 -0
  51. package/dist/types/isolation.js +20 -0
  52. package/dist/types/isolation.js.map +1 -0
  53. package/dist/types/permission.d.ts +101 -0
  54. package/dist/types/permission.d.ts.map +1 -0
  55. package/dist/types/permission.js +41 -0
  56. package/dist/types/permission.js.map +1 -0
  57. package/dist/types/region.d.ts +90 -0
  58. package/dist/types/region.d.ts.map +1 -0
  59. package/dist/types/region.js +39 -0
  60. package/dist/types/region.js.map +1 -0
  61. package/dist/types/tenant.d.ts +148 -0
  62. package/dist/types/tenant.d.ts.map +1 -0
  63. package/dist/types/tenant.js +55 -0
  64. package/dist/types/tenant.js.map +1 -0
  65. package/dist/types/webhook.d.ts +181 -0
  66. package/dist/types/webhook.d.ts.map +1 -0
  67. package/dist/types/webhook.js +65 -0
  68. package/dist/types/webhook.js.map +1 -0
  69. package/dist/utils/ancestry.d.ts +53 -0
  70. package/dist/utils/ancestry.d.ts.map +1 -0
  71. package/dist/utils/ancestry.js +100 -0
  72. package/dist/utils/ancestry.js.map +1 -0
  73. package/dist/utils/errors.d.ts +88 -0
  74. package/dist/utils/errors.d.ts.map +1 -0
  75. package/dist/utils/errors.js +173 -0
  76. package/dist/utils/errors.js.map +1 -0
  77. package/dist/utils/validation.d.ts +21 -0
  78. package/dist/utils/validation.d.ts.map +1 -0
  79. package/dist/utils/validation.js +19 -0
  80. package/dist/utils/validation.js.map +1 -0
  81. package/package.json +35 -0
@@ -0,0 +1,63 @@
1
+ import { z } from "zod";
2
+ export declare const ConsentPurpose: {
3
+ readonly DATA_PROCESSING: "data_processing";
4
+ readonly ANALYTICS: "analytics";
5
+ readonly MARKETING: "marketing";
6
+ readonly THIRD_PARTY_SHARING: "third_party_sharing";
7
+ };
8
+ export declare const ConsentRecordSchema: z.ZodObject<{
9
+ id: z.ZodString;
10
+ tenant_id: z.ZodString;
11
+ subject_id: z.ZodString;
12
+ purpose: z.ZodString;
13
+ granted: z.ZodBoolean;
14
+ granted_at: z.ZodNullable<z.ZodString>;
15
+ revoked_at: z.ZodNullable<z.ZodString>;
16
+ expires_at: z.ZodNullable<z.ZodString>;
17
+ metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
18
+ created_at: z.ZodString;
19
+ updated_at: z.ZodString;
20
+ }, "strip", z.ZodTypeAny, {
21
+ id: string;
22
+ tenant_id: string;
23
+ subject_id: string;
24
+ purpose: string;
25
+ granted: boolean;
26
+ granted_at: string | null;
27
+ revoked_at: string | null;
28
+ expires_at: string | null;
29
+ metadata: Record<string, unknown>;
30
+ created_at: string;
31
+ updated_at: string;
32
+ }, {
33
+ id: string;
34
+ tenant_id: string;
35
+ subject_id: string;
36
+ purpose: string;
37
+ granted: boolean;
38
+ granted_at: string | null;
39
+ revoked_at: string | null;
40
+ expires_at: string | null;
41
+ created_at: string;
42
+ updated_at: string;
43
+ metadata?: Record<string, unknown> | undefined;
44
+ }>;
45
+ export type ConsentRecord = z.infer<typeof ConsentRecordSchema>;
46
+ export declare const GrantConsentInputSchema: z.ZodObject<{
47
+ subject_id: z.ZodString;
48
+ purpose: z.ZodString;
49
+ expires_at: z.ZodOptional<z.ZodString>;
50
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
51
+ }, "strip", z.ZodTypeAny, {
52
+ subject_id: string;
53
+ purpose: string;
54
+ expires_at?: string | undefined;
55
+ metadata?: Record<string, unknown> | undefined;
56
+ }, {
57
+ subject_id: string;
58
+ purpose: string;
59
+ expires_at?: string | undefined;
60
+ metadata?: Record<string, unknown> | undefined;
61
+ }>;
62
+ export type GrantConsentInput = z.infer<typeof GrantConsentInputSchema>;
63
+ //# sourceMappingURL=consent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consent.d.ts","sourceRoot":"","sources":["../../src/types/consent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AAEX,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;EAKlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GrantConsentInputSchema = exports.ConsentRecordSchema = exports.ConsentPurpose = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.ConsentPurpose = {
6
+ DATA_PROCESSING: "data_processing",
7
+ ANALYTICS: "analytics",
8
+ MARKETING: "marketing",
9
+ THIRD_PARTY_SHARING: "third_party_sharing",
10
+ };
11
+ exports.ConsentRecordSchema = zod_1.z.object({
12
+ id: zod_1.z.string().uuid(),
13
+ tenant_id: zod_1.z.string().uuid(),
14
+ subject_id: zod_1.z.string(),
15
+ purpose: zod_1.z.string(),
16
+ granted: zod_1.z.boolean(),
17
+ granted_at: zod_1.z.string().nullable(),
18
+ revoked_at: zod_1.z.string().nullable(),
19
+ expires_at: zod_1.z.string().nullable(),
20
+ metadata: zod_1.z.record(zod_1.z.unknown()).default({}),
21
+ created_at: zod_1.z.string(),
22
+ updated_at: zod_1.z.string(),
23
+ });
24
+ exports.GrantConsentInputSchema = zod_1.z.object({
25
+ subject_id: zod_1.z.string().min(1),
26
+ purpose: zod_1.z.string().min(1),
27
+ expires_at: zod_1.z.string().optional(),
28
+ metadata: zod_1.z.record(zod_1.z.unknown()).optional(),
29
+ });
30
+ //# sourceMappingURL=consent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consent.js","sourceRoot":"","sources":["../../src/types/consent.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAEX,QAAA,cAAc,GAAG;IAC5B,eAAe,EAAE,iBAAiB;IAClC,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,mBAAmB,EAAE,qBAAqB;CAClC,CAAC;AAEE,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACrB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAC5B,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE;IACtB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE;IACpB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,QAAQ,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3C,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE;IACtB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE;CACvB,CAAC,CAAC;AAIU,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9C,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,QAAQ,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { IsolationStrategy } from "./tenant.js";
2
+ /**
3
+ * V1.2 adds DB_PER_TENANT to the supported strategies.
4
+ */
5
+ export declare const SUPPORTED_ISOLATION_STRATEGIES: readonly ["SHARED_RLS", "SCHEMA_PER_TENANT", "DB_PER_TENANT"];
6
+ /** @deprecated Use SUPPORTED_ISOLATION_STRATEGIES */
7
+ export declare const SUPPORTED_ISOLATION_STRATEGIES_V1: readonly ["SHARED_RLS", "SCHEMA_PER_TENANT", "DB_PER_TENANT"];
8
+ export declare function isSupportedIsolationStrategy(strategy: string): boolean;
9
+ //# sourceMappingURL=isolation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isolation.d.ts","sourceRoot":"","sources":["../../src/types/isolation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,8BAA8B,+DAIjC,CAAC;AAEX,qDAAqD;AACrD,eAAO,MAAM,iCAAiC,+DAAiC,CAAC;AAEhF,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEtE"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSupportedIsolationStrategy = exports.SUPPORTED_ISOLATION_STRATEGIES_V1 = exports.SUPPORTED_ISOLATION_STRATEGIES = exports.IsolationStrategy = void 0;
4
+ var tenant_js_1 = require("./tenant.js");
5
+ Object.defineProperty(exports, "IsolationStrategy", { enumerable: true, get: function () { return tenant_js_1.IsolationStrategy; } });
6
+ /**
7
+ * V1.2 adds DB_PER_TENANT to the supported strategies.
8
+ */
9
+ exports.SUPPORTED_ISOLATION_STRATEGIES = [
10
+ "SHARED_RLS",
11
+ "SCHEMA_PER_TENANT",
12
+ "DB_PER_TENANT",
13
+ ];
14
+ /** @deprecated Use SUPPORTED_ISOLATION_STRATEGIES */
15
+ exports.SUPPORTED_ISOLATION_STRATEGIES_V1 = exports.SUPPORTED_ISOLATION_STRATEGIES;
16
+ function isSupportedIsolationStrategy(strategy) {
17
+ return exports.SUPPORTED_ISOLATION_STRATEGIES.includes(strategy);
18
+ }
19
+ exports.isSupportedIsolationStrategy = isSupportedIsolationStrategy;
20
+ //# sourceMappingURL=isolation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isolation.js","sourceRoot":"","sources":["../../src/types/isolation.ts"],"names":[],"mappings":";;;AAAA,yCAAgD;AAAvC,8GAAA,iBAAiB,OAAA;AAE1B;;GAEG;AACU,QAAA,8BAA8B,GAAG;IAC5C,YAAY;IACZ,mBAAmB;IACnB,eAAe;CACP,CAAC;AAEX,qDAAqD;AACxC,QAAA,iCAAiC,GAAG,sCAA8B,CAAC;AAEhF,SAAgB,4BAA4B,CAAC,QAAgB;IAC3D,OAAO,sCAA8B,CAAC,QAAQ,CAAC,QAAe,CAAC,CAAC;AAClE,CAAC;AAFD,oEAEC"}
@@ -0,0 +1,101 @@
1
+ import { z } from "zod";
2
+ export declare const PermissionMode: {
3
+ readonly LOCKED: "LOCKED";
4
+ readonly INHERITED: "INHERITED";
5
+ readonly DELEGATED: "DELEGATED";
6
+ };
7
+ export type PermissionMode = (typeof PermissionMode)[keyof typeof PermissionMode];
8
+ export declare const RevocationMode: {
9
+ readonly CASCADE: "CASCADE";
10
+ readonly SOFT: "SOFT";
11
+ readonly PERMANENT: "PERMANENT";
12
+ };
13
+ export type RevocationMode = (typeof RevocationMode)[keyof typeof RevocationMode];
14
+ export declare const PermissionPolicySchema: z.ZodObject<{
15
+ id: z.ZodString;
16
+ tenant_id: z.ZodString;
17
+ key: z.ZodString;
18
+ value: z.ZodDefault<z.ZodUnknown>;
19
+ mode: z.ZodDefault<z.ZodNativeEnum<{
20
+ readonly LOCKED: "LOCKED";
21
+ readonly INHERITED: "INHERITED";
22
+ readonly DELEGATED: "DELEGATED";
23
+ }>>;
24
+ revocation_mode: z.ZodDefault<z.ZodNativeEnum<{
25
+ readonly CASCADE: "CASCADE";
26
+ readonly SOFT: "SOFT";
27
+ readonly PERMANENT: "PERMANENT";
28
+ }>>;
29
+ source_tenant_id: z.ZodString;
30
+ created_at: z.ZodString;
31
+ updated_at: z.ZodString;
32
+ }, "strip", z.ZodTypeAny, {
33
+ id: string;
34
+ tenant_id: string;
35
+ created_at: string;
36
+ updated_at: string;
37
+ key: string;
38
+ source_tenant_id: string;
39
+ mode: "LOCKED" | "INHERITED" | "DELEGATED";
40
+ revocation_mode: "CASCADE" | "SOFT" | "PERMANENT";
41
+ value?: unknown;
42
+ }, {
43
+ id: string;
44
+ tenant_id: string;
45
+ created_at: string;
46
+ updated_at: string;
47
+ key: string;
48
+ source_tenant_id: string;
49
+ value?: unknown;
50
+ mode?: "LOCKED" | "INHERITED" | "DELEGATED" | undefined;
51
+ revocation_mode?: "CASCADE" | "SOFT" | "PERMANENT" | undefined;
52
+ }>;
53
+ export type PermissionPolicy = z.infer<typeof PermissionPolicySchema>;
54
+ export declare const CreatePermissionInputSchema: z.ZodObject<{
55
+ key: z.ZodString;
56
+ value: z.ZodDefault<z.ZodUnknown>;
57
+ mode: z.ZodDefault<z.ZodNativeEnum<{
58
+ readonly LOCKED: "LOCKED";
59
+ readonly INHERITED: "INHERITED";
60
+ readonly DELEGATED: "DELEGATED";
61
+ }>>;
62
+ revocation_mode: z.ZodDefault<z.ZodNativeEnum<{
63
+ readonly CASCADE: "CASCADE";
64
+ readonly SOFT: "SOFT";
65
+ readonly PERMANENT: "PERMANENT";
66
+ }>>;
67
+ }, "strip", z.ZodTypeAny, {
68
+ key: string;
69
+ mode: "LOCKED" | "INHERITED" | "DELEGATED";
70
+ revocation_mode: "CASCADE" | "SOFT" | "PERMANENT";
71
+ value?: unknown;
72
+ }, {
73
+ key: string;
74
+ value?: unknown;
75
+ mode?: "LOCKED" | "INHERITED" | "DELEGATED" | undefined;
76
+ revocation_mode?: "CASCADE" | "SOFT" | "PERMANENT" | undefined;
77
+ }>;
78
+ export type CreatePermissionInput = z.infer<typeof CreatePermissionInputSchema>;
79
+ export declare const UpdatePermissionInputSchema: z.ZodObject<{
80
+ value: z.ZodOptional<z.ZodUnknown>;
81
+ mode: z.ZodOptional<z.ZodNativeEnum<{
82
+ readonly LOCKED: "LOCKED";
83
+ readonly INHERITED: "INHERITED";
84
+ readonly DELEGATED: "DELEGATED";
85
+ }>>;
86
+ revocation_mode: z.ZodOptional<z.ZodNativeEnum<{
87
+ readonly CASCADE: "CASCADE";
88
+ readonly SOFT: "SOFT";
89
+ readonly PERMANENT: "PERMANENT";
90
+ }>>;
91
+ }, "strip", z.ZodTypeAny, {
92
+ value?: unknown;
93
+ mode?: "LOCKED" | "INHERITED" | "DELEGATED" | undefined;
94
+ revocation_mode?: "CASCADE" | "SOFT" | "PERMANENT" | undefined;
95
+ }, {
96
+ value?: unknown;
97
+ mode?: "LOCKED" | "INHERITED" | "DELEGATED" | undefined;
98
+ revocation_mode?: "CASCADE" | "SOFT" | "PERMANENT" | undefined;
99
+ }>;
100
+ export type UpdatePermissionInput = z.infer<typeof UpdatePermissionInputSchema>;
101
+ //# sourceMappingURL=permission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission.d.ts","sourceRoot":"","sources":["../../src/types/permission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,cAAc;;;;CAIjB,CAAC;AAEX,MAAM,MAAM,cAAc,GACxB,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAEvD,eAAO,MAAM,cAAc;;;;CAIjB,CAAC;AAEX,MAAM,MAAM,cAAc,GACxB,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAEvD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;EAOtC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;EAItC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UpdatePermissionInputSchema = exports.CreatePermissionInputSchema = exports.PermissionPolicySchema = exports.RevocationMode = exports.PermissionMode = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.PermissionMode = {
6
+ LOCKED: "LOCKED",
7
+ INHERITED: "INHERITED",
8
+ DELEGATED: "DELEGATED",
9
+ };
10
+ exports.RevocationMode = {
11
+ CASCADE: "CASCADE",
12
+ SOFT: "SOFT",
13
+ PERMANENT: "PERMANENT",
14
+ };
15
+ exports.PermissionPolicySchema = zod_1.z.object({
16
+ id: zod_1.z.string().uuid(),
17
+ tenant_id: zod_1.z.string().uuid(),
18
+ key: zod_1.z.string().min(1).max(255),
19
+ value: zod_1.z.unknown().default(true),
20
+ mode: zod_1.z.nativeEnum(exports.PermissionMode).default(exports.PermissionMode.INHERITED),
21
+ revocation_mode: zod_1.z
22
+ .nativeEnum(exports.RevocationMode)
23
+ .default(exports.RevocationMode.CASCADE),
24
+ source_tenant_id: zod_1.z.string().uuid(),
25
+ created_at: zod_1.z.string().datetime(),
26
+ updated_at: zod_1.z.string().datetime(),
27
+ });
28
+ exports.CreatePermissionInputSchema = zod_1.z.object({
29
+ key: zod_1.z.string().min(1).max(255),
30
+ value: zod_1.z.unknown().default(true),
31
+ mode: zod_1.z.nativeEnum(exports.PermissionMode).default(exports.PermissionMode.INHERITED),
32
+ revocation_mode: zod_1.z
33
+ .nativeEnum(exports.RevocationMode)
34
+ .default(exports.RevocationMode.CASCADE),
35
+ });
36
+ exports.UpdatePermissionInputSchema = zod_1.z.object({
37
+ value: zod_1.z.unknown().optional(),
38
+ mode: zod_1.z.nativeEnum(exports.PermissionMode).optional(),
39
+ revocation_mode: zod_1.z.nativeEnum(exports.RevocationMode).optional(),
40
+ });
41
+ //# sourceMappingURL=permission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission.js","sourceRoot":"","sources":["../../src/types/permission.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAEX,QAAA,cAAc,GAAG;IAC5B,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;CACd,CAAC;AAKE,QAAA,cAAc,GAAG;IAC5B,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,WAAW;CACd,CAAC;AAKE,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACrB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAC5B,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC/B,KAAK,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAChC,IAAI,EAAE,OAAC,CAAC,UAAU,CAAC,sBAAc,CAAC,CAAC,OAAO,CAAC,sBAAc,CAAC,SAAS,CAAC;IACpE,eAAe,EAAE,OAAC;SACf,UAAU,CAAC,sBAAc,CAAC;SAC1B,OAAO,CAAC,sBAAc,CAAC,OAAO,CAAC;IAClC,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACnC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAIU,QAAA,2BAA2B,GAAG,OAAC,CAAC,MAAM,CAAC;IAClD,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC/B,KAAK,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAChC,IAAI,EAAE,OAAC,CAAC,UAAU,CAAC,sBAAc,CAAC,CAAC,OAAO,CAAC,sBAAc,CAAC,SAAS,CAAC;IACpE,eAAe,EAAE,OAAC;SACf,UAAU,CAAC,sBAAc,CAAC;SAC1B,OAAO,CAAC,sBAAc,CAAC,OAAO,CAAC;CACnC,CAAC,CAAC;AAIU,QAAA,2BAA2B,GAAG,OAAC,CAAC,MAAM,CAAC;IAClD,KAAK,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC7B,IAAI,EAAE,OAAC,CAAC,UAAU,CAAC,sBAAc,CAAC,CAAC,QAAQ,EAAE;IAC7C,eAAe,EAAE,OAAC,CAAC,UAAU,CAAC,sBAAc,CAAC,CAAC,QAAQ,EAAE;CACzD,CAAC,CAAC"}
@@ -0,0 +1,90 @@
1
+ import { z } from "zod";
2
+ export declare const RegionStatus: {
3
+ readonly ACTIVE: "active";
4
+ readonly DRAINING: "draining";
5
+ readonly INACTIVE: "inactive";
6
+ };
7
+ export declare const RegionSchema: z.ZodObject<{
8
+ id: z.ZodString;
9
+ display_name: z.ZodString;
10
+ slug: z.ZodString;
11
+ control_plane_url: z.ZodNullable<z.ZodString>;
12
+ database_url: z.ZodNullable<z.ZodString>;
13
+ is_primary: z.ZodDefault<z.ZodBoolean>;
14
+ status: z.ZodDefault<z.ZodEnum<["active", "draining", "inactive"]>>;
15
+ metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
16
+ created_at: z.ZodString;
17
+ updated_at: z.ZodString;
18
+ }, "strip", z.ZodTypeAny, {
19
+ id: string;
20
+ status: "active" | "draining" | "inactive";
21
+ metadata: Record<string, unknown>;
22
+ created_at: string;
23
+ updated_at: string;
24
+ display_name: string;
25
+ slug: string;
26
+ control_plane_url: string | null;
27
+ database_url: string | null;
28
+ is_primary: boolean;
29
+ }, {
30
+ id: string;
31
+ created_at: string;
32
+ updated_at: string;
33
+ display_name: string;
34
+ slug: string;
35
+ control_plane_url: string | null;
36
+ database_url: string | null;
37
+ status?: "active" | "draining" | "inactive" | undefined;
38
+ metadata?: Record<string, unknown> | undefined;
39
+ is_primary?: boolean | undefined;
40
+ }>;
41
+ export type Region = z.infer<typeof RegionSchema>;
42
+ export declare const CreateRegionInputSchema: z.ZodObject<{
43
+ display_name: z.ZodString;
44
+ slug: z.ZodString;
45
+ control_plane_url: z.ZodOptional<z.ZodString>;
46
+ is_primary: z.ZodOptional<z.ZodBoolean>;
47
+ status: z.ZodOptional<z.ZodEnum<["active", "draining", "inactive"]>>;
48
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
49
+ }, "strip", z.ZodTypeAny, {
50
+ display_name: string;
51
+ slug: string;
52
+ status?: "active" | "draining" | "inactive" | undefined;
53
+ metadata?: Record<string, unknown> | undefined;
54
+ control_plane_url?: string | undefined;
55
+ is_primary?: boolean | undefined;
56
+ }, {
57
+ display_name: string;
58
+ slug: string;
59
+ status?: "active" | "draining" | "inactive" | undefined;
60
+ metadata?: Record<string, unknown> | undefined;
61
+ control_plane_url?: string | undefined;
62
+ is_primary?: boolean | undefined;
63
+ }>;
64
+ export type CreateRegionInput = z.infer<typeof CreateRegionInputSchema>;
65
+ export declare const UpdateRegionInputSchema: z.ZodObject<{
66
+ display_name: z.ZodOptional<z.ZodString>;
67
+ control_plane_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
68
+ status: z.ZodOptional<z.ZodEnum<["active", "draining", "inactive"]>>;
69
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
70
+ }, "strip", z.ZodTypeAny, {
71
+ status?: "active" | "draining" | "inactive" | undefined;
72
+ metadata?: Record<string, unknown> | undefined;
73
+ display_name?: string | undefined;
74
+ control_plane_url?: string | null | undefined;
75
+ }, {
76
+ status?: "active" | "draining" | "inactive" | undefined;
77
+ metadata?: Record<string, unknown> | undefined;
78
+ display_name?: string | undefined;
79
+ control_plane_url?: string | null | undefined;
80
+ }>;
81
+ export type UpdateRegionInput = z.infer<typeof UpdateRegionInputSchema>;
82
+ export declare const MigrateRegionInputSchema: z.ZodObject<{
83
+ region_id: z.ZodString;
84
+ }, "strip", z.ZodTypeAny, {
85
+ region_id: string;
86
+ }, {
87
+ region_id: string;
88
+ }>;
89
+ export type MigrateRegionInput = z.infer<typeof MigrateRegionInputSchema>;
90
+ //# sourceMappingURL=region.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"region.d.ts","sourceRoot":"","sources":["../../src/types/region.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,YAAY;;;;CAIf,CAAC;AAEX,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;EAOlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;EAKlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,wBAAwB;;;;;;EAEnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MigrateRegionInputSchema = exports.UpdateRegionInputSchema = exports.CreateRegionInputSchema = exports.RegionSchema = exports.RegionStatus = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.RegionStatus = {
6
+ ACTIVE: "active",
7
+ DRAINING: "draining",
8
+ INACTIVE: "inactive",
9
+ };
10
+ exports.RegionSchema = zod_1.z.object({
11
+ id: zod_1.z.string().uuid(),
12
+ display_name: zod_1.z.string().min(1),
13
+ slug: zod_1.z.string().regex(/^[a-z][a-z0-9_]{0,62}$/),
14
+ control_plane_url: zod_1.z.string().url().nullable(),
15
+ database_url: zod_1.z.string().nullable(), // Only used at runtime, never exposed via API
16
+ is_primary: zod_1.z.boolean().default(false),
17
+ status: zod_1.z.enum(["active", "draining", "inactive"]).default("active"),
18
+ metadata: zod_1.z.record(zod_1.z.unknown()).default({}),
19
+ created_at: zod_1.z.string(),
20
+ updated_at: zod_1.z.string(),
21
+ });
22
+ exports.CreateRegionInputSchema = zod_1.z.object({
23
+ display_name: zod_1.z.string().min(1),
24
+ slug: zod_1.z.string().regex(/^[a-z][a-z0-9_]{0,62}$/),
25
+ control_plane_url: zod_1.z.string().url().optional(),
26
+ is_primary: zod_1.z.boolean().optional(),
27
+ status: zod_1.z.enum(["active", "draining", "inactive"]).optional(),
28
+ metadata: zod_1.z.record(zod_1.z.unknown()).optional(),
29
+ });
30
+ exports.UpdateRegionInputSchema = zod_1.z.object({
31
+ display_name: zod_1.z.string().min(1).optional(),
32
+ control_plane_url: zod_1.z.string().url().nullable().optional(),
33
+ status: zod_1.z.enum(["active", "draining", "inactive"]).optional(),
34
+ metadata: zod_1.z.record(zod_1.z.unknown()).optional(),
35
+ });
36
+ exports.MigrateRegionInputSchema = zod_1.z.object({
37
+ region_id: zod_1.z.string().uuid(),
38
+ });
39
+ //# sourceMappingURL=region.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"region.js","sourceRoot":"","sources":["../../src/types/region.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAEX,QAAA,YAAY,GAAG;IAC1B,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;CACZ,CAAC;AAEE,QAAA,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;IACnC,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACrB,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC;IAChD,iBAAiB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC9C,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,8CAA8C;IACnF,UAAU,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACtC,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACpE,QAAQ,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3C,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE;IACtB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE;CACvB,CAAC,CAAC;AAIU,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9C,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC;IAChD,iBAAiB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC9C,UAAU,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC7D,QAAQ,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAIU,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9C,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1C,iBAAiB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACzD,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC7D,QAAQ,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAIU,QAAA,wBAAwB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC/C,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;CAC7B,CAAC,CAAC"}
@@ -0,0 +1,148 @@
1
+ import { z } from "zod";
2
+ import type { ResolvedConfig } from "./config.js";
3
+ export declare const IsolationStrategy: {
4
+ readonly SHARED_RLS: "SHARED_RLS";
5
+ readonly SCHEMA_PER_TENANT: "SCHEMA_PER_TENANT";
6
+ readonly DB_PER_TENANT: "DB_PER_TENANT";
7
+ };
8
+ export type IsolationStrategy = (typeof IsolationStrategy)[keyof typeof IsolationStrategy];
9
+ export declare const TenantStatus: {
10
+ readonly ACTIVE: "active";
11
+ readonly ARCHIVED: "archived";
12
+ };
13
+ export type TenantStatus = (typeof TenantStatus)[keyof typeof TenantStatus];
14
+ export declare const TenantNodeSchema: z.ZodObject<{
15
+ id: z.ZodString;
16
+ parent_id: z.ZodNullable<z.ZodString>;
17
+ ancestry_path: z.ZodString;
18
+ depth: z.ZodNumber;
19
+ name: z.ZodString;
20
+ slug: z.ZodString;
21
+ config: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
22
+ metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
23
+ isolation_strategy: z.ZodDefault<z.ZodNativeEnum<{
24
+ readonly SHARED_RLS: "SHARED_RLS";
25
+ readonly SCHEMA_PER_TENANT: "SCHEMA_PER_TENANT";
26
+ readonly DB_PER_TENANT: "DB_PER_TENANT";
27
+ }>>;
28
+ status: z.ZodDefault<z.ZodNativeEnum<{
29
+ readonly ACTIVE: "active";
30
+ readonly ARCHIVED: "archived";
31
+ }>>;
32
+ region_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
33
+ deleted_at: z.ZodDefault<z.ZodNullable<z.ZodString>>;
34
+ created_at: z.ZodString;
35
+ updated_at: z.ZodString;
36
+ }, "strip", z.ZodTypeAny, {
37
+ id: string;
38
+ status: "active" | "archived";
39
+ metadata: Record<string, unknown>;
40
+ created_at: string;
41
+ updated_at: string;
42
+ slug: string;
43
+ parent_id: string | null;
44
+ ancestry_path: string;
45
+ depth: number;
46
+ name: string;
47
+ config: Record<string, unknown>;
48
+ isolation_strategy: "SHARED_RLS" | "SCHEMA_PER_TENANT" | "DB_PER_TENANT";
49
+ deleted_at: string | null;
50
+ region_id?: string | null | undefined;
51
+ }, {
52
+ id: string;
53
+ created_at: string;
54
+ updated_at: string;
55
+ slug: string;
56
+ parent_id: string | null;
57
+ ancestry_path: string;
58
+ depth: number;
59
+ name: string;
60
+ status?: "active" | "archived" | undefined;
61
+ metadata?: Record<string, unknown> | undefined;
62
+ region_id?: string | null | undefined;
63
+ config?: Record<string, unknown> | undefined;
64
+ isolation_strategy?: "SHARED_RLS" | "SCHEMA_PER_TENANT" | "DB_PER_TENANT" | undefined;
65
+ deleted_at?: string | null | undefined;
66
+ }>;
67
+ export type TenantNode = z.infer<typeof TenantNodeSchema>;
68
+ export declare const CreateTenantInputSchema: z.ZodObject<{
69
+ parent_id: z.ZodDefault<z.ZodNullable<z.ZodString>>;
70
+ name: z.ZodString;
71
+ slug: z.ZodString;
72
+ config: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
73
+ metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
74
+ isolation_strategy: z.ZodDefault<z.ZodNativeEnum<{
75
+ readonly SHARED_RLS: "SHARED_RLS";
76
+ readonly SCHEMA_PER_TENANT: "SCHEMA_PER_TENANT";
77
+ readonly DB_PER_TENANT: "DB_PER_TENANT";
78
+ }>>;
79
+ region_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
80
+ }, "strip", z.ZodTypeAny, {
81
+ metadata: Record<string, unknown>;
82
+ slug: string;
83
+ parent_id: string | null;
84
+ name: string;
85
+ config: Record<string, unknown>;
86
+ isolation_strategy: "SHARED_RLS" | "SCHEMA_PER_TENANT" | "DB_PER_TENANT";
87
+ region_id?: string | null | undefined;
88
+ }, {
89
+ slug: string;
90
+ name: string;
91
+ metadata?: Record<string, unknown> | undefined;
92
+ region_id?: string | null | undefined;
93
+ parent_id?: string | null | undefined;
94
+ config?: Record<string, unknown> | undefined;
95
+ isolation_strategy?: "SHARED_RLS" | "SCHEMA_PER_TENANT" | "DB_PER_TENANT" | undefined;
96
+ }>;
97
+ export type CreateTenantInput = z.infer<typeof CreateTenantInputSchema>;
98
+ export declare const UpdateTenantInputSchema: z.ZodObject<{
99
+ name: z.ZodOptional<z.ZodString>;
100
+ slug: z.ZodOptional<z.ZodString>;
101
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
102
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
103
+ }, "strip", z.ZodTypeAny, {
104
+ metadata?: Record<string, unknown> | undefined;
105
+ slug?: string | undefined;
106
+ name?: string | undefined;
107
+ config?: Record<string, unknown> | undefined;
108
+ }, {
109
+ metadata?: Record<string, unknown> | undefined;
110
+ slug?: string | undefined;
111
+ name?: string | undefined;
112
+ config?: Record<string, unknown> | undefined;
113
+ }>;
114
+ export type UpdateTenantInput = z.infer<typeof UpdateTenantInputSchema>;
115
+ export declare const MoveTenantInputSchema: z.ZodObject<{
116
+ new_parent_id: z.ZodString;
117
+ }, "strip", z.ZodTypeAny, {
118
+ new_parent_id: string;
119
+ }, {
120
+ new_parent_id: string;
121
+ }>;
122
+ export type MoveTenantInput = z.infer<typeof MoveTenantInputSchema>;
123
+ /** Legacy shape used by the inline /:id/context endpoint. */
124
+ export interface TenantContextLegacy {
125
+ tenant_id: string;
126
+ ancestry_path: string;
127
+ depth: number;
128
+ resolved_config: Record<string, unknown>;
129
+ resolved_permissions: Record<string, ResolvedPermission>;
130
+ isolation_strategy: IsolationStrategy;
131
+ }
132
+ /** Full impersonation context returned by getTenantContext(). */
133
+ export interface TenantContext {
134
+ tenant: TenantNode;
135
+ config: ResolvedConfig;
136
+ permissions: Record<string, ResolvedPermission>;
137
+ ancestors: TenantNode[];
138
+ }
139
+ export interface ResolvedPermission {
140
+ policy_id: string;
141
+ key: string;
142
+ value: unknown;
143
+ mode: string;
144
+ source_tenant_id: string;
145
+ locked: boolean;
146
+ delegated: boolean;
147
+ }
148
+ //# sourceMappingURL=tenant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant.d.ts","sourceRoot":"","sources":["../../src/types/tenant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAC3B,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAE7D,eAAO,MAAM,YAAY;;;CAGf,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAE5E,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAe3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAalC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;EAQlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,qBAAqB;;;;;;EAEhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,6DAA6D;AAC7D,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACzD,kBAAkB,EAAE,iBAAiB,CAAC;CACvC;AAED,iEAAiE;AACjE,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAChD,SAAS,EAAE,UAAU,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MoveTenantInputSchema = exports.UpdateTenantInputSchema = exports.CreateTenantInputSchema = exports.TenantNodeSchema = exports.TenantStatus = exports.IsolationStrategy = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.IsolationStrategy = {
6
+ SHARED_RLS: "SHARED_RLS",
7
+ SCHEMA_PER_TENANT: "SCHEMA_PER_TENANT",
8
+ DB_PER_TENANT: "DB_PER_TENANT",
9
+ };
10
+ exports.TenantStatus = {
11
+ ACTIVE: "active",
12
+ ARCHIVED: "archived",
13
+ };
14
+ exports.TenantNodeSchema = zod_1.z.object({
15
+ id: zod_1.z.string().uuid(),
16
+ parent_id: zod_1.z.string().uuid().nullable(),
17
+ ancestry_path: zod_1.z.string(),
18
+ depth: zod_1.z.number().int().min(0),
19
+ name: zod_1.z.string().min(1).max(255),
20
+ slug: zod_1.z.string().regex(/^[a-z][a-z0-9_]{0,62}$/),
21
+ config: zod_1.z.record(zod_1.z.unknown()).default({}),
22
+ metadata: zod_1.z.record(zod_1.z.unknown()).default({}),
23
+ isolation_strategy: zod_1.z.nativeEnum(exports.IsolationStrategy).default(exports.IsolationStrategy.SHARED_RLS),
24
+ status: zod_1.z.nativeEnum(exports.TenantStatus).default(exports.TenantStatus.ACTIVE),
25
+ region_id: zod_1.z.string().uuid().nullable().optional(),
26
+ deleted_at: zod_1.z.string().datetime().nullable().default(null),
27
+ created_at: zod_1.z.string().datetime(),
28
+ updated_at: zod_1.z.string().datetime(),
29
+ });
30
+ exports.CreateTenantInputSchema = zod_1.z.object({
31
+ parent_id: zod_1.z.string().uuid().nullable().default(null),
32
+ name: zod_1.z.string().min(1).max(255),
33
+ slug: zod_1.z.string().regex(/^[a-z][a-z0-9_]{0,62}$/, {
34
+ message: "Slug must start with a lowercase letter, contain only lowercase letters, numbers, and underscores, and be at most 63 characters",
35
+ }),
36
+ config: zod_1.z.record(zod_1.z.unknown()).default({}),
37
+ metadata: zod_1.z.record(zod_1.z.unknown()).default({}),
38
+ isolation_strategy: zod_1.z
39
+ .nativeEnum(exports.IsolationStrategy)
40
+ .default(exports.IsolationStrategy.SHARED_RLS),
41
+ region_id: zod_1.z.string().uuid().nullable().optional(),
42
+ });
43
+ exports.UpdateTenantInputSchema = zod_1.z.object({
44
+ name: zod_1.z.string().min(1).max(255).optional(),
45
+ slug: zod_1.z
46
+ .string()
47
+ .regex(/^[a-z][a-z0-9_]{0,62}$/)
48
+ .optional(),
49
+ config: zod_1.z.record(zod_1.z.unknown()).optional(),
50
+ metadata: zod_1.z.record(zod_1.z.unknown()).optional(),
51
+ });
52
+ exports.MoveTenantInputSchema = zod_1.z.object({
53
+ new_parent_id: zod_1.z.string().uuid(),
54
+ });
55
+ //# sourceMappingURL=tenant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant.js","sourceRoot":"","sources":["../../src/types/tenant.ts"],"names":[],"mappings":"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"}