@substrat-run/adapter-cloudflare 0.139.0 → 0.141.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 +2 -2
- package/dist/checker.d.ts.map +1 -1
- package/dist/checker.js +4 -0
- package/dist/checker.js.map +1 -1
- package/dist/control-plane-do.d.ts +93 -9
- package/dist/control-plane-do.d.ts.map +1 -1
- package/dist/control-plane-do.js +368 -71
- package/dist/control-plane-do.js.map +1 -1
- package/dist/host.d.ts +36 -8
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +346 -58
- package/dist/host.js.map +1 -1
- package/dist/live-reads.d.ts +30 -7
- package/dist/live-reads.d.ts.map +1 -1
- package/dist/live-reads.js +43 -9
- package/dist/live-reads.js.map +1 -1
- package/dist/route-resolver.d.ts +1 -1
- package/dist/route-resolver.d.ts.map +1 -1
- package/dist/route-resolver.js +7 -0
- package/dist/route-resolver.js.map +1 -1
- package/dist/scope-do.d.ts +30 -2
- package/dist/scope-do.d.ts.map +1 -1
- package/dist/scope-do.js +731 -219
- package/dist/scope-do.js.map +1 -1
- package/dist/sql.d.ts +2 -0
- package/dist/sql.d.ts.map +1 -1
- package/dist/sql.js +23 -1
- package/dist/sql.js.map +1 -1
- package/package.json +12 -12
package/dist/sql.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { type RedactionSql, type ScopedSql } from '@substrat-run/kernel';
|
|
2
|
+
/** Workerd's `_cf_*` tables back runtime-owned KV and alarms, not module data. */
|
|
3
|
+
export declare function assertNoWorkerdStorage(sql: string): void;
|
|
2
4
|
/**
|
|
3
5
|
* Adapts a Durable Object's `SqlStorage` to the kernel's `ScopedSql` contract
|
|
4
6
|
* (`query`/`exec`). DO SQL is synchronous — `exec` returns a cursor eagerly —
|
package/dist/sql.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../src/sql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,YAAY,EAAE,KAAK,SAAS,EAAiB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../src/sql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,YAAY,EAAE,KAAK,SAAS,EAAiB,MAAM,sBAAsB,CAAC;AAGpG,kFAAkF;AAClF,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAaxD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,UAAU;AACf,+GAA+G;AAC/G,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;AACpC,wFAAwF;AACxF,QAAQ,CAAC,EAAE,MAAM,IAAI,GACpB,SAAS,CAYX;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,SAAS,CASrD;AAED,2GAA2G;AAC3G,wBAAgB,cAAc,CAAC,GAAG,EAAE,UAAU,GAAG,YAAY,CAE5D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAWpF"}
|
package/dist/sql.js
CHANGED
|
@@ -1,4 +1,22 @@
|
|
|
1
1
|
import { guardSpine } from '@substrat-run/kernel';
|
|
2
|
+
import { substratError, tokenizeSql } from '@substrat-run/contracts';
|
|
3
|
+
/** Workerd's `_cf_*` tables back runtime-owned KV and alarms, not module data. */
|
|
4
|
+
export function assertNoWorkerdStorage(sql) {
|
|
5
|
+
const tokens = tokenizeSql(sql);
|
|
6
|
+
if (tokens.some((token, index) => {
|
|
7
|
+
if (!token.text.split('.').some((part) => part.toLowerCase().startsWith('_cf_')))
|
|
8
|
+
return false;
|
|
9
|
+
// Quoted tokens can also be string literals in an expression. A table name
|
|
10
|
+
// there still follows a source/target keyword, including when quoted.
|
|
11
|
+
if (!token.quoted)
|
|
12
|
+
return true;
|
|
13
|
+
const before = tokens[index - 1];
|
|
14
|
+
return before && !before.quoted &&
|
|
15
|
+
['FROM', 'JOIN', 'INTO', 'UPDATE', 'TABLE', 'REFERENCES', 'ON'].includes(before.text.toUpperCase());
|
|
16
|
+
})) {
|
|
17
|
+
throw substratError('forbidden', 'ctx.sql cannot read workerd internal storage');
|
|
18
|
+
}
|
|
19
|
+
}
|
|
2
20
|
/**
|
|
3
21
|
* Adapts a Durable Object's `SqlStorage` to the kernel's `ScopedSql` contract
|
|
4
22
|
* (`query`/`exec`). DO SQL is synchronous — `exec` returns a cursor eagerly —
|
|
@@ -24,8 +42,12 @@ statefulTables,
|
|
|
24
42
|
/** #119: the kernel's integrity check, run after any runtime DDL — see `guardSpine`. */
|
|
25
43
|
afterDdl) {
|
|
26
44
|
return guardSpine({
|
|
27
|
-
query: (q, params = []) =>
|
|
45
|
+
query: (q, params = []) => {
|
|
46
|
+
assertNoWorkerdStorage(q);
|
|
47
|
+
return sql.exec(q, ...params).toArray();
|
|
48
|
+
},
|
|
28
49
|
exec: (q, params = []) => {
|
|
50
|
+
assertNoWorkerdStorage(q);
|
|
29
51
|
const cursor = sql.exec(q, ...params);
|
|
30
52
|
return { changes: cursor.rowsWritten };
|
|
31
53
|
},
|
package/dist/sql.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql.js","sourceRoot":"","sources":["../src/sql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAoD,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"sql.js","sourceRoot":"","sources":["../src/sql.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@substrat-run/adapter-cloudflare",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.141.0",
|
|
4
4
|
"description": "Cloudflare Durable-Object scope host (D-14): DO-per-scope, real kernel semantics on Workers",
|
|
5
5
|
"license": "AGPL-3.0-only",
|
|
6
6
|
"repository": {
|
|
@@ -26,22 +26,22 @@
|
|
|
26
26
|
"dist"
|
|
27
27
|
],
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@substrat-run/
|
|
30
|
-
"@substrat-run/
|
|
29
|
+
"@substrat-run/contracts": "^0.141.0",
|
|
30
|
+
"@substrat-run/kernel": "^0.141.0"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
|
-
"@cloudflare/vitest-
|
|
33
|
+
"@cloudflare/vitest-plugin": "^1.4.0",
|
|
34
34
|
"@cloudflare/workers-types": "^4.20250109.0",
|
|
35
|
-
"hono": "^4.13.
|
|
35
|
+
"hono": "^4.13.13",
|
|
36
36
|
"typescript": "^7.0.0",
|
|
37
|
-
"vitest": "^
|
|
37
|
+
"vitest": "^5.0.3",
|
|
38
38
|
"wrangler": "^4.146.0",
|
|
39
|
-
"@substrat-run/attachment-extractors": "^0.2.
|
|
40
|
-
"@substrat-run/cli": "^0.
|
|
41
|
-
"@substrat-run/contract-tests": "^0.
|
|
42
|
-
"@substrat-run/vertical-auth": "^0.
|
|
43
|
-
"@substrat-run/
|
|
44
|
-
"@substrat-run/
|
|
39
|
+
"@substrat-run/attachment-extractors": "^0.2.2",
|
|
40
|
+
"@substrat-run/cli": "^0.41.1",
|
|
41
|
+
"@substrat-run/contract-tests": "^0.141.0",
|
|
42
|
+
"@substrat-run/vertical-auth": "^0.21.1",
|
|
43
|
+
"@substrat-run/vertical-host": "^0.141.0",
|
|
44
|
+
"@substrat-run/control-plane-api": "^0.141.0"
|
|
45
45
|
},
|
|
46
46
|
"publishConfig": {
|
|
47
47
|
"access": "public"
|