@mathrunet/masamune_cloudflare_turso 3.2.5 → 3.2.7

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/CHANGELOG.md CHANGED
@@ -1,4 +1,4 @@
1
- ## 3.2.5 (2026-07-01)
1
+ ## 3.2.7 (2026-07-01)
2
2
 
3
3
 
4
4
  ### chore
package/README.md CHANGED
@@ -48,42 +48,26 @@ Pass the return value of the `deploy` function to `export default`. It is define
48
48
 
49
49
  ```typescript
50
50
  import * as m from "@mathrunet/masamune_cloudflare_turso";
51
-
52
- export default m.deploy([
53
- m.Functions.turso({
54
- organizationName: "xxxx",
55
- groupName: "xxxx",
56
- autoCreateDatabase: true,
57
- autoCreateTable: true,
58
- autoMigrateAddColumns: true,
59
- rules: {
60
- version: "1",
61
- rules: {
62
- "database/*/table/*/*": {
63
- read: "deny",
64
- write: "deny",
65
- },
66
- "database/main/table/users/*": {
67
- read: "authenticated",
68
- write: "authenticated",
69
- },
70
- },
71
- },
72
- }),
73
- m.Functions.tursoToken({
74
- organizationName: "xxxx",
75
- groupName: "xxxx",
76
- rules: {
77
- version: "1",
78
- rules: {
79
- "database/main": {
80
- read: "authenticated",
81
- write: "deny",
82
- },
83
- },
84
- },
85
- }),
86
- ]);
51
+ import rulesJson from "../rules.json";
52
+
53
+ export default m.deploy(
54
+ [
55
+ m.Functions.turso({
56
+ organizationName: "xxxx",
57
+ groupName: "xxxx",
58
+ autoCreateDatabase: true,
59
+ autoCreateTable: true,
60
+ autoMigrateAddColumns: true,
61
+ }),
62
+ m.Functions.tursoToken({
63
+ organizationName: "xxxx",
64
+ groupName: "xxxx",
65
+ }),
66
+ ],
67
+ {
68
+ rules: rulesJson,
69
+ },
70
+ );
87
71
  ```
88
72
 
89
73
  Cloudflare bindings are also supported and take precedence over options:
@@ -195,6 +179,29 @@ CREATE TABLE IF NOT EXISTS table_name (
195
179
 
196
180
  Objects and arrays are stored as JSON strings.
197
181
 
182
+ # Rules
183
+
184
+ Rules are provided by `@mathrunet/masamune_cloudflare` and are shared with
185
+ other Cloudflare database packages. Pass an imported `rules.json` to
186
+ `WorkersOptions.rules` on `deploy`, or pass the same config to each function
187
+ option.
188
+
189
+ ```json
190
+ {
191
+ "version": "1",
192
+ "rules": {
193
+ "database/main": {
194
+ "read": "allow",
195
+ "write": "server"
196
+ },
197
+ "database/main/table/users/*": {
198
+ "read": "authenticated",
199
+ "write": { "type": "field", "field": "ownerId", "server": true }
200
+ }
201
+ }
202
+ }
203
+ ```
204
+
198
205
  # Database-scoped short-lived token
199
206
 
200
207
  Use `/turso/token/database/{database}` to issue a Turso database token after
@@ -225,8 +232,8 @@ Named path parameters can be compared with the authenticated user ID:
225
232
  "version": "1",
226
233
  "rules": {
227
234
  "database/{uid}": {
228
- "read": { "type": "pathParamMatch", "param": "uid" },
229
- "write": { "type": "pathParamMatch", "param": "uid" }
235
+ "read": { "type": "path", "param": "uid" },
236
+ "write": { "type": "path", "param": "uid" }
230
237
  }
231
238
  }
232
239
  }
@@ -243,29 +250,42 @@ issuing only the direct Turso token that is safe for the requested scope:
243
250
  "version": "1",
244
251
  "rules": {
245
252
  "database/{uid}": {
246
- "read": { "type": "pathParamMatch", "param": "uid" },
253
+ "read": { "type": "path", "param": "uid" },
247
254
  "write": {
248
- "type": "pathParamMatch",
255
+ "type": "path",
249
256
  "param": "uid",
250
- "serverOnly": true
257
+ "server": true
251
258
  }
252
259
  }
253
260
  }
254
261
  }
255
262
  ```
256
263
 
257
- `serverOnly` can also be used with `read` and `fieldMatch` rules. A
258
- server-only rule does not grant direct token access for that operation.
264
+ `server` can also be used with `read` and `field` rules. A server-side rule
265
+ does not grant direct token access for that operation.
259
266
 
260
267
  Table/document rules below the database path are also treated as server-side
261
268
  rules for token issuance when they restrict `read` or `write`. This is
262
269
  intentional because Turso Platform tokens are database-scoped and cannot enforce
263
- document-level `fieldMatch` or `pathParamMatch` checks on the client.
270
+ document-level `field` or `path` checks on the client.
271
+
272
+ For a database-level Turso token, send `operations` without a table:
264
273
 
265
274
  ```json
266
275
  {
267
276
  "ttlSeconds": 600,
268
- "scope": [
277
+ "operations": ["read"]
278
+ }
279
+ ```
280
+
281
+ When the client also needs the Workers backend to decide whether a specific
282
+ table must use Functions fallback, send `targets`. `targets` are used only for
283
+ Masamune rules resolution; they are not passed to Turso as token scopes.
284
+
285
+ ```json
286
+ {
287
+ "ttlSeconds": 600,
288
+ "targets": [
269
289
  {
270
290
  "table": "users",
271
291
  "operations": ["read", "write"]
@@ -283,7 +303,7 @@ The response is:
283
303
  "url": "libsql://your-db.turso.io",
284
304
  "readMode": "direct",
285
305
  "writeMode": "functions",
286
- "scopes": [
306
+ "targets": [
287
307
  {
288
308
  "table": "users",
289
309
  "operations": ["read", "write"],
@@ -296,13 +316,13 @@ The response is:
296
316
 
297
317
  If both read and write are functions-only, `/turso/token/database/{database}`
298
318
  does not return `token`, `expiresAt`, or `url`; it returns only the resolved
299
- modes and scopes:
319
+ modes and targets:
300
320
 
301
321
  ```json
302
322
  {
303
323
  "readMode": "functions",
304
324
  "writeMode": "functions",
305
- "scopes": [
325
+ "targets": [
306
326
  {
307
327
  "table": "users",
308
328
  "operations": ["read", "write"],
@@ -313,6 +333,10 @@ modes and scopes:
313
333
  }
314
334
  ```
315
335
 
336
+ The previous `scope` request field and `scopes` response field are still
337
+ accepted/returned for compatibility, but new clients should use `operations`
338
+ and `targets`.
339
+
316
340
  `url` is resolved by the Workers backend. This lets clients use direct libSQL
317
341
  access for dynamically created databases without building the Turso hostname on
318
342
  the client.
@@ -21,7 +21,8 @@ async function handleToken(context, options) {
21
21
  const access = await (0, rules_1.resolveDatabaseTokenAccess)({
22
22
  engine,
23
23
  database: request.database,
24
- scope: request.scope,
24
+ operations: request.operations,
25
+ scope: request.targets ?? request.scope,
25
26
  authentication,
26
27
  });
27
28
  if (!access) {
@@ -41,6 +42,7 @@ async function handleToken(context, options) {
41
42
  ...(token ? { ...token, url: connection.url } : {}),
42
43
  readMode: access.readMode,
43
44
  writeMode: access.writeMode,
45
+ targets: access.scopes,
44
46
  scopes: access.scopes,
45
47
  });
46
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"turso_token.js","sourceRoot":"","sources":["../../src/functions/turso_token.ts"],"names":[],"mappings":";;AAEA,4CAA8D;AAC9D,wCAGsB;AACtB,sDAAgE;AAChE,wCAAkD;AAClD,oCAA+D;AAE/D,MAAM,CAAC,OAAO,GAAG,CACf,IAAU,EACV,OAA4B,EAC5B,IAAgC,EAChC,EAAE;IACF,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACjE,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACnF,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1E,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,KAAK,UAAU,WAAW,CACxB,OAAgB,EAChB,OAA4B;IAE5B,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,IAAA,uCAAiC,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAG,MAAM,IAAA,2BAAiB,EAAC,OAAO,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,MAAM,IAAA,wCAAyB,EAChD,OAAO,CAAC,QAAQ,EAChB,eAAe,CAChB,CAAC;QACF,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAsC,CAAC;QAC1F,MAAM,MAAM,GAAG,IAAA,8BAAsB,EAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,IAAA,kCAA0B,EAAC;YAC9C,MAAM;YACN,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,cAAc;SACf,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC,IAAI,CACjB;gBACE,KAAK,EAAE,QAAQ;aAChB,EACD,GAAG,CACJ,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa;YAChC,CAAC,CAAC,MAAM,IAAA,0BAAkB,EAAC;gBACvB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,OAAO,EAAE,eAAe;aACzB,CAAC;YACJ,CAAC,CAAC,SAAS,CAAC;QACd,OAAO,OAAO,CAAC,IAAI,CAAC;YAClB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAA,mBAAS,EAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"turso_token.js","sourceRoot":"","sources":["../../src/functions/turso_token.ts"],"names":[],"mappings":";;AAEA,4CAA8D;AAC9D,wCAGsB;AACtB,sDAAgE;AAChE,wCAAkD;AAClD,oCAA+D;AAE/D,MAAM,CAAC,OAAO,GAAG,CACf,IAAU,EACV,OAA4B,EAC5B,IAAgC,EAChC,EAAE;IACF,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACjE,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACnF,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1E,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,KAAK,UAAU,WAAW,CACxB,OAAgB,EAChB,OAA4B;IAE5B,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,IAAA,uCAAiC,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAG,MAAM,IAAA,2BAAiB,EAAC,OAAO,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,MAAM,IAAA,wCAAyB,EAChD,OAAO,CAAC,QAAQ,EAChB,eAAe,CAChB,CAAC;QACF,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAsC,CAAC;QAC1F,MAAM,MAAM,GAAG,IAAA,8BAAsB,EAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,IAAA,kCAA0B,EAAC;YAC9C,MAAM;YACN,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,KAAK,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK;YACvC,cAAc;SACf,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC,IAAI,CACjB;gBACE,KAAK,EAAE,QAAQ;aAChB,EACD,GAAG,CACJ,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa;YAChC,CAAC,CAAC,MAAM,IAAA,0BAAkB,EAAC;gBACvB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,OAAO,EAAE,eAAe;aACzB,CAAC;YACJ,CAAC,CAAC,SAAS,CAAC;QACd,OAAO,OAAO,CAAC,IAAI,CAAC;YAClB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,MAAM;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAA,mBAAS,EAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;AACH,CAAC"}
@@ -50,27 +50,15 @@ async function parseTokenRequest(context) {
50
50
  const pathDatabase = optionalParam(context, "database");
51
51
  const body = await parseJsonBody(context);
52
52
  const database = validateLogicalName(pathDatabase ?? body.database ?? "main", "database");
53
- const scope = body.scope?.map((item) => {
53
+ const operations = body.operations
54
+ ? validateOperations(body.operations, "operations")
55
+ : undefined;
56
+ const targets = (body.targets ?? body.scope)?.map((item) => {
54
57
  if (!item || typeof item !== "object") {
55
- throw new HttpError(400, "scope item must be an object.");
56
- }
57
- const table = validateIdentifier(requiredString(item.table, "scope.table"), "scope.table");
58
- if (!Array.isArray(item.operations) || item.operations.length === 0) {
59
- throw new HttpError(400, "scope.operations is required.");
58
+ throw new HttpError(400, "targets item must be an object.");
60
59
  }
61
- const operations = item.operations.map((operation) => {
62
- switch (operation) {
63
- case "read":
64
- case "write":
65
- case "get":
66
- case "create":
67
- case "update":
68
- case "delete":
69
- return operation;
70
- default:
71
- throw new HttpError(400, `Unsupported scope operation: ${operation}`);
72
- }
73
- });
60
+ const table = validateIdentifier(requiredString(item.table, "targets.table"), "targets.table");
61
+ const operations = validateOperations(item.operations, "targets.operations");
74
62
  return {
75
63
  table,
76
64
  operations,
@@ -79,7 +67,8 @@ async function parseTokenRequest(context) {
79
67
  return {
80
68
  ...body,
81
69
  database,
82
- ...(scope ? { scope } : {}),
70
+ ...(operations ? { operations } : {}),
71
+ ...(targets ? { targets, scope: targets } : {}),
83
72
  };
84
73
  }
85
74
  function validateIdentifier(value, label) {
@@ -150,6 +139,24 @@ function requiredString(value, label) {
150
139
  }
151
140
  return value;
152
141
  }
142
+ function validateOperations(operations, label) {
143
+ if (!Array.isArray(operations) || operations.length === 0) {
144
+ throw new HttpError(400, `${label} is required.`);
145
+ }
146
+ return operations.map((operation) => {
147
+ switch (operation) {
148
+ case "read":
149
+ case "write":
150
+ case "get":
151
+ case "create":
152
+ case "update":
153
+ case "delete":
154
+ return operation;
155
+ default:
156
+ throw new HttpError(400, `Unsupported ${label}: ${operation}`);
157
+ }
158
+ });
159
+ }
153
160
  function validateWhere(where) {
154
161
  if (!Array.isArray(where)) {
155
162
  throw new HttpError(400, "where must be an array.");
@@ -1 +1 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/lib/request.ts"],"names":[],"mappings":";;;AAmBA,4CA6BC;AAED,8CAmCC;AAED,gDAKC;AAED,kDAKC;AAED,4CAKC;AAED,8BAQC;AA5GD,MAAM,iBAAiB,GAAG,0BAA0B,CAAC;AAErD,MAAa,SAAU,SAAQ,KAAK;IAEvB;IADX,YACW,MAAc,EACvB,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHN,WAAM,GAAN,MAAM,CAAQ;IAIzB,CAAC;CACF;AAPD,8BAOC;AAEM,KAAK,UAAU,gBAAgB,CAAC,OAAgB;IACrD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IAChD,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,MAAM,KAAK,KAAK;QAC3B,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC;QAC1B,CAAC,CAAC,MAAM,aAAa,CAAmB,OAAO,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1F,MAAM,KAAK,GAAG,kBAAkB,CAAC,cAAc,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5F,MAAM,iBAAiB,GAAG,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC;IACxD,MAAM,QAAQ,GAAG,iBAAiB;QAChC,CAAC,CAAC,gBAAgB,CAAC,cAAc,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;QACjE,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/E,OAAO;QACL,GAAG,IAAI;QACP,QAAQ;QACR,KAAK;QACL,QAAQ;QACR,KAAK;QACL,OAAO;QACP,KAAK;QACL,KAAK;QACL,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI;KAC3B,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,iBAAiB,CAAC,OAAgB;IACtD,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAwB,OAAO,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1F,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACrC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,+BAA+B,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,KAAK,GAAG,kBAAkB,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,CAAC;QAC3F,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,+BAA+B,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;YACnD,QAAQ,SAAS,EAAE,CAAC;gBAClB,KAAK,MAAM,CAAC;gBACZ,KAAK,OAAO,CAAC;gBACb,KAAK,KAAK,CAAC;gBACX,KAAK,QAAQ,CAAC;gBACd,KAAK,QAAQ,CAAC;gBACd,KAAK,QAAQ;oBACX,OAAO,SAAS,CAAC;gBACnB;oBACE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,gCAAgC,SAAS,EAAE,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO;YACL,KAAK;YACL,UAAU;SACX,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO;QACL,GAAG,IAAI;QACP,QAAQ;QACR,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5B,CAAC;AACJ,CAAC;AAED,SAAgB,kBAAkB,CAAC,KAAa,EAAE,KAAa;IAC7D,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,WAAW,KAAK,KAAK,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,mBAAmB,CAAC,KAAa,EAAE,KAAa;IAC9D,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,WAAW,KAAK,KAAK,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,gBAAgB,CAAC,KAAa;IAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,qBAAqB,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,SAAS,CAAC,OAAgB,EAAE,KAAc;IACxD,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;QAC/B,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,MAAa,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAE,GAAG,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,eAAe,CAAC,OAAgB;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAwB,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrG,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAwB,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7G,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1E,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK;QACL,OAAO;QACP,KAAK;QACL,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,MAAM;KAC9B,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,OAAgB,EAAE,IAAY;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,aAAa,CAAI,OAAgB;IAC9C,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,EAAK,CAAC;IACrC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,4BAA4B,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAI,KAAa,EAAE,KAAa;IACtD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAM,CAAC;IAChC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,GAAG,KAAK,gBAAgB,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAc,EAAE,KAAa;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,GAAG,KAAK,eAAe,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,KAA4B;IACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QAC7B,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAChD,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC;QACzC,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,SAAS,CAAC;YACf,KAAK,YAAY,CAAC;YAClB,KAAK,UAAU,CAAC;YAChB,KAAK,mBAAmB,CAAC;YACzB,KAAK,aAAa,CAAC;YACnB,KAAK,sBAAsB,CAAC;YAC5B,KAAK,SAAS,CAAC;YACf,KAAK,YAAY,CAAC;YAClB,KAAK,QAAQ,CAAC;YACd,KAAK,WAAW,CAAC;YACjB,KAAK,MAAM,CAAC;YACZ,KAAK,eAAe,CAAC;YACrB,KAAK,kBAAkB;gBACrB,MAAM;YACR;gBACE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,gCAAgC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,MAAM,GAAG,GAAG,kBAAkB,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;QACxF,OAAO;YACL,IAAI;YACJ,GAAG;YACH,KAAK,EAAE,SAAS,CAAC,KAAK;SACvB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,OAA8B;IACrD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,2BAA2B,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QAC/B,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAChD,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,sCAAsC,CAAC,CAAC;QACnE,CAAC;QACD,OAAO;YACL,GAAG,EAAE,kBAAkB,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC;YACpF,UAAU,EAAE,SAAS,CAAC,UAAU,KAAK,IAAI;SAC1C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,KAAyB;IAC9C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,mCAAmC,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,KAA8B;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC;IACtD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/lib/request.ts"],"names":[],"mappings":"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"}
@@ -1,65 +1,5 @@
1
- import { AuthenticationContext, RulesAccessRule, RulesConfig, RulesOperation, RulesOperationKey, TursoTokenAccessMode, TursoTokenScopeInput, TursoTokenScopeOutput } from "./types";
2
- export interface RulesEvaluationInput {
3
- path: string;
4
- operation: RulesOperation | RulesOperationKey;
5
- authentication?: AuthenticationContext | undefined;
6
- fetchDocument?: (() => Promise<Record<string, unknown> | null | undefined>) | undefined;
7
- server?: boolean | undefined;
8
- }
9
- export interface RulesEvaluationResult {
10
- allowed: boolean;
11
- rulePath?: string | undefined;
12
- access?: RulesAccessRule | undefined;
13
- params?: Record<string, string> | undefined;
14
- }
15
- export type TursoDatabaseTokenAuthorization = "read-only" | "full-access";
16
- export interface TursoDatabaseTokenAccess {
17
- authorization?: TursoDatabaseTokenAuthorization | undefined;
18
- readMode: TursoTokenAccessMode;
19
- writeMode: TursoTokenAccessMode;
20
- scopes: TursoTokenScopeOutput[];
21
- }
22
- export declare class RulesEngine {
23
- constructor(config?: RulesConfig | undefined);
24
- private readonly config;
25
- evaluate(input: RulesEvaluationInput): Promise<RulesEvaluationResult>;
26
- hasScopedRestriction({ database, table, operation, }: {
27
- database: string;
28
- table: string;
29
- operation: RulesOperation | RulesOperationKey;
30
- }): boolean;
31
- hasScopedDeny({ database, table, operation, }: {
32
- database: string;
33
- table: string;
34
- operation: RulesOperation | RulesOperationKey;
35
- }): boolean;
36
- }
37
- export declare function createTursoRulesEngine(config?: RulesConfig | undefined): RulesEngine;
38
- export declare function buildRulesPath({ database, table, indexKey, }: {
39
- database: string;
40
- table: string;
41
- indexKey: string;
42
- }): string;
43
- export declare function buildDatabaseRulesPath({ database, }: {
44
- database: string;
45
- }): string;
46
- export declare function normalizeHttpMethodToRulesOperation(method: string): RulesOperation;
47
- export declare function normalizeRulesOperation(operation: RulesOperation | RulesOperationKey): RulesOperation;
48
- export declare function expandRulesOperation(operation: RulesOperationKey): RulesOperation[];
49
- export declare function filterAllowedScope({ engine, database, scope, authentication, }: {
50
- engine: RulesEngine;
51
- database: string;
52
- scope: TursoTokenScopeInput[];
53
- authentication?: AuthenticationContext | undefined;
54
- }): Promise<TursoTokenScopeInput[]>;
55
- export declare function resolveDatabaseTokenAccess({ engine, database, scope, authentication, }: {
56
- engine: RulesEngine;
57
- database: string;
58
- scope?: TursoTokenScopeInput[] | undefined;
59
- authentication?: AuthenticationContext | undefined;
60
- }): Promise<TursoDatabaseTokenAccess | undefined>;
61
- export declare function resolveDatabaseTokenAuthorization({ engine, database, authentication, }: {
62
- engine: RulesEngine;
63
- database: string;
64
- authentication?: AuthenticationContext | undefined;
65
- }): Promise<TursoDatabaseTokenAuthorization | undefined>;
1
+ import { RulesEngine, type RulesConfig, type RulesDatabaseTokenAccess, type RulesDatabaseTokenAuthorization, type WorkersRulesOption } from "@mathrunet/masamune_cloudflare";
2
+ export { buildDatabaseRulesPath, buildRulesPath, expandRulesOperation, filterAllowedScope, normalizeHttpMethodToRulesOperation, normalizeRulesOperation, resolveDatabaseTokenAccess, resolveDatabaseTokenAuthorization, RulesEngine, } from "@mathrunet/masamune_cloudflare";
3
+ export type TursoDatabaseTokenAuthorization = RulesDatabaseTokenAuthorization;
4
+ export type TursoDatabaseTokenAccess = RulesDatabaseTokenAccess;
5
+ export declare function createTursoRulesEngine(config?: RulesConfig | WorkersRulesOption | null | undefined): RulesEngine;
package/dist/lib/rules.js CHANGED
@@ -1,585 +1,27 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RulesEngine = void 0;
3
+ exports.RulesEngine = exports.resolveDatabaseTokenAuthorization = exports.resolveDatabaseTokenAccess = exports.normalizeRulesOperation = exports.normalizeHttpMethodToRulesOperation = exports.filterAllowedScope = exports.expandRulesOperation = exports.buildRulesPath = exports.buildDatabaseRulesPath = void 0;
4
4
  exports.createTursoRulesEngine = createTursoRulesEngine;
5
- exports.buildRulesPath = buildRulesPath;
6
- exports.buildDatabaseRulesPath = buildDatabaseRulesPath;
7
- exports.normalizeHttpMethodToRulesOperation = normalizeHttpMethodToRulesOperation;
8
- exports.normalizeRulesOperation = normalizeRulesOperation;
9
- exports.expandRulesOperation = expandRulesOperation;
10
- exports.filterAllowedScope = filterAllowedScope;
11
- exports.resolveDatabaseTokenAccess = resolveDatabaseTokenAccess;
12
- exports.resolveDatabaseTokenAuthorization = resolveDatabaseTokenAuthorization;
13
- class RulesEngine {
14
- constructor(config) {
15
- this.config = normalizeRulesConfig(config);
16
- }
17
- config;
18
- async evaluate(input) {
19
- const operation = normalizeRulesOperation(input.operation);
20
- const matches = Object.keys(this.config.rules)
21
- .map((rulePath) => matchRulePath(rulePath, input.path))
22
- .filter((match) => match.matched)
23
- .sort(compareRulePathMatch);
24
- if (matches.length === 0) {
25
- return { allowed: false };
26
- }
27
- const resolved = resolveInheritedRule(matches.map((match) => ({
28
- rulePath: match.rulePath,
29
- entry: this.config.rules[match.rulePath],
30
- params: match.params,
31
- })));
32
- const resolvedAccess = resolveAccessRule(resolved.entry, resolved.params, operation);
33
- if (!resolvedAccess) {
34
- return {
35
- allowed: false,
36
- rulePath: resolved.rulePath,
37
- };
38
- }
39
- return {
40
- allowed: await evaluateAccessRule(resolvedAccess.access, input.authentication, input.fetchDocument, resolvedAccess.params, input.server === true),
41
- rulePath: resolved.rulePath,
42
- access: resolvedAccess.access,
43
- params: resolvedAccess.params,
44
- };
45
- }
46
- hasScopedRestriction({ database, table, operation, }) {
47
- const normalized = normalizeRulesOperation(operation);
48
- for (const [rulePath, entry] of Object.entries(this.config.rules)) {
49
- if (!isRulePathInTableScope(rulePath, database, table)) {
50
- continue;
51
- }
52
- const access = resolveAccessRule(entry, {}, normalized)?.access;
53
- if (!access || isDirectSafeScopeAccess(access)) {
54
- continue;
55
- }
56
- return true;
57
- }
58
- return false;
59
- }
60
- hasScopedDeny({ database, table, operation, }) {
61
- const normalized = normalizeRulesOperation(operation);
62
- for (const [rulePath, entry] of Object.entries(this.config.rules)) {
63
- if (!isRulePathInTableScope(rulePath, database, table)) {
64
- continue;
65
- }
66
- const access = resolveAccessRule(entry, {}, normalized)?.access;
67
- if (access === "deny") {
68
- return true;
69
- }
70
- }
71
- return false;
72
- }
73
- }
74
- exports.RulesEngine = RulesEngine;
5
+ const masamune_cloudflare_1 = require("@mathrunet/masamune_cloudflare");
6
+ var masamune_cloudflare_2 = require("@mathrunet/masamune_cloudflare");
7
+ Object.defineProperty(exports, "buildDatabaseRulesPath", { enumerable: true, get: function () { return masamune_cloudflare_2.buildDatabaseRulesPath; } });
8
+ Object.defineProperty(exports, "buildRulesPath", { enumerable: true, get: function () { return masamune_cloudflare_2.buildRulesPath; } });
9
+ Object.defineProperty(exports, "expandRulesOperation", { enumerable: true, get: function () { return masamune_cloudflare_2.expandRulesOperation; } });
10
+ Object.defineProperty(exports, "filterAllowedScope", { enumerable: true, get: function () { return masamune_cloudflare_2.filterAllowedScope; } });
11
+ Object.defineProperty(exports, "normalizeHttpMethodToRulesOperation", { enumerable: true, get: function () { return masamune_cloudflare_2.normalizeHttpMethodToRulesOperation; } });
12
+ Object.defineProperty(exports, "normalizeRulesOperation", { enumerable: true, get: function () { return masamune_cloudflare_2.normalizeRulesOperation; } });
13
+ Object.defineProperty(exports, "resolveDatabaseTokenAccess", { enumerable: true, get: function () { return masamune_cloudflare_2.resolveDatabaseTokenAccess; } });
14
+ Object.defineProperty(exports, "resolveDatabaseTokenAuthorization", { enumerable: true, get: function () { return masamune_cloudflare_2.resolveDatabaseTokenAuthorization; } });
15
+ Object.defineProperty(exports, "RulesEngine", { enumerable: true, get: function () { return masamune_cloudflare_2.RulesEngine; } });
75
16
  function createTursoRulesEngine(config) {
76
- return new RulesEngine(config);
77
- }
78
- function buildRulesPath({ database, table, indexKey, }) {
79
- return [
80
- "database",
81
- encodePathSegment(database),
82
- "table",
83
- encodePathSegment(table),
84
- encodePathSegment(indexKey),
85
- ].join("/");
86
- }
87
- function buildDatabaseRulesPath({ database, }) {
88
- return [
89
- "database",
90
- encodePathSegment(database),
91
- ].join("/");
92
- }
93
- function normalizeHttpMethodToRulesOperation(method) {
94
- switch (method.toUpperCase()) {
95
- case "GET":
96
- return "get";
97
- case "POST":
98
- return "create";
99
- case "PUT":
100
- return "update";
101
- case "DELETE":
102
- return "delete";
103
- default:
104
- throw new Error(`Unsupported HTTP method for rules: ${method}`);
105
- }
106
- }
107
- function normalizeRulesOperation(operation) {
108
- switch (operation) {
109
- case "read":
110
- return "get";
111
- case "write":
112
- return "create";
113
- case "get":
114
- case "create":
115
- case "update":
116
- case "delete":
117
- return operation;
118
- }
119
- }
120
- function expandRulesOperation(operation) {
121
- switch (operation) {
122
- case "read":
123
- return ["get"];
124
- case "write":
125
- return ["create", "update", "delete"];
126
- case "get":
127
- case "create":
128
- case "update":
129
- case "delete":
130
- return [operation];
131
- }
132
- }
133
- async function filterAllowedScope({ engine, database, scope, authentication, }) {
134
- const allowed = [];
135
- for (const item of scope) {
136
- const operations = [];
137
- for (const operationKey of item.operations) {
138
- const expanded = expandRulesOperation(operationKey);
139
- const results = await Promise.all(expanded.map((operation) => {
140
- return engine.evaluate({
141
- path: buildRulesPath({
142
- database,
143
- table: item.table,
144
- indexKey: "*",
145
- }),
146
- operation,
147
- authentication,
148
- });
149
- }));
150
- if (results.every((result) => result.allowed)) {
151
- operations.push(operationKey);
152
- }
153
- }
154
- if (operations.length > 0) {
155
- allowed.push({
156
- table: item.table,
157
- operations,
158
- });
159
- }
160
- }
161
- return allowed;
162
- }
163
- async function resolveDatabaseTokenAccess({ engine, database, scope = [], authentication, }) {
164
- const path = buildDatabaseRulesPath({ database });
165
- const directRead = await engine.evaluate({
166
- path,
167
- operation: "read",
168
- authentication,
169
- server: false,
170
- });
171
- const serverRead = directRead.allowed
172
- ? directRead
173
- : await engine.evaluate({
174
- path,
175
- operation: "read",
176
- authentication,
177
- server: true,
178
- });
179
- if (!serverRead.allowed) {
180
- return undefined;
181
- }
182
- const directDatabaseWrite = await evaluateDatabaseWrite({
183
- engine,
184
- path,
185
- authentication,
186
- server: false,
187
- });
188
- const serverDatabaseWrite = directDatabaseWrite
189
- ? true
190
- : await evaluateDatabaseWrite({
191
- engine,
192
- path,
193
- authentication,
194
- server: true,
195
- });
196
- const scopes = await resolveScopeModes({
197
- engine,
198
- database,
199
- scope,
200
- authentication,
201
- });
202
- const readScopes = scopes.filter((item) => requiresRead(item.operations));
203
- const writeScopes = scopes.filter((item) => requiresWrite(item.operations));
204
- const readMode = resolveOverallMode(readScopes.map((item) => item.readMode ?? "none"), scope.length === 0 ? directRead.allowed ? "direct" : "functions" : "none");
205
- let writeMode = resolveOverallMode(writeScopes.map((item) => item.writeMode ?? "none"), scope.length === 0 ? directDatabaseWrite ? "direct" : serverDatabaseWrite ? "functions" : "none" : "none");
206
- if (readMode === "functions" && writeMode === "direct") {
207
- writeMode = serverDatabaseWrite ? "functions" : "none";
208
- }
209
- const authorization = resolveTokenAuthorization(readMode, writeMode);
210
- return {
211
- authorization,
212
- readMode,
213
- writeMode,
214
- scopes,
215
- };
216
- }
217
- async function resolveScopeModes({ engine, database, scope, authentication, }) {
218
- const resolved = [];
219
- for (const item of scope) {
220
- const readMode = requiresRead(item.operations)
221
- ? await resolveScopedOperationMode({
222
- engine,
223
- database,
224
- table: item.table,
225
- operation: "read",
226
- authentication,
227
- })
228
- : undefined;
229
- const writeMode = requiresWrite(item.operations)
230
- ? await resolveScopedOperationMode({
231
- engine,
232
- database,
233
- table: item.table,
234
- operation: "write",
235
- authentication,
236
- })
237
- : undefined;
238
- resolved.push({
239
- table: item.table,
240
- operations: item.operations,
241
- ...(readMode ? { readMode } : {}),
242
- ...(writeMode ? { writeMode } : {}),
243
- });
244
- }
245
- return resolved;
246
- }
247
- async function resolveScopedOperationMode({ engine, database, table, operation, authentication, }) {
248
- const path = buildRulesPath({
249
- database,
250
- table,
251
- indexKey: "*",
252
- });
253
- const expanded = expandRulesOperation(operation);
254
- const direct = await Promise.all(expanded.map((item) => engine.evaluate({
255
- path,
256
- operation: item,
257
- authentication,
258
- server: false,
259
- })));
260
- const directAllowed = direct.every((result) => result.allowed);
261
- const restricted = expanded.some((item) => engine.hasScopedRestriction({
262
- database,
263
- table,
264
- operation: item,
265
- }));
266
- if (directAllowed && !restricted) {
267
- return "direct";
268
- }
269
- const denied = expanded.some((item) => engine.hasScopedDeny({
270
- database,
271
- table,
272
- operation: item,
273
- }));
274
- if (restricted && !denied) {
275
- return "functions";
276
- }
277
- const server = await Promise.all(expanded.map((item) => engine.evaluate({
278
- path,
279
- operation: item,
280
- authentication,
281
- server: true,
282
- })));
283
- return server.every((result) => result.allowed) ? "functions" : "none";
284
- }
285
- function resolveOverallMode(scopedModes, fallback) {
286
- if (scopedModes.length === 0) {
287
- return fallback;
288
- }
289
- if (scopedModes.every((mode) => mode === "direct")) {
290
- return "direct";
291
- }
292
- if (scopedModes.some((mode) => mode === "none")) {
293
- return "none";
294
- }
295
- return "functions";
296
- }
297
- function resolveTokenAuthorization(readMode, writeMode) {
298
- if (writeMode === "direct") {
299
- return "full-access";
300
- }
301
- if (readMode === "direct") {
302
- return "read-only";
303
- }
304
- return undefined;
305
- }
306
- function requiresRead(operations) {
307
- return operations.some((operation) => expandRulesOperation(operation).includes("get"));
308
- }
309
- function requiresWrite(operations) {
310
- return operations.some((operation) => {
311
- const expanded = expandRulesOperation(operation);
312
- return expanded.includes("create") || expanded.includes("update") || expanded.includes("delete");
313
- });
314
- }
315
- async function evaluateDatabaseWrite({ engine, path, authentication, server, }) {
316
- const results = await Promise.all(expandRulesOperation("write").map((operation) => {
317
- return engine.evaluate({
318
- path,
319
- operation,
320
- authentication,
321
- server,
322
- });
323
- }));
324
- return results.every((result) => result.allowed);
325
- }
326
- async function resolveDatabaseTokenAuthorization({ engine, database, authentication, }) {
327
- const access = await resolveDatabaseTokenAccess({
328
- engine,
329
- database,
330
- authentication,
331
- });
332
- return access?.authorization;
333
- }
334
- function normalizeRulesConfig(config) {
335
- if (!config) {
336
- return {
337
- version: "1",
338
- rules: {
339
- "database/**": {
340
- read: "deny",
341
- write: "deny",
342
- },
17
+ return new masamune_cloudflare_1.RulesEngine((0, masamune_cloudflare_1.isRulesConfig)(config) ? config : {
18
+ version: "1",
19
+ rules: {
20
+ "database/**": {
21
+ read: "deny",
22
+ write: "deny",
343
23
  },
344
- };
345
- }
346
- if (typeof config.version !== "string" || !isRecord(config.rules)) {
347
- throw new Error("Invalid rules config.");
348
- }
349
- for (const path of Object.keys(config.rules)) {
350
- validateRulePath(path);
351
- }
352
- return config;
353
- }
354
- function matchRulePath(rulePath, requestPath) {
355
- validateRulePath(rulePath);
356
- const ruleSegments = splitPath(rulePath);
357
- const requestSegments = splitPath(requestPath);
358
- const params = {};
359
- let literalSegments = 0;
360
- let namedWildcardSegments = 0;
361
- let wildcardSegments = 0;
362
- let deepWildcardSegments = 0;
363
- for (let i = 0; i < ruleSegments.length; i++) {
364
- const ruleSegment = ruleSegments[i];
365
- if (ruleSegment === "**") {
366
- deepWildcardSegments = 1;
367
- return {
368
- matched: true,
369
- rulePath,
370
- params,
371
- literalSegments,
372
- namedWildcardSegments,
373
- wildcardSegments,
374
- deepWildcardSegments,
375
- matchedSegments: requestSegments.length,
376
- };
377
- }
378
- const requestSegment = requestSegments[i];
379
- if (requestSegment === undefined) {
380
- return createUnmatched(rulePath);
381
- }
382
- if (ruleSegment === "*") {
383
- wildcardSegments++;
384
- continue;
385
- }
386
- const paramName = parseNamedPathParam(ruleSegment);
387
- if (paramName) {
388
- params[paramName] = requestSegment;
389
- namedWildcardSegments++;
390
- wildcardSegments++;
391
- continue;
392
- }
393
- if (ruleSegment !== requestSegment) {
394
- return createUnmatched(rulePath);
395
- }
396
- literalSegments++;
397
- }
398
- if (ruleSegments.length !== requestSegments.length) {
399
- return createUnmatched(rulePath);
400
- }
401
- return {
402
- matched: true,
403
- rulePath,
404
- params,
405
- literalSegments,
406
- namedWildcardSegments,
407
- wildcardSegments,
408
- deepWildcardSegments,
409
- matchedSegments: requestSegments.length,
410
- };
411
- }
412
- function compareRulePathMatch(a, b) {
413
- if (a.literalSegments !== b.literalSegments) {
414
- return b.literalSegments - a.literalSegments;
415
- }
416
- if (a.deepWildcardSegments !== b.deepWildcardSegments) {
417
- return a.deepWildcardSegments - b.deepWildcardSegments;
418
- }
419
- if (a.namedWildcardSegments !== b.namedWildcardSegments) {
420
- return b.namedWildcardSegments - a.namedWildcardSegments;
421
- }
422
- if (a.wildcardSegments !== b.wildcardSegments) {
423
- return a.wildcardSegments - b.wildcardSegments;
424
- }
425
- if (a.matchedSegments !== b.matchedSegments) {
426
- return b.matchedSegments - a.matchedSegments;
427
- }
428
- return a.rulePath.localeCompare(b.rulePath);
429
- }
430
- function resolveInheritedRule(matches) {
431
- const inherited = {};
432
- const inheritedParams = {};
433
- let rulePath = matches[0]?.rulePath ?? "";
434
- for (const match of [...matches].reverse()) {
435
- if (!match.entry) {
436
- continue;
437
- }
438
- rulePath = match.rulePath;
439
- for (const [operation, access] of Object.entries(match.entry)) {
440
- inherited[operation] = access;
441
- inheritedParams[operation] = match.params;
442
- }
443
- }
444
- return {
445
- rulePath,
446
- entry: inherited,
447
- params: inheritedParams,
448
- };
449
- }
450
- function resolveAccessRule(entry, params, operation) {
451
- for (const operationKey of resolveRulesOperation(operation)) {
452
- const access = entry[operationKey];
453
- if (access) {
454
- return {
455
- access,
456
- params: params[operationKey] ?? {},
457
- };
458
- }
459
- }
460
- return undefined;
461
- }
462
- function resolveRulesOperation(operation) {
463
- switch (operation) {
464
- case "get":
465
- return ["get", "read"];
466
- case "create":
467
- return ["create", "write"];
468
- case "update":
469
- return ["update", "write"];
470
- case "delete":
471
- return ["delete", "write"];
472
- }
473
- }
474
- async function evaluateAccessRule(access, authentication, fetchDocument, params = {}, server = false) {
475
- switch (access) {
476
- case "deny":
477
- return false;
478
- case "allow":
479
- return true;
480
- case "authenticated":
481
- return !!authentication?.uid;
482
- default:
483
- break;
484
- }
485
- if ("serverOnly" in access && access.serverOnly === true && !server) {
486
- return false;
487
- }
488
- switch (access.type) {
489
- case "serverOnly":
490
- return server;
491
- case "fieldMatch": {
492
- const uid = authentication?.uid;
493
- if (!uid || !fetchDocument) {
494
- return false;
495
- }
496
- const document = await fetchDocument();
497
- return document?.[access.field] === uid;
498
- }
499
- case "pathParamMatch": {
500
- const uid = authentication?.uid;
501
- return !!uid && params[access.param] === uid;
502
- }
503
- }
504
- }
505
- function validateRulePath(path) {
506
- if (path.length === 0 || path.startsWith("/") || path.endsWith("/")) {
507
- throw new Error(`Invalid rule path: ${path}`);
508
- }
509
- const segments = path.split("/");
510
- if (segments.some((segment) => segment.length === 0)) {
511
- throw new Error(`Invalid rule path: ${path}`);
512
- }
513
- const paramNames = new Set();
514
- for (const segment of segments) {
515
- if ((segment.startsWith("{") || segment.endsWith("}")) && !parseNamedPathParam(segment)) {
516
- throw new Error(`Invalid path parameter segment '${segment}' in rule path: ${path}`);
517
- }
518
- const paramName = parseNamedPathParam(segment);
519
- if (!paramName) {
520
- continue;
521
- }
522
- if (paramNames.has(paramName)) {
523
- throw new Error(`Duplicate path parameter '${paramName}' in rule path: ${path}`);
524
- }
525
- paramNames.add(paramName);
526
- }
527
- const deepWildcardIndex = segments.indexOf("**");
528
- if (deepWildcardIndex >= 0 && deepWildcardIndex !== segments.length - 1) {
529
- throw new Error(`'**' must be the last segment in rule path: ${path}`);
530
- }
531
- }
532
- function isRulePathInTableScope(rulePath, database, table) {
533
- const segments = splitPath(rulePath);
534
- if (segments.length <= 4) {
535
- return false;
536
- }
537
- return segmentMatches(segments[0], "database") &&
538
- segmentMatches(segments[1], database) &&
539
- segmentMatches(segments[2], "table") &&
540
- segmentMatches(segments[3], table);
541
- }
542
- function segmentMatches(ruleSegment, value) {
543
- if (!ruleSegment) {
544
- return false;
545
- }
546
- if (ruleSegment === "**") {
547
- return true;
548
- }
549
- return ruleSegment === "*" || !!parseNamedPathParam(ruleSegment) || ruleSegment === value;
550
- }
551
- function isDirectSafeScopeAccess(access) {
552
- return access === "allow";
553
- }
554
- function splitPath(path) {
555
- if (path.length === 0 || path.startsWith("/") || path.endsWith("/")) {
556
- return [];
557
- }
558
- return path.split("/");
559
- }
560
- function createUnmatched(rulePath) {
561
- return {
562
- matched: false,
563
- rulePath,
564
- params: {},
565
- literalSegments: 0,
566
- namedWildcardSegments: 0,
567
- wildcardSegments: 0,
568
- deepWildcardSegments: 0,
569
- matchedSegments: 0,
570
- };
571
- }
572
- function parseNamedPathParam(segment) {
573
- const match = /^\{([A-Za-z_][A-Za-z0-9_]*)\}$/.exec(segment);
574
- return match?.[1];
575
- }
576
- function encodePathSegment(segment) {
577
- if (segment.length === 0 || segment.includes("/")) {
578
- throw new Error(`Invalid path segment: ${segment}`);
579
- }
580
- return segment;
581
- }
582
- function isRecord(value) {
583
- return typeof value === "object" && value !== null;
24
+ },
25
+ });
584
26
  }
585
27
  //# sourceMappingURL=rules.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/lib/rules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/lib/rules.ts"],"names":[],"mappings":";;;AAwBA,wDAYC;AApCD,wEAOwC;AAExC,sEAUwC;AATtC,6HAAA,sBAAsB,OAAA;AACtB,qHAAA,cAAc,OAAA;AACd,2HAAA,oBAAoB,OAAA;AACpB,yHAAA,kBAAkB,OAAA;AAClB,0IAAA,mCAAmC,OAAA;AACnC,8HAAA,uBAAuB,OAAA;AACvB,iIAAA,0BAA0B,OAAA;AAC1B,wIAAA,iCAAiC,OAAA;AACjC,kHAAA,WAAW,OAAA;AAMb,SAAgB,sBAAsB,CACpC,MAA4D;IAE5D,OAAO,IAAI,iCAAW,CAAC,IAAA,mCAAa,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACtD,OAAO,EAAE,GAAG;QACZ,KAAK,EAAE;YACL,aAAa,EAAE;gBACb,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,MAAM;aACd;SACF;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -1,29 +1,11 @@
1
- import { WorkersOptions } from "@mathrunet/masamune_cloudflare";
1
+ import { RulesAccessMode, RulesAccessRule, RulesConfig, RulesEntry, RulesOperation, RulesOperationAlias, RulesOperationKey, RulesTokenTargetInput, RulesTokenTargetOutput, WorkersAuthContext, WorkersOptions } from "@mathrunet/masamune_cloudflare";
2
2
  export type TursoCrudMethod = "GET" | "POST" | "PUT" | "DELETE";
3
- export type RulesOperation = "get" | "create" | "update" | "delete";
4
- export type RulesOperationAlias = "read" | "write";
5
- export type RulesOperationKey = RulesOperation | RulesOperationAlias;
6
- export type RulesAccessRule = "deny" | "allow" | "authenticated" | {
7
- type: "serverOnly";
8
- } | {
9
- type: "fieldMatch";
10
- field: string;
11
- serverOnly?: boolean | undefined;
12
- } | {
13
- type: "pathParamMatch";
14
- param: string;
15
- serverOnly?: boolean | undefined;
16
- };
17
- export type RulesEntry = Partial<Record<RulesOperationKey, RulesAccessRule>>;
18
- export interface RulesConfig {
19
- version: string;
20
- rules: Record<string, RulesEntry>;
21
- }
3
+ export type { RulesAccessRule, RulesConfig, RulesEntry, RulesOperation, RulesOperationAlias, RulesOperationKey, };
22
4
  export interface TursoDatabaseConnection {
23
5
  url: string;
24
6
  authToken?: string | undefined;
25
7
  }
26
- export interface TursoWorkersOptions extends Omit<WorkersOptions, "rules"> {
8
+ export interface TursoWorkersOptions extends WorkersOptions {
27
9
  databaseNamePrefix?: string | undefined;
28
10
  organizationName?: string | undefined;
29
11
  groupName?: string | undefined;
@@ -32,7 +14,6 @@ export interface TursoWorkersOptions extends Omit<WorkersOptions, "rules"> {
32
14
  autoCreateTable?: boolean | undefined;
33
15
  autoMigrateAddColumns?: boolean | undefined;
34
16
  maxTtlSeconds?: number | undefined;
35
- rules?: RulesConfig | undefined;
36
17
  }
37
18
  export interface TursoRequestBody {
38
19
  database?: string | undefined;
@@ -53,21 +34,14 @@ export interface TursoOrderCondition {
53
34
  key?: string | undefined;
54
35
  descending?: boolean | undefined;
55
36
  }
56
- export interface TursoTokenScopeInput {
57
- table: string;
58
- operations: RulesOperationKey[];
59
- }
60
- export type TursoTokenAccessMode = "none" | "functions" | "direct";
61
- export interface TursoTokenScopeOutput extends TursoTokenScopeInput {
62
- readMode?: TursoTokenAccessMode | undefined;
63
- writeMode?: TursoTokenAccessMode | undefined;
64
- }
37
+ export type TursoTokenAccessMode = RulesAccessMode;
38
+ export type TursoTokenScopeInput = RulesTokenTargetInput;
39
+ export type TursoTokenScopeOutput = RulesTokenTargetOutput;
65
40
  export interface TursoTokenRequestBody {
66
41
  database?: string | undefined;
42
+ operations?: RulesOperationKey[] | undefined;
43
+ targets?: TursoTokenScopeInput[] | undefined;
67
44
  scope?: TursoTokenScopeInput[] | undefined;
68
45
  ttlSeconds?: number | undefined;
69
46
  }
70
- export interface AuthenticationContext {
71
- uid?: string | undefined;
72
- token?: unknown;
73
- }
47
+ export type AuthenticationContext = WorkersAuthContext;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mathrunet/masamune_cloudflare_turso",
3
- "version": "3.2.5",
3
+ "version": "3.2.7",
4
4
  "description": "Server-side package of the Masamune framework for working with Turso via Cloudflare.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -41,7 +41,7 @@
41
41
  "homepage": "https://github.com/mathrunet/node_masamune#readme",
42
42
  "dependencies": {
43
43
  "@mathrunet/masamune": "^3.10.2",
44
- "@mathrunet/masamune_cloudflare": "^3.1.7",
44
+ "@mathrunet/masamune_cloudflare": "^3.1.8",
45
45
  "@tursodatabase/serverless": "^1.2.3",
46
46
  "hono": "^4.12.27",
47
47
  "typescript": "^5.9.2"