@xemahq/contracts 0.64.0 → 0.65.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.
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "algorithm": "sha256/len-framed-v1",
3
- "hash": "8be8bea77c32a68213ab7e441dd531b49ac87ca03a7d58f53a1d48bd0dbfd7ea",
4
- "fileCount": 590
3
+ "hash": "e024a5707a6e0907c02059556c2d9c09d7f8139a48a94948dcd94ad4d85d0da7",
4
+ "fileCount": 592
5
5
  }
@@ -0,0 +1,2 @@
1
+ export * from './lib/key-prefix';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/redis-key/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./lib/key-prefix"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/redis-key/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC"}
@@ -0,0 +1,57 @@
1
+ import { type DeploymentId } from '../../deployment';
2
+ export declare const KEY_SEGMENT_SEPARATOR = ":";
3
+ export declare const KEY_PREFIX_ROOT = "xema";
4
+ export declare enum RedisKeyScope {
5
+ Org = "org",
6
+ System = "sys",
7
+ Service = "svc"
8
+ }
9
+ export declare enum KeyPrefixSegmentKind {
10
+ DeploymentId = "deploymentId",
11
+ OrgId = "orgId",
12
+ BiomeId = "biomeId",
13
+ ServiceName = "serviceName",
14
+ NamespaceKey = "namespaceKey"
15
+ }
16
+ export declare const INVALID_KEY_PREFIX_SEGMENT = "INVALID_KEY_PREFIX_SEGMENT";
17
+ export declare class KeyPrefixSegmentError extends Error {
18
+ readonly segmentKind: KeyPrefixSegmentKind;
19
+ readonly value: string;
20
+ readonly code = "INVALID_KEY_PREFIX_SEGMENT";
21
+ constructor(segmentKind: KeyPrefixSegmentKind, value: string);
22
+ }
23
+ export declare function assertKeyPrefixSegment(kind: KeyPrefixSegmentKind, value: string): string;
24
+ export declare function assertKeyPrefixDeploymentId(value: string): DeploymentId;
25
+ export type RedisKeyPrefixIdentity = {
26
+ readonly deploymentId: string;
27
+ readonly scope: RedisKeyScope.Org;
28
+ readonly orgId: string;
29
+ readonly biomeId: string;
30
+ readonly namespaceKey: string;
31
+ } | {
32
+ readonly deploymentId: string;
33
+ readonly scope: RedisKeyScope.System;
34
+ readonly biomeId: string;
35
+ readonly namespaceKey: string;
36
+ } | {
37
+ readonly deploymentId: string;
38
+ readonly scope: RedisKeyScope.Service;
39
+ readonly serviceName: string;
40
+ readonly namespaceKey: string;
41
+ };
42
+ export declare function deriveKeyPrefix(identity: RedisKeyPrefixIdentity): string;
43
+ export declare function deploymentKeyspaceRoot(deploymentId: string): string;
44
+ export declare enum AclPatternPlane {
45
+ Key = "~",
46
+ Channel = "&"
47
+ }
48
+ export declare function deploymentAclPatterns(deploymentId: string): {
49
+ readonly keyPattern: string;
50
+ readonly channelPattern: string;
51
+ };
52
+ export declare function isWellFormedKeyPrefix(keyPrefix: string): boolean;
53
+ export declare function assertKeyPrefixOwnedBy(keyPrefix: string, deploymentId: string, subject: string): string;
54
+ export declare function aclKeyPatternForPrefix(keyPrefix: string, deploymentId: string): string;
55
+ export declare function aclChannelPatternForPrefix(keyPrefix: string, deploymentId: string): string;
56
+ export declare function keyspaceGlobForPrefix(keyPrefix: string, deploymentId: string): string;
57
+ //# sourceMappingURL=key-prefix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-prefix.d.ts","sourceRoot":"","sources":["../../../src/redis-key/lib/key-prefix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA+CxE,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAGzC,eAAO,MAAM,eAAe,SAAS,CAAC;AAMtC,oBAAY,aAAa;IAEvB,GAAG,QAAQ;IAEX,MAAM,QAAQ;IAEd,OAAO,QAAQ;CAChB;AAOD,oBAAY,oBAAoB;IAC9B,YAAY,iBAAiB;IAC7B,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;CAC9B;AAOD,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;AAOvE,qBAAa,qBAAsB,SAAQ,KAAK;IAG5C,QAAQ,CAAC,WAAW,EAAE,oBAAoB;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM;IAHxB,QAAQ,CAAC,IAAI,gCAA8B;gBAEhC,WAAW,EAAE,oBAAoB,EACjC,KAAK,EAAE,MAAM;CAWzB;AAGD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAKxF;AAgBD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAUvE;AAQD,MAAM,MAAM,sBAAsB,GAC9B;IACE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B,GACD;IACE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B,GACD;IACE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B,CAAC;AA8BN,wBAAgB,eAAe,CAAC,QAAQ,EAAE,sBAAsB,GAAG,MAAM,CAuBxE;AAMD,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEnE;AAMD,oBAAY,eAAe;IACzB,GAAG,MAAM;IACT,OAAO,MAAM;CACd;AASD,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG;IAC3D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC,CAMA;AAkBD,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEhE;AAWD,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,GACd,MAAM,CAiBR;AAGD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAEtF;AASD,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAE1F;AAQD,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAErF"}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AclPatternPlane = exports.KeyPrefixSegmentError = exports.INVALID_KEY_PREFIX_SEGMENT = exports.KeyPrefixSegmentKind = exports.RedisKeyScope = exports.KEY_PREFIX_ROOT = exports.KEY_SEGMENT_SEPARATOR = void 0;
4
+ exports.assertKeyPrefixSegment = assertKeyPrefixSegment;
5
+ exports.assertKeyPrefixDeploymentId = assertKeyPrefixDeploymentId;
6
+ exports.deriveKeyPrefix = deriveKeyPrefix;
7
+ exports.deploymentKeyspaceRoot = deploymentKeyspaceRoot;
8
+ exports.deploymentAclPatterns = deploymentAclPatterns;
9
+ exports.isWellFormedKeyPrefix = isWellFormedKeyPrefix;
10
+ exports.assertKeyPrefixOwnedBy = assertKeyPrefixOwnedBy;
11
+ exports.aclKeyPatternForPrefix = aclKeyPatternForPrefix;
12
+ exports.aclChannelPatternForPrefix = aclChannelPatternForPrefix;
13
+ exports.keyspaceGlobForPrefix = keyspaceGlobForPrefix;
14
+ const deployment_1 = require("../../deployment");
15
+ exports.KEY_SEGMENT_SEPARATOR = ':';
16
+ exports.KEY_PREFIX_ROOT = 'xema';
17
+ var RedisKeyScope;
18
+ (function (RedisKeyScope) {
19
+ RedisKeyScope["Org"] = "org";
20
+ RedisKeyScope["System"] = "sys";
21
+ RedisKeyScope["Service"] = "svc";
22
+ })(RedisKeyScope || (exports.RedisKeyScope = RedisKeyScope = {}));
23
+ var KeyPrefixSegmentKind;
24
+ (function (KeyPrefixSegmentKind) {
25
+ KeyPrefixSegmentKind["DeploymentId"] = "deploymentId";
26
+ KeyPrefixSegmentKind["OrgId"] = "orgId";
27
+ KeyPrefixSegmentKind["BiomeId"] = "biomeId";
28
+ KeyPrefixSegmentKind["ServiceName"] = "serviceName";
29
+ KeyPrefixSegmentKind["NamespaceKey"] = "namespaceKey";
30
+ })(KeyPrefixSegmentKind || (exports.KeyPrefixSegmentKind = KeyPrefixSegmentKind = {}));
31
+ const PREFIX_SEGMENT_SOURCE = '[A-Za-z0-9][A-Za-z0-9_-]{0,63}';
32
+ const PREFIX_SEGMENT_PATTERN = new RegExp(`^${PREFIX_SEGMENT_SOURCE}$`);
33
+ exports.INVALID_KEY_PREFIX_SEGMENT = 'INVALID_KEY_PREFIX_SEGMENT';
34
+ class KeyPrefixSegmentError extends Error {
35
+ segmentKind;
36
+ value;
37
+ code = exports.INVALID_KEY_PREFIX_SEGMENT;
38
+ constructor(segmentKind, value) {
39
+ super(`Key-prefix ${segmentKind} ${JSON.stringify(value)} is not a legal key-prefix segment. ` +
40
+ 'A segment must start with a letter or digit and contain only letters, ' +
41
+ `digits, '_' and '-' (1-64 characters). It is spliced into a Redis ACL glob ` +
42
+ `pattern, so '${exports.KEY_SEGMENT_SEPARATOR}' and the glob metacharacters ` +
43
+ "'*', '?', '[', ']', '\\' are refused rather than escaped.");
44
+ this.segmentKind = segmentKind;
45
+ this.value = value;
46
+ this.name = 'KeyPrefixSegmentError';
47
+ }
48
+ }
49
+ exports.KeyPrefixSegmentError = KeyPrefixSegmentError;
50
+ function assertKeyPrefixSegment(kind, value) {
51
+ if (typeof value !== 'string' || !PREFIX_SEGMENT_PATTERN.test(value)) {
52
+ throw new KeyPrefixSegmentError(kind, String(value));
53
+ }
54
+ return value;
55
+ }
56
+ const RESERVED_DEPLOYMENT_IDS = new Set(Object.values(RedisKeyScope));
57
+ function assertKeyPrefixDeploymentId(value) {
58
+ const id = (0, deployment_1.parseDeploymentId)(value);
59
+ if (RESERVED_DEPLOYMENT_IDS.has(value)) {
60
+ throw new Error(`Deployment id ${JSON.stringify(value)} is a Redis key scope literal. It would make ` +
61
+ "this deployment's prefixes byte-identical to legacy `xema:<scope>:…` prefixes " +
62
+ 'another deployment on the same instance may still hold credentials over.');
63
+ }
64
+ return id;
65
+ }
66
+ const PREFIX_SHAPE_BY_SCOPE = Object.freeze({
67
+ [RedisKeyScope.Org]: Object.freeze([
68
+ KeyPrefixSegmentKind.OrgId,
69
+ KeyPrefixSegmentKind.BiomeId,
70
+ KeyPrefixSegmentKind.NamespaceKey,
71
+ ]),
72
+ [RedisKeyScope.System]: Object.freeze([
73
+ KeyPrefixSegmentKind.BiomeId,
74
+ KeyPrefixSegmentKind.NamespaceKey,
75
+ ]),
76
+ [RedisKeyScope.Service]: Object.freeze([
77
+ KeyPrefixSegmentKind.ServiceName,
78
+ KeyPrefixSegmentKind.NamespaceKey,
79
+ ]),
80
+ });
81
+ function deriveKeyPrefix(identity) {
82
+ const shape = PREFIX_SHAPE_BY_SCOPE[identity.scope];
83
+ if (shape === undefined) {
84
+ throw new Error(`Redis key scope ${JSON.stringify(identity.scope)} is not a RedisKeyScope.`);
85
+ }
86
+ const fields = identity;
87
+ const segments = shape.map((kind) => {
88
+ const value = fields[kind];
89
+ if (typeof value !== 'string') {
90
+ throw new Error(`Key-prefix identity for scope '${identity.scope}' is missing segment '${kind}'. ` +
91
+ 'Refusing to derive a prefix from a hole.');
92
+ }
93
+ return assertKeyPrefixSegment(kind, value);
94
+ });
95
+ const deployment = assertKeyPrefixDeploymentId(identity.deploymentId);
96
+ return ([exports.KEY_PREFIX_ROOT, deployment, identity.scope, ...segments].join(exports.KEY_SEGMENT_SEPARATOR) +
97
+ exports.KEY_SEGMENT_SEPARATOR);
98
+ }
99
+ function deploymentKeyspaceRoot(deploymentId) {
100
+ return `${exports.KEY_PREFIX_ROOT}${exports.KEY_SEGMENT_SEPARATOR}${assertKeyPrefixDeploymentId(deploymentId)}${exports.KEY_SEGMENT_SEPARATOR}`;
101
+ }
102
+ var AclPatternPlane;
103
+ (function (AclPatternPlane) {
104
+ AclPatternPlane["Key"] = "~";
105
+ AclPatternPlane["Channel"] = "&";
106
+ })(AclPatternPlane || (exports.AclPatternPlane = AclPatternPlane = {}));
107
+ function deploymentAclPatterns(deploymentId) {
108
+ const root = deploymentKeyspaceRoot(deploymentId);
109
+ return {
110
+ keyPattern: `${AclPatternPlane.Key}${root}*`,
111
+ channelPattern: `${AclPatternPlane.Channel}${root}*`,
112
+ };
113
+ }
114
+ const WELL_FORMED_KEY_PREFIX = new RegExp(`^${exports.KEY_PREFIX_ROOT}${exports.KEY_SEGMENT_SEPARATOR}${PREFIX_SEGMENT_SOURCE}${exports.KEY_SEGMENT_SEPARATOR}(?:` +
115
+ Object.entries(PREFIX_SHAPE_BY_SCOPE)
116
+ .map(([scope, shape]) => [scope, ...shape.map(() => PREFIX_SEGMENT_SOURCE)].join(exports.KEY_SEGMENT_SEPARATOR))
117
+ .join('|') +
118
+ `)${exports.KEY_SEGMENT_SEPARATOR}$`);
119
+ function isWellFormedKeyPrefix(keyPrefix) {
120
+ return typeof keyPrefix === 'string' && WELL_FORMED_KEY_PREFIX.test(keyPrefix);
121
+ }
122
+ function assertKeyPrefixOwnedBy(keyPrefix, deploymentId, subject) {
123
+ if (!isWellFormedKeyPrefix(keyPrefix)) {
124
+ throw new Error(`Key prefix ${JSON.stringify(keyPrefix)} is not a well-formed Xema key prefix. ` +
125
+ `Refusing to build ${subject} from it — a malformed prefix widens the set of names ` +
126
+ 'the glob reaches, which on the ACL side is a cross-tenant grant and on the erasure ' +
127
+ 'side is a cross-tenant DELETE.');
128
+ }
129
+ if (!keyPrefix.startsWith(deploymentKeyspaceRoot(deploymentId))) {
130
+ throw new Error(`Key prefix ${JSON.stringify(keyPrefix)} does not belong to deployment ` +
131
+ `${JSON.stringify(deploymentId)}. Refusing to build ${subject} from it — on a shared ` +
132
+ "Redis instance that is a cross-deployment grant or DELETE over another deployment's keys.");
133
+ }
134
+ return keyPrefix;
135
+ }
136
+ function aclKeyPatternForPrefix(keyPrefix, deploymentId) {
137
+ return `${AclPatternPlane.Key}${assertKeyPrefixOwnedBy(keyPrefix, deploymentId, 'an ACL key pattern')}*`;
138
+ }
139
+ function aclChannelPatternForPrefix(keyPrefix, deploymentId) {
140
+ return `${AclPatternPlane.Channel}${assertKeyPrefixOwnedBy(keyPrefix, deploymentId, 'an ACL channel pattern')}*`;
141
+ }
142
+ function keyspaceGlobForPrefix(keyPrefix, deploymentId) {
143
+ return `${assertKeyPrefixOwnedBy(keyPrefix, deploymentId, 'a keyspace erasure glob')}*`;
144
+ }
145
+ //# sourceMappingURL=key-prefix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-prefix.js","sourceRoot":"","sources":["../../../src/redis-key/lib/key-prefix.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xemahq/contracts",
3
- "version": "0.64.0",
3
+ "version": "0.65.0",
4
4
  "description": "Consolidated Xema OS kernel wire contracts — pure types + zod schemas for the kernel protocol surfaces. One package, one npm scope, wildcard per-surface subpath exports. No framework deps; the one runtime dependency beside zod is the OpenFGA syntax transformer the authorization-module composer runs.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Neuralchowder Inc. <developer@xema.dev> (https://xema.dev)",