@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.
- package/dist/__tests__/ancestry.test.d.ts +2 -0
- package/dist/__tests__/ancestry.test.d.ts.map +1 -0
- package/dist/__tests__/ancestry.test.js +132 -0
- package/dist/__tests__/ancestry.test.js.map +1 -0
- package/dist/__tests__/config-types.test.d.ts +2 -0
- package/dist/__tests__/config-types.test.d.ts.map +1 -0
- package/dist/__tests__/config-types.test.js +143 -0
- package/dist/__tests__/config-types.test.js.map +1 -0
- package/dist/__tests__/errors.test.d.ts +2 -0
- package/dist/__tests__/errors.test.d.ts.map +1 -0
- package/dist/__tests__/errors.test.js +113 -0
- package/dist/__tests__/errors.test.js.map +1 -0
- package/dist/__tests__/isolation.test.d.ts +2 -0
- package/dist/__tests__/isolation.test.d.ts.map +1 -0
- package/dist/__tests__/isolation.test.js +34 -0
- package/dist/__tests__/isolation.test.js.map +1 -0
- package/dist/__tests__/validation.test.d.ts +2 -0
- package/dist/__tests__/validation.test.d.ts.map +1 -0
- package/dist/__tests__/validation.test.js +100 -0
- package/dist/__tests__/validation.test.js.map +1 -0
- package/dist/__tests__/webhook.test.d.ts +2 -0
- package/dist/__tests__/webhook.test.d.ts.map +1 -0
- package/dist/__tests__/webhook.test.js +165 -0
- package/dist/__tests__/webhook.test.js.map +1 -0
- package/dist/constants.d.ts +9 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +12 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +102 -0
- package/dist/index.js.map +1 -0
- package/dist/types/api-key.d.ts +5 -0
- package/dist/types/api-key.d.ts.map +1 -0
- package/dist/types/api-key.js +7 -0
- package/dist/types/api-key.js.map +1 -0
- package/dist/types/audit.d.ts +81 -0
- package/dist/types/audit.d.ts.map +1 -0
- package/dist/types/audit.js +30 -0
- package/dist/types/audit.js.map +1 -0
- package/dist/types/config.d.ts +93 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +22 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/consent.d.ts +63 -0
- package/dist/types/consent.d.ts.map +1 -0
- package/dist/types/consent.js +30 -0
- package/dist/types/consent.js.map +1 -0
- package/dist/types/isolation.d.ts +9 -0
- package/dist/types/isolation.d.ts.map +1 -0
- package/dist/types/isolation.js +20 -0
- package/dist/types/isolation.js.map +1 -0
- package/dist/types/permission.d.ts +101 -0
- package/dist/types/permission.d.ts.map +1 -0
- package/dist/types/permission.js +41 -0
- package/dist/types/permission.js.map +1 -0
- package/dist/types/region.d.ts +90 -0
- package/dist/types/region.d.ts.map +1 -0
- package/dist/types/region.js +39 -0
- package/dist/types/region.js.map +1 -0
- package/dist/types/tenant.d.ts +148 -0
- package/dist/types/tenant.d.ts.map +1 -0
- package/dist/types/tenant.js +55 -0
- package/dist/types/tenant.js.map +1 -0
- package/dist/types/webhook.d.ts +181 -0
- package/dist/types/webhook.d.ts.map +1 -0
- package/dist/types/webhook.js +65 -0
- package/dist/types/webhook.js.map +1 -0
- package/dist/utils/ancestry.d.ts +53 -0
- package/dist/utils/ancestry.d.ts.map +1 -0
- package/dist/utils/ancestry.js +100 -0
- package/dist/utils/ancestry.js.map +1 -0
- package/dist/utils/errors.d.ts +88 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +173 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/validation.d.ts +21 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +19 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +35 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const webhook_js_1 = require("../types/webhook.js");
|
|
5
|
+
(0, vitest_1.describe)("TenantEvent", () => {
|
|
6
|
+
(0, vitest_1.it)("has correct string values", () => {
|
|
7
|
+
(0, vitest_1.expect)(webhook_js_1.TenantEvent.TENANT_CREATED).toBe("tenant.created");
|
|
8
|
+
(0, vitest_1.expect)(webhook_js_1.TenantEvent.TENANT_UPDATED).toBe("tenant.updated");
|
|
9
|
+
(0, vitest_1.expect)(webhook_js_1.TenantEvent.TENANT_DELETED).toBe("tenant.deleted");
|
|
10
|
+
(0, vitest_1.expect)(webhook_js_1.TenantEvent.TENANT_MOVED).toBe("tenant.moved");
|
|
11
|
+
(0, vitest_1.expect)(webhook_js_1.TenantEvent.CONFIG_UPDATED).toBe("config.updated");
|
|
12
|
+
(0, vitest_1.expect)(webhook_js_1.TenantEvent.CONFIG_DELETED).toBe("config.deleted");
|
|
13
|
+
(0, vitest_1.expect)(webhook_js_1.TenantEvent.PERMISSION_CREATED).toBe("permission.created");
|
|
14
|
+
(0, vitest_1.expect)(webhook_js_1.TenantEvent.PERMISSION_UPDATED).toBe("permission.updated");
|
|
15
|
+
(0, vitest_1.expect)(webhook_js_1.TenantEvent.PERMISSION_DELETED).toBe("permission.deleted");
|
|
16
|
+
});
|
|
17
|
+
(0, vitest_1.it)("has 9 event types", () => {
|
|
18
|
+
(0, vitest_1.expect)(Object.keys(webhook_js_1.TenantEvent)).toHaveLength(9);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
(0, vitest_1.describe)("WebhookSchema", () => {
|
|
22
|
+
const validWebhook = {
|
|
23
|
+
id: "550e8400-e29b-41d4-a716-446655440000",
|
|
24
|
+
tenant_id: "550e8400-e29b-41d4-a716-446655440001",
|
|
25
|
+
url: "https://example.com/webhook",
|
|
26
|
+
secret_hash: "abc123def456",
|
|
27
|
+
events: ["tenant.created", "tenant.updated"],
|
|
28
|
+
active: true,
|
|
29
|
+
created_at: "2024-01-01T00:00:00.000Z",
|
|
30
|
+
updated_at: "2024-01-01T00:00:00.000Z",
|
|
31
|
+
};
|
|
32
|
+
(0, vitest_1.it)("parses a valid webhook", () => {
|
|
33
|
+
const result = webhook_js_1.WebhookSchema.safeParse(validWebhook);
|
|
34
|
+
(0, vitest_1.expect)(result.success).toBe(true);
|
|
35
|
+
});
|
|
36
|
+
(0, vitest_1.it)("accepts null tenant_id (global webhook)", () => {
|
|
37
|
+
const result = webhook_js_1.WebhookSchema.safeParse({ ...validWebhook, tenant_id: null });
|
|
38
|
+
(0, vitest_1.expect)(result.success).toBe(true);
|
|
39
|
+
});
|
|
40
|
+
(0, vitest_1.it)("accepts optional description", () => {
|
|
41
|
+
const result = webhook_js_1.WebhookSchema.safeParse({ ...validWebhook, description: "My webhook" });
|
|
42
|
+
(0, vitest_1.expect)(result.success).toBe(true);
|
|
43
|
+
if (result.success) {
|
|
44
|
+
(0, vitest_1.expect)(result.data.description).toBe("My webhook");
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
(0, vitest_1.it)("rejects description over 255 chars", () => {
|
|
48
|
+
const result = webhook_js_1.WebhookSchema.safeParse({ ...validWebhook, description: "x".repeat(256) });
|
|
49
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
50
|
+
});
|
|
51
|
+
(0, vitest_1.it)("rejects invalid URL", () => {
|
|
52
|
+
const result = webhook_js_1.WebhookSchema.safeParse({ ...validWebhook, url: "not-a-url" });
|
|
53
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
54
|
+
});
|
|
55
|
+
(0, vitest_1.it)("rejects invalid UUID for id", () => {
|
|
56
|
+
const result = webhook_js_1.WebhookSchema.safeParse({ ...validWebhook, id: "not-a-uuid" });
|
|
57
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
(0, vitest_1.describe)("CreateWebhookInputSchema", () => {
|
|
61
|
+
const validInput = {
|
|
62
|
+
tenant_id: null,
|
|
63
|
+
url: "https://example.com/webhook",
|
|
64
|
+
secret: "mysecretatleast16chars",
|
|
65
|
+
events: [webhook_js_1.TenantEvent.TENANT_CREATED],
|
|
66
|
+
};
|
|
67
|
+
(0, vitest_1.it)("parses valid input", () => {
|
|
68
|
+
const result = webhook_js_1.CreateWebhookInputSchema.safeParse(validInput);
|
|
69
|
+
(0, vitest_1.expect)(result.success).toBe(true);
|
|
70
|
+
});
|
|
71
|
+
(0, vitest_1.it)("rejects secret shorter than 16 chars", () => {
|
|
72
|
+
const result = webhook_js_1.CreateWebhookInputSchema.safeParse({ ...validInput, secret: "tooshort" });
|
|
73
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
74
|
+
});
|
|
75
|
+
(0, vitest_1.it)("rejects secret longer than 255 chars", () => {
|
|
76
|
+
const result = webhook_js_1.CreateWebhookInputSchema.safeParse({ ...validInput, secret: "x".repeat(256) });
|
|
77
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
78
|
+
});
|
|
79
|
+
(0, vitest_1.it)("rejects empty events array", () => {
|
|
80
|
+
const result = webhook_js_1.CreateWebhookInputSchema.safeParse({ ...validInput, events: [] });
|
|
81
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
82
|
+
});
|
|
83
|
+
(0, vitest_1.it)("rejects invalid event type", () => {
|
|
84
|
+
const result = webhook_js_1.CreateWebhookInputSchema.safeParse({ ...validInput, events: ["unknown.event"] });
|
|
85
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
86
|
+
});
|
|
87
|
+
(0, vitest_1.it)("rejects invalid URL", () => {
|
|
88
|
+
const result = webhook_js_1.CreateWebhookInputSchema.safeParse({ ...validInput, url: "not-a-url-at-all" });
|
|
89
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
90
|
+
});
|
|
91
|
+
(0, vitest_1.it)("defaults tenant_id to null", () => {
|
|
92
|
+
const { tenant_id: _t, ...withoutTenantId } = validInput;
|
|
93
|
+
const result = webhook_js_1.CreateWebhookInputSchema.safeParse(withoutTenantId);
|
|
94
|
+
(0, vitest_1.expect)(result.success).toBe(true);
|
|
95
|
+
if (result.success) {
|
|
96
|
+
(0, vitest_1.expect)(result.data.tenant_id).toBeNull();
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
(0, vitest_1.it)("accepts a description", () => {
|
|
100
|
+
const result = webhook_js_1.CreateWebhookInputSchema.safeParse({ ...validInput, description: "Test hook" });
|
|
101
|
+
(0, vitest_1.expect)(result.success).toBe(true);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
(0, vitest_1.describe)("UpdateWebhookInputSchema", () => {
|
|
105
|
+
(0, vitest_1.it)("accepts empty object (no-op update)", () => {
|
|
106
|
+
const result = webhook_js_1.UpdateWebhookInputSchema.safeParse({});
|
|
107
|
+
(0, vitest_1.expect)(result.success).toBe(true);
|
|
108
|
+
});
|
|
109
|
+
(0, vitest_1.it)("accepts partial updates", () => {
|
|
110
|
+
const result = webhook_js_1.UpdateWebhookInputSchema.safeParse({ active: false });
|
|
111
|
+
(0, vitest_1.expect)(result.success).toBe(true);
|
|
112
|
+
});
|
|
113
|
+
(0, vitest_1.it)("rejects events with invalid event type", () => {
|
|
114
|
+
const result = webhook_js_1.UpdateWebhookInputSchema.safeParse({ events: ["bad.event"] });
|
|
115
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
116
|
+
});
|
|
117
|
+
(0, vitest_1.it)("rejects empty events array", () => {
|
|
118
|
+
const result = webhook_js_1.UpdateWebhookInputSchema.safeParse({ events: [] });
|
|
119
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
(0, vitest_1.describe)("WebhookDeliveryStatus", () => {
|
|
123
|
+
(0, vitest_1.it)("has correct values", () => {
|
|
124
|
+
(0, vitest_1.expect)(webhook_js_1.WebhookDeliveryStatus.PENDING).toBe("pending");
|
|
125
|
+
(0, vitest_1.expect)(webhook_js_1.WebhookDeliveryStatus.SUCCESS).toBe("success");
|
|
126
|
+
(0, vitest_1.expect)(webhook_js_1.WebhookDeliveryStatus.FAILED).toBe("failed");
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
(0, vitest_1.describe)("WebhookDeliverySchema", () => {
|
|
130
|
+
const validDelivery = {
|
|
131
|
+
id: "550e8400-e29b-41d4-a716-446655440000",
|
|
132
|
+
webhook_id: "550e8400-e29b-41d4-a716-446655440001",
|
|
133
|
+
event_id: "550e8400-e29b-41d4-a716-446655440002",
|
|
134
|
+
status: "pending",
|
|
135
|
+
attempts: 0,
|
|
136
|
+
next_retry_at: null,
|
|
137
|
+
last_error: null,
|
|
138
|
+
response_code: null,
|
|
139
|
+
created_at: "2024-01-01T00:00:00.000Z",
|
|
140
|
+
completed_at: null,
|
|
141
|
+
};
|
|
142
|
+
(0, vitest_1.it)("parses a valid pending delivery", () => {
|
|
143
|
+
const result = webhook_js_1.WebhookDeliverySchema.safeParse(validDelivery);
|
|
144
|
+
(0, vitest_1.expect)(result.success).toBe(true);
|
|
145
|
+
});
|
|
146
|
+
(0, vitest_1.it)("parses a successful delivery", () => {
|
|
147
|
+
const result = webhook_js_1.WebhookDeliverySchema.safeParse({
|
|
148
|
+
...validDelivery,
|
|
149
|
+
status: "success",
|
|
150
|
+
attempts: 1,
|
|
151
|
+
response_code: 200,
|
|
152
|
+
completed_at: "2024-01-01T00:00:01.000Z",
|
|
153
|
+
});
|
|
154
|
+
(0, vitest_1.expect)(result.success).toBe(true);
|
|
155
|
+
});
|
|
156
|
+
(0, vitest_1.it)("rejects invalid status", () => {
|
|
157
|
+
const result = webhook_js_1.WebhookDeliverySchema.safeParse({ ...validDelivery, status: "retrying" });
|
|
158
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
159
|
+
});
|
|
160
|
+
(0, vitest_1.it)("rejects negative attempts", () => {
|
|
161
|
+
const result = webhook_js_1.WebhookDeliverySchema.safeParse({ ...validDelivery, attempts: -1 });
|
|
162
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
//# sourceMappingURL=webhook.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook.test.js","sourceRoot":"","sources":["../../src/__tests__/webhook.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const MAX_TREE_DEPTH = 20;
|
|
2
|
+
export declare const MAX_SLUG_LENGTH = 63;
|
|
3
|
+
export declare const DEFAULT_CACHE_TTL_MS = 60000;
|
|
4
|
+
export declare const DEFAULT_PAGE_SIZE = 50;
|
|
5
|
+
export declare const MAX_PAGE_SIZE = 100;
|
|
6
|
+
export declare const API_KEY_PREFIX = "sk_live_";
|
|
7
|
+
export declare const API_KEY_BYTES = 32;
|
|
8
|
+
export declare const TENANT_HEADER = "X-Tenant-ID";
|
|
9
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAC3C,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,aAAa,MAAM,CAAC;AACjC,eAAO,MAAM,cAAc,aAAa,CAAC;AACzC,eAAO,MAAM,aAAa,KAAK,CAAC;AAChC,eAAO,MAAM,aAAa,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TENANT_HEADER = exports.API_KEY_BYTES = exports.API_KEY_PREFIX = exports.MAX_PAGE_SIZE = exports.DEFAULT_PAGE_SIZE = exports.DEFAULT_CACHE_TTL_MS = exports.MAX_SLUG_LENGTH = exports.MAX_TREE_DEPTH = void 0;
|
|
4
|
+
exports.MAX_TREE_DEPTH = 20;
|
|
5
|
+
exports.MAX_SLUG_LENGTH = 63;
|
|
6
|
+
exports.DEFAULT_CACHE_TTL_MS = 60_000;
|
|
7
|
+
exports.DEFAULT_PAGE_SIZE = 50;
|
|
8
|
+
exports.MAX_PAGE_SIZE = 100;
|
|
9
|
+
exports.API_KEY_PREFIX = "sk_live_";
|
|
10
|
+
exports.API_KEY_BYTES = 32;
|
|
11
|
+
exports.TENANT_HEADER = "X-Tenant-ID";
|
|
12
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG,EAAE,CAAC;AACpB,QAAA,eAAe,GAAG,EAAE,CAAC;AACrB,QAAA,oBAAoB,GAAG,MAAM,CAAC;AAC9B,QAAA,iBAAiB,GAAG,EAAE,CAAC;AACvB,QAAA,aAAa,GAAG,GAAG,CAAC;AACpB,QAAA,cAAc,GAAG,UAAU,CAAC;AAC5B,QAAA,aAAa,GAAG,EAAE,CAAC;AACnB,QAAA,aAAa,GAAG,aAAa,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export { ConsentPurpose, ConsentRecordSchema, GrantConsentInputSchema, type ConsentRecord, type GrantConsentInput, } from "./types/consent.js";
|
|
2
|
+
export { API_KEY_SCOPES, ApiKeyScopeSchema, type ApiKeyScope, } from "./types/api-key.js";
|
|
3
|
+
export { AuditEntrySchema, AuditLogQuerySchema, type AuditContext, type AuditEntry, type AuditLogQuery, } from "./types/audit.js";
|
|
4
|
+
export { TenantEvent, WebhookSchema, CreateWebhookInputSchema, UpdateWebhookInputSchema, WebhookEventSchema, WebhookDeliveryStatus, WebhookDeliverySchema, type Webhook, type CreateWebhookInput, type UpdateWebhookInput, type WebhookEvent, type WebhookDelivery, } from "./types/webhook.js";
|
|
5
|
+
export { RegionStatus, RegionSchema, CreateRegionInputSchema, UpdateRegionInputSchema, MigrateRegionInputSchema, type Region, type CreateRegionInput, type UpdateRegionInput, type MigrateRegionInput, } from "./types/region.js";
|
|
6
|
+
export { IsolationStrategy, TenantStatus, TenantNodeSchema, CreateTenantInputSchema, UpdateTenantInputSchema, MoveTenantInputSchema, type TenantNode, type CreateTenantInput, type UpdateTenantInput, type MoveTenantInput, type TenantContext, type TenantContextLegacy, type ResolvedPermission, } from "./types/tenant.js";
|
|
7
|
+
export { PermissionMode, RevocationMode, PermissionPolicySchema, CreatePermissionInputSchema, UpdatePermissionInputSchema, type PermissionPolicy, type CreatePermissionInput, type UpdatePermissionInput, } from "./types/permission.js";
|
|
8
|
+
export { ConfigEntrySchema, SetConfigInputSchema, type ConfigEntry, type SetConfigInput, type ResolvedConfigEntry, type ResolvedConfig, type BatchSetConfigKeyResult, type BatchSetConfigResult, type ConfigDiffEntry, type ConfigDiffItem, type ConfigDiffTenantInfo, type ConfigDiff, } from "./types/config.js";
|
|
9
|
+
export { SUPPORTED_ISOLATION_STRATEGIES_V1, isSupportedIsolationStrategy, } from "./types/isolation.js";
|
|
10
|
+
export { parseAncestryPath, buildAncestryPath, getDepth, isAncestorOf, isDescendantOf, getParentPath, appendToPath, getAncestorIds, getSelfId, } from "./utils/ancestry.js";
|
|
11
|
+
export { SlugSchema, UUIDSchema, PaginationSchema, validateSlug, type PaginationInput, type PaginatedResult, } from "./utils/validation.js";
|
|
12
|
+
export { ErrorCode, StratumError, TenantNotFoundError, TenantAlreadyExistsError, TenantHasChildrenError, TenantCycleDetectedError, TenantArchivedError, TenantContextNotFoundError, IsolationViolationError, IsolationStrategyUnsupportedError, PermissionLockedError, PermissionNotFoundError, PermissionRevocationDeniedError, ConfigLockedError, ConfigNotFoundError, ValidationError, UnauthorizedError, ForbiddenError, WebhookNotFoundError, WebhookDeliveryError, } from "./utils/errors.js";
|
|
13
|
+
export { MAX_TREE_DEPTH, MAX_SLUG_LENGTH, DEFAULT_CACHE_TTL_MS, DEFAULT_PAGE_SIZE, MAX_PAGE_SIZE, API_KEY_PREFIX, API_KEY_BYTES, TENANT_HEADER, } from "./constants.js";
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,aAAa,EAClB,KAAK,iBAAiB,GACvB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,KAAK,WAAW,GACjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,aAAa,GACnB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,WAAW,EACX,aAAa,EACb,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,KAAK,OAAO,EACZ,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,eAAe,GACrB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,KAAK,MAAM,EACX,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACxB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,2BAA2B,EAC3B,2BAA2B,EAC3B,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC3B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,UAAU,GAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,iCAAiC,EACjC,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,aAAa,EACb,YAAY,EACZ,cAAc,EACd,SAAS,GACV,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,EACnB,0BAA0B,EAC1B,uBAAuB,EACvB,iCAAiC,EACjC,qBAAqB,EACrB,uBAAuB,EACvB,+BAA+B,EAC/B,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,aAAa,EACb,aAAa,GACd,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TenantNotFoundError = exports.StratumError = exports.ErrorCode = exports.validateSlug = exports.PaginationSchema = exports.UUIDSchema = exports.SlugSchema = exports.getSelfId = exports.getAncestorIds = exports.appendToPath = exports.getParentPath = exports.isDescendantOf = exports.isAncestorOf = exports.getDepth = exports.buildAncestryPath = exports.parseAncestryPath = exports.isSupportedIsolationStrategy = exports.SUPPORTED_ISOLATION_STRATEGIES_V1 = exports.SetConfigInputSchema = exports.ConfigEntrySchema = exports.UpdatePermissionInputSchema = exports.CreatePermissionInputSchema = exports.PermissionPolicySchema = exports.RevocationMode = exports.PermissionMode = exports.MoveTenantInputSchema = exports.UpdateTenantInputSchema = exports.CreateTenantInputSchema = exports.TenantNodeSchema = exports.TenantStatus = exports.IsolationStrategy = exports.MigrateRegionInputSchema = exports.UpdateRegionInputSchema = exports.CreateRegionInputSchema = exports.RegionSchema = exports.RegionStatus = exports.WebhookDeliverySchema = exports.WebhookDeliveryStatus = exports.WebhookEventSchema = exports.UpdateWebhookInputSchema = exports.CreateWebhookInputSchema = exports.WebhookSchema = exports.TenantEvent = exports.AuditLogQuerySchema = exports.AuditEntrySchema = exports.ApiKeyScopeSchema = exports.API_KEY_SCOPES = exports.GrantConsentInputSchema = exports.ConsentRecordSchema = exports.ConsentPurpose = void 0;
|
|
4
|
+
exports.TENANT_HEADER = exports.API_KEY_BYTES = exports.API_KEY_PREFIX = exports.MAX_PAGE_SIZE = exports.DEFAULT_PAGE_SIZE = exports.DEFAULT_CACHE_TTL_MS = exports.MAX_SLUG_LENGTH = exports.MAX_TREE_DEPTH = exports.WebhookDeliveryError = exports.WebhookNotFoundError = exports.ForbiddenError = exports.UnauthorizedError = exports.ValidationError = exports.ConfigNotFoundError = exports.ConfigLockedError = exports.PermissionRevocationDeniedError = exports.PermissionNotFoundError = exports.PermissionLockedError = exports.IsolationStrategyUnsupportedError = exports.IsolationViolationError = exports.TenantContextNotFoundError = exports.TenantArchivedError = exports.TenantCycleDetectedError = exports.TenantHasChildrenError = exports.TenantAlreadyExistsError = void 0;
|
|
5
|
+
// Consent types
|
|
6
|
+
var consent_js_1 = require("./types/consent.js");
|
|
7
|
+
Object.defineProperty(exports, "ConsentPurpose", { enumerable: true, get: function () { return consent_js_1.ConsentPurpose; } });
|
|
8
|
+
Object.defineProperty(exports, "ConsentRecordSchema", { enumerable: true, get: function () { return consent_js_1.ConsentRecordSchema; } });
|
|
9
|
+
Object.defineProperty(exports, "GrantConsentInputSchema", { enumerable: true, get: function () { return consent_js_1.GrantConsentInputSchema; } });
|
|
10
|
+
// API Key types
|
|
11
|
+
var api_key_js_1 = require("./types/api-key.js");
|
|
12
|
+
Object.defineProperty(exports, "API_KEY_SCOPES", { enumerable: true, get: function () { return api_key_js_1.API_KEY_SCOPES; } });
|
|
13
|
+
Object.defineProperty(exports, "ApiKeyScopeSchema", { enumerable: true, get: function () { return api_key_js_1.ApiKeyScopeSchema; } });
|
|
14
|
+
// Audit types
|
|
15
|
+
var audit_js_1 = require("./types/audit.js");
|
|
16
|
+
Object.defineProperty(exports, "AuditEntrySchema", { enumerable: true, get: function () { return audit_js_1.AuditEntrySchema; } });
|
|
17
|
+
Object.defineProperty(exports, "AuditLogQuerySchema", { enumerable: true, get: function () { return audit_js_1.AuditLogQuerySchema; } });
|
|
18
|
+
// Webhook types
|
|
19
|
+
var webhook_js_1 = require("./types/webhook.js");
|
|
20
|
+
Object.defineProperty(exports, "TenantEvent", { enumerable: true, get: function () { return webhook_js_1.TenantEvent; } });
|
|
21
|
+
Object.defineProperty(exports, "WebhookSchema", { enumerable: true, get: function () { return webhook_js_1.WebhookSchema; } });
|
|
22
|
+
Object.defineProperty(exports, "CreateWebhookInputSchema", { enumerable: true, get: function () { return webhook_js_1.CreateWebhookInputSchema; } });
|
|
23
|
+
Object.defineProperty(exports, "UpdateWebhookInputSchema", { enumerable: true, get: function () { return webhook_js_1.UpdateWebhookInputSchema; } });
|
|
24
|
+
Object.defineProperty(exports, "WebhookEventSchema", { enumerable: true, get: function () { return webhook_js_1.WebhookEventSchema; } });
|
|
25
|
+
Object.defineProperty(exports, "WebhookDeliveryStatus", { enumerable: true, get: function () { return webhook_js_1.WebhookDeliveryStatus; } });
|
|
26
|
+
Object.defineProperty(exports, "WebhookDeliverySchema", { enumerable: true, get: function () { return webhook_js_1.WebhookDeliverySchema; } });
|
|
27
|
+
// Region types
|
|
28
|
+
var region_js_1 = require("./types/region.js");
|
|
29
|
+
Object.defineProperty(exports, "RegionStatus", { enumerable: true, get: function () { return region_js_1.RegionStatus; } });
|
|
30
|
+
Object.defineProperty(exports, "RegionSchema", { enumerable: true, get: function () { return region_js_1.RegionSchema; } });
|
|
31
|
+
Object.defineProperty(exports, "CreateRegionInputSchema", { enumerable: true, get: function () { return region_js_1.CreateRegionInputSchema; } });
|
|
32
|
+
Object.defineProperty(exports, "UpdateRegionInputSchema", { enumerable: true, get: function () { return region_js_1.UpdateRegionInputSchema; } });
|
|
33
|
+
Object.defineProperty(exports, "MigrateRegionInputSchema", { enumerable: true, get: function () { return region_js_1.MigrateRegionInputSchema; } });
|
|
34
|
+
// Types
|
|
35
|
+
var tenant_js_1 = require("./types/tenant.js");
|
|
36
|
+
Object.defineProperty(exports, "IsolationStrategy", { enumerable: true, get: function () { return tenant_js_1.IsolationStrategy; } });
|
|
37
|
+
Object.defineProperty(exports, "TenantStatus", { enumerable: true, get: function () { return tenant_js_1.TenantStatus; } });
|
|
38
|
+
Object.defineProperty(exports, "TenantNodeSchema", { enumerable: true, get: function () { return tenant_js_1.TenantNodeSchema; } });
|
|
39
|
+
Object.defineProperty(exports, "CreateTenantInputSchema", { enumerable: true, get: function () { return tenant_js_1.CreateTenantInputSchema; } });
|
|
40
|
+
Object.defineProperty(exports, "UpdateTenantInputSchema", { enumerable: true, get: function () { return tenant_js_1.UpdateTenantInputSchema; } });
|
|
41
|
+
Object.defineProperty(exports, "MoveTenantInputSchema", { enumerable: true, get: function () { return tenant_js_1.MoveTenantInputSchema; } });
|
|
42
|
+
var permission_js_1 = require("./types/permission.js");
|
|
43
|
+
Object.defineProperty(exports, "PermissionMode", { enumerable: true, get: function () { return permission_js_1.PermissionMode; } });
|
|
44
|
+
Object.defineProperty(exports, "RevocationMode", { enumerable: true, get: function () { return permission_js_1.RevocationMode; } });
|
|
45
|
+
Object.defineProperty(exports, "PermissionPolicySchema", { enumerable: true, get: function () { return permission_js_1.PermissionPolicySchema; } });
|
|
46
|
+
Object.defineProperty(exports, "CreatePermissionInputSchema", { enumerable: true, get: function () { return permission_js_1.CreatePermissionInputSchema; } });
|
|
47
|
+
Object.defineProperty(exports, "UpdatePermissionInputSchema", { enumerable: true, get: function () { return permission_js_1.UpdatePermissionInputSchema; } });
|
|
48
|
+
var config_js_1 = require("./types/config.js");
|
|
49
|
+
Object.defineProperty(exports, "ConfigEntrySchema", { enumerable: true, get: function () { return config_js_1.ConfigEntrySchema; } });
|
|
50
|
+
Object.defineProperty(exports, "SetConfigInputSchema", { enumerable: true, get: function () { return config_js_1.SetConfigInputSchema; } });
|
|
51
|
+
var isolation_js_1 = require("./types/isolation.js");
|
|
52
|
+
Object.defineProperty(exports, "SUPPORTED_ISOLATION_STRATEGIES_V1", { enumerable: true, get: function () { return isolation_js_1.SUPPORTED_ISOLATION_STRATEGIES_V1; } });
|
|
53
|
+
Object.defineProperty(exports, "isSupportedIsolationStrategy", { enumerable: true, get: function () { return isolation_js_1.isSupportedIsolationStrategy; } });
|
|
54
|
+
// Utilities
|
|
55
|
+
var ancestry_js_1 = require("./utils/ancestry.js");
|
|
56
|
+
Object.defineProperty(exports, "parseAncestryPath", { enumerable: true, get: function () { return ancestry_js_1.parseAncestryPath; } });
|
|
57
|
+
Object.defineProperty(exports, "buildAncestryPath", { enumerable: true, get: function () { return ancestry_js_1.buildAncestryPath; } });
|
|
58
|
+
Object.defineProperty(exports, "getDepth", { enumerable: true, get: function () { return ancestry_js_1.getDepth; } });
|
|
59
|
+
Object.defineProperty(exports, "isAncestorOf", { enumerable: true, get: function () { return ancestry_js_1.isAncestorOf; } });
|
|
60
|
+
Object.defineProperty(exports, "isDescendantOf", { enumerable: true, get: function () { return ancestry_js_1.isDescendantOf; } });
|
|
61
|
+
Object.defineProperty(exports, "getParentPath", { enumerable: true, get: function () { return ancestry_js_1.getParentPath; } });
|
|
62
|
+
Object.defineProperty(exports, "appendToPath", { enumerable: true, get: function () { return ancestry_js_1.appendToPath; } });
|
|
63
|
+
Object.defineProperty(exports, "getAncestorIds", { enumerable: true, get: function () { return ancestry_js_1.getAncestorIds; } });
|
|
64
|
+
Object.defineProperty(exports, "getSelfId", { enumerable: true, get: function () { return ancestry_js_1.getSelfId; } });
|
|
65
|
+
var validation_js_1 = require("./utils/validation.js");
|
|
66
|
+
Object.defineProperty(exports, "SlugSchema", { enumerable: true, get: function () { return validation_js_1.SlugSchema; } });
|
|
67
|
+
Object.defineProperty(exports, "UUIDSchema", { enumerable: true, get: function () { return validation_js_1.UUIDSchema; } });
|
|
68
|
+
Object.defineProperty(exports, "PaginationSchema", { enumerable: true, get: function () { return validation_js_1.PaginationSchema; } });
|
|
69
|
+
Object.defineProperty(exports, "validateSlug", { enumerable: true, get: function () { return validation_js_1.validateSlug; } });
|
|
70
|
+
// Errors
|
|
71
|
+
var errors_js_1 = require("./utils/errors.js");
|
|
72
|
+
Object.defineProperty(exports, "ErrorCode", { enumerable: true, get: function () { return errors_js_1.ErrorCode; } });
|
|
73
|
+
Object.defineProperty(exports, "StratumError", { enumerable: true, get: function () { return errors_js_1.StratumError; } });
|
|
74
|
+
Object.defineProperty(exports, "TenantNotFoundError", { enumerable: true, get: function () { return errors_js_1.TenantNotFoundError; } });
|
|
75
|
+
Object.defineProperty(exports, "TenantAlreadyExistsError", { enumerable: true, get: function () { return errors_js_1.TenantAlreadyExistsError; } });
|
|
76
|
+
Object.defineProperty(exports, "TenantHasChildrenError", { enumerable: true, get: function () { return errors_js_1.TenantHasChildrenError; } });
|
|
77
|
+
Object.defineProperty(exports, "TenantCycleDetectedError", { enumerable: true, get: function () { return errors_js_1.TenantCycleDetectedError; } });
|
|
78
|
+
Object.defineProperty(exports, "TenantArchivedError", { enumerable: true, get: function () { return errors_js_1.TenantArchivedError; } });
|
|
79
|
+
Object.defineProperty(exports, "TenantContextNotFoundError", { enumerable: true, get: function () { return errors_js_1.TenantContextNotFoundError; } });
|
|
80
|
+
Object.defineProperty(exports, "IsolationViolationError", { enumerable: true, get: function () { return errors_js_1.IsolationViolationError; } });
|
|
81
|
+
Object.defineProperty(exports, "IsolationStrategyUnsupportedError", { enumerable: true, get: function () { return errors_js_1.IsolationStrategyUnsupportedError; } });
|
|
82
|
+
Object.defineProperty(exports, "PermissionLockedError", { enumerable: true, get: function () { return errors_js_1.PermissionLockedError; } });
|
|
83
|
+
Object.defineProperty(exports, "PermissionNotFoundError", { enumerable: true, get: function () { return errors_js_1.PermissionNotFoundError; } });
|
|
84
|
+
Object.defineProperty(exports, "PermissionRevocationDeniedError", { enumerable: true, get: function () { return errors_js_1.PermissionRevocationDeniedError; } });
|
|
85
|
+
Object.defineProperty(exports, "ConfigLockedError", { enumerable: true, get: function () { return errors_js_1.ConfigLockedError; } });
|
|
86
|
+
Object.defineProperty(exports, "ConfigNotFoundError", { enumerable: true, get: function () { return errors_js_1.ConfigNotFoundError; } });
|
|
87
|
+
Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return errors_js_1.ValidationError; } });
|
|
88
|
+
Object.defineProperty(exports, "UnauthorizedError", { enumerable: true, get: function () { return errors_js_1.UnauthorizedError; } });
|
|
89
|
+
Object.defineProperty(exports, "ForbiddenError", { enumerable: true, get: function () { return errors_js_1.ForbiddenError; } });
|
|
90
|
+
Object.defineProperty(exports, "WebhookNotFoundError", { enumerable: true, get: function () { return errors_js_1.WebhookNotFoundError; } });
|
|
91
|
+
Object.defineProperty(exports, "WebhookDeliveryError", { enumerable: true, get: function () { return errors_js_1.WebhookDeliveryError; } });
|
|
92
|
+
// Constants
|
|
93
|
+
var constants_js_1 = require("./constants.js");
|
|
94
|
+
Object.defineProperty(exports, "MAX_TREE_DEPTH", { enumerable: true, get: function () { return constants_js_1.MAX_TREE_DEPTH; } });
|
|
95
|
+
Object.defineProperty(exports, "MAX_SLUG_LENGTH", { enumerable: true, get: function () { return constants_js_1.MAX_SLUG_LENGTH; } });
|
|
96
|
+
Object.defineProperty(exports, "DEFAULT_CACHE_TTL_MS", { enumerable: true, get: function () { return constants_js_1.DEFAULT_CACHE_TTL_MS; } });
|
|
97
|
+
Object.defineProperty(exports, "DEFAULT_PAGE_SIZE", { enumerable: true, get: function () { return constants_js_1.DEFAULT_PAGE_SIZE; } });
|
|
98
|
+
Object.defineProperty(exports, "MAX_PAGE_SIZE", { enumerable: true, get: function () { return constants_js_1.MAX_PAGE_SIZE; } });
|
|
99
|
+
Object.defineProperty(exports, "API_KEY_PREFIX", { enumerable: true, get: function () { return constants_js_1.API_KEY_PREFIX; } });
|
|
100
|
+
Object.defineProperty(exports, "API_KEY_BYTES", { enumerable: true, get: function () { return constants_js_1.API_KEY_BYTES; } });
|
|
101
|
+
Object.defineProperty(exports, "TENANT_HEADER", { enumerable: true, get: function () { return constants_js_1.TENANT_HEADER; } });
|
|
102
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,gBAAgB;AAChB,iDAM4B;AAL1B,4GAAA,cAAc,OAAA;AACd,iHAAA,mBAAmB,OAAA;AACnB,qHAAA,uBAAuB,OAAA;AAKzB,gBAAgB;AAChB,iDAI4B;AAH1B,4GAAA,cAAc,OAAA;AACd,+GAAA,iBAAiB,OAAA;AAInB,cAAc;AACd,6CAM0B;AALxB,4GAAA,gBAAgB,OAAA;AAChB,+GAAA,mBAAmB,OAAA;AAMrB,gBAAgB;AAChB,iDAa4B;AAZ1B,yGAAA,WAAW,OAAA;AACX,2GAAA,aAAa,OAAA;AACb,sHAAA,wBAAwB,OAAA;AACxB,sHAAA,wBAAwB,OAAA;AACxB,gHAAA,kBAAkB,OAAA;AAClB,mHAAA,qBAAqB,OAAA;AACrB,mHAAA,qBAAqB,OAAA;AAQvB,eAAe;AACf,+CAU2B;AATzB,yGAAA,YAAY,OAAA;AACZ,yGAAA,YAAY,OAAA;AACZ,oHAAA,uBAAuB,OAAA;AACvB,oHAAA,uBAAuB,OAAA;AACvB,qHAAA,wBAAwB,OAAA;AAO1B,QAAQ;AACR,+CAc2B;AAbzB,8GAAA,iBAAiB,OAAA;AACjB,yGAAA,YAAY,OAAA;AACZ,6GAAA,gBAAgB,OAAA;AAChB,oHAAA,uBAAuB,OAAA;AACvB,oHAAA,uBAAuB,OAAA;AACvB,kHAAA,qBAAqB,OAAA;AAUvB,uDAS+B;AAR7B,+GAAA,cAAc,OAAA;AACd,+GAAA,cAAc,OAAA;AACd,uHAAA,sBAAsB,OAAA;AACtB,4HAAA,2BAA2B,OAAA;AAC3B,4HAAA,2BAA2B,OAAA;AAM7B,+CAa2B;AAZzB,8GAAA,iBAAiB,OAAA;AACjB,iHAAA,oBAAoB,OAAA;AAatB,qDAG8B;AAF5B,iIAAA,iCAAiC,OAAA;AACjC,4HAAA,4BAA4B,OAAA;AAG9B,YAAY;AACZ,mDAU6B;AAT3B,gHAAA,iBAAiB,OAAA;AACjB,gHAAA,iBAAiB,OAAA;AACjB,uGAAA,QAAQ,OAAA;AACR,2GAAA,YAAY,OAAA;AACZ,6GAAA,cAAc,OAAA;AACd,4GAAA,aAAa,OAAA;AACb,2GAAA,YAAY,OAAA;AACZ,6GAAA,cAAc,OAAA;AACd,wGAAA,SAAS,OAAA;AAGX,uDAO+B;AAN7B,2GAAA,UAAU,OAAA;AACV,2GAAA,UAAU,OAAA;AACV,iHAAA,gBAAgB,OAAA;AAChB,6GAAA,YAAY,OAAA;AAKd,SAAS;AACT,+CAqB2B;AApBzB,sGAAA,SAAS,OAAA;AACT,yGAAA,YAAY,OAAA;AACZ,gHAAA,mBAAmB,OAAA;AACnB,qHAAA,wBAAwB,OAAA;AACxB,mHAAA,sBAAsB,OAAA;AACtB,qHAAA,wBAAwB,OAAA;AACxB,gHAAA,mBAAmB,OAAA;AACnB,uHAAA,0BAA0B,OAAA;AAC1B,oHAAA,uBAAuB,OAAA;AACvB,8HAAA,iCAAiC,OAAA;AACjC,kHAAA,qBAAqB,OAAA;AACrB,oHAAA,uBAAuB,OAAA;AACvB,4HAAA,+BAA+B,OAAA;AAC/B,8GAAA,iBAAiB,OAAA;AACjB,gHAAA,mBAAmB,OAAA;AACnB,4GAAA,eAAe,OAAA;AACf,8GAAA,iBAAiB,OAAA;AACjB,2GAAA,cAAc,OAAA;AACd,iHAAA,oBAAoB,OAAA;AACpB,iHAAA,oBAAoB,OAAA;AAGtB,YAAY;AACZ,+CASwB;AARtB,8GAAA,cAAc,OAAA;AACd,+GAAA,eAAe,OAAA;AACf,oHAAA,oBAAoB,OAAA;AACpB,iHAAA,iBAAiB,OAAA;AACjB,6GAAA,aAAa,OAAA;AACb,8GAAA,cAAc,OAAA;AACd,6GAAA,aAAa,OAAA;AACb,6GAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const API_KEY_SCOPES: readonly ["read", "write", "admin"];
|
|
3
|
+
export type ApiKeyScope = (typeof API_KEY_SCOPES)[number];
|
|
4
|
+
export declare const ApiKeyScopeSchema: z.ZodEnum<["read", "write", "admin"]>;
|
|
5
|
+
//# sourceMappingURL=api-key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-key.d.ts","sourceRoot":"","sources":["../../src/types/api-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,cAAc,qCAAsC,CAAC;AAClE,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,eAAO,MAAM,iBAAiB,uCAAyB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApiKeyScopeSchema = exports.API_KEY_SCOPES = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
exports.API_KEY_SCOPES = ["read", "write", "admin"];
|
|
6
|
+
exports.ApiKeyScopeSchema = zod_1.z.enum(exports.API_KEY_SCOPES);
|
|
7
|
+
//# sourceMappingURL=api-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-key.js","sourceRoot":"","sources":["../../src/types/api-key.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAEX,QAAA,cAAc,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAU,CAAC;AAGrD,QAAA,iBAAiB,GAAG,OAAC,CAAC,IAAI,CAAC,sBAAc,CAAC,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export interface AuditContext {
|
|
3
|
+
actor_id: string;
|
|
4
|
+
actor_type: "api_key" | "jwt" | "system";
|
|
5
|
+
source_ip?: string;
|
|
6
|
+
request_id?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const AuditEntrySchema: z.ZodObject<{
|
|
9
|
+
id: z.ZodString;
|
|
10
|
+
actor_id: z.ZodString;
|
|
11
|
+
actor_type: z.ZodString;
|
|
12
|
+
action: z.ZodString;
|
|
13
|
+
resource_type: z.ZodString;
|
|
14
|
+
resource_id: z.ZodNullable<z.ZodString>;
|
|
15
|
+
tenant_id: z.ZodNullable<z.ZodString>;
|
|
16
|
+
source_ip: z.ZodNullable<z.ZodString>;
|
|
17
|
+
request_id: z.ZodNullable<z.ZodString>;
|
|
18
|
+
before_state: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
19
|
+
after_state: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
20
|
+
metadata: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
21
|
+
created_at: z.ZodString;
|
|
22
|
+
}, "strip", z.ZodTypeAny, {
|
|
23
|
+
id: string;
|
|
24
|
+
tenant_id: string | null;
|
|
25
|
+
metadata: Record<string, unknown>;
|
|
26
|
+
created_at: string;
|
|
27
|
+
actor_id: string;
|
|
28
|
+
actor_type: string;
|
|
29
|
+
action: string;
|
|
30
|
+
resource_type: string;
|
|
31
|
+
resource_id: string | null;
|
|
32
|
+
source_ip: string | null;
|
|
33
|
+
request_id: string | null;
|
|
34
|
+
before_state: Record<string, unknown> | null;
|
|
35
|
+
after_state: Record<string, unknown> | null;
|
|
36
|
+
}, {
|
|
37
|
+
id: string;
|
|
38
|
+
tenant_id: string | null;
|
|
39
|
+
metadata: Record<string, unknown>;
|
|
40
|
+
created_at: string;
|
|
41
|
+
actor_id: string;
|
|
42
|
+
actor_type: string;
|
|
43
|
+
action: string;
|
|
44
|
+
resource_type: string;
|
|
45
|
+
resource_id: string | null;
|
|
46
|
+
source_ip: string | null;
|
|
47
|
+
request_id: string | null;
|
|
48
|
+
before_state: Record<string, unknown> | null;
|
|
49
|
+
after_state: Record<string, unknown> | null;
|
|
50
|
+
}>;
|
|
51
|
+
export type AuditEntry = z.infer<typeof AuditEntrySchema>;
|
|
52
|
+
export declare const AuditLogQuerySchema: z.ZodObject<{
|
|
53
|
+
tenant_id: z.ZodOptional<z.ZodString>;
|
|
54
|
+
action: z.ZodOptional<z.ZodString>;
|
|
55
|
+
resource_type: z.ZodOptional<z.ZodString>;
|
|
56
|
+
actor_id: z.ZodOptional<z.ZodString>;
|
|
57
|
+
from: z.ZodOptional<z.ZodString>;
|
|
58
|
+
to: z.ZodOptional<z.ZodString>;
|
|
59
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
60
|
+
cursor: z.ZodOptional<z.ZodString>;
|
|
61
|
+
}, "strip", z.ZodTypeAny, {
|
|
62
|
+
limit: number;
|
|
63
|
+
tenant_id?: string | undefined;
|
|
64
|
+
actor_id?: string | undefined;
|
|
65
|
+
action?: string | undefined;
|
|
66
|
+
resource_type?: string | undefined;
|
|
67
|
+
from?: string | undefined;
|
|
68
|
+
to?: string | undefined;
|
|
69
|
+
cursor?: string | undefined;
|
|
70
|
+
}, {
|
|
71
|
+
tenant_id?: string | undefined;
|
|
72
|
+
actor_id?: string | undefined;
|
|
73
|
+
action?: string | undefined;
|
|
74
|
+
resource_type?: string | undefined;
|
|
75
|
+
from?: string | undefined;
|
|
76
|
+
to?: string | undefined;
|
|
77
|
+
limit?: number | undefined;
|
|
78
|
+
cursor?: string | undefined;
|
|
79
|
+
}>;
|
|
80
|
+
export type AuditLogQuery = z.infer<typeof AuditLogQuerySchema>;
|
|
81
|
+
//# sourceMappingURL=audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/types/audit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuditLogQuerySchema = exports.AuditEntrySchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
exports.AuditEntrySchema = zod_1.z.object({
|
|
6
|
+
id: zod_1.z.string().uuid(),
|
|
7
|
+
actor_id: zod_1.z.string(),
|
|
8
|
+
actor_type: zod_1.z.string(),
|
|
9
|
+
action: zod_1.z.string(),
|
|
10
|
+
resource_type: zod_1.z.string(),
|
|
11
|
+
resource_id: zod_1.z.string().nullable(),
|
|
12
|
+
tenant_id: zod_1.z.string().uuid().nullable(),
|
|
13
|
+
source_ip: zod_1.z.string().nullable(),
|
|
14
|
+
request_id: zod_1.z.string().nullable(),
|
|
15
|
+
before_state: zod_1.z.record(zod_1.z.unknown()).nullable(),
|
|
16
|
+
after_state: zod_1.z.record(zod_1.z.unknown()).nullable(),
|
|
17
|
+
metadata: zod_1.z.record(zod_1.z.unknown()),
|
|
18
|
+
created_at: zod_1.z.string().datetime(),
|
|
19
|
+
});
|
|
20
|
+
exports.AuditLogQuerySchema = zod_1.z.object({
|
|
21
|
+
tenant_id: zod_1.z.string().uuid().optional(),
|
|
22
|
+
action: zod_1.z.string().optional(),
|
|
23
|
+
resource_type: zod_1.z.string().optional(),
|
|
24
|
+
actor_id: zod_1.z.string().optional(),
|
|
25
|
+
from: zod_1.z.string().datetime().optional(),
|
|
26
|
+
to: zod_1.z.string().datetime().optional(),
|
|
27
|
+
limit: zod_1.z.coerce.number().int().min(1).max(100).default(50),
|
|
28
|
+
cursor: zod_1.z.string().uuid().optional(),
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/types/audit.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AASX,QAAA,gBAAgB,GAAG,OAAC,CAAC,MAAM,CAAC;IACvC,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACrB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE;IACtB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;IAClB,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE;IACzB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACvC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,YAAY,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC9C,WAAW,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC7C,QAAQ,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,OAAO,EAAE,CAAC;IAC/B,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAGU,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACvC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACtC,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACpC,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1D,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const ConfigEntrySchema: z.ZodObject<{
|
|
3
|
+
id: z.ZodString;
|
|
4
|
+
tenant_id: z.ZodString;
|
|
5
|
+
key: z.ZodString;
|
|
6
|
+
value: z.ZodUnknown;
|
|
7
|
+
inherited: z.ZodDefault<z.ZodBoolean>;
|
|
8
|
+
source_tenant_id: z.ZodString;
|
|
9
|
+
locked: z.ZodDefault<z.ZodBoolean>;
|
|
10
|
+
sensitive: z.ZodDefault<z.ZodBoolean>;
|
|
11
|
+
created_at: z.ZodString;
|
|
12
|
+
updated_at: z.ZodString;
|
|
13
|
+
}, "strip", z.ZodTypeAny, {
|
|
14
|
+
id: string;
|
|
15
|
+
tenant_id: string;
|
|
16
|
+
created_at: string;
|
|
17
|
+
updated_at: string;
|
|
18
|
+
key: string;
|
|
19
|
+
inherited: boolean;
|
|
20
|
+
source_tenant_id: string;
|
|
21
|
+
locked: boolean;
|
|
22
|
+
sensitive: boolean;
|
|
23
|
+
value?: unknown;
|
|
24
|
+
}, {
|
|
25
|
+
id: string;
|
|
26
|
+
tenant_id: string;
|
|
27
|
+
created_at: string;
|
|
28
|
+
updated_at: string;
|
|
29
|
+
key: string;
|
|
30
|
+
source_tenant_id: string;
|
|
31
|
+
value?: unknown;
|
|
32
|
+
inherited?: boolean | undefined;
|
|
33
|
+
locked?: boolean | undefined;
|
|
34
|
+
sensitive?: boolean | undefined;
|
|
35
|
+
}>;
|
|
36
|
+
export type ConfigEntry = z.infer<typeof ConfigEntrySchema>;
|
|
37
|
+
export declare const SetConfigInputSchema: z.ZodObject<{
|
|
38
|
+
value: z.ZodUnknown;
|
|
39
|
+
locked: z.ZodDefault<z.ZodBoolean>;
|
|
40
|
+
sensitive: z.ZodDefault<z.ZodBoolean>;
|
|
41
|
+
}, "strip", z.ZodTypeAny, {
|
|
42
|
+
locked: boolean;
|
|
43
|
+
sensitive: boolean;
|
|
44
|
+
value?: unknown;
|
|
45
|
+
}, {
|
|
46
|
+
value?: unknown;
|
|
47
|
+
locked?: boolean | undefined;
|
|
48
|
+
sensitive?: boolean | undefined;
|
|
49
|
+
}>;
|
|
50
|
+
export type SetConfigInput = z.infer<typeof SetConfigInputSchema>;
|
|
51
|
+
export interface ResolvedConfigEntry {
|
|
52
|
+
key: string;
|
|
53
|
+
value: unknown;
|
|
54
|
+
source_tenant_id: string;
|
|
55
|
+
inherited: boolean;
|
|
56
|
+
locked: boolean;
|
|
57
|
+
}
|
|
58
|
+
export type ResolvedConfig = Record<string, ResolvedConfigEntry>;
|
|
59
|
+
export interface BatchSetConfigKeyResult {
|
|
60
|
+
key: string;
|
|
61
|
+
status: "ok" | "error";
|
|
62
|
+
entry?: ConfigEntry;
|
|
63
|
+
error?: string;
|
|
64
|
+
}
|
|
65
|
+
export interface BatchSetConfigResult {
|
|
66
|
+
results: BatchSetConfigKeyResult[];
|
|
67
|
+
succeeded: number;
|
|
68
|
+
failed: number;
|
|
69
|
+
}
|
|
70
|
+
/** Per-key diff entry showing the value and status for one tenant side. */
|
|
71
|
+
export interface ConfigDiffEntry {
|
|
72
|
+
value: unknown;
|
|
73
|
+
status: "inherited" | "own" | "locked";
|
|
74
|
+
source: string;
|
|
75
|
+
}
|
|
76
|
+
/** A single key comparison between two tenants. */
|
|
77
|
+
export interface ConfigDiffItem {
|
|
78
|
+
key: string;
|
|
79
|
+
tenant_a: ConfigDiffEntry | null;
|
|
80
|
+
tenant_b: ConfigDiffEntry | null;
|
|
81
|
+
}
|
|
82
|
+
/** Summary info for a tenant in the diff response. */
|
|
83
|
+
export interface ConfigDiffTenantInfo {
|
|
84
|
+
id: string;
|
|
85
|
+
name: string;
|
|
86
|
+
}
|
|
87
|
+
/** Full config diff response. */
|
|
88
|
+
export interface ConfigDiff {
|
|
89
|
+
tenant_a: ConfigDiffTenantInfo;
|
|
90
|
+
tenant_b: ConfigDiffTenantInfo;
|
|
91
|
+
diff: ConfigDiffItem[];
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAI/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAEjE,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,uBAAuB,EAAE,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,2EAA2E;AAC3E,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,WAAW,GAAG,KAAK,GAAG,QAAQ,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,mDAAmD;AACnD,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;CAClC;AAED,sDAAsD;AACtD,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,iCAAiC;AACjC,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,IAAI,EAAE,cAAc,EAAE,CAAC;CACxB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SetConfigInputSchema = exports.ConfigEntrySchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
exports.ConfigEntrySchema = zod_1.z.object({
|
|
6
|
+
id: zod_1.z.string().uuid(),
|
|
7
|
+
tenant_id: zod_1.z.string().uuid(),
|
|
8
|
+
key: zod_1.z.string().min(1).max(255),
|
|
9
|
+
value: zod_1.z.unknown(),
|
|
10
|
+
inherited: zod_1.z.boolean().default(false),
|
|
11
|
+
source_tenant_id: zod_1.z.string().uuid(),
|
|
12
|
+
locked: zod_1.z.boolean().default(false),
|
|
13
|
+
sensitive: zod_1.z.boolean().default(false),
|
|
14
|
+
created_at: zod_1.z.string().datetime(),
|
|
15
|
+
updated_at: zod_1.z.string().datetime(),
|
|
16
|
+
});
|
|
17
|
+
exports.SetConfigInputSchema = zod_1.z.object({
|
|
18
|
+
value: zod_1.z.unknown(),
|
|
19
|
+
locked: zod_1.z.boolean().default(false),
|
|
20
|
+
sensitive: zod_1.z.boolean().default(false),
|
|
21
|
+
});
|
|
22
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAEX,QAAA,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC;IACxC,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;IAClB,SAAS,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACrC,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACnC,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAClC,SAAS,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACrC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAIU,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,KAAK,EAAE,OAAC,CAAC,OAAO,EAAE;IAClB,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAClC,SAAS,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACtC,CAAC,CAAC"}
|