@stratum-hq/core 0.2.3 → 0.3.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Christian Crank
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,62 @@
1
+ # @stratum-hq/core
2
+
3
+ Shared foundation for all [Stratum](https://github.com/stratum-hq/Stratum) packages — TypeScript types, Zod validation schemas, error classes, utility functions, and constants. Every other Stratum package depends on it.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @stratum-hq/core
9
+ ```
10
+
11
+ You usually get this transitively as a dependency of `@stratum-hq/lib` or `@stratum-hq/sdk` rather than installing it directly.
12
+
13
+ ## Usage
14
+
15
+ ```typescript
16
+ import {
17
+ IsolationStrategy,
18
+ PermissionMode,
19
+ SlugSchema,
20
+ buildAncestryPath,
21
+ TenantNotFoundError,
22
+ MAX_TREE_DEPTH,
23
+ type TenantNode,
24
+ type TenantContext,
25
+ } from "@stratum-hq/core";
26
+
27
+ // Enums
28
+ IsolationStrategy.SHARED_RLS; // "SHARED_RLS"
29
+ PermissionMode.LOCKED; // "LOCKED"
30
+
31
+ // Zod schemas — validate untrusted input
32
+ SlugSchema.parse("acme_corp"); // passes
33
+ SlugSchema.parse("INVALID"); // throws ZodError
34
+
35
+ // Ancestry helpers
36
+ buildAncestryPath("/parent-uuid", "child-uuid"); // "/parent-uuid/child-uuid"
37
+
38
+ // Typed errors extend StratumError → Error
39
+ try {
40
+ /* ... */
41
+ } catch (err) {
42
+ if (err instanceof TenantNotFoundError) { /* ... */ }
43
+ }
44
+ ```
45
+
46
+ ## What's Exported
47
+
48
+ - **Types** — `TenantNode`, `TenantContext`, `ResolvedConfigEntry`, `ResolvedPermission`, `CreateTenantInput`, `SetConfigInput`, `AuditEntry`, `ConsentRecord`, `Region`, `AbacPolicy`, and more.
49
+ - **Enums** — `IsolationStrategy` (`SHARED_RLS`, `SCHEMA_PER_TENANT`, `DB_PER_TENANT`), `PermissionMode` (`LOCKED`, `INHERITED`, `DELEGATED`), `RevocationMode` (`CASCADE`, `SOFT`, `PERMANENT`), `TenantStatus`.
50
+ - **Zod schemas** — `SlugSchema`, `UUIDSchema`, `PaginationSchema`, `CreateTenantInputSchema`, `SetConfigInputSchema`, `CreatePermissionInputSchema`, `AuditLogQuerySchema`, and their input types.
51
+ - **Ancestry utilities** — `buildAncestryPath`, `parseAncestryPath`, `getDepth`, `isAncestorOf`, `isDescendantOf`, `getAncestorIds`.
52
+ - **Errors** — `StratumError` plus `TenantNotFoundError`, `ConfigLockedError`, `PermissionRevocationDeniedError`, `IsolationViolationError`, `UnauthorizedError`, `ForbiddenError`, and others.
53
+ - **Constants** — `MAX_TREE_DEPTH` (20), `MAX_SLUG_LENGTH` (63), `DEFAULT_CACHE_TTL_MS`, `DEFAULT_PAGE_SIZE`, `MAX_PAGE_SIZE`, `API_KEY_PREFIX`, `TENANT_HEADER`.
54
+
55
+ ## Links
56
+
57
+ - Documentation: https://docs.stratum-hq.org/packages/core/
58
+ - GitHub: https://github.com/stratum-hq/Stratum
59
+
60
+ ## License
61
+
62
+ MIT © Christian Crank
@@ -87,13 +87,35 @@ const validation_js_1 = require("../utils/validation.js");
87
87
  }
88
88
  });
89
89
  });
90
+ (0, vitest_1.describe)("SLUG_REGEX", () => {
91
+ (0, vitest_1.it)("matches valid slugs", () => {
92
+ (0, vitest_1.expect)(validation_js_1.SLUG_REGEX.test("acme")).toBe(true);
93
+ (0, vitest_1.expect)(validation_js_1.SLUG_REGEX.test("a1_test")).toBe(true);
94
+ });
95
+ (0, vitest_1.it)("rejects invalid slugs", () => {
96
+ (0, vitest_1.expect)(validation_js_1.SLUG_REGEX.test("UPPER")).toBe(false);
97
+ (0, vitest_1.expect)(validation_js_1.SLUG_REGEX.test("1start")).toBe(false);
98
+ (0, vitest_1.expect)(validation_js_1.SLUG_REGEX.test("")).toBe(false);
99
+ });
100
+ });
90
101
  (0, vitest_1.describe)("validateSlug helper", () => {
102
+ (0, vitest_1.it)("returns the slug for valid input", () => {
103
+ (0, vitest_1.expect)((0, validation_js_1.validateSlug)("acme")).toBe("acme");
104
+ (0, vitest_1.expect)((0, validation_js_1.validateSlug)("tenant_123")).toBe("tenant_123");
105
+ });
106
+ (0, vitest_1.it)("throws for invalid slug", () => {
107
+ (0, vitest_1.expect)(() => (0, validation_js_1.validateSlug)("INVALID")).toThrow("Invalid tenant slug");
108
+ (0, vitest_1.expect)(() => (0, validation_js_1.validateSlug)("has-hyphens")).toThrow("Invalid tenant slug");
109
+ (0, vitest_1.expect)(() => (0, validation_js_1.validateSlug)("")).toThrow("Invalid tenant slug");
110
+ });
111
+ });
112
+ (0, vitest_1.describe)("isValidSlug helper", () => {
91
113
  (0, vitest_1.it)("returns true for valid slug", () => {
92
- (0, vitest_1.expect)((0, validation_js_1.validateSlug)("acme")).toBe(true);
114
+ (0, vitest_1.expect)((0, validation_js_1.isValidSlug)("acme")).toBe(true);
93
115
  });
94
116
  (0, vitest_1.it)("returns false for invalid slug", () => {
95
- (0, vitest_1.expect)((0, validation_js_1.validateSlug)("INVALID")).toBe(false);
96
- (0, vitest_1.expect)((0, validation_js_1.validateSlug)("has-hyphens")).toBe(false);
117
+ (0, vitest_1.expect)((0, validation_js_1.isValidSlug)("INVALID")).toBe(false);
118
+ (0, vitest_1.expect)((0, validation_js_1.isValidSlug)("has-hyphens")).toBe(false);
97
119
  });
98
120
  });
99
121
  });
@@ -1 +1 @@
1
- {"version":3,"file":"validation.test.js","sourceRoot":"","sources":["../../src/__tests__/validation.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.test.js","sourceRoot":"","sources":["../../src/__tests__/validation.test.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -8,7 +8,7 @@ export { PermissionMode, RevocationMode, PermissionPolicySchema, CreatePermissio
8
8
  export { ConfigEntrySchema, SetConfigInputSchema, type ConfigEntry, type SetConfigInput, type ResolvedConfigEntry, type ResolvedConfig, type BatchSetConfigKeyResult, type BatchSetConfigResult, type ConfigDiffEntry, type ConfigDiffItem, type ConfigDiffTenantInfo, type ConfigDiff, type DriftStatus, type DriftDetail, type DriftResult, type BatchDriftResult, } from "./types/config.js";
9
9
  export { SUPPORTED_ISOLATION_STRATEGIES_V1, isSupportedIsolationStrategy, } from "./types/isolation.js";
10
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";
11
+ export { SLUG_REGEX, SlugSchema, UUIDSchema, PaginationSchema, validateSlug, isValidSlug, type PaginationInput, type PaginatedResult, } from "./utils/validation.js";
12
12
  export { CreateAbacPolicyInputSchema, AbacEvaluationRequestSchema, type AbacOperator, type AbacCondition, type AbacPolicy, type CreateAbacPolicyInput, type AbacEvaluationRequest, type AbacEvaluationResult, type ResolvedAbacPolicy, } from "./types/abac.js";
13
13
  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";
14
14
  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";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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.ErrorCode = exports.AbacEvaluationRequestSchema = exports.CreateAbacPolicyInputSchema = 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.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 = void 0;
3
+ exports.CreateAbacPolicyInputSchema = exports.isValidSlug = exports.validateSlug = exports.PaginationSchema = exports.UUIDSchema = exports.SlugSchema = 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.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.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 = 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; } });
@@ -63,10 +63,12 @@ Object.defineProperty(exports, "appendToPath", { enumerable: true, get: function
63
63
  Object.defineProperty(exports, "getAncestorIds", { enumerable: true, get: function () { return ancestry_js_1.getAncestorIds; } });
64
64
  Object.defineProperty(exports, "getSelfId", { enumerable: true, get: function () { return ancestry_js_1.getSelfId; } });
65
65
  var validation_js_1 = require("./utils/validation.js");
66
+ Object.defineProperty(exports, "SLUG_REGEX", { enumerable: true, get: function () { return validation_js_1.SLUG_REGEX; } });
66
67
  Object.defineProperty(exports, "SlugSchema", { enumerable: true, get: function () { return validation_js_1.SlugSchema; } });
67
68
  Object.defineProperty(exports, "UUIDSchema", { enumerable: true, get: function () { return validation_js_1.UUIDSchema; } });
68
69
  Object.defineProperty(exports, "PaginationSchema", { enumerable: true, get: function () { return validation_js_1.PaginationSchema; } });
69
70
  Object.defineProperty(exports, "validateSlug", { enumerable: true, get: function () { return validation_js_1.validateSlug; } });
71
+ Object.defineProperty(exports, "isValidSlug", { enumerable: true, get: function () { return validation_js_1.isValidSlug; } });
70
72
  // ABAC types
71
73
  var abac_js_1 = require("./types/abac.js");
72
74
  Object.defineProperty(exports, "CreateAbacPolicyInputSchema", { enumerable: true, get: function () { return abac_js_1.CreateAbacPolicyInputSchema; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import { z } from "zod";
2
+ /** Canonical slug regex: starts with lowercase letter, only lowercase alphanumeric + underscore, max 63 chars. */
3
+ export declare const SLUG_REGEX: RegExp;
2
4
  export declare const SlugSchema: z.ZodString;
3
5
  export declare const UUIDSchema: z.ZodString;
4
6
  export declare const PaginationSchema: z.ZodObject<{
@@ -17,5 +19,11 @@ export interface PaginatedResult<T> {
17
19
  next_cursor: string | null;
18
20
  has_more: boolean;
19
21
  }
20
- export declare function validateSlug(slug: string): boolean;
22
+ /**
23
+ * Validates a tenant slug. Returns the slug if valid, throws if invalid.
24
+ * Use `isValidSlug()` for a non-throwing boolean check.
25
+ */
26
+ export declare function validateSlug(slug: string): string;
27
+ /** Returns true if the slug matches the canonical slug pattern. */
28
+ export declare function isValidSlug(slug: string): boolean;
21
29
  //# sourceMappingURL=validation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,UAAU,aAKnB,CAAC;AAEL,eAAO,MAAM,UAAU,aAAoB,CAAC;AAE5C,eAAO,MAAM,gBAAgB;;;;;;;;;EAG3B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE/D,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,kHAAkH;AAClH,eAAO,MAAM,UAAU,QAA2B,CAAC;AAEnD,eAAO,MAAM,UAAU,aAKnB,CAAC;AAEL,eAAO,MAAM,UAAU,aAAoB,CAAC;AAE5C,eAAO,MAAM,gBAAgB;;;;;;;;;EAG3B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE/D,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOjD;AAED,mEAAmE;AACnE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD"}
@@ -1,11 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PaginationSchema = exports.UUIDSchema = exports.SlugSchema = void 0;
3
+ exports.PaginationSchema = exports.UUIDSchema = exports.SlugSchema = exports.SLUG_REGEX = void 0;
4
4
  exports.validateSlug = validateSlug;
5
+ exports.isValidSlug = isValidSlug;
5
6
  const zod_1 = require("zod");
7
+ /** Canonical slug regex: starts with lowercase letter, only lowercase alphanumeric + underscore, max 63 chars. */
8
+ exports.SLUG_REGEX = /^[a-z][a-z0-9_]{0,62}$/;
6
9
  exports.SlugSchema = zod_1.z
7
10
  .string()
8
- .regex(/^[a-z][a-z0-9_]{0,62}$/, {
11
+ .regex(exports.SLUG_REGEX, {
9
12
  message: "Slug must start with a lowercase letter, contain only lowercase letters, numbers, and underscores, and be at most 63 characters",
10
13
  });
11
14
  exports.UUIDSchema = zod_1.z.string().uuid();
@@ -13,7 +16,18 @@ exports.PaginationSchema = zod_1.z.object({
13
16
  cursor: zod_1.z.string().uuid().optional(),
14
17
  limit: zod_1.z.coerce.number().int().min(1).max(100).default(50),
15
18
  });
19
+ /**
20
+ * Validates a tenant slug. Returns the slug if valid, throws if invalid.
21
+ * Use `isValidSlug()` for a non-throwing boolean check.
22
+ */
16
23
  function validateSlug(slug) {
17
- return exports.SlugSchema.safeParse(slug).success;
24
+ if (!exports.SLUG_REGEX.test(slug)) {
25
+ throw new Error(`Invalid tenant slug: "${slug}". Slugs must start with a lowercase letter and contain only lowercase alphanumeric characters and underscores (max 63 chars).`);
26
+ }
27
+ return slug;
28
+ }
29
+ /** Returns true if the slug matches the canonical slug pattern. */
30
+ function isValidSlug(slug) {
31
+ return exports.SLUG_REGEX.test(slug);
18
32
  }
19
33
  //# sourceMappingURL=validation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":";;;AAwBA,oCAEC;AA1BD,6BAAwB;AAEX,QAAA,UAAU,GAAG,OAAC;KACxB,MAAM,EAAE;KACR,KAAK,CAAC,wBAAwB,EAAE;IAC/B,OAAO,EACL,iIAAiI;CACpI,CAAC,CAAC;AAEQ,QAAA,UAAU,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;AAE/B,QAAA,gBAAgB,GAAG,OAAC,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,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;CAC3D,CAAC,CAAC;AAUH,SAAgB,YAAY,CAAC,IAAY;IACvC,OAAO,kBAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":";;;AA+BA,oCAOC;AAGD,kCAEC;AA3CD,6BAAwB;AAExB,kHAAkH;AACrG,QAAA,UAAU,GAAG,wBAAwB,CAAC;AAEtC,QAAA,UAAU,GAAG,OAAC;KACxB,MAAM,EAAE;KACR,KAAK,CAAC,kBAAU,EAAE;IACjB,OAAO,EACL,iIAAiI;CACpI,CAAC,CAAC;AAEQ,QAAA,UAAU,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;AAE/B,QAAA,gBAAgB,GAAG,OAAC,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,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;CAC3D,CAAC,CAAC;AAUH;;;GAGG;AACH,SAAgB,YAAY,CAAC,IAAY;IACvC,IAAI,CAAC,kBAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,yBAAyB,IAAI,gIAAgI,CAC9J,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mEAAmE;AACnE,SAAgB,WAAW,CAAC,IAAY;IACtC,OAAO,kBAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,17 @@
1
1
  {
2
2
  "name": "@stratum-hq/core",
3
- "version": "0.2.3",
3
+ "version": "0.3.0",
4
4
  "description": "Stratum shared types, utilities, and validation schemas",
5
+ "keywords": [
6
+ "multi-tenancy",
7
+ "multi-tenant",
8
+ "saas",
9
+ "tenant",
10
+ "typescript",
11
+ "validation",
12
+ "schemas",
13
+ "stratum"
14
+ ],
5
15
  "main": "./dist/index.js",
6
16
  "types": "./dist/index.d.ts",
7
17
  "exports": {
@@ -31,5 +41,10 @@
31
41
  "devDependencies": {
32
42
  "typescript": "^5.4.0",
33
43
  "vitest": "^1.6.0"
44
+ },
45
+ "repository": {
46
+ "type": "git",
47
+ "url": "https://github.com/stratum-hq/Stratum.git",
48
+ "directory": "packages/core"
34
49
  }
35
50
  }