@mathrunet/masamune_cloudflare_turso 3.5.5 → 3.5.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/README.md CHANGED
@@ -238,6 +238,14 @@ error.
238
238
  Automatic migration is intentionally limited to additive field changes.
239
239
 
240
240
  - New fields in `value` are added with `ALTER TABLE ADD COLUMN`.
241
+ - A `schemaManifest` applies all declared columns before reads as well as writes,
242
+ so a newly released filter/order does not race the first write.
243
+ - Direct-read token issuance applies the requested tables first, so Flutter
244
+ direct reads cannot bypass the migration.
245
+ - Concurrent `ADD COLUMN` attempts are idempotent; a duplicate-column result is
246
+ re-read and accepted only when the resulting type is compatible.
247
+ - A missing column whose first value is `null` is rejected instead of being
248
+ permanently inferred as `TEXT`. Supply a generated schema manifest first.
241
249
  - Existing fields are not migrated when their inferred type changes.
242
250
  - Field rename, field deletion, primary key changes, unique constraints, and foreign keys are not automatically migrated.
243
251
  - `PUT` and `DELETE` require `indexKey` or `where` to avoid accidental full-table changes.
@@ -261,6 +269,31 @@ CREATE TABLE IF NOT EXISTS table_name (
261
269
 
262
270
  Objects and arrays are stored as JSON strings.
263
271
 
272
+ Generated manifests have the following shape. `database` accepts an exact
273
+ logical database, `*`, or a `:parameter` pattern for per-user Turso databases.
274
+
275
+ ```ts
276
+ turso.Functions.turso({
277
+ schemaManifest: {
278
+ version: "1-a1b2c3d4",
279
+ tables: {
280
+ users: {
281
+ database: "*",
282
+ table: "users",
283
+ columns: [
284
+ { name: "name", type: "TEXT" },
285
+ { name: "age", type: "BIGINT" },
286
+ ],
287
+ },
288
+ },
289
+ },
290
+ });
291
+ ```
292
+
293
+ For releases, add nullable columns first, deploy the schema-aware Worker, then
294
+ release the app. Renames and required/type changes use dual-write, backfill,
295
+ read cutover, and delayed cleanup; automatic migration never drops columns.
296
+
264
297
  # Rules
265
298
 
266
299
  Rules are provided by `@mathrunet/masamune_cloudflare` and are shared with
@@ -6,6 +6,7 @@ const rules_1 = require("../lib/rules");
6
6
  const turso_client_1 = require("../lib/turso_client");
7
7
  const env_1 = require("../lib/env");
8
8
  const database_prefix_1 = require("../lib/database_prefix");
9
+ const schema_1 = require("../lib/schema");
9
10
  module.exports = (hono, options, data) => {
10
11
  hono.get("/", async (context) => handleCrud(context, options, "GET"));
11
12
  hono.get("/database/:database/:table", async (context) => handleCrud(context, options, "GET"));
@@ -30,7 +31,7 @@ async function handleCrud(context, options, method) {
30
31
  resolvedOptions = (0, env_1.resolveTursoWorkersOptionsFromEnv)(context, options);
31
32
  request = await (0, request_1.parseCrudRequest)(context);
32
33
  const crudRequest = request;
33
- const databaseOptions = (0, database_prefix_1.applyRequestDatabasePrefix)(resolvedOptions, crudRequest.prefix);
34
+ const databaseOptions = (0, database_prefix_1.resolveWorkerDatabasePrefix)(resolvedOptions, crudRequest.prefix, context.env?.FLAVOR);
34
35
  phase = "connect";
35
36
  const connection = await (0, turso_client_1.resolveDatabaseConnection)(crudRequest.database, databaseOptions);
36
37
  const connectedClient = (0, turso_client_1.createTursoClient)(connection);
@@ -68,6 +69,8 @@ async function handleCrud(context, options, method) {
68
69
  request: crudRequest,
69
70
  autoCreateTable: resolvedOptions.autoCreateTable !== false,
70
71
  autoMigrateAddColumns: resolvedOptions.autoMigrateAddColumns !== false,
72
+ declaredSchema: (0, schema_1.resolveTursoSchema)(resolvedOptions.schemaManifest, crudRequest.database, crudRequest.table),
73
+ schemaCacheKey: connection.url,
71
74
  });
72
75
  const response = method === "GET"
73
76
  ? await execute()
@@ -76,7 +79,7 @@ async function handleCrud(context, options, method) {
76
79
  }
77
80
  catch (error) {
78
81
  if (request && resolvedOptions && (0, turso_client_1.isTransientTursoError)(error)) {
79
- (0, turso_client_1.clearDatabaseConnectionCache)(request.database, (0, database_prefix_1.applyRequestDatabasePrefix)(resolvedOptions, request.prefix));
82
+ (0, turso_client_1.clearDatabaseConnectionCache)(request.database, (0, database_prefix_1.resolveWorkerDatabasePrefix)(resolvedOptions, request.prefix, context.env?.FLAVOR));
80
83
  (0, request_1.logServerError)(error, 503, {
81
84
  operation: "crud",
82
85
  phase,
@@ -1 +1 @@
1
- {"version":3,"file":"turso.js","sourceRoot":"","sources":["../../src/functions/turso.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"turso.js","sourceRoot":"","sources":["../../src/functions/turso.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,8 @@ const turso_client_1 = require("../lib/turso_client");
6
6
  const token_1 = require("../lib/token");
7
7
  const env_1 = require("../lib/env");
8
8
  const database_prefix_1 = require("../lib/database_prefix");
9
+ const schema_1 = require("../lib/schema");
10
+ const tokenSchemaApplications = new Map();
9
11
  module.exports = (hono, options, data) => {
10
12
  hono.post("/", async (context) => handleToken(context, options));
11
13
  hono.post("/database/:database", async (context) => handleToken(context, options));
@@ -19,7 +21,7 @@ async function handleToken(context, options) {
19
21
  const resolvedOptions = (0, env_1.resolveTursoWorkersOptionsFromEnv)(context, options);
20
22
  const request = await (0, request_1.parseTokenRequest)(context);
21
23
  database = request.database;
22
- const databaseOptions = (0, database_prefix_1.applyRequestDatabasePrefix)(resolvedOptions, request.prefix);
24
+ const databaseOptions = (0, database_prefix_1.resolveWorkerDatabasePrefix)(resolvedOptions, request.prefix, context.env?.FLAVOR);
23
25
  phase = "rules";
24
26
  const authentication = context.get("authentication");
25
27
  const engine = (0, rules_1.createTursoRulesEngine)(resolvedOptions.rules);
@@ -44,7 +46,58 @@ async function handleToken(context, options) {
44
46
  });
45
47
  }
46
48
  phase = "connect";
47
- const endpoint = await (0, turso_client_1.resolveDatabaseEndpoint)(request.database, databaseOptions);
49
+ const declaredSchemas = access.scopes
50
+ .filter((scope) => scope.readMode === "direct" || scope.writeMode === "direct")
51
+ .map((scope) => ({
52
+ table: scope.table,
53
+ schema: (0, schema_1.resolveTursoSchema)(resolvedOptions.schemaManifest, request.database, scope.table),
54
+ }))
55
+ .filter((item) => item.schema !== undefined);
56
+ let endpoint;
57
+ if (declaredSchemas.length > 0) {
58
+ phase = "schema";
59
+ const connection = await (0, turso_client_1.resolveDatabaseConnection)(request.database, databaseOptions);
60
+ const schemaClient = (0, turso_client_1.createTursoClient)(connection);
61
+ try {
62
+ if (connection.created) {
63
+ await (0, turso_client_1.waitForDatabaseReady)(schemaClient);
64
+ }
65
+ for (const item of declaredSchemas) {
66
+ const schema = item.schema;
67
+ const cacheKey = `${connection.url}\u0000${item.table}\u0000${schema.version}`;
68
+ let application = tokenSchemaApplications.get(cacheKey);
69
+ if (!application) {
70
+ application = (0, schema_1.ensureTableSchema)({
71
+ client: schemaClient,
72
+ table: item.table,
73
+ value: {},
74
+ autoCreateTable: resolvedOptions.autoCreateTable !== false,
75
+ autoMigrateAddColumns: resolvedOptions.autoMigrateAddColumns !== false,
76
+ declaredColumns: schema.columns,
77
+ schemaVersion: schema.version,
78
+ });
79
+ tokenSchemaApplications.set(cacheKey, application);
80
+ }
81
+ try {
82
+ await application;
83
+ }
84
+ catch (error) {
85
+ tokenSchemaApplications.delete(cacheKey);
86
+ throw error;
87
+ }
88
+ }
89
+ }
90
+ finally {
91
+ await schemaClient.close();
92
+ }
93
+ endpoint = { url: connection.url, created: connection.created };
94
+ if (connection.created) {
95
+ (0, turso_client_1.cacheDatabaseEndpoint)(request.database, databaseOptions, connection.url);
96
+ }
97
+ }
98
+ else {
99
+ endpoint = await (0, turso_client_1.resolveDatabaseEndpoint)(request.database, databaseOptions);
100
+ }
48
101
  phase = "issue-token";
49
102
  const token = await (0, token_1.issueDatabaseToken)({
50
103
  database: request.database,
@@ -52,7 +105,7 @@ async function handleToken(context, options) {
52
105
  ttlSeconds: request.ttlSeconds,
53
106
  options: databaseOptions,
54
107
  });
55
- if (endpoint.created) {
108
+ if (endpoint.created && declaredSchemas.length === 0) {
56
109
  phase = "database-ready";
57
110
  const client = (0, turso_client_1.createTursoClient)({
58
111
  url: endpoint.url,
@@ -1 +1 @@
1
- {"version":3,"file":"turso_token.js","sourceRoot":"","sources":["../../src/functions/turso_token.ts"],"names":[],"mappings":";;AAEA,4CAA8D;AAC9D,wCAGsB;AACtB,sDAK6B;AAC7B,wCAAkD;AAClD,oCAA+D;AAC/D,4DAAoE;AAEpE,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,KAAK,GAAG,OAAO,CAAC;IACpB,IAAI,QAA4B,CAAC;IACjC,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,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC5B,MAAM,eAAe,GAAG,IAAA,4CAA0B,EAChD,eAAe,EACf,OAAO,CAAC,MAAM,CACf,CAAC;QACF,KAAK,GAAG,OAAO,CAAC;QAChB,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,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1B,OAAO,OAAO,CAAC,IAAI,CAAC;gBAClB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,OAAO,EAAE,MAAM,CAAC,MAAM;gBACtB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,GAAG,SAAS,CAAC;QAClB,MAAM,QAAQ,GAAG,MAAM,IAAA,sCAAuB,EAC5C,OAAO,CAAC,QAAQ,EAChB,eAAe,CAChB,CAAC;QACF,KAAK,GAAG,aAAa,CAAC;QACtB,MAAM,KAAK,GAAG,MAAM,IAAA,0BAAkB,EAAC;YACrC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,OAAO,EAAE,eAAe;SACzB,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,KAAK,GAAG,gBAAgB,CAAC;YACzB,MAAM,MAAM,GAAG,IAAA,gCAAiB,EAAC;gBAC/B,GAAG,EAAE,QAAQ,CAAC,GAAG;gBACjB,SAAS,EAAE,KAAK,CAAC,KAAK;aACvB,CAAC,CAAC;YACH,IAAI,CAAC;gBACH,MAAM,IAAA,mCAAoB,EAAC,MAAM,CAAC,CAAC;YACrC,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC;YACD,IAAA,oCAAqB,EAAC,OAAO,CAAC,QAAQ,EAAE,eAAe,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC;YAClB,GAAG,KAAK;YACR,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,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,EAAE;YAC/B,SAAS,EAAE,OAAO;YAClB,KAAK;YACL,MAAM,EAAE,MAAM;YACd,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"turso_token.js","sourceRoot":"","sources":["../../src/functions/turso_token.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,16 @@
1
+ import { ColumnDefinition } from "./schema";
1
2
  import { TursoClient } from "./turso_client";
2
3
  import { TursoRequestBody } from "./types";
3
4
  export declare function fetchDocumentForRules(client: TursoClient, request: Required<Pick<TursoRequestBody, "database" | "table">> & TursoRequestBody): Promise<Record<string, unknown> | null>;
4
- export declare function executeCrud({ client, method, request, autoCreateTable, autoMigrateAddColumns, }: {
5
+ export declare function executeCrud({ client, method, request, autoCreateTable, autoMigrateAddColumns, declaredSchema, schemaCacheKey, }: {
5
6
  client: TursoClient;
6
7
  method: "GET" | "POST" | "PUT" | "DELETE";
7
8
  request: Required<Pick<TursoRequestBody, "database" | "table">> & TursoRequestBody;
8
9
  autoCreateTable: boolean;
9
10
  autoMigrateAddColumns: boolean;
11
+ declaredSchema?: {
12
+ columns: ColumnDefinition[];
13
+ version: string;
14
+ } | undefined;
15
+ schemaCacheKey?: string | undefined;
10
16
  }): Promise<unknown>;
package/dist/lib/crud.js CHANGED
@@ -4,6 +4,7 @@ exports.fetchDocumentForRules = fetchDocumentForRules;
4
4
  exports.executeCrud = executeCrud;
5
5
  const request_1 = require("./request");
6
6
  const schema_1 = require("./schema");
7
+ const declaredSchemaApplications = new Map();
7
8
  async function fetchDocumentForRules(client, request) {
8
9
  const rows = await selectRows(client, {
9
10
  ...request,
@@ -11,7 +12,30 @@ async function fetchDocumentForRules(client, request) {
11
12
  }, true);
12
13
  return rows[0] ?? null;
13
14
  }
14
- async function executeCrud({ client, method, request, autoCreateTable, autoMigrateAddColumns, }) {
15
+ async function executeCrud({ client, method, request, autoCreateTable, autoMigrateAddColumns, declaredSchema, schemaCacheKey, }) {
16
+ if (declaredSchema) {
17
+ const cacheKey = `${schemaCacheKey ?? request.database}\u0000${request.table}\u0000${declaredSchema.version}`;
18
+ let application = declaredSchemaApplications.get(cacheKey);
19
+ if (!application) {
20
+ application = (0, schema_1.ensureTableSchema)({
21
+ client,
22
+ table: request.table,
23
+ value: {},
24
+ autoCreateTable,
25
+ autoMigrateAddColumns,
26
+ declaredColumns: declaredSchema.columns,
27
+ schemaVersion: declaredSchema.version,
28
+ });
29
+ declaredSchemaApplications.set(cacheKey, application);
30
+ }
31
+ try {
32
+ await application;
33
+ }
34
+ catch (error) {
35
+ declaredSchemaApplications.delete(cacheKey);
36
+ throw error;
37
+ }
38
+ }
15
39
  switch (method) {
16
40
  case "GET":
17
41
  if (request.count) {
@@ -20,11 +44,11 @@ async function executeCrud({ client, method, request, autoCreateTable, autoMigra
20
44
  return await selectRows(client, request);
21
45
  case "POST":
22
46
  if (request.indexKey) {
23
- return await updateRows(client, request, autoCreateTable, autoMigrateAddColumns);
47
+ return await updateRows(client, request, autoCreateTable, autoMigrateAddColumns, declaredSchema);
24
48
  }
25
- return await insertRow(client, request, autoCreateTable, autoMigrateAddColumns);
49
+ return await insertRow(client, request, autoCreateTable, autoMigrateAddColumns, declaredSchema);
26
50
  case "PUT":
27
- return await updateRows(client, request, autoCreateTable, autoMigrateAddColumns);
51
+ return await updateRows(client, request, autoCreateTable, autoMigrateAddColumns, declaredSchema);
28
52
  case "DELETE":
29
53
  await deleteRows(client, request);
30
54
  return [];
@@ -53,7 +77,7 @@ async function countRows(client, request) {
53
77
  const count = row?.count;
54
78
  return typeof count === "number" ? count : Number(count ?? 0);
55
79
  }
56
- async function insertRow(client, request, autoCreateTable, autoMigrateAddColumns) {
80
+ async function insertRow(client, request, autoCreateTable, autoMigrateAddColumns, declaredSchema) {
57
81
  const value = requireValue(request.value);
58
82
  const now = Date.now();
59
83
  const row = {
@@ -83,6 +107,8 @@ async function insertRow(client, request, autoCreateTable, autoMigrateAddColumns
83
107
  value: row,
84
108
  autoCreateTable,
85
109
  autoMigrateAddColumns,
110
+ declaredColumns: declaredSchema?.columns,
111
+ schemaVersion: declaredSchema?.version,
86
112
  });
87
113
  result = await client.execute(statement);
88
114
  }
@@ -93,7 +119,7 @@ function isMissingTursoSchemaError(error) {
93
119
  return /(?:no such table|has no column named|no column named|unknown column)/i
94
120
  .test(message);
95
121
  }
96
- async function updateRows(client, request, autoCreateTable, autoMigrateAddColumns) {
122
+ async function updateRows(client, request, autoCreateTable, autoMigrateAddColumns, declaredSchema) {
97
123
  const value = requireValue(request.value);
98
124
  const row = {
99
125
  ...value,
@@ -105,6 +131,8 @@ async function updateRows(client, request, autoCreateTable, autoMigrateAddColumn
105
131
  value: row,
106
132
  autoCreateTable,
107
133
  autoMigrateAddColumns,
134
+ declaredColumns: declaredSchema?.columns,
135
+ schemaVersion: declaredSchema?.version,
108
136
  });
109
137
  const where = buildWhereClause(request);
110
138
  if (!where.sql) {
@@ -1 +1 @@
1
- {"version":3,"file":"crud.js","sourceRoot":"","sources":["../../src/lib/crud.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crud.js","sourceRoot":"","sources":["../../src/lib/crud.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import { TursoWorkersOptions } from "./types";
2
2
  export declare function normalizeDatabasePrefix(value: unknown): string | undefined;
3
3
  export declare function applyRequestDatabasePrefix(options: TursoWorkersOptions, prefix: string | undefined): TursoWorkersOptions;
4
+ export declare function resolveWorkerDatabasePrefix(options: TursoWorkersOptions, requestPrefix: string | undefined, flavor: unknown): TursoWorkersOptions;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.normalizeDatabasePrefix = normalizeDatabasePrefix;
4
4
  exports.applyRequestDatabasePrefix = applyRequestDatabasePrefix;
5
+ exports.resolveWorkerDatabasePrefix = resolveWorkerDatabasePrefix;
5
6
  const http_error_1 = require("./http_error");
6
7
  function normalizeDatabasePrefix(value) {
7
8
  if (value === undefined || value === null) {
@@ -28,4 +29,22 @@ function applyRequestDatabasePrefix(options, prefix) {
28
29
  databasePrefix: `${options.databasePrefix ?? ""}${prefix}`,
29
30
  };
30
31
  }
32
+ function resolveWorkerDatabasePrefix(options, requestPrefix, flavor) {
33
+ const resolvedFlavor = flavor === undefined ? "prod" : flavor;
34
+ if (resolvedFlavor !== "dev" && resolvedFlavor !== "prod") {
35
+ throw new http_error_1.HttpError(500, "Worker FLAVOR must be dev or prod.");
36
+ }
37
+ const expectedPrefix = resolvedFlavor === "dev" ? "dev_" : undefined;
38
+ if (requestPrefix !== expectedPrefix) {
39
+ throw new http_error_1.HttpError(400, `Request prefix does not match FLAVOR=${resolvedFlavor}.`);
40
+ }
41
+ if (options.databasePrefix !== undefined &&
42
+ options.databasePrefix !== expectedPrefix) {
43
+ throw new http_error_1.HttpError(500, `Server prefix does not match FLAVOR=${resolvedFlavor}.`);
44
+ }
45
+ return {
46
+ ...options,
47
+ databasePrefix: expectedPrefix,
48
+ };
49
+ }
31
50
  //# sourceMappingURL=database_prefix.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"database_prefix.js","sourceRoot":"","sources":["../../src/lib/database_prefix.ts"],"names":[],"mappings":";;AAGA,0DAiBC;AAED,gEAWC;AAjCD,6CAAyC;AAGzC,SAAgB,uBAAuB,CACrC,KAAc;IAEd,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,sBAAS,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,sBAAS,CAAC,GAAG,EAAE,mBAAmB,KAAK,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,GAAG,UAAU,GAAG,CAAC;AAC1B,CAAC;AAED,SAAgB,0BAA0B,CACxC,OAA4B,EAC5B,MAA0B;IAE1B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO;QACL,GAAG,OAAO;QACV,cAAc,EAAE,GAAG,OAAO,CAAC,cAAc,IAAI,EAAE,GAAG,MAAM,EAAE;KAC3D,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"database_prefix.js","sourceRoot":"","sources":["../../src/lib/database_prefix.ts"],"names":[],"mappings":";;AAGA,0DAiBC;AAED,gEAWC;AAED,kEA2BC;AA9DD,6CAAyC;AAGzC,SAAgB,uBAAuB,CACrC,KAAc;IAEd,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,sBAAS,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,sBAAS,CAAC,GAAG,EAAE,mBAAmB,KAAK,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,GAAG,UAAU,GAAG,CAAC;AAC1B,CAAC;AAED,SAAgB,0BAA0B,CACxC,OAA4B,EAC5B,MAA0B;IAE1B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO;QACL,GAAG,OAAO;QACV,cAAc,EAAE,GAAG,OAAO,CAAC,cAAc,IAAI,EAAE,GAAG,MAAM,EAAE;KAC3D,CAAC;AACJ,CAAC;AAED,SAAgB,2BAA2B,CACzC,OAA4B,EAC5B,aAAiC,EACjC,MAAe;IAEf,MAAM,cAAc,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9D,IAAI,cAAc,KAAK,KAAK,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;QAC1D,MAAM,IAAI,sBAAS,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,cAAc,GAAG,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,IAAI,aAAa,KAAK,cAAc,EAAE,CAAC;QACrC,MAAM,IAAI,sBAAS,CACjB,GAAG,EACH,wCAAwC,cAAc,GAAG,CAC1D,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS;QACpC,OAAO,CAAC,cAAc,KAAK,cAAc,EAAE,CAAC;QAC9C,MAAM,IAAI,sBAAS,CACjB,GAAG,EACH,uCAAuC,cAAc,GAAG,CACzD,CAAC;IACJ,CAAC;IACD,OAAO;QACL,GAAG,OAAO;QACV,cAAc,EAAE,cAAc;KAC/B,CAAC;AACJ,CAAC"}
@@ -1,15 +1,22 @@
1
1
  import { SqlValue, TursoClient } from "./turso_client";
2
+ import type { TursoSchemaManifest } from "./types";
2
3
  export interface ColumnDefinition {
3
4
  name: string;
4
5
  type: string;
5
6
  }
6
- export declare function ensureTableSchema({ client, table, value, autoCreateTable, autoMigrateAddColumns, }: {
7
+ export declare function ensureTableSchema({ client, table, value, autoCreateTable, autoMigrateAddColumns, declaredColumns, schemaVersion, }: {
7
8
  client: TursoClient;
8
9
  table: string;
9
10
  value: Record<string, unknown>;
10
11
  autoCreateTable: boolean;
11
12
  autoMigrateAddColumns: boolean;
13
+ declaredColumns?: readonly ColumnDefinition[] | undefined;
14
+ schemaVersion?: string | undefined;
12
15
  }): Promise<void>;
13
16
  export declare function encodeSqlValue(value: unknown): SqlValue;
14
17
  export declare function decodeRow(row: unknown, columns?: readonly string[]): Record<string, unknown>;
18
+ export declare function resolveTursoSchema(manifest: TursoSchemaManifest | undefined, database: string, table: string): {
19
+ columns: ColumnDefinition[];
20
+ version: string;
21
+ } | undefined;
15
22
  export declare function quoteIdentifier(identifier: string): string;
@@ -3,18 +3,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ensureTableSchema = ensureTableSchema;
4
4
  exports.encodeSqlValue = encodeSqlValue;
5
5
  exports.decodeRow = decodeRow;
6
+ exports.resolveTursoSchema = resolveTursoSchema;
6
7
  exports.quoteIdentifier = quoteIdentifier;
7
8
  const request_1 = require("./request");
8
9
  const reservedFields = new Set(["id", "created_at", "updated_at"]);
9
- async function ensureTableSchema({ client, table, value, autoCreateTable, autoMigrateAddColumns, }) {
10
+ async function ensureTableSchema({ client, table, value, autoCreateTable, autoMigrateAddColumns, declaredColumns, schemaVersion = "runtime", }) {
10
11
  const tableName = (0, request_1.validateIdentifier)(table, "table");
11
- const columns = buildColumnDefinitions(value);
12
+ const columns = buildColumnDefinitions(value, declaredColumns);
12
13
  if (autoCreateTable) {
13
14
  await createTableIfNotExists(client, tableName, columns);
14
- await createMigrationTableIfNotExists(client);
15
15
  }
16
16
  if (autoMigrateAddColumns) {
17
- await addMissingColumns(client, tableName, columns);
17
+ await createMigrationTableIfNotExists(client);
18
+ await addMissingColumns(client, tableName, columns, schemaVersion);
18
19
  }
19
20
  }
20
21
  function encodeSqlValue(value) {
@@ -67,15 +68,46 @@ function decodeSqlValue(value) {
67
68
  }
68
69
  return value;
69
70
  }
70
- function buildColumnDefinitions(value) {
71
- return Object.entries(value)
72
- .filter(([key]) => !reservedFields.has(key))
73
- .map(([key, item]) => ({
74
- name: (0, request_1.validateIdentifier)(key, "column"),
75
- type: inferSqlType(item),
76
- }));
71
+ function buildColumnDefinitions(value, declaredColumns = []) {
72
+ const columns = new Map();
73
+ for (const column of declaredColumns) {
74
+ const name = (0, request_1.validateIdentifier)(column.name, "column");
75
+ if (reservedFields.has(name)) {
76
+ continue;
77
+ }
78
+ columns.set(name, { name, type: normalizeDeclaredType(column.type) });
79
+ }
80
+ for (const [key, item] of Object.entries(value)) {
81
+ if (reservedFields.has(key) || columns.has(key)) {
82
+ continue;
83
+ }
84
+ columns.set(key, {
85
+ name: (0, request_1.validateIdentifier)(key, "column"),
86
+ type: inferSqlType(item, key),
87
+ });
88
+ }
89
+ return [...columns.values()];
90
+ }
91
+ function normalizeDeclaredType(type) {
92
+ const normalized = type.trim().toUpperCase();
93
+ if (/^(?:TINYINT|SMALLINT|MEDIUMINT|INT|INTEGER|BIGINT)(?:\b|\()/i.test(normalized)) {
94
+ return "INTEGER";
95
+ }
96
+ if (/^(?:FLOAT|DOUBLE|REAL|DECIMAL|NUMERIC)(?:\b|\()/i.test(normalized)) {
97
+ return "REAL";
98
+ }
99
+ if (/^(?:TEXT|CHAR|VARCHAR|JSON)(?:\b|\()/i.test(normalized)) {
100
+ return "TEXT";
101
+ }
102
+ if (normalized === "BLOB") {
103
+ return normalized;
104
+ }
105
+ throw new request_1.HttpError(400, `Unsupported Turso schema type: ${type}`);
77
106
  }
78
- function inferSqlType(value) {
107
+ function inferSqlType(value, column) {
108
+ if (value === null || value === undefined) {
109
+ throw new request_1.HttpError(400, `Cannot infer SQL type for column ${column} from null. Provide a schema manifest.`);
110
+ }
79
111
  if (typeof value === "number") {
80
112
  return Number.isInteger(value) ? "INTEGER" : "REAL";
81
113
  }
@@ -110,23 +142,35 @@ async function createMigrationTableIfNotExists(client) {
110
142
  "created_at INTEGER" +
111
143
  ")");
112
144
  }
113
- async function addMissingColumns(client, table, columns) {
145
+ async function addMissingColumns(client, table, columns, schemaVersion) {
114
146
  const existing = await getColumns(client, table);
115
147
  for (const column of columns) {
116
148
  const current = existing.get(column.name);
117
149
  if (!current) {
118
- await client.execute(`ALTER TABLE ${quoteIdentifier(table)} ADD COLUMN ${quoteIdentifier(column.name)} ${column.type}`);
150
+ try {
151
+ await client.execute(`ALTER TABLE ${quoteIdentifier(table)} ADD COLUMN ${quoteIdentifier(column.name)} ${column.type}`);
152
+ }
153
+ catch (error) {
154
+ if (!isDuplicateColumnError(error)) {
155
+ throw error;
156
+ }
157
+ const latest = await getColumns(client, table);
158
+ const migrated = latest.get(column.name);
159
+ if (!migrated || !isCompatibleType(migrated, column.type)) {
160
+ throw error;
161
+ }
162
+ }
119
163
  await client.execute({
120
164
  sql: "INSERT OR IGNORE INTO __masamune_schema_migrations " +
121
165
  "(id, database_name, table_name, column_name, column_type, operation, created_at) " +
122
166
  "VALUES (?, ?, ?, ?, ?, ?, ?)",
123
167
  args: [
124
- `${table}:${column.name}`,
168
+ `${schemaVersion}:${table}:${column.name}`,
125
169
  "",
126
170
  table,
127
171
  column.name,
128
172
  column.type,
129
- "add_column",
173
+ `add_column@${schemaVersion}`,
130
174
  Date.now(),
131
175
  ],
132
176
  });
@@ -137,6 +181,29 @@ async function addMissingColumns(client, table, columns) {
137
181
  }
138
182
  }
139
183
  }
184
+ function resolveTursoSchema(manifest, database, table) {
185
+ if (!manifest) {
186
+ return undefined;
187
+ }
188
+ const match = Object.values(manifest.tables).find((item) => item.table === table && matchesDatabase(item.database, database));
189
+ return match
190
+ ? { columns: match.columns.map((column) => ({ ...column })), version: manifest.version }
191
+ : undefined;
192
+ }
193
+ function matchesDatabase(pattern, database) {
194
+ if (pattern === "*") {
195
+ return true;
196
+ }
197
+ const source = pattern
198
+ .replace(/[.+?^${}()|[\]\\]/g, "\\$&")
199
+ .replace(/\*/g, ".*")
200
+ .replace(/:[A-Za-z_][A-Za-z0-9_]*/g, "[^/]+");
201
+ return new RegExp(`^${source}$`).test(database);
202
+ }
203
+ function isDuplicateColumnError(error) {
204
+ const message = error instanceof Error ? error.message : String(error);
205
+ return /duplicate column(?: name)?/i.test(message);
206
+ }
140
207
  async function getColumns(client, table) {
141
208
  const result = await client.execute(`PRAGMA table_info(${quoteIdentifier(table)})`);
142
209
  const columns = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/lib/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/lib/schema.ts"],"names":[],"mappings":"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"}
@@ -15,9 +15,23 @@ export interface TursoWorkersOptions extends WorkersOptions {
15
15
  autoCreateDatabase?: boolean | undefined;
16
16
  autoCreateTable?: boolean | undefined;
17
17
  autoMigrateAddColumns?: boolean | undefined;
18
+ schemaManifest?: TursoSchemaManifest | undefined;
18
19
  maxTtlSeconds?: number | undefined;
19
20
  serverTokenTtlSeconds?: number | undefined;
20
21
  }
22
+ export interface TursoSchemaColumn {
23
+ name: string;
24
+ type: string;
25
+ }
26
+ export interface TursoSchemaTable {
27
+ database: string;
28
+ table: string;
29
+ columns: TursoSchemaColumn[];
30
+ }
31
+ export interface TursoSchemaManifest {
32
+ version: string;
33
+ tables: Record<string, TursoSchemaTable>;
34
+ }
21
35
  export interface TursoRequestBody {
22
36
  database?: string | undefined;
23
37
  table?: string | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mathrunet/masamune_cloudflare_turso",
3
- "version": "3.5.5",
3
+ "version": "3.5.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",