@stratum-hq/core 1.0.0 → 1.2.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/README.md +1 -2
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -2
- package/dist/index.js.map +1 -1
- package/dist/types/audit.d.ts +50 -0
- package/dist/types/audit.d.ts.map +1 -1
- package/dist/types/audit.js +28 -1
- package/dist/types/audit.js.map +1 -1
- package/dist/types/tenant.d.ts +4 -2
- package/dist/types/tenant.d.ts.map +1 -1
- package/dist/types/tenant.js +1 -0
- package/dist/types/tenant.js.map +1 -1
- package/dist/types/usage.d.ts +91 -0
- package/dist/types/usage.d.ts.map +1 -0
- package/dist/types/usage.js +46 -0
- package/dist/types/usage.js.map +1 -0
- package/dist/types/webhook.d.ts +37 -6
- package/dist/types/webhook.d.ts.map +1 -1
- package/dist/types/webhook.js +4 -0
- package/dist/types/webhook.js.map +1 -1
- package/dist/utils/errors.d.ts +26 -1
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +38 -1
- package/dist/utils/errors.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -19,7 +19,6 @@ import {
|
|
|
19
19
|
SlugSchema,
|
|
20
20
|
buildAncestryPath,
|
|
21
21
|
TenantNotFoundError,
|
|
22
|
-
MAX_TREE_DEPTH,
|
|
23
22
|
type TenantNode,
|
|
24
23
|
type TenantContext,
|
|
25
24
|
} from "@stratum-hq/core";
|
|
@@ -50,7 +49,7 @@ try {
|
|
|
50
49
|
- **Zod schemas** — `SlugSchema`, `UUIDSchema`, `PaginationSchema`, `CreateTenantInputSchema`, `SetConfigInputSchema`, `CreatePermissionInputSchema`, `AuditLogQuerySchema`, and their input types.
|
|
51
50
|
- **Ancestry utilities** — `buildAncestryPath`, `parseAncestryPath`, `getDepth`, `isAncestorOf`, `isDescendantOf`, `getAncestorIds`.
|
|
52
51
|
- **Errors** — `StratumError` plus `TenantNotFoundError`, `ConfigLockedError`, `PermissionRevocationDeniedError`, `IsolationViolationError`, `UnauthorizedError`, `ForbiddenError`, and others.
|
|
53
|
-
- **Constants** — `
|
|
52
|
+
- **Constants** — `MAX_SLUG_LENGTH` (63), `DEFAULT_CACHE_TTL_MS`, `DEFAULT_PAGE_SIZE`, `MAX_PAGE_SIZE`, `API_KEY_PREFIX`, `TENANT_HEADER`.
|
|
54
53
|
|
|
55
54
|
## Links
|
|
56
55
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export { ConsentPurpose, ConsentRecordSchema, GrantConsentInputSchema, type ConsentRecord, type GrantConsentInput, } from "./types/consent.js";
|
|
2
2
|
export { API_KEY_SCOPES, ApiKeyScopeSchema, type ApiKeyScope, } from "./types/api-key.js";
|
|
3
3
|
export { scopeSatisfies } from "./utils/scopes.js";
|
|
4
|
-
export { AuditEntrySchema, AuditLogQuerySchema, type AuditContext, type AuditEntry, type AuditLogQuery, } from "./types/audit.js";
|
|
5
|
-
export {
|
|
4
|
+
export { AuditEntrySchema, AuditLogQuerySchema, RecordAuditEventInputSchema, type AuditContext, type AuditEntry, type AuditLogQuery, type RecordAuditEventInput, } from "./types/audit.js";
|
|
5
|
+
export { RecordUsageInputSchema, UsageEventSchema, UsageAggregateQuerySchema, type RecordUsageInput, type UsageEvent, type UsageAggregate, type UsageAggregateQuery, } from "./types/usage.js";
|
|
6
|
+
export { TenantEvent, WebhookSchema, CreateWebhookInputSchema, UpdateWebhookInputSchema, WebhookEventSchema, WebhookDeliveryStatus, WebhookDeliverySchema, type Webhook, type CreateWebhookInput, type UpdateWebhookInput, type WebhookEvent, type WebhookDelivery, type ListWebhookEventsQuery, } from "./types/webhook.js";
|
|
6
7
|
export { RegionStatus, RegionSchema, CreateRegionInputSchema, UpdateRegionInputSchema, MigrateRegionInputSchema, type Region, type CreateRegionInput, type UpdateRegionInput, type MigrateRegionInput, } from "./types/region.js";
|
|
7
8
|
export { IsolationStrategy, TenantStatus, TenantNodeSchema, CreateTenantInputSchema, UpdateTenantInputSchema, MoveTenantInputSchema, type TenantNode, type CreateTenantInput, type UpdateTenantInput, type MoveTenantInput, type TenantContext, type ResolvedTenantContext, type ResolvedPermission, } from "./types/tenant.js";
|
|
8
9
|
export { PermissionMode, RevocationMode, PermissionPolicySchema, CreatePermissionInputSchema, UpdatePermissionInputSchema, type PermissionPolicy, type CreatePermissionInput, type UpdatePermissionInput, } from "./types/permission.js";
|
|
@@ -11,6 +12,6 @@ export { SUPPORTED_ISOLATION_STRATEGIES, SUPPORTED_ISOLATION_STRATEGIES_V1, isSu
|
|
|
11
12
|
export { parseAncestryPath, buildAncestryPath, getDepth, isAncestorOf, isDescendantOf, getParentPath, appendToPath, getAncestorIds, getSelfId, } from "./utils/ancestry.js";
|
|
12
13
|
export { SLUG_REGEX, SlugSchema, UUIDSchema, PaginationSchema, validateSlug, isValidSlug, type PaginationInput, type PaginatedResult, } from "./utils/validation.js";
|
|
13
14
|
export { CreateAbacPolicyInputSchema, AbacEvaluationRequestSchema, type AbacOperator, type AbacCondition, type AbacPolicy, type CreateAbacPolicyInput, type AbacEvaluationRequest, type AbacEvaluationResult, type ResolvedAbacPolicy, } from "./types/abac.js";
|
|
14
|
-
export { ErrorCode, StratumError, TenantNotFoundError, TenantAlreadyExistsError, TenantHasChildrenError, TenantCycleDetectedError, TenantArchivedError, TenantContextNotFoundError, IsolationViolationError, IsolationStrategyUnsupportedError, PermissionLockedError, PermissionNotFoundError, PermissionRevocationDeniedError, ConfigLockedError, ConfigNotFoundError, ValidationError, UnauthorizedError, ForbiddenError, WebhookNotFoundError, WebhookDeliveryError, AbacPolicyNotFoundError, InvalidAbacOperatorError, AbacPolicyLockedError, } from "./utils/errors.js";
|
|
15
|
+
export { ErrorCode, StratumError, TenantNotFoundError, TenantAlreadyExistsError, TenantHasChildrenError, TenantCycleDetectedError, TenantArchivedError, TenantSuspendedError, InvalidTenantStateError, TenantContextNotFoundError, IsolationViolationError, IsolationStrategyUnsupportedError, PermissionLockedError, PermissionNotFoundError, PermissionRevocationDeniedError, ConfigLockedError, ConfigNotFoundError, ValidationError, UnauthorizedError, ForbiddenError, WebhookNotFoundError, WebhookDeliveryError, WebhookUrlValidationError, AbacPolicyNotFoundError, InvalidAbacOperatorError, AbacPolicyLockedError, } from "./utils/errors.js";
|
|
15
16
|
export { MAX_SLUG_LENGTH, DEFAULT_CACHE_TTL_MS, DEFAULT_PAGE_SIZE, MAX_PAGE_SIZE, API_KEY_PREFIX, API_KEY_BYTES, TENANT_HEADER, } from "./constants.js";
|
|
16
17
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +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;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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.AbacPolicyLockedError = exports.InvalidAbacOperatorError = exports.AbacPolicyNotFoundError = 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 = exports.TenantNotFoundError = exports.StratumError = exports.ErrorCode = exports.AbacEvaluationRequestSchema = exports.CreateAbacPolicyInputSchema = exports.isValidSlug = void 0;
|
|
3
|
+
exports.SLUG_REGEX = 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.SUPPORTED_ISOLATION_STRATEGIES = 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.UsageAggregateQuerySchema = exports.UsageEventSchema = exports.RecordUsageInputSchema = exports.RecordAuditEventInputSchema = exports.AuditLogQuerySchema = exports.AuditEntrySchema = exports.scopeSatisfies = 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.AbacPolicyLockedError = exports.InvalidAbacOperatorError = exports.AbacPolicyNotFoundError = exports.WebhookUrlValidationError = 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.InvalidTenantStateError = exports.TenantSuspendedError = exports.TenantArchivedError = exports.TenantCycleDetectedError = exports.TenantHasChildrenError = exports.TenantAlreadyExistsError = exports.TenantNotFoundError = exports.StratumError = exports.ErrorCode = exports.AbacEvaluationRequestSchema = exports.CreateAbacPolicyInputSchema = exports.isValidSlug = exports.validateSlug = exports.PaginationSchema = exports.UUIDSchema = exports.SlugSchema = void 0;
|
|
5
5
|
// Consent types
|
|
6
6
|
var consent_js_1 = require("./types/consent.js");
|
|
7
7
|
Object.defineProperty(exports, "ConsentPurpose", { enumerable: true, get: function () { return consent_js_1.ConsentPurpose; } });
|
|
@@ -17,6 +17,12 @@ Object.defineProperty(exports, "scopeSatisfies", { enumerable: true, get: functi
|
|
|
17
17
|
var audit_js_1 = require("./types/audit.js");
|
|
18
18
|
Object.defineProperty(exports, "AuditEntrySchema", { enumerable: true, get: function () { return audit_js_1.AuditEntrySchema; } });
|
|
19
19
|
Object.defineProperty(exports, "AuditLogQuerySchema", { enumerable: true, get: function () { return audit_js_1.AuditLogQuerySchema; } });
|
|
20
|
+
Object.defineProperty(exports, "RecordAuditEventInputSchema", { enumerable: true, get: function () { return audit_js_1.RecordAuditEventInputSchema; } });
|
|
21
|
+
// Usage metering types
|
|
22
|
+
var usage_js_1 = require("./types/usage.js");
|
|
23
|
+
Object.defineProperty(exports, "RecordUsageInputSchema", { enumerable: true, get: function () { return usage_js_1.RecordUsageInputSchema; } });
|
|
24
|
+
Object.defineProperty(exports, "UsageEventSchema", { enumerable: true, get: function () { return usage_js_1.UsageEventSchema; } });
|
|
25
|
+
Object.defineProperty(exports, "UsageAggregateQuerySchema", { enumerable: true, get: function () { return usage_js_1.UsageAggregateQuerySchema; } });
|
|
20
26
|
// Webhook types
|
|
21
27
|
var webhook_js_1 = require("./types/webhook.js");
|
|
22
28
|
Object.defineProperty(exports, "TenantEvent", { enumerable: true, get: function () { return webhook_js_1.TenantEvent; } });
|
|
@@ -85,6 +91,8 @@ Object.defineProperty(exports, "TenantAlreadyExistsError", { enumerable: true, g
|
|
|
85
91
|
Object.defineProperty(exports, "TenantHasChildrenError", { enumerable: true, get: function () { return errors_js_1.TenantHasChildrenError; } });
|
|
86
92
|
Object.defineProperty(exports, "TenantCycleDetectedError", { enumerable: true, get: function () { return errors_js_1.TenantCycleDetectedError; } });
|
|
87
93
|
Object.defineProperty(exports, "TenantArchivedError", { enumerable: true, get: function () { return errors_js_1.TenantArchivedError; } });
|
|
94
|
+
Object.defineProperty(exports, "TenantSuspendedError", { enumerable: true, get: function () { return errors_js_1.TenantSuspendedError; } });
|
|
95
|
+
Object.defineProperty(exports, "InvalidTenantStateError", { enumerable: true, get: function () { return errors_js_1.InvalidTenantStateError; } });
|
|
88
96
|
Object.defineProperty(exports, "TenantContextNotFoundError", { enumerable: true, get: function () { return errors_js_1.TenantContextNotFoundError; } });
|
|
89
97
|
Object.defineProperty(exports, "IsolationViolationError", { enumerable: true, get: function () { return errors_js_1.IsolationViolationError; } });
|
|
90
98
|
Object.defineProperty(exports, "IsolationStrategyUnsupportedError", { enumerable: true, get: function () { return errors_js_1.IsolationStrategyUnsupportedError; } });
|
|
@@ -98,6 +106,7 @@ Object.defineProperty(exports, "UnauthorizedError", { enumerable: true, get: fun
|
|
|
98
106
|
Object.defineProperty(exports, "ForbiddenError", { enumerable: true, get: function () { return errors_js_1.ForbiddenError; } });
|
|
99
107
|
Object.defineProperty(exports, "WebhookNotFoundError", { enumerable: true, get: function () { return errors_js_1.WebhookNotFoundError; } });
|
|
100
108
|
Object.defineProperty(exports, "WebhookDeliveryError", { enumerable: true, get: function () { return errors_js_1.WebhookDeliveryError; } });
|
|
109
|
+
Object.defineProperty(exports, "WebhookUrlValidationError", { enumerable: true, get: function () { return errors_js_1.WebhookUrlValidationError; } });
|
|
101
110
|
Object.defineProperty(exports, "AbacPolicyNotFoundError", { enumerable: true, get: function () { return errors_js_1.AbacPolicyNotFoundError; } });
|
|
102
111
|
Object.defineProperty(exports, "InvalidAbacOperatorError", { enumerable: true, get: function () { return errors_js_1.InvalidAbacOperatorError; } });
|
|
103
112
|
Object.defineProperty(exports, "AbacPolicyLockedError", { enumerable: true, get: function () { return errors_js_1.AbacPolicyLockedError; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +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;AAGnB,+CAAmD;AAA1C,2GAAA,cAAc,OAAA;AAEvB,cAAc;AACd,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/audit.d.ts
CHANGED
|
@@ -78,4 +78,54 @@ export declare const AuditLogQuerySchema: z.ZodObject<{
|
|
|
78
78
|
cursor?: string | undefined;
|
|
79
79
|
}>;
|
|
80
80
|
export type AuditLogQuery = z.infer<typeof AuditLogQuerySchema>;
|
|
81
|
+
/**
|
|
82
|
+
* Input to append a custom audit event through the public facade. Stratum owns
|
|
83
|
+
* `audit_logs`, so a consumer records its own events here instead of writing the
|
|
84
|
+
* table directly. `tenantId` is required and the row is always stamped for that
|
|
85
|
+
* tenant and no other. `actorType` matches the actor_type CHECK
|
|
86
|
+
* ('api_key' | 'jwt' | 'system') and defaults to 'system'. `sourceIp` lands in
|
|
87
|
+
* the INET column, so it must be a valid IP; Postgres normalizes it (a bare IPv4
|
|
88
|
+
* round-trips as `x/32`). `occurredAt` sets the row's `created_at`, so a consumer
|
|
89
|
+
* can seed historical / backdated events; omit it and the row is stamped now().
|
|
90
|
+
* It accepts an ISO 8601 datetime string or a `Date`. The recorded row is
|
|
91
|
+
* queryable via queryAuditLogs.
|
|
92
|
+
*/
|
|
93
|
+
export declare const RecordAuditEventInputSchema: z.ZodObject<{
|
|
94
|
+
tenantId: z.ZodString;
|
|
95
|
+
actorId: z.ZodString;
|
|
96
|
+
actorType: z.ZodDefault<z.ZodEnum<["api_key", "jwt", "system"]>>;
|
|
97
|
+
action: z.ZodString;
|
|
98
|
+
resourceType: z.ZodString;
|
|
99
|
+
resourceId: z.ZodNullable<z.ZodString>;
|
|
100
|
+
before: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
101
|
+
after: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
102
|
+
metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
103
|
+
sourceIp: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
104
|
+
occurredAt: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodDate]>>;
|
|
105
|
+
}, "strip", z.ZodTypeAny, {
|
|
106
|
+
metadata: Record<string, unknown>;
|
|
107
|
+
action: string;
|
|
108
|
+
tenantId: string;
|
|
109
|
+
actorId: string;
|
|
110
|
+
actorType: "api_key" | "jwt" | "system";
|
|
111
|
+
resourceType: string;
|
|
112
|
+
resourceId: string | null;
|
|
113
|
+
before?: Record<string, unknown> | null | undefined;
|
|
114
|
+
after?: Record<string, unknown> | null | undefined;
|
|
115
|
+
sourceIp?: string | null | undefined;
|
|
116
|
+
occurredAt?: string | Date | undefined;
|
|
117
|
+
}, {
|
|
118
|
+
action: string;
|
|
119
|
+
tenantId: string;
|
|
120
|
+
actorId: string;
|
|
121
|
+
resourceType: string;
|
|
122
|
+
resourceId: string | null;
|
|
123
|
+
metadata?: Record<string, unknown> | undefined;
|
|
124
|
+
actorType?: "api_key" | "jwt" | "system" | undefined;
|
|
125
|
+
before?: Record<string, unknown> | null | undefined;
|
|
126
|
+
after?: Record<string, unknown> | null | undefined;
|
|
127
|
+
sourceIp?: string | null | undefined;
|
|
128
|
+
occurredAt?: string | Date | undefined;
|
|
129
|
+
}>;
|
|
130
|
+
export type RecordAuditEventInput = z.input<typeof RecordAuditEventInputSchema>;
|
|
81
131
|
//# sourceMappingURL=audit.d.ts.map
|
|
@@ -1 +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"}
|
|
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;AAEhE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EActC,CAAC;AAIH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
|
package/dist/types/audit.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AuditLogQuerySchema = exports.AuditEntrySchema = void 0;
|
|
3
|
+
exports.RecordAuditEventInputSchema = exports.AuditLogQuerySchema = exports.AuditEntrySchema = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
exports.AuditEntrySchema = zod_1.z.object({
|
|
6
6
|
id: zod_1.z.string().uuid(),
|
|
@@ -27,4 +27,31 @@ exports.AuditLogQuerySchema = zod_1.z.object({
|
|
|
27
27
|
limit: zod_1.z.coerce.number().int().min(1).max(100).default(50),
|
|
28
28
|
cursor: zod_1.z.string().uuid().optional(),
|
|
29
29
|
});
|
|
30
|
+
/**
|
|
31
|
+
* Input to append a custom audit event through the public facade. Stratum owns
|
|
32
|
+
* `audit_logs`, so a consumer records its own events here instead of writing the
|
|
33
|
+
* table directly. `tenantId` is required and the row is always stamped for that
|
|
34
|
+
* tenant and no other. `actorType` matches the actor_type CHECK
|
|
35
|
+
* ('api_key' | 'jwt' | 'system') and defaults to 'system'. `sourceIp` lands in
|
|
36
|
+
* the INET column, so it must be a valid IP; Postgres normalizes it (a bare IPv4
|
|
37
|
+
* round-trips as `x/32`). `occurredAt` sets the row's `created_at`, so a consumer
|
|
38
|
+
* can seed historical / backdated events; omit it and the row is stamped now().
|
|
39
|
+
* It accepts an ISO 8601 datetime string or a `Date`. The recorded row is
|
|
40
|
+
* queryable via queryAuditLogs.
|
|
41
|
+
*/
|
|
42
|
+
exports.RecordAuditEventInputSchema = zod_1.z.object({
|
|
43
|
+
tenantId: zod_1.z.string().uuid(),
|
|
44
|
+
actorId: zod_1.z.string().min(1),
|
|
45
|
+
actorType: zod_1.z.enum(["api_key", "jwt", "system"]).default("system"),
|
|
46
|
+
action: zod_1.z.string().min(1),
|
|
47
|
+
resourceType: zod_1.z.string().min(1),
|
|
48
|
+
resourceId: zod_1.z.string().nullable(),
|
|
49
|
+
before: zod_1.z.record(zod_1.z.unknown()).nullable().optional(),
|
|
50
|
+
after: zod_1.z.record(zod_1.z.unknown()).nullable().optional(),
|
|
51
|
+
metadata: zod_1.z.record(zod_1.z.unknown()).default({}),
|
|
52
|
+
sourceIp: zod_1.z.string().nullable().optional(),
|
|
53
|
+
occurredAt: zod_1.z
|
|
54
|
+
.union([zod_1.z.string().datetime({ offset: true }), zod_1.z.date()])
|
|
55
|
+
.optional(),
|
|
56
|
+
});
|
|
30
57
|
//# sourceMappingURL=audit.js.map
|
package/dist/types/audit.js.map
CHANGED
|
@@ -1 +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"}
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/types/audit.ts"],"names":[],"mappings":"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"}
|
package/dist/types/tenant.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export declare const IsolationStrategy: {
|
|
|
8
8
|
export type IsolationStrategy = (typeof IsolationStrategy)[keyof typeof IsolationStrategy];
|
|
9
9
|
export declare const TenantStatus: {
|
|
10
10
|
readonly ACTIVE: "active";
|
|
11
|
+
readonly SUSPENDED: "suspended";
|
|
11
12
|
readonly ARCHIVED: "archived";
|
|
12
13
|
};
|
|
13
14
|
export type TenantStatus = (typeof TenantStatus)[keyof typeof TenantStatus];
|
|
@@ -27,6 +28,7 @@ export declare const TenantNodeSchema: z.ZodObject<{
|
|
|
27
28
|
}>>;
|
|
28
29
|
status: z.ZodDefault<z.ZodNativeEnum<{
|
|
29
30
|
readonly ACTIVE: "active";
|
|
31
|
+
readonly SUSPENDED: "suspended";
|
|
30
32
|
readonly ARCHIVED: "archived";
|
|
31
33
|
}>>;
|
|
32
34
|
region_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -36,7 +38,7 @@ export declare const TenantNodeSchema: z.ZodObject<{
|
|
|
36
38
|
updated_at: z.ZodString;
|
|
37
39
|
}, "strip", z.ZodTypeAny, {
|
|
38
40
|
id: string;
|
|
39
|
-
status: "active" | "archived";
|
|
41
|
+
status: "active" | "suspended" | "archived";
|
|
40
42
|
metadata: Record<string, unknown>;
|
|
41
43
|
created_at: string;
|
|
42
44
|
updated_at: string;
|
|
@@ -59,7 +61,7 @@ export declare const TenantNodeSchema: z.ZodObject<{
|
|
|
59
61
|
ancestry_path: string;
|
|
60
62
|
depth: number;
|
|
61
63
|
name: string;
|
|
62
|
-
status?: "active" | "archived" | undefined;
|
|
64
|
+
status?: "active" | "suspended" | "archived" | undefined;
|
|
63
65
|
metadata?: Record<string, unknown> | undefined;
|
|
64
66
|
region_id?: string | null | undefined;
|
|
65
67
|
config?: Record<string, unknown> | undefined;
|
|
@@ -1 +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
|
|
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;;;;CAIf,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAE5E,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgB3B,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;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,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"}
|
package/dist/types/tenant.js
CHANGED
package/dist/types/tenant.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tenant.js","sourceRoot":"","sources":["../../src/types/tenant.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tenant.js","sourceRoot":"","sources":["../../src/types/tenant.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Input to record a single usage event for a tenant.
|
|
4
|
+
*
|
|
5
|
+
* `quantity` defaults to 1 (one countable unit) and must be a non-negative
|
|
6
|
+
* integer — metering counts up; credits / adjustments are out of scope.
|
|
7
|
+
* `occurred_at` is when the usage happened (ISO 8601); it defaults to insert
|
|
8
|
+
* time and is the timestamp aggregation windows filter on, so a back-dated
|
|
9
|
+
* import still lands in the right billing window. `idempotency_key`, when
|
|
10
|
+
* supplied, makes the record idempotent per (tenant, metric): re-recording the
|
|
11
|
+
* same key is a no-op that returns the original event, so an at-least-once
|
|
12
|
+
* producer cannot double count.
|
|
13
|
+
*/
|
|
14
|
+
export declare const RecordUsageInputSchema: z.ZodObject<{
|
|
15
|
+
metric: z.ZodString;
|
|
16
|
+
quantity: z.ZodDefault<z.ZodNumber>;
|
|
17
|
+
occurred_at: z.ZodOptional<z.ZodString>;
|
|
18
|
+
idempotency_key: z.ZodOptional<z.ZodString>;
|
|
19
|
+
metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
20
|
+
}, "strip", z.ZodTypeAny, {
|
|
21
|
+
metadata: Record<string, unknown>;
|
|
22
|
+
metric: string;
|
|
23
|
+
quantity: number;
|
|
24
|
+
occurred_at?: string | undefined;
|
|
25
|
+
idempotency_key?: string | undefined;
|
|
26
|
+
}, {
|
|
27
|
+
metric: string;
|
|
28
|
+
metadata?: Record<string, unknown> | undefined;
|
|
29
|
+
quantity?: number | undefined;
|
|
30
|
+
occurred_at?: string | undefined;
|
|
31
|
+
idempotency_key?: string | undefined;
|
|
32
|
+
}>;
|
|
33
|
+
export type RecordUsageInput = z.input<typeof RecordUsageInputSchema>;
|
|
34
|
+
export declare const UsageEventSchema: z.ZodObject<{
|
|
35
|
+
id: z.ZodString;
|
|
36
|
+
tenant_id: z.ZodString;
|
|
37
|
+
metric: z.ZodString;
|
|
38
|
+
quantity: z.ZodNumber;
|
|
39
|
+
idempotency_key: z.ZodNullable<z.ZodString>;
|
|
40
|
+
metadata: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
41
|
+
occurred_at: z.ZodString;
|
|
42
|
+
recorded_at: z.ZodString;
|
|
43
|
+
}, "strip", z.ZodTypeAny, {
|
|
44
|
+
id: string;
|
|
45
|
+
tenant_id: string;
|
|
46
|
+
metadata: Record<string, unknown>;
|
|
47
|
+
metric: string;
|
|
48
|
+
quantity: number;
|
|
49
|
+
occurred_at: string;
|
|
50
|
+
idempotency_key: string | null;
|
|
51
|
+
recorded_at: string;
|
|
52
|
+
}, {
|
|
53
|
+
id: string;
|
|
54
|
+
tenant_id: string;
|
|
55
|
+
metadata: Record<string, unknown>;
|
|
56
|
+
metric: string;
|
|
57
|
+
quantity: number;
|
|
58
|
+
occurred_at: string;
|
|
59
|
+
idempotency_key: string | null;
|
|
60
|
+
recorded_at: string;
|
|
61
|
+
}>;
|
|
62
|
+
export type UsageEvent = z.infer<typeof UsageEventSchema>;
|
|
63
|
+
/**
|
|
64
|
+
* Aggregate usage for one tenant over an optional time window. The window is
|
|
65
|
+
* half-open on `occurred_at`: `from` inclusive, `to` exclusive, so adjacent
|
|
66
|
+
* windows never double count the same event at a boundary. Omitting `metric`
|
|
67
|
+
* returns one aggregate row per metric.
|
|
68
|
+
*/
|
|
69
|
+
export declare const UsageAggregateQuerySchema: z.ZodObject<{
|
|
70
|
+
tenant_id: z.ZodString;
|
|
71
|
+
metric: z.ZodOptional<z.ZodString>;
|
|
72
|
+
from: z.ZodOptional<z.ZodString>;
|
|
73
|
+
to: z.ZodOptional<z.ZodString>;
|
|
74
|
+
}, "strip", z.ZodTypeAny, {
|
|
75
|
+
tenant_id: string;
|
|
76
|
+
from?: string | undefined;
|
|
77
|
+
to?: string | undefined;
|
|
78
|
+
metric?: string | undefined;
|
|
79
|
+
}, {
|
|
80
|
+
tenant_id: string;
|
|
81
|
+
from?: string | undefined;
|
|
82
|
+
to?: string | undefined;
|
|
83
|
+
metric?: string | undefined;
|
|
84
|
+
}>;
|
|
85
|
+
export type UsageAggregateQuery = z.infer<typeof UsageAggregateQuerySchema>;
|
|
86
|
+
export interface UsageAggregate {
|
|
87
|
+
metric: string;
|
|
88
|
+
total: number;
|
|
89
|
+
event_count: number;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/types/usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;EAMjC,CAAC;AAIH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;EAKpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UsageAggregateQuerySchema = exports.UsageEventSchema = exports.RecordUsageInputSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
/**
|
|
6
|
+
* Input to record a single usage event for a tenant.
|
|
7
|
+
*
|
|
8
|
+
* `quantity` defaults to 1 (one countable unit) and must be a non-negative
|
|
9
|
+
* integer — metering counts up; credits / adjustments are out of scope.
|
|
10
|
+
* `occurred_at` is when the usage happened (ISO 8601); it defaults to insert
|
|
11
|
+
* time and is the timestamp aggregation windows filter on, so a back-dated
|
|
12
|
+
* import still lands in the right billing window. `idempotency_key`, when
|
|
13
|
+
* supplied, makes the record idempotent per (tenant, metric): re-recording the
|
|
14
|
+
* same key is a no-op that returns the original event, so an at-least-once
|
|
15
|
+
* producer cannot double count.
|
|
16
|
+
*/
|
|
17
|
+
exports.RecordUsageInputSchema = zod_1.z.object({
|
|
18
|
+
metric: zod_1.z.string().min(1).max(128),
|
|
19
|
+
quantity: zod_1.z.number().int().nonnegative().default(1),
|
|
20
|
+
occurred_at: zod_1.z.string().datetime().optional(),
|
|
21
|
+
idempotency_key: zod_1.z.string().min(1).max(255).optional(),
|
|
22
|
+
metadata: zod_1.z.record(zod_1.z.unknown()).default({}),
|
|
23
|
+
});
|
|
24
|
+
exports.UsageEventSchema = zod_1.z.object({
|
|
25
|
+
id: zod_1.z.string().uuid(),
|
|
26
|
+
tenant_id: zod_1.z.string().uuid(),
|
|
27
|
+
metric: zod_1.z.string(),
|
|
28
|
+
quantity: zod_1.z.number(),
|
|
29
|
+
idempotency_key: zod_1.z.string().nullable(),
|
|
30
|
+
metadata: zod_1.z.record(zod_1.z.unknown()),
|
|
31
|
+
occurred_at: zod_1.z.string(),
|
|
32
|
+
recorded_at: zod_1.z.string(),
|
|
33
|
+
});
|
|
34
|
+
/**
|
|
35
|
+
* Aggregate usage for one tenant over an optional time window. The window is
|
|
36
|
+
* half-open on `occurred_at`: `from` inclusive, `to` exclusive, so adjacent
|
|
37
|
+
* windows never double count the same event at a boundary. Omitting `metric`
|
|
38
|
+
* returns one aggregate row per metric.
|
|
39
|
+
*/
|
|
40
|
+
exports.UsageAggregateQuerySchema = zod_1.z.object({
|
|
41
|
+
tenant_id: zod_1.z.string().uuid(),
|
|
42
|
+
metric: zod_1.z.string().optional(),
|
|
43
|
+
from: zod_1.z.string().datetime().optional(),
|
|
44
|
+
to: zod_1.z.string().datetime().optional(),
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/types/usage.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB;;;;;;;;;;;GAWG;AACU,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAClC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC7C,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACtD,QAAQ,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC5C,CAAC,CAAC;AAMU,QAAA,gBAAgB,GAAG,OAAC,CAAC,MAAM,CAAC;IACvC,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACrB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAC5B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;IAClB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,QAAQ,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,OAAO,EAAE,CAAC;IAC/B,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE;IACvB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE;CACxB,CAAC,CAAC;AAGH;;;;;GAKG;AACU,QAAA,yBAAyB,GAAG,OAAC,CAAC,MAAM,CAAC;IAChD,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAC5B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,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;CACrC,CAAC,CAAC"}
|
package/dist/types/webhook.d.ts
CHANGED
|
@@ -4,6 +4,10 @@ export declare const TenantEvent: {
|
|
|
4
4
|
readonly TENANT_UPDATED: "tenant.updated";
|
|
5
5
|
readonly TENANT_DELETED: "tenant.deleted";
|
|
6
6
|
readonly TENANT_MOVED: "tenant.moved";
|
|
7
|
+
readonly TENANT_SUSPENDED: "tenant.suspended";
|
|
8
|
+
readonly TENANT_RESUMED: "tenant.resumed";
|
|
9
|
+
readonly TENANT_ARCHIVED: "tenant.archived";
|
|
10
|
+
readonly TENANT_PURGED: "tenant.purged";
|
|
7
11
|
readonly CONFIG_UPDATED: "config.updated";
|
|
8
12
|
readonly CONFIG_DELETED: "config.deleted";
|
|
9
13
|
readonly PERMISSION_CREATED: "permission.created";
|
|
@@ -52,6 +56,10 @@ export declare const CreateWebhookInputSchema: z.ZodObject<{
|
|
|
52
56
|
readonly TENANT_UPDATED: "tenant.updated";
|
|
53
57
|
readonly TENANT_DELETED: "tenant.deleted";
|
|
54
58
|
readonly TENANT_MOVED: "tenant.moved";
|
|
59
|
+
readonly TENANT_SUSPENDED: "tenant.suspended";
|
|
60
|
+
readonly TENANT_RESUMED: "tenant.resumed";
|
|
61
|
+
readonly TENANT_ARCHIVED: "tenant.archived";
|
|
62
|
+
readonly TENANT_PURGED: "tenant.purged";
|
|
55
63
|
readonly CONFIG_UPDATED: "config.updated";
|
|
56
64
|
readonly CONFIG_DELETED: "config.deleted";
|
|
57
65
|
readonly PERMISSION_CREATED: "permission.created";
|
|
@@ -62,12 +70,12 @@ export declare const CreateWebhookInputSchema: z.ZodObject<{
|
|
|
62
70
|
}, "strip", z.ZodTypeAny, {
|
|
63
71
|
tenant_id: string | null;
|
|
64
72
|
url: string;
|
|
65
|
-
events: ("tenant.created" | "tenant.updated" | "tenant.deleted" | "tenant.moved" | "config.updated" | "config.deleted" | "permission.created" | "permission.updated" | "permission.deleted")[];
|
|
73
|
+
events: ("tenant.created" | "tenant.updated" | "tenant.deleted" | "tenant.moved" | "tenant.suspended" | "tenant.resumed" | "tenant.archived" | "tenant.purged" | "config.updated" | "config.deleted" | "permission.created" | "permission.updated" | "permission.deleted")[];
|
|
66
74
|
secret: string;
|
|
67
75
|
description?: string | undefined;
|
|
68
76
|
}, {
|
|
69
77
|
url: string;
|
|
70
|
-
events: ("tenant.created" | "tenant.updated" | "tenant.deleted" | "tenant.moved" | "config.updated" | "config.deleted" | "permission.created" | "permission.updated" | "permission.deleted")[];
|
|
78
|
+
events: ("tenant.created" | "tenant.updated" | "tenant.deleted" | "tenant.moved" | "tenant.suspended" | "tenant.resumed" | "tenant.archived" | "tenant.purged" | "config.updated" | "config.deleted" | "permission.created" | "permission.updated" | "permission.deleted")[];
|
|
71
79
|
secret: string;
|
|
72
80
|
tenant_id?: string | null | undefined;
|
|
73
81
|
description?: string | undefined;
|
|
@@ -81,6 +89,10 @@ export declare const UpdateWebhookInputSchema: z.ZodObject<{
|
|
|
81
89
|
readonly TENANT_UPDATED: "tenant.updated";
|
|
82
90
|
readonly TENANT_DELETED: "tenant.deleted";
|
|
83
91
|
readonly TENANT_MOVED: "tenant.moved";
|
|
92
|
+
readonly TENANT_SUSPENDED: "tenant.suspended";
|
|
93
|
+
readonly TENANT_RESUMED: "tenant.resumed";
|
|
94
|
+
readonly TENANT_ARCHIVED: "tenant.archived";
|
|
95
|
+
readonly TENANT_PURGED: "tenant.purged";
|
|
84
96
|
readonly CONFIG_UPDATED: "config.updated";
|
|
85
97
|
readonly CONFIG_DELETED: "config.deleted";
|
|
86
98
|
readonly PERMISSION_CREATED: "permission.created";
|
|
@@ -91,13 +103,13 @@ export declare const UpdateWebhookInputSchema: z.ZodObject<{
|
|
|
91
103
|
description: z.ZodOptional<z.ZodString>;
|
|
92
104
|
}, "strip", z.ZodTypeAny, {
|
|
93
105
|
url?: string | undefined;
|
|
94
|
-
events?: ("tenant.created" | "tenant.updated" | "tenant.deleted" | "tenant.moved" | "config.updated" | "config.deleted" | "permission.created" | "permission.updated" | "permission.deleted")[] | undefined;
|
|
106
|
+
events?: ("tenant.created" | "tenant.updated" | "tenant.deleted" | "tenant.moved" | "tenant.suspended" | "tenant.resumed" | "tenant.archived" | "tenant.purged" | "config.updated" | "config.deleted" | "permission.created" | "permission.updated" | "permission.deleted")[] | undefined;
|
|
95
107
|
active?: boolean | undefined;
|
|
96
108
|
description?: string | undefined;
|
|
97
109
|
secret?: string | undefined;
|
|
98
110
|
}, {
|
|
99
111
|
url?: string | undefined;
|
|
100
|
-
events?: ("tenant.created" | "tenant.updated" | "tenant.deleted" | "tenant.moved" | "config.updated" | "config.deleted" | "permission.created" | "permission.updated" | "permission.deleted")[] | undefined;
|
|
112
|
+
events?: ("tenant.created" | "tenant.updated" | "tenant.deleted" | "tenant.moved" | "tenant.suspended" | "tenant.resumed" | "tenant.archived" | "tenant.purged" | "config.updated" | "config.deleted" | "permission.created" | "permission.updated" | "permission.deleted")[] | undefined;
|
|
101
113
|
active?: boolean | undefined;
|
|
102
114
|
description?: string | undefined;
|
|
103
115
|
secret?: string | undefined;
|
|
@@ -110,6 +122,10 @@ export declare const WebhookEventSchema: z.ZodObject<{
|
|
|
110
122
|
readonly TENANT_UPDATED: "tenant.updated";
|
|
111
123
|
readonly TENANT_DELETED: "tenant.deleted";
|
|
112
124
|
readonly TENANT_MOVED: "tenant.moved";
|
|
125
|
+
readonly TENANT_SUSPENDED: "tenant.suspended";
|
|
126
|
+
readonly TENANT_RESUMED: "tenant.resumed";
|
|
127
|
+
readonly TENANT_ARCHIVED: "tenant.archived";
|
|
128
|
+
readonly TENANT_PURGED: "tenant.purged";
|
|
113
129
|
readonly CONFIG_UPDATED: "config.updated";
|
|
114
130
|
readonly CONFIG_DELETED: "config.deleted";
|
|
115
131
|
readonly PERMISSION_CREATED: "permission.created";
|
|
@@ -122,17 +138,32 @@ export declare const WebhookEventSchema: z.ZodObject<{
|
|
|
122
138
|
}, "strip", z.ZodTypeAny, {
|
|
123
139
|
id: string;
|
|
124
140
|
tenant_id: string;
|
|
125
|
-
type: "tenant.created" | "tenant.updated" | "tenant.deleted" | "tenant.moved" | "config.updated" | "config.deleted" | "permission.created" | "permission.updated" | "permission.deleted";
|
|
141
|
+
type: "tenant.created" | "tenant.updated" | "tenant.deleted" | "tenant.moved" | "tenant.suspended" | "tenant.resumed" | "tenant.archived" | "tenant.purged" | "config.updated" | "config.deleted" | "permission.created" | "permission.updated" | "permission.deleted";
|
|
126
142
|
created_at: string;
|
|
127
143
|
data: Record<string, unknown>;
|
|
128
144
|
}, {
|
|
129
145
|
id: string;
|
|
130
146
|
tenant_id: string;
|
|
131
|
-
type: "tenant.created" | "tenant.updated" | "tenant.deleted" | "tenant.moved" | "config.updated" | "config.deleted" | "permission.created" | "permission.updated" | "permission.deleted";
|
|
147
|
+
type: "tenant.created" | "tenant.updated" | "tenant.deleted" | "tenant.moved" | "tenant.suspended" | "tenant.resumed" | "tenant.archived" | "tenant.purged" | "config.updated" | "config.deleted" | "permission.created" | "permission.updated" | "permission.deleted";
|
|
132
148
|
created_at: string;
|
|
133
149
|
data: Record<string, unknown>;
|
|
134
150
|
}>;
|
|
135
151
|
export type WebhookEvent = z.infer<typeof WebhookEventSchema>;
|
|
152
|
+
/** Filter for listing a tenant's webhook events (newest first, paginated). */
|
|
153
|
+
export interface ListWebhookEventsQuery {
|
|
154
|
+
/** Tenant whose events to page. Required: a caller never pages another tenant. */
|
|
155
|
+
tenantId: string;
|
|
156
|
+
/** Restrict to a single event type. */
|
|
157
|
+
type?: TenantEvent;
|
|
158
|
+
/** Only events created at or after this ISO-8601 timestamp. */
|
|
159
|
+
from?: string;
|
|
160
|
+
/** Only events created at or before this ISO-8601 timestamp. */
|
|
161
|
+
to?: string;
|
|
162
|
+
/** Page size, 1-100. Defaults to 50. */
|
|
163
|
+
limit?: number;
|
|
164
|
+
/** Rows to skip for pagination. Defaults to 0. */
|
|
165
|
+
offset?: number;
|
|
166
|
+
}
|
|
136
167
|
export declare const WebhookDeliveryStatus: {
|
|
137
168
|
readonly PENDING: "pending";
|
|
138
169
|
readonly SUCCESS: "success";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../src/types/webhook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../src/types/webhook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;CAcd,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAEzE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUxB,CAAC;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,8EAA8E;AAC9E,MAAM,WAAW,sBAAsB;IACrC,kFAAkF;IAClF,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,qBAAqB;;;;CAIxB,CAAC;AACX,MAAM,MAAM,qBAAqB,GAC/B,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,OAAO,qBAAqB,CAAC,CAAC;AAErE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|
package/dist/types/webhook.js
CHANGED
|
@@ -7,6 +7,10 @@ exports.TenantEvent = {
|
|
|
7
7
|
TENANT_UPDATED: "tenant.updated",
|
|
8
8
|
TENANT_DELETED: "tenant.deleted",
|
|
9
9
|
TENANT_MOVED: "tenant.moved",
|
|
10
|
+
TENANT_SUSPENDED: "tenant.suspended",
|
|
11
|
+
TENANT_RESUMED: "tenant.resumed",
|
|
12
|
+
TENANT_ARCHIVED: "tenant.archived",
|
|
13
|
+
TENANT_PURGED: "tenant.purged",
|
|
10
14
|
CONFIG_UPDATED: "config.updated",
|
|
11
15
|
CONFIG_DELETED: "config.deleted",
|
|
12
16
|
PERMISSION_CREATED: "permission.created",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../src/types/webhook.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../src/types/webhook.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/errors.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ export declare enum ErrorCode {
|
|
|
7
7
|
TENANT_HAS_CHILDREN = "TENANT_HAS_CHILDREN",
|
|
8
8
|
TENANT_CYCLE_DETECTED = "TENANT_CYCLE_DETECTED",
|
|
9
9
|
TENANT_ARCHIVED = "TENANT_ARCHIVED",
|
|
10
|
+
TENANT_SUSPENDED = "TENANT_SUSPENDED",
|
|
11
|
+
TENANT_INVALID_STATE = "TENANT_INVALID_STATE",
|
|
10
12
|
TENANT_CONTEXT_NOT_FOUND = "TENANT_CONTEXT_NOT_FOUND",
|
|
11
13
|
ISOLATION_VIOLATION = "ISOLATION_VIOLATION",
|
|
12
14
|
ISOLATION_STRATEGY_UNSUPPORTED = "ISOLATION_STRATEGY_UNSUPPORTED",
|
|
@@ -19,7 +21,8 @@ export declare enum ErrorCode {
|
|
|
19
21
|
UNAUTHORIZED = "UNAUTHORIZED",
|
|
20
22
|
FORBIDDEN = "FORBIDDEN",
|
|
21
23
|
WEBHOOK_NOT_FOUND = "WEBHOOK_NOT_FOUND",
|
|
22
|
-
WEBHOOK_DELIVERY_FAILED = "WEBHOOK_DELIVERY_FAILED"
|
|
24
|
+
WEBHOOK_DELIVERY_FAILED = "WEBHOOK_DELIVERY_FAILED",
|
|
25
|
+
WEBHOOK_URL_INVALID = "WEBHOOK_URL_INVALID"
|
|
23
26
|
}
|
|
24
27
|
export declare class StratumError extends Error {
|
|
25
28
|
readonly code: ErrorCode;
|
|
@@ -49,6 +52,18 @@ export declare class TenantCycleDetectedError extends StratumError {
|
|
|
49
52
|
export declare class TenantArchivedError extends StratumError {
|
|
50
53
|
constructor(tenantId: string);
|
|
51
54
|
}
|
|
55
|
+
export declare class TenantSuspendedError extends StratumError {
|
|
56
|
+
constructor(tenantId: string);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Raised when a lifecycle transition is not allowed from a tenant's current
|
|
60
|
+
* state, for example suspending a tenant that is not active or resuming one
|
|
61
|
+
* that is already active. The state machine is strict rather than idempotent so
|
|
62
|
+
* callers see an explicit rejection instead of a silent no-op.
|
|
63
|
+
*/
|
|
64
|
+
export declare class InvalidTenantStateError extends StratumError {
|
|
65
|
+
constructor(tenantId: string, from: string, operation: string, allowedFrom: string[]);
|
|
66
|
+
}
|
|
52
67
|
export declare class TenantContextNotFoundError extends StratumError {
|
|
53
68
|
constructor();
|
|
54
69
|
}
|
|
@@ -88,6 +103,16 @@ export declare class WebhookNotFoundError extends StratumError {
|
|
|
88
103
|
export declare class WebhookDeliveryError extends StratumError {
|
|
89
104
|
constructor(webhookId: string, message: string);
|
|
90
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Raised when a webhook URL fails registration/delivery-time validation:
|
|
108
|
+
* unparseable, a non-http(s) scheme, or a target in a private/reserved/blocked
|
|
109
|
+
* range (SSRF protection). Typed so a consumer can turn a rejected URL into a
|
|
110
|
+
* 400 with `instanceof WebhookUrlValidationError` instead of matching the
|
|
111
|
+
* human-readable message.
|
|
112
|
+
*/
|
|
113
|
+
export declare class WebhookUrlValidationError extends StratumError {
|
|
114
|
+
constructor(message: string);
|
|
115
|
+
}
|
|
91
116
|
export declare class AbacPolicyNotFoundError extends StratumError {
|
|
92
117
|
constructor(policyId: string);
|
|
93
118
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,oBAAY,SAAS;IACnB,qBAAqB,0BAA0B;IAC/C,kBAAkB,uBAAuB;IACzC,qBAAqB,0BAA0B;IAC/C,gBAAgB,qBAAqB;IACrC,qBAAqB,0BAA0B;IAC/C,mBAAmB,wBAAwB;IAC3C,qBAAqB,0BAA0B;IAC/C,eAAe,oBAAoB;IACnC,wBAAwB,6BAA6B;IACrD,mBAAmB,wBAAwB;IAC3C,8BAA8B,mCAAmC;IACjE,iBAAiB,sBAAsB;IACvC,oBAAoB,yBAAyB;IAC7C,4BAA4B,iCAAiC;IAC7D,aAAa,kBAAkB;IAC/B,gBAAgB,qBAAqB;IACrC,gBAAgB,qBAAqB;IACrC,YAAY,iBAAiB;IAC7B,SAAS,cAAc;IACvB,iBAAiB,sBAAsB;IACvC,uBAAuB,4BAA4B;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/errors.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AbacPolicyLockedError = exports.InvalidAbacOperatorError = exports.AbacPolicyNotFoundError = 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 = exports.TenantNotFoundError = exports.StratumError = exports.ErrorCode = void 0;
|
|
3
|
+
exports.AbacPolicyLockedError = exports.InvalidAbacOperatorError = exports.AbacPolicyNotFoundError = exports.WebhookUrlValidationError = 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.InvalidTenantStateError = exports.TenantSuspendedError = exports.TenantArchivedError = exports.TenantCycleDetectedError = exports.TenantHasChildrenError = exports.TenantAlreadyExistsError = exports.TenantNotFoundError = exports.StratumError = exports.ErrorCode = void 0;
|
|
4
4
|
var ErrorCode;
|
|
5
5
|
(function (ErrorCode) {
|
|
6
6
|
ErrorCode["ABAC_POLICY_NOT_FOUND"] = "ABAC_POLICY_NOT_FOUND";
|
|
@@ -11,6 +11,8 @@ var ErrorCode;
|
|
|
11
11
|
ErrorCode["TENANT_HAS_CHILDREN"] = "TENANT_HAS_CHILDREN";
|
|
12
12
|
ErrorCode["TENANT_CYCLE_DETECTED"] = "TENANT_CYCLE_DETECTED";
|
|
13
13
|
ErrorCode["TENANT_ARCHIVED"] = "TENANT_ARCHIVED";
|
|
14
|
+
ErrorCode["TENANT_SUSPENDED"] = "TENANT_SUSPENDED";
|
|
15
|
+
ErrorCode["TENANT_INVALID_STATE"] = "TENANT_INVALID_STATE";
|
|
14
16
|
ErrorCode["TENANT_CONTEXT_NOT_FOUND"] = "TENANT_CONTEXT_NOT_FOUND";
|
|
15
17
|
ErrorCode["ISOLATION_VIOLATION"] = "ISOLATION_VIOLATION";
|
|
16
18
|
ErrorCode["ISOLATION_STRATEGY_UNSUPPORTED"] = "ISOLATION_STRATEGY_UNSUPPORTED";
|
|
@@ -24,6 +26,7 @@ var ErrorCode;
|
|
|
24
26
|
ErrorCode["FORBIDDEN"] = "FORBIDDEN";
|
|
25
27
|
ErrorCode["WEBHOOK_NOT_FOUND"] = "WEBHOOK_NOT_FOUND";
|
|
26
28
|
ErrorCode["WEBHOOK_DELIVERY_FAILED"] = "WEBHOOK_DELIVERY_FAILED";
|
|
29
|
+
ErrorCode["WEBHOOK_URL_INVALID"] = "WEBHOOK_URL_INVALID";
|
|
27
30
|
})(ErrorCode || (exports.ErrorCode = ErrorCode = {}));
|
|
28
31
|
class StratumError extends Error {
|
|
29
32
|
code;
|
|
@@ -82,6 +85,26 @@ class TenantArchivedError extends StratumError {
|
|
|
82
85
|
}
|
|
83
86
|
}
|
|
84
87
|
exports.TenantArchivedError = TenantArchivedError;
|
|
88
|
+
class TenantSuspendedError extends StratumError {
|
|
89
|
+
constructor(tenantId) {
|
|
90
|
+
super(ErrorCode.TENANT_SUSPENDED, `Tenant ${tenantId} is suspended`, 403, { tenant_id: tenantId });
|
|
91
|
+
this.name = "TenantSuspendedError";
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
exports.TenantSuspendedError = TenantSuspendedError;
|
|
95
|
+
/**
|
|
96
|
+
* Raised when a lifecycle transition is not allowed from a tenant's current
|
|
97
|
+
* state, for example suspending a tenant that is not active or resuming one
|
|
98
|
+
* that is already active. The state machine is strict rather than idempotent so
|
|
99
|
+
* callers see an explicit rejection instead of a silent no-op.
|
|
100
|
+
*/
|
|
101
|
+
class InvalidTenantStateError extends StratumError {
|
|
102
|
+
constructor(tenantId, from, operation, allowedFrom) {
|
|
103
|
+
super(ErrorCode.TENANT_INVALID_STATE, `Cannot ${operation} tenant ${tenantId}: current state is '${from}', expected one of [${allowedFrom.join(", ")}]`, 409, { tenant_id: tenantId, from, operation, allowed_from: allowedFrom });
|
|
104
|
+
this.name = "InvalidTenantStateError";
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
exports.InvalidTenantStateError = InvalidTenantStateError;
|
|
85
108
|
class TenantContextNotFoundError extends StratumError {
|
|
86
109
|
constructor() {
|
|
87
110
|
super(ErrorCode.TENANT_CONTEXT_NOT_FOUND, "getTenantContext() called outside of a request context. Ensure Stratum middleware is installed and the call is within a request handler.", 500);
|
|
@@ -173,6 +196,20 @@ class WebhookDeliveryError extends StratumError {
|
|
|
173
196
|
}
|
|
174
197
|
}
|
|
175
198
|
exports.WebhookDeliveryError = WebhookDeliveryError;
|
|
199
|
+
/**
|
|
200
|
+
* Raised when a webhook URL fails registration/delivery-time validation:
|
|
201
|
+
* unparseable, a non-http(s) scheme, or a target in a private/reserved/blocked
|
|
202
|
+
* range (SSRF protection). Typed so a consumer can turn a rejected URL into a
|
|
203
|
+
* 400 with `instanceof WebhookUrlValidationError` instead of matching the
|
|
204
|
+
* human-readable message.
|
|
205
|
+
*/
|
|
206
|
+
class WebhookUrlValidationError extends StratumError {
|
|
207
|
+
constructor(message) {
|
|
208
|
+
super(ErrorCode.WEBHOOK_URL_INVALID, message, 400);
|
|
209
|
+
this.name = "WebhookUrlValidationError";
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
exports.WebhookUrlValidationError = WebhookUrlValidationError;
|
|
176
213
|
class AbacPolicyNotFoundError extends StratumError {
|
|
177
214
|
constructor(policyId) {
|
|
178
215
|
super(ErrorCode.ABAC_POLICY_NOT_FOUND, `ABAC policy not found: ${policyId}`, 404);
|
package/dist/utils/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":";;;AAAA,IAAY,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"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"}
|