@substrat-run/contracts 0.146.0 → 0.147.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/control-plane.d.ts +36 -0
- package/dist/control-plane.d.ts.map +1 -1
- package/dist/control-plane.js +29 -0
- package/dist/control-plane.js.map +1 -1
- package/dist/deploy.d.ts +241 -0
- package/dist/deploy.d.ts.map +1 -1
- package/dist/deploy.js +249 -1
- package/dist/deploy.js.map +1 -1
- package/dist/errors.d.ts +49 -14
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +82 -7
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/introspection.d.ts +29 -1
- package/dist/introspection.d.ts.map +1 -1
- package/dist/introspection.js +11 -0
- package/dist/introspection.js.map +1 -1
- package/dist/routing.d.ts +4 -0
- package/dist/routing.d.ts.map +1 -1
- package/dist/routing.js +7 -0
- package/dist/routing.js.map +1 -1
- package/dist/scope-store-mac.d.ts +24 -0
- package/dist/scope-store-mac.d.ts.map +1 -0
- package/dist/scope-store-mac.js +61 -0
- package/dist/scope-store-mac.js.map +1 -0
- package/dist/scope-store-transport.d.ts +47 -0
- package/dist/scope-store-transport.d.ts.map +1 -0
- package/dist/scope-store-transport.js +58 -0
- package/dist/scope-store-transport.js.map +1 -0
- package/dist/script-names.d.ts +25 -1
- package/dist/script-names.d.ts.map +1 -1
- package/dist/script-names.js +37 -1
- package/dist/script-names.js.map +1 -1
- package/dist/sql-in-list.d.ts +39 -0
- package/dist/sql-in-list.d.ts.map +1 -0
- package/dist/sql-in-list.js +10 -0
- package/dist/sql-in-list.js.map +1 -0
- package/dist/tenancy.d.ts +1 -1
- package/dist/tenancy.d.ts.map +1 -1
- package/dist/tenancy.js +10 -1
- package/dist/tenancy.js.map +1 -1
- package/package.json +5 -1
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { scopeId } from './ids.js';
|
|
3
|
+
import { RESERVED_STORE_OPERATIONS, storeOperationName } from './deploy.js';
|
|
4
|
+
/**
|
|
5
|
+
* The hosted transport for a scope-store call (#2207).
|
|
6
|
+
*
|
|
7
|
+
* A vertical fetches `store.substrat.internal`. It names a binding, an operation
|
|
8
|
+
* and an input. It does not name a script, an object or a key: the egress worker
|
|
9
|
+
* hands the call to the router with the dispatch parameters the router set, and
|
|
10
|
+
* the router is what signs the object name and addresses the store script.
|
|
11
|
+
* `*.substrat.internal` is in no DNS zone, so a call from inside a Durable Object
|
|
12
|
+
* — which an outbound worker does not see — fails instead of leaving the isolate.
|
|
13
|
+
*/
|
|
14
|
+
/** The one reserved host a scope-store call is addressed to. */
|
|
15
|
+
export const STORE_CALL_HOST = 'store.substrat.internal';
|
|
16
|
+
/** The address a platform-transport `getScopeStore` fetches. The caller does not build it. */
|
|
17
|
+
export const STORE_CALL_URL = `https://${STORE_CALL_HOST}/invoke`;
|
|
18
|
+
/** An exact host match. A suffix would admit a name the platform does not own. */
|
|
19
|
+
export const isStoreCallHost = (hostname) => hostname.toLowerCase() === STORE_CALL_HOST;
|
|
20
|
+
/**
|
|
21
|
+
* What the vertical puts in the body. The scope it may name is the one the
|
|
22
|
+
* router dispatched it for; the router refuses any other. Strict, so a body
|
|
23
|
+
* that tries to carry a signature or a script name is not a request.
|
|
24
|
+
*/
|
|
25
|
+
export const storeCallRequest = z
|
|
26
|
+
.object({
|
|
27
|
+
scopeId,
|
|
28
|
+
binding: z.string().regex(/^[A-Z][A-Z0-9_]*$/),
|
|
29
|
+
// The same fixed-label rule a log line and a kind's catalog hold (#2245).
|
|
30
|
+
operation: storeOperationName,
|
|
31
|
+
input: z.unknown().optional(),
|
|
32
|
+
})
|
|
33
|
+
.strict();
|
|
34
|
+
/** Who the signature was made for. A reserved operation accepts only the platform's. */
|
|
35
|
+
export const storeCallAudience = z.enum(['caller', 'platform']);
|
|
36
|
+
const reserved = new Set(RESERVED_STORE_OPERATIONS);
|
|
37
|
+
/** A `substrat.*` operation is the platform's. A caller signature does not open it. */
|
|
38
|
+
export function storeAudienceAllows(operation, audience) {
|
|
39
|
+
if (reserved.has(operation))
|
|
40
|
+
return audience === 'platform';
|
|
41
|
+
return audience === 'caller';
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The name an object keeps.
|
|
45
|
+
*
|
|
46
|
+
* The first accepted name is stored. A later call whose name differs is not
|
|
47
|
+
* this object's call, even when the signature over that other name is valid.
|
|
48
|
+
* That is the check that stops a signature for one tenant's object being
|
|
49
|
+
* presented to another's.
|
|
50
|
+
*/
|
|
51
|
+
export function rememberStoreObjectName(remembered, presented) {
|
|
52
|
+
if (presented.length === 0)
|
|
53
|
+
return undefined;
|
|
54
|
+
if (remembered === null)
|
|
55
|
+
return presented;
|
|
56
|
+
return remembered === presented ? remembered : undefined;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=scope-store-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-store-transport.js","sourceRoot":"","sources":["../src/scope-store-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE5E;;;;;;;;;GASG;AAEH,gEAAgE;AAChE,MAAM,CAAC,MAAM,eAAe,GAAG,yBAAyB,CAAC;AAEzD,8FAA8F;AAC9F,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,eAAe,SAAS,CAAC;AAElE,kFAAkF;AAClF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAW,EAAE,CAC3D,QAAQ,CAAC,WAAW,EAAE,KAAK,eAAe,CAAC;AAE7C;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,OAAO;IACP,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC;IAC9C,0EAA0E;IAC1E,SAAS,EAAE,kBAAkB;IAC7B,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC;KACD,MAAM,EAAE,CAAC;AAGZ,wFAAwF;AACxF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;AAGhE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS,yBAAyB,CAAC,CAAC;AAE5D,uFAAuF;AACvF,MAAM,UAAU,mBAAmB,CAAC,SAAiB,EAAE,QAA2B;IAChF,IAAI,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;QAAE,OAAO,QAAQ,KAAK,UAAU,CAAC;IAC5D,OAAO,QAAQ,KAAK,QAAQ,CAAC;AAC/B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CAAC,UAAyB,EAAE,SAAiB;IAClF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7C,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC1C,OAAO,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3D,CAAC"}
|
package/dist/script-names.d.ts
CHANGED
|
@@ -22,10 +22,34 @@ export declare const PLATFORM_SCRIPT_NAMES: ReadonlySet<string>;
|
|
|
22
22
|
* is exactly this; a per-version script is this plus `-<ulid>`.
|
|
23
23
|
*/
|
|
24
24
|
export declare function verticalScriptStem(slug: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* The name space scope-store scripts are uploaded into (RFC scope-stores §10.7, L20). Store
|
|
27
|
+
* scripts share the dispatch namespace with every vertical's scripts, so no vertical script may
|
|
28
|
+
* be named inside it: {@link platformScriptCollision} refuses a slug whose stem is the bare
|
|
29
|
+
* prefix or starts with it, which covers its stable, jurisdictional and per-version scripts.
|
|
30
|
+
*/
|
|
31
|
+
export declare const SCOPE_STORE_SCRIPT_PREFIX = "substrat-store-";
|
|
32
|
+
/** A store kind id (L20). No `-` and no `_`, which is what keeps {@link scopeStoreScriptName} injective. */
|
|
33
|
+
export declare const STORE_KIND_ID: RegExp;
|
|
34
|
+
/**
|
|
35
|
+
* The script a scope-store kind is uploaded as, for one vertical (#2210).
|
|
36
|
+
*
|
|
37
|
+
* Stable across releases and across the vertical's own pushes: a new release of the kind
|
|
38
|
+
* replaces this script in place, and the objects stay where `scopeStoreObjectName` addresses
|
|
39
|
+
* them, since that carries no version either.
|
|
40
|
+
*
|
|
41
|
+
* Injective over (kind, vertical) (L20): `substrat-store-<kind>-<vertical>`, with the `/` of a
|
|
42
|
+
* `<tenant>/<name>` slug written as `_`. A slug never contains `_` and a kind never contains `-`,
|
|
43
|
+
* so the kind ends at the first `-` after the prefix and the rest maps back to exactly one slug.
|
|
44
|
+
* A vertical's own stem flattens `/` to `-`, which is not injective; this name does not reuse it.
|
|
45
|
+
* Anything outside those two grammars is refused rather than flattened.
|
|
46
|
+
*/
|
|
47
|
+
export declare function scopeStoreScriptName(vertical: string, kind: string): string;
|
|
25
48
|
/**
|
|
26
49
|
* The platform script name a vertical with this slug would deploy under, or `null`. Checks the
|
|
27
50
|
* stable script and its jurisdictional variants. A per-version script ends in a 26-character
|
|
28
|
-
* ULID, which no platform name does.
|
|
51
|
+
* ULID, which no platform name does. A stem inside the scope-store name space is returned as
|
|
52
|
+
* itself: every script the slug could deploy under would fall in it.
|
|
29
53
|
*/
|
|
30
54
|
export declare function platformScriptCollision(slug: string): string | null;
|
|
31
55
|
/** The refusal a registration or a deploy gives for {@link platformScriptCollision}. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"script-names.d.ts","sourceRoot":"","sources":["../src/script-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,iFAAiF;AACjF,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAgD,CAAC;AAElG,uEAAuE;AACvE,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAapD,CAAC;AAKH;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED
|
|
1
|
+
{"version":3,"file":"script-names.d.ts","sourceRoot":"","sources":["../src/script-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,iFAAiF;AACjF,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAgD,CAAC;AAElG,uEAAuE;AACvE,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAapD,CAAC;AAKH;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,oBAAoB,CAAC;AAE3D,4GAA4G;AAC5G,eAAO,MAAM,aAAa,QAAgB,CAAC;AAK3C;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ3E;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOnE;AAED,wFAAwF;AACxF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7E"}
|
package/dist/script-names.js
CHANGED
|
@@ -39,13 +39,49 @@ const JURISDICTION_SUFFIXES = ['eu', 'us'];
|
|
|
39
39
|
export function verticalScriptStem(slug) {
|
|
40
40
|
return slug.toLowerCase().replace(/[^a-z0-9_-]+/g, '-').replace(/^-+|-+$/g, '');
|
|
41
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* The name space scope-store scripts are uploaded into (RFC scope-stores §10.7, L20). Store
|
|
44
|
+
* scripts share the dispatch namespace with every vertical's scripts, so no vertical script may
|
|
45
|
+
* be named inside it: {@link platformScriptCollision} refuses a slug whose stem is the bare
|
|
46
|
+
* prefix or starts with it, which covers its stable, jurisdictional and per-version scripts.
|
|
47
|
+
*/
|
|
48
|
+
export const SCOPE_STORE_SCRIPT_PREFIX = 'substrat-store-';
|
|
49
|
+
/** A store kind id (L20). No `-` and no `_`, which is what keeps {@link scopeStoreScriptName} injective. */
|
|
50
|
+
export const STORE_KIND_ID = /^[a-z0-9]+$/;
|
|
51
|
+
/** The registry id grammar `verticalSlug` parses (ids.ts), repeated so this file imports nothing. */
|
|
52
|
+
const VERTICAL_SLUG = /^([a-z0-9](?:[a-z0-9-]*[a-z0-9])?\/)?[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;
|
|
53
|
+
/**
|
|
54
|
+
* The script a scope-store kind is uploaded as, for one vertical (#2210).
|
|
55
|
+
*
|
|
56
|
+
* Stable across releases and across the vertical's own pushes: a new release of the kind
|
|
57
|
+
* replaces this script in place, and the objects stay where `scopeStoreObjectName` addresses
|
|
58
|
+
* them, since that carries no version either.
|
|
59
|
+
*
|
|
60
|
+
* Injective over (kind, vertical) (L20): `substrat-store-<kind>-<vertical>`, with the `/` of a
|
|
61
|
+
* `<tenant>/<name>` slug written as `_`. A slug never contains `_` and a kind never contains `-`,
|
|
62
|
+
* so the kind ends at the first `-` after the prefix and the rest maps back to exactly one slug.
|
|
63
|
+
* A vertical's own stem flattens `/` to `-`, which is not injective; this name does not reuse it.
|
|
64
|
+
* Anything outside those two grammars is refused rather than flattened.
|
|
65
|
+
*/
|
|
66
|
+
export function scopeStoreScriptName(vertical, kind) {
|
|
67
|
+
if (!STORE_KIND_ID.test(kind)) {
|
|
68
|
+
throw new Error(`not a scope-store kind id: '${kind}' (expected [a-z0-9]+)`);
|
|
69
|
+
}
|
|
70
|
+
if (!VERTICAL_SLUG.test(vertical)) {
|
|
71
|
+
throw new Error(`not a vertical slug: '${vertical}'`);
|
|
72
|
+
}
|
|
73
|
+
return `${SCOPE_STORE_SCRIPT_PREFIX}${kind}-${vertical.replace('/', '_')}`;
|
|
74
|
+
}
|
|
42
75
|
/**
|
|
43
76
|
* The platform script name a vertical with this slug would deploy under, or `null`. Checks the
|
|
44
77
|
* stable script and its jurisdictional variants. A per-version script ends in a 26-character
|
|
45
|
-
* ULID, which no platform name does.
|
|
78
|
+
* ULID, which no platform name does. A stem inside the scope-store name space is returned as
|
|
79
|
+
* itself: every script the slug could deploy under would fall in it.
|
|
46
80
|
*/
|
|
47
81
|
export function platformScriptCollision(slug) {
|
|
48
82
|
const stem = verticalScriptStem(slug);
|
|
83
|
+
if (`${stem}-`.startsWith(SCOPE_STORE_SCRIPT_PREFIX))
|
|
84
|
+
return stem;
|
|
49
85
|
for (const name of [stem, ...JURISDICTION_SUFFIXES.map((j) => `${stem}-${j}`)]) {
|
|
50
86
|
if (PLATFORM_SCRIPT_NAMES.has(name))
|
|
51
87
|
return name;
|
package/dist/script-names.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"script-names.js","sourceRoot":"","sources":["../src/script-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,iFAAiF;AACjF,MAAM,CAAC,MAAM,mBAAmB,GAAsB,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,CAAC;AAElG,uEAAuE;AACvE,MAAM,CAAC,MAAM,qBAAqB,GAAwB,IAAI,GAAG,CAAC;IAChE,GAAG,mBAAmB;IACtB,sBAAsB;IACtB,kBAAkB;IAClB,wBAAwB;IACxB,6BAA6B;IAC7B,oBAAoB;IACpB,yBAAyB;IACzB,eAAe;IACf,uBAAuB;IACvB,4BAA4B;IAC5B,0BAA0B;IAC1B,+BAA+B;CAChC,CAAC,CAAC;AAEH,sGAAsG;AACtG,MAAM,qBAAqB,GAAG,CAAC,IAAI,EAAE,IAAI,CAAU,CAAC;AAEpD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAClF,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"script-names.js","sourceRoot":"","sources":["../src/script-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,iFAAiF;AACjF,MAAM,CAAC,MAAM,mBAAmB,GAAsB,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,CAAC;AAElG,uEAAuE;AACvE,MAAM,CAAC,MAAM,qBAAqB,GAAwB,IAAI,GAAG,CAAC;IAChE,GAAG,mBAAmB;IACtB,sBAAsB;IACtB,kBAAkB;IAClB,wBAAwB;IACxB,6BAA6B;IAC7B,oBAAoB;IACpB,yBAAyB;IACzB,eAAe;IACf,uBAAuB;IACvB,4BAA4B;IAC5B,0BAA0B;IAC1B,+BAA+B;CAChC,CAAC,CAAC;AAEH,sGAAsG;AACtG,MAAM,qBAAqB,GAAG,CAAC,IAAI,EAAE,IAAI,CAAU,CAAC;AAEpD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAClF,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;AAE3D,4GAA4G;AAC5G,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;AAE3C,qGAAqG;AACrG,MAAM,aAAa,GAAG,uEAAuE,CAAC;AAE9F;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE,IAAY;IACjE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,wBAAwB,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,GAAG,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,GAAG,yBAAyB,GAAG,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;AAC7E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,yBAAyB,CAAC;QAAE,OAAO,IAAI,CAAC;IAClE,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC/E,IAAI,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IACnD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,SAAiB;IACnE,OAAO,kBAAkB,IAAI,yBAAyB,SAAS,iDAAiD,CAAC;AACnH,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filter by a list of any length in ONE bound parameter (#2248).
|
|
3
|
+
*
|
|
4
|
+
* A Durable Object's SQLite refuses a statement binding more than 100 parameters, so the
|
|
5
|
+
* natural spelling — `WHERE id IN (${ids.map(() => '?').join(', ')})` — passes every small
|
|
6
|
+
* fixture and fails the first hosted call whose list outgrew it. The list goes in as one JSON
|
|
7
|
+
* array instead, read back with `json_each`, which is SQLite's own JSON1 table-valued function
|
|
8
|
+
* and runs the same on both adapters (better-sqlite3 and the Durable Object):
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* const ids = inList(usedIds);
|
|
12
|
+
* ctx.sql.exec(`UPDATE acme_items SET used = used + 1 WHERE id IN ${ids.sql}`, [now, ...ids.params]);
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* `IN` stays in the caller's SQL, so the statement still reads as what it is. An empty list
|
|
16
|
+
* matches nothing, which is what `IN` of nothing means (a hand-built `IN ()` is a syntax
|
|
17
|
+
* error).
|
|
18
|
+
*
|
|
19
|
+
* **Pass values in the column's own type.** A `json_each` value carries no affinity, so only a
|
|
20
|
+
* numeric column converts: `inList(['123'])` matches an INTEGER `123`, but `inList([1])` matches
|
|
21
|
+
* NO row of a TEXT column — not `'1'`, and not the `'1.0'` a bound `1` would match. A TEXT id is
|
|
22
|
+
* passed as a string (`ids.map(String)`), or the comparison is cast (`CAST(col AS INTEGER)`).
|
|
23
|
+
*
|
|
24
|
+
* Only strings and finite numbers: JSON has no `bigint` or blob, and it writes `NaN` and
|
|
25
|
+
* `Infinity` as `null`, which would drop the value from the list without a word — so a
|
|
26
|
+
* non-finite number throws instead.
|
|
27
|
+
*
|
|
28
|
+
* boundary-lint R12 refuses the hand-built placeholder list in module code and points here.
|
|
29
|
+
*/
|
|
30
|
+
export interface InList {
|
|
31
|
+
/** `(SELECT value FROM json_each(?))` — write it after `IN` / `NOT IN`. */
|
|
32
|
+
readonly sql: typeof IN_LIST_SQL;
|
|
33
|
+
/** The one parameter `sql` binds, in its position among the statement's others. */
|
|
34
|
+
readonly params: readonly [string];
|
|
35
|
+
}
|
|
36
|
+
declare const IN_LIST_SQL = "(SELECT value FROM json_each(?))";
|
|
37
|
+
export declare function inList(values: readonly (string | number)[]): InList;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=sql-in-list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-in-list.d.ts","sourceRoot":"","sources":["../src/sql-in-list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,WAAW,MAAM;IACrB,2EAA2E;IAC3E,QAAQ,CAAC,GAAG,EAAE,OAAO,WAAW,CAAC;IACjC,mFAAmF;IACnF,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;CACpC;AAED,QAAA,MAAM,WAAW,qCAAqC,CAAC;AAEvD,wBAAgB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,CAOnE"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
const IN_LIST_SQL = '(SELECT value FROM json_each(?))';
|
|
2
|
+
export function inList(values) {
|
|
3
|
+
for (const v of values) {
|
|
4
|
+
if (typeof v === 'number' ? !Number.isFinite(v) : typeof v !== 'string') {
|
|
5
|
+
throw new TypeError(`inList: ${String(v)} is not a string or a finite number`);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
return { sql: IN_LIST_SQL, params: [JSON.stringify(values)] };
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=sql-in-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-in-list.js","sourceRoot":"","sources":["../src/sql-in-list.ts"],"names":[],"mappings":"AAoCA,MAAM,WAAW,GAAG,kCAAkC,CAAC;AAEvD,MAAM,UAAU,MAAM,CAAC,MAAoC;IACzD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YACxE,MAAM,IAAI,SAAS,CAAC,WAAW,MAAM,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;AAChE,CAAC"}
|
package/dist/tenancy.d.ts
CHANGED
|
@@ -23,8 +23,8 @@ export declare const tenant: z.ZodObject<{
|
|
|
23
23
|
export type Tenant = z.infer<typeof tenant>;
|
|
24
24
|
export declare const createTenantInput: z.ZodObject<{
|
|
25
25
|
id: z.core.$ZodBranded<z.ZodString, "TenantId", "out">;
|
|
26
|
-
slug: z.ZodString;
|
|
27
26
|
name: z.ZodString;
|
|
27
|
+
slug: z.ZodString;
|
|
28
28
|
provisionedByTenant: z.ZodOptional<z.ZodNullable<z.core.$ZodBranded<z.ZodString, "TenantId", "out">>>;
|
|
29
29
|
}, z.core.$strip>;
|
|
30
30
|
export type CreateTenantInput = z.infer<typeof createTenantInput>;
|
package/dist/tenancy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tenancy.d.ts","sourceRoot":"","sources":["../src/tenancy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"tenancy.d.ts","sourceRoot":"","sources":["../src/tenancy.ts"],"names":[],"mappings":"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"}
|
package/dist/tenancy.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { instant, orgId, scopeId, slug, tenantId } from './ids.js';
|
|
3
|
+
import { SCOPE_STORE_SCRIPT_PREFIX } from './script-names.js';
|
|
3
4
|
export const tenantStatus = z.enum([
|
|
4
5
|
'active',
|
|
5
6
|
'suspended',
|
|
@@ -40,7 +41,15 @@ export const tenant = z.object({
|
|
|
40
41
|
// create omits it (→ null).
|
|
41
42
|
export const createTenantInput = tenant
|
|
42
43
|
.pick({ id: true, slug: true, name: true })
|
|
43
|
-
.extend({
|
|
44
|
+
.extend({
|
|
45
|
+
// L20: every vertical this tenant owns has a script stem starting with its slug, so a slug
|
|
46
|
+
// inside the scope-store script name space could register nothing. Refused at the claim, on
|
|
47
|
+
// the input only: a stored tenant is read back with the plain `tenant` schema.
|
|
48
|
+
slug: slug.refine((value) => !`${value}-`.startsWith(SCOPE_STORE_SCRIPT_PREFIX), {
|
|
49
|
+
message: `a tenant slug cannot start with '${SCOPE_STORE_SCRIPT_PREFIX}': that script name space is the platform's`,
|
|
50
|
+
}),
|
|
51
|
+
provisionedByTenant: tenantId.nullable().optional(),
|
|
52
|
+
});
|
|
44
53
|
/**
|
|
45
54
|
* An organization inside a tenant (K-22) — who membership tuples point at and what
|
|
46
55
|
* `grantToOrg` targets. Portal customers, staff groups, partner companies.
|
package/dist/tenancy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tenancy.js","sourceRoot":"","sources":["../src/tenancy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"tenancy.js","sourceRoot":"","sources":["../src/tenancy.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@substrat-run/contracts",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.147.0",
|
|
4
4
|
"description": "Substrat kernel contract schemas — Zod is the source of truth (master plan D-22); OAS/JSON Schema are emitted artifacts",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -21,6 +21,10 @@
|
|
|
21
21
|
"types": "./dist/invocation-record.d.ts",
|
|
22
22
|
"default": "./dist/invocation-record.js"
|
|
23
23
|
},
|
|
24
|
+
"./scope-store-mac": {
|
|
25
|
+
"types": "./dist/scope-store-mac.d.ts",
|
|
26
|
+
"default": "./dist/scope-store-mac.js"
|
|
27
|
+
},
|
|
24
28
|
"./wire-headers": {
|
|
25
29
|
"types": "./dist/wire-headers.d.ts",
|
|
26
30
|
"default": "./dist/wire-headers.js"
|