@mathrunet/masamune_cloudflare_turso 3.5.4 → 3.5.6
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 +4 -1
- package/README.md +34 -1
- package/dist/functions/turso.js +17 -1
- package/dist/functions/turso.js.map +1 -1
- package/dist/functions/turso_token.js +61 -5
- package/dist/functions/turso_token.js.map +1 -1
- package/dist/lib/crud.d.ts +7 -1
- package/dist/lib/crud.js +34 -6
- package/dist/lib/crud.js.map +1 -1
- package/dist/lib/request.d.ts +9 -1
- package/dist/lib/request.js +16 -1
- package/dist/lib/request.js.map +1 -1
- package/dist/lib/schema.d.ts +8 -1
- package/dist/lib/schema.js +83 -16
- package/dist/lib/schema.js.map +1 -1
- package/dist/lib/types.d.ts +14 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
## 3.5.
|
|
1
|
+
## 3.5.5 (2026-08-05)
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
### chore
|
|
@@ -79,6 +79,7 @@
|
|
|
79
79
|
* Move development, requirements, and setup guide documents to masamune_asset_pipeline package. ([1aa4ccb](https://github.com/mathrunet/node_masamune/commit/1aa4ccb995791c34de7901e98554aaca80bf22cc))
|
|
80
80
|
* ReadMe changes. ([8e55b7d](https://github.com/mathrunet/node_masamune/commit/8e55b7d10d6d3f8f61ff09541fafbfb9ea52b73a))
|
|
81
81
|
* ReadMe creation. ([6f91ba9](https://github.com/mathrunet/node_masamune/commit/6f91ba97d8c8e3f7d41a6299d95e51a69b90fe1c))
|
|
82
|
+
* update README links to include masamune_functions_cloudflare for server-side function execution across multiple packages ([d3f8c32](https://github.com/mathrunet/node_masamune/commit/d3f8c322180fbdb8d8d65d2f93942cf82efcefff))
|
|
82
83
|
* update README with TursoDB deployment instructions and clarify database creation process; refactor Turso client to support concurrent writes and improve error handling; enhance tests for database validation and error scenarios ([fdc42da](https://github.com/mathrunet/node_masamune/commit/fdc42da0deb25907cdedd9aa84fabaac62b2161c))
|
|
83
84
|
|
|
84
85
|
### feat
|
|
@@ -103,6 +104,7 @@
|
|
|
103
104
|
* Add Markdown Report ([38506ac](https://github.com/mathrunet/node_masamune/commit/38506ac023a481163fed0154a6b90f372a4d9539))
|
|
104
105
|
* Add Market Research Action ([a41d85b](https://github.com/mathrunet/node_masamune/commit/a41d85bee88fe9d23952f281b3ca8d5390bbb15c))
|
|
105
106
|
* add marketing pipeline for data collection and scheduling, and update short video generation tests to include narration and BGM. ([4020466](https://github.com/mathrunet/node_masamune/commit/402046616c18ae3c65fe0eb43e1a103a95f1cc04))
|
|
107
|
+
* add masamune_cloudflare_auth package for Firebase Authentication support; includes functions for user deletion, configuration files, and initial tests ([db58e70](https://github.com/mathrunet/node_masamune/commit/db58e708b76c09d099b748a1c4a87810069408a6))
|
|
106
108
|
* Add masamune_store_asset. ([9f6e45f](https://github.com/mathrunet/node_masamune/commit/9f6e45febae9330196978e4e04218a78fdcaf547))
|
|
107
109
|
* Add multimodal text generation and related workflows for image, video, and music generation ([875acbc](https://github.com/mathrunet/node_masamune/commit/875acbc906cb8f6cf31dfb39168195d097b4bab2))
|
|
108
110
|
* Add PDF creation function. ([de349b3](https://github.com/mathrunet/node_masamune/commit/de349b382bacd325929b2c6fa8330dbe7fe12b98))
|
|
@@ -339,6 +341,7 @@
|
|
|
339
341
|
* Update Android adaptive icon size to 1024px for foreground and background generation. ([62b23d0](https://github.com/mathrunet/node_masamune/commit/62b23d05e2289053819cbe9002ca0edf50934075))
|
|
340
342
|
* Update converter implementations to use a single result variable instead of an object for storing results ([3dd647f](https://github.com/mathrunet/node_masamune/commit/3dd647fccc5656346f93584b9161438ec2d0eb57))
|
|
341
343
|
* Update dependency versions for `@mathrunet/katana` ([d4a9aea](https://github.com/mathrunet/node_masamune/commit/d4a9aeadb6541d808618098c5a4b2eaf72bf7d50))
|
|
344
|
+
* update README links to masamune_functions_cloudflare; enhance error logging in TiDB and Turso functions for better debugging and response handling ([97dd4a6](https://github.com/mathrunet/node_masamune/commit/97dd4a65e7677d185de895dcb38ad4645623abd6))
|
|
342
345
|
* Update test environment variable files and .gitignore for asset generation ([03a1979](https://github.com/mathrunet/node_masamune/commit/03a1979dedae29c33f420cd2d6dcfbff92a9321f))
|
|
343
346
|
* Update version to 3.9.9 and add ModelFieldValueConvert class for data conversion with geoHash functionality ([c1f3265](https://github.com/mathrunet/node_masamune/commit/c1f3265fb063df1c303e9e96b7bad372964f19be))
|
|
344
347
|
* ver.1.6.5. ([33bb2ec](https://github.com/mathrunet/node_masamune/commit/33bb2ec9f27c208926b093699d65d1c74ad854e7))
|
package/README.md
CHANGED
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
|
|
33
33
|
Just load the package in index.ts and pass the predefined data to the methods to implement the server side.
|
|
34
34
|
|
|
35
|
-
Also, [
|
|
35
|
+
Also, [masamune_functions_cloudflare](https://pub.dev/packages/masamune_functions_cloudflare) can be used to execute server-side functions from methods defined on the client side, allowing for safe implementation.
|
|
36
36
|
|
|
37
37
|
# Installation
|
|
38
38
|
|
|
@@ -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
|
package/dist/functions/turso.js
CHANGED
|
@@ -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"));
|
|
@@ -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()
|
|
@@ -77,6 +80,13 @@ async function handleCrud(context, options, method) {
|
|
|
77
80
|
catch (error) {
|
|
78
81
|
if (request && resolvedOptions && (0, turso_client_1.isTransientTursoError)(error)) {
|
|
79
82
|
(0, turso_client_1.clearDatabaseConnectionCache)(request.database, (0, database_prefix_1.applyRequestDatabasePrefix)(resolvedOptions, request.prefix));
|
|
83
|
+
(0, request_1.logServerError)(error, 503, {
|
|
84
|
+
operation: "crud",
|
|
85
|
+
phase,
|
|
86
|
+
method,
|
|
87
|
+
database: request.database,
|
|
88
|
+
table: request.table,
|
|
89
|
+
});
|
|
80
90
|
return context.json({
|
|
81
91
|
error: error instanceof Error ? error.message : String(error),
|
|
82
92
|
phase,
|
|
@@ -84,7 +94,13 @@ async function handleCrud(context, options, method) {
|
|
|
84
94
|
table: request.table,
|
|
85
95
|
}, 503);
|
|
86
96
|
}
|
|
87
|
-
return (0, request_1.jsonError)(context, error
|
|
97
|
+
return (0, request_1.jsonError)(context, error, {
|
|
98
|
+
operation: "crud",
|
|
99
|
+
phase,
|
|
100
|
+
method,
|
|
101
|
+
database: request?.database,
|
|
102
|
+
table: request?.table,
|
|
103
|
+
});
|
|
88
104
|
}
|
|
89
105
|
finally {
|
|
90
106
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turso.js","sourceRoot":"","sources":["../../src/functions/turso.ts"],"names":[],"mappings":";;AAQA,sCAAiE;AACjE,
|
|
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));
|
|
@@ -14,9 +16,11 @@ module.exports = (hono, options, data) => {
|
|
|
14
16
|
};
|
|
15
17
|
async function handleToken(context, options) {
|
|
16
18
|
let phase = "parse";
|
|
19
|
+
let database;
|
|
17
20
|
try {
|
|
18
21
|
const resolvedOptions = (0, env_1.resolveTursoWorkersOptionsFromEnv)(context, options);
|
|
19
22
|
const request = await (0, request_1.parseTokenRequest)(context);
|
|
23
|
+
database = request.database;
|
|
20
24
|
const databaseOptions = (0, database_prefix_1.applyRequestDatabasePrefix)(resolvedOptions, request.prefix);
|
|
21
25
|
phase = "rules";
|
|
22
26
|
const authentication = context.get("authentication");
|
|
@@ -42,7 +46,58 @@ async function handleToken(context, options) {
|
|
|
42
46
|
});
|
|
43
47
|
}
|
|
44
48
|
phase = "connect";
|
|
45
|
-
const
|
|
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
|
+
}
|
|
46
101
|
phase = "issue-token";
|
|
47
102
|
const token = await (0, token_1.issueDatabaseToken)({
|
|
48
103
|
database: request.database,
|
|
@@ -50,7 +105,7 @@ async function handleToken(context, options) {
|
|
|
50
105
|
ttlSeconds: request.ttlSeconds,
|
|
51
106
|
options: databaseOptions,
|
|
52
107
|
});
|
|
53
|
-
if (endpoint.created) {
|
|
108
|
+
if (endpoint.created && declaredSchemas.length === 0) {
|
|
54
109
|
phase = "database-ready";
|
|
55
110
|
const client = (0, turso_client_1.createTursoClient)({
|
|
56
111
|
url: endpoint.url,
|
|
@@ -74,11 +129,12 @@ async function handleToken(context, options) {
|
|
|
74
129
|
});
|
|
75
130
|
}
|
|
76
131
|
catch (error) {
|
|
77
|
-
|
|
132
|
+
return (0, request_1.jsonError)(context, error, {
|
|
133
|
+
operation: "token",
|
|
78
134
|
phase,
|
|
79
|
-
|
|
135
|
+
method: "POST",
|
|
136
|
+
database,
|
|
80
137
|
});
|
|
81
|
-
return (0, request_1.jsonError)(context, error);
|
|
82
138
|
}
|
|
83
139
|
}
|
|
84
140
|
//# sourceMappingURL=turso_token.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turso_token.js","sourceRoot":"","sources":["../../src/functions/turso_token.ts"],"names":[],"mappings":";;AAEA,4CAA8D;AAC9D,wCAGsB;AACtB,
|
|
1
|
+
{"version":3,"file":"turso_token.js","sourceRoot":"","sources":["../../src/functions/turso_token.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/crud.d.ts
CHANGED
|
@@ -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) {
|
package/dist/lib/crud.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crud.js","sourceRoot":"","sources":["../../src/lib/crud.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"crud.js","sourceRoot":"","sources":["../../src/lib/crud.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/request.d.ts
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import { Context } from "hono";
|
|
2
2
|
import { TursoRequestBody, TursoTokenRequestBody } from "./types";
|
|
3
3
|
export { HttpError } from "./http_error";
|
|
4
|
+
export type TursoServerErrorLogDetails = Readonly<{
|
|
5
|
+
operation?: string;
|
|
6
|
+
phase?: string;
|
|
7
|
+
method?: string;
|
|
8
|
+
database?: string;
|
|
9
|
+
table?: string;
|
|
10
|
+
}>;
|
|
4
11
|
export declare function parseCrudRequest(context: Context): Promise<Required<Pick<TursoRequestBody, "database" | "table">> & TursoRequestBody>;
|
|
5
12
|
export declare function parseTokenRequest(context: Context): Promise<Required<Pick<TursoTokenRequestBody, "database">> & TursoTokenRequestBody>;
|
|
6
13
|
export declare function validateIdentifier(value: string, label: string): string;
|
|
7
14
|
export declare function validateLogicalName(value: string, label: string): string;
|
|
8
15
|
export declare function validateIndexKey(value: string): string;
|
|
9
|
-
export declare function
|
|
16
|
+
export declare function logServerError(error: unknown, status: number, details?: TursoServerErrorLogDetails): void;
|
|
17
|
+
export declare function jsonError(context: Context, error: unknown, details?: TursoServerErrorLogDetails): Response;
|
package/dist/lib/request.js
CHANGED
|
@@ -6,6 +6,7 @@ exports.parseTokenRequest = parseTokenRequest;
|
|
|
6
6
|
exports.validateIdentifier = validateIdentifier;
|
|
7
7
|
exports.validateLogicalName = validateLogicalName;
|
|
8
8
|
exports.validateIndexKey = validateIndexKey;
|
|
9
|
+
exports.logServerError = logServerError;
|
|
9
10
|
exports.jsonError = jsonError;
|
|
10
11
|
const database_prefix_1 = require("./database_prefix");
|
|
11
12
|
const http_error_1 = require("./http_error");
|
|
@@ -89,13 +90,27 @@ function validateIndexKey(value) {
|
|
|
89
90
|
}
|
|
90
91
|
return value;
|
|
91
92
|
}
|
|
92
|
-
function
|
|
93
|
+
function logServerError(error, status, details = {}) {
|
|
94
|
+
if (status < 500) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
console.error("Turso request failed", {
|
|
98
|
+
status,
|
|
99
|
+
...details,
|
|
100
|
+
error: error instanceof Error ? error.message : String(error),
|
|
101
|
+
...(error instanceof Error && error.stack ? { stack: error.stack } : {}),
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
function jsonError(context, error, details = {}) {
|
|
93
105
|
if (error instanceof http_error_1.HttpError) {
|
|
106
|
+
logServerError(error, error.status, details);
|
|
94
107
|
return context.json({ error: error.message }, error.status);
|
|
95
108
|
}
|
|
96
109
|
if (error instanceof Error) {
|
|
110
|
+
logServerError(error, 500, details);
|
|
97
111
|
return context.json({ error: error.message }, 500);
|
|
98
112
|
}
|
|
113
|
+
logServerError(error, 500, details);
|
|
99
114
|
return context.json({ error: "Internal Server Error" }, 500);
|
|
100
115
|
}
|
|
101
116
|
function parseGetRequest(context) {
|
package/dist/lib/request.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/lib/request.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/lib/request.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/schema.d.ts
CHANGED
|
@@ -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;
|
package/dist/lib/schema.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
72
|
-
|
|
73
|
-
.
|
|
74
|
-
|
|
75
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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();
|
package/dist/lib/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/lib/schema.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/lib/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -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