@mathrunet/masamune_cloudflare_turso 3.5.0 → 3.5.1
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 +1 -1
- package/README.md +13 -0
- package/dist/functions/turso.js +5 -3
- package/dist/functions/turso.js.map +1 -1
- package/dist/functions/turso_token.js +5 -3
- package/dist/functions/turso_token.js.map +1 -1
- package/dist/lib/database_prefix.d.ts +3 -0
- package/dist/lib/database_prefix.js +31 -0
- package/dist/lib/database_prefix.js.map +1 -0
- package/dist/lib/http_error.d.ts +4 -0
- package/dist/lib/http_error.js +12 -0
- package/dist/lib/http_error.js.map +1 -0
- package/dist/lib/request.d.ts +1 -4
- package/dist/lib/request.js +26 -25
- package/dist/lib/request.js.map +1 -1
- package/dist/lib/types.d.ts +2 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -124,6 +124,19 @@ Collection queries can pass `where`, `orderBy`, and `limit`.
|
|
|
124
124
|
/turso/database/main/users?where=[{"type":"equalTo","key":"name","value":"Alice"}]&orderBy=[{"key":"created_at","descending":true}]&limit=20
|
|
125
125
|
```
|
|
126
126
|
|
|
127
|
+
Clients may pass `prefix` to select a separate physical database while keeping
|
|
128
|
+
the logical path used by rules unchanged. Prefixes are trimmed, trailing
|
|
129
|
+
underscores are removed, and exactly one underscore is appended.
|
|
130
|
+
|
|
131
|
+
```text
|
|
132
|
+
/turso/database/main/users?prefix=dev
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
This request authorizes `main/users` and connects to `dev_main`. The token
|
|
136
|
+
endpoint accepts the same value in its JSON body, so CRUD and direct tokens
|
|
137
|
+
always resolve the same physical database. A missing, empty, or underscore-only
|
|
138
|
+
prefix keeps the existing database name.
|
|
139
|
+
|
|
127
140
|
Supported `where` types are `equalTo`, `notEqualTo`, `lessThan`,
|
|
128
141
|
`lessThanOrEqualTo`, `greaterThan`, `greaterThanOrEqualTo`, `whereIn`,
|
|
129
142
|
`whereNotIn`, `isNull`, `isNotNull`, and `like`.
|
package/dist/functions/turso.js
CHANGED
|
@@ -5,6 +5,7 @@ const request_1 = require("../lib/request");
|
|
|
5
5
|
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
|
+
const database_prefix_1 = require("../lib/database_prefix");
|
|
8
9
|
module.exports = (hono, options, data) => {
|
|
9
10
|
hono.get("/", async (context) => handleCrud(context, options, "GET"));
|
|
10
11
|
hono.get("/database/:database/:table", async (context) => handleCrud(context, options, "GET"));
|
|
@@ -28,8 +29,9 @@ async function handleCrud(context, options, method) {
|
|
|
28
29
|
resolvedOptions = (0, env_1.resolveTursoWorkersOptionsFromEnv)(context, options);
|
|
29
30
|
request = await (0, request_1.parseCrudRequest)(context);
|
|
30
31
|
const crudRequest = request;
|
|
32
|
+
const databaseOptions = (0, database_prefix_1.applyRequestDatabasePrefix)(resolvedOptions, crudRequest.prefix);
|
|
31
33
|
phase = "connect";
|
|
32
|
-
const connection = await (0, turso_client_1.resolveDatabaseConnection)(crudRequest.database,
|
|
34
|
+
const connection = await (0, turso_client_1.resolveDatabaseConnection)(crudRequest.database, databaseOptions);
|
|
33
35
|
const client = (0, turso_client_1.createTursoClient)(connection);
|
|
34
36
|
const engine = (0, rules_1.createTursoRulesEngine)(resolvedOptions.rules);
|
|
35
37
|
const authentication = context.get("authentication");
|
|
@@ -55,7 +57,7 @@ async function handleCrud(context, options, method) {
|
|
|
55
57
|
if (connection.created) {
|
|
56
58
|
phase = "database-ready";
|
|
57
59
|
await (0, turso_client_1.waitForDatabaseReady)(client);
|
|
58
|
-
(0, turso_client_1.cacheDatabaseConnection)(crudRequest.database,
|
|
60
|
+
(0, turso_client_1.cacheDatabaseConnection)(crudRequest.database, databaseOptions, connection);
|
|
59
61
|
}
|
|
60
62
|
phase = method === "POST" ? "create-table-or-insert" : "execute";
|
|
61
63
|
const response = await (0, crud_1.executeCrud)({
|
|
@@ -69,7 +71,7 @@ async function handleCrud(context, options, method) {
|
|
|
69
71
|
}
|
|
70
72
|
catch (error) {
|
|
71
73
|
if (request && resolvedOptions && (0, turso_client_1.isTransientTursoError)(error)) {
|
|
72
|
-
(0, turso_client_1.clearDatabaseConnectionCache)(request.database, resolvedOptions);
|
|
74
|
+
(0, turso_client_1.clearDatabaseConnectionCache)(request.database, (0, database_prefix_1.applyRequestDatabasePrefix)(resolvedOptions, request.prefix));
|
|
73
75
|
return context.json({
|
|
74
76
|
error: error instanceof Error ? error.message : String(error),
|
|
75
77
|
phase,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turso.js","sourceRoot":"","sources":["../../src/functions/turso.ts"],"names":[],"mappings":";;AAQA,sCAAiE;AACjE,4CAA6D;AAC7D,wCAIsB;AACtB,sDAO6B;AAC7B,oCAA+D;
|
|
1
|
+
{"version":3,"file":"turso.js","sourceRoot":"","sources":["../../src/functions/turso.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ const rules_1 = require("../lib/rules");
|
|
|
5
5
|
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
|
+
const database_prefix_1 = require("../lib/database_prefix");
|
|
8
9
|
module.exports = (hono, options, data) => {
|
|
9
10
|
hono.post("/", async (context) => handleToken(context, options));
|
|
10
11
|
hono.post("/database/:database", async (context) => handleToken(context, options));
|
|
@@ -16,13 +17,14 @@ async function handleToken(context, options) {
|
|
|
16
17
|
try {
|
|
17
18
|
const resolvedOptions = (0, env_1.resolveTursoWorkersOptionsFromEnv)(context, options);
|
|
18
19
|
const request = await (0, request_1.parseTokenRequest)(context);
|
|
20
|
+
const databaseOptions = (0, database_prefix_1.applyRequestDatabasePrefix)(resolvedOptions, request.prefix);
|
|
19
21
|
phase = "connect";
|
|
20
|
-
const connection = await (0, turso_client_1.resolveDatabaseConnection)(request.database,
|
|
22
|
+
const connection = await (0, turso_client_1.resolveDatabaseConnection)(request.database, databaseOptions);
|
|
21
23
|
if (connection.created) {
|
|
22
24
|
phase = "database-ready";
|
|
23
25
|
const client = (0, turso_client_1.createTursoClient)(connection);
|
|
24
26
|
await (0, turso_client_1.waitForDatabaseReady)(client);
|
|
25
|
-
(0, turso_client_1.cacheDatabaseConnection)(request.database,
|
|
27
|
+
(0, turso_client_1.cacheDatabaseConnection)(request.database, databaseOptions, connection);
|
|
26
28
|
}
|
|
27
29
|
phase = "rules";
|
|
28
30
|
const authentication = context.get("authentication");
|
|
@@ -45,7 +47,7 @@ async function handleToken(context, options) {
|
|
|
45
47
|
database: request.database,
|
|
46
48
|
authorization: access.authorization,
|
|
47
49
|
ttlSeconds: request.ttlSeconds,
|
|
48
|
-
options:
|
|
50
|
+
options: databaseOptions,
|
|
49
51
|
})
|
|
50
52
|
: undefined;
|
|
51
53
|
return context.json({
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"turso_token.js","sourceRoot":"","sources":["../../src/functions/turso_token.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeDatabasePrefix = normalizeDatabasePrefix;
|
|
4
|
+
exports.applyRequestDatabasePrefix = applyRequestDatabasePrefix;
|
|
5
|
+
const http_error_1 = require("./http_error");
|
|
6
|
+
function normalizeDatabasePrefix(value) {
|
|
7
|
+
if (value === undefined || value === null) {
|
|
8
|
+
return undefined;
|
|
9
|
+
}
|
|
10
|
+
if (typeof value !== "string") {
|
|
11
|
+
throw new http_error_1.HttpError(400, "prefix must be a string.");
|
|
12
|
+
}
|
|
13
|
+
const normalized = value.trim().replace(/_+$/, "");
|
|
14
|
+
if (normalized.length === 0) {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
if (!/^[A-Za-z0-9_-]+$/.test(normalized)) {
|
|
18
|
+
throw new http_error_1.HttpError(400, `Invalid prefix: ${value}`);
|
|
19
|
+
}
|
|
20
|
+
return `${normalized}_`;
|
|
21
|
+
}
|
|
22
|
+
function applyRequestDatabasePrefix(options, prefix) {
|
|
23
|
+
if (!prefix) {
|
|
24
|
+
return options;
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
...options,
|
|
28
|
+
databasePrefix: `${options.databasePrefix ?? ""}${prefix}`,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=database_prefix.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HttpError = void 0;
|
|
4
|
+
class HttpError extends Error {
|
|
5
|
+
status;
|
|
6
|
+
constructor(status, message) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.status = status;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.HttpError = HttpError;
|
|
12
|
+
//# sourceMappingURL=http_error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http_error.js","sourceRoot":"","sources":["../../src/lib/http_error.ts"],"names":[],"mappings":";;;AAAA,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"}
|
package/dist/lib/request.d.ts
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { Context } from "hono";
|
|
2
2
|
import { TursoRequestBody, TursoTokenRequestBody } from "./types";
|
|
3
|
-
export
|
|
4
|
-
readonly status: number;
|
|
5
|
-
constructor(status: number, message: string);
|
|
6
|
-
}
|
|
3
|
+
export { HttpError } from "./http_error";
|
|
7
4
|
export declare function parseCrudRequest(context: Context): Promise<Required<Pick<TursoRequestBody, "database" | "table">> & TursoRequestBody>;
|
|
8
5
|
export declare function parseTokenRequest(context: Context): Promise<Required<Pick<TursoTokenRequestBody, "database">> & TursoTokenRequestBody>;
|
|
9
6
|
export declare function validateIdentifier(value: string, label: string): string;
|
package/dist/lib/request.js
CHANGED
|
@@ -7,15 +7,11 @@ exports.validateIdentifier = validateIdentifier;
|
|
|
7
7
|
exports.validateLogicalName = validateLogicalName;
|
|
8
8
|
exports.validateIndexKey = validateIndexKey;
|
|
9
9
|
exports.jsonError = jsonError;
|
|
10
|
+
const database_prefix_1 = require("./database_prefix");
|
|
11
|
+
const http_error_1 = require("./http_error");
|
|
12
|
+
var http_error_2 = require("./http_error");
|
|
13
|
+
Object.defineProperty(exports, "HttpError", { enumerable: true, get: function () { return http_error_2.HttpError; } });
|
|
10
14
|
const identifierPattern = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
11
|
-
class HttpError extends Error {
|
|
12
|
-
status;
|
|
13
|
-
constructor(status, message) {
|
|
14
|
-
super(message);
|
|
15
|
-
this.status = status;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
exports.HttpError = HttpError;
|
|
19
15
|
async function parseCrudRequest(context) {
|
|
20
16
|
const method = context.req.method.toUpperCase();
|
|
21
17
|
const pathDatabase = optionalParam(context, "database");
|
|
@@ -34,6 +30,7 @@ async function parseCrudRequest(context) {
|
|
|
34
30
|
const orderBy = validateOrderBy(body.orderBy ?? []);
|
|
35
31
|
const limit = validateLimit(body.limit);
|
|
36
32
|
const value = body.value === undefined ? undefined : validateValue(body.value);
|
|
33
|
+
const prefix = (0, database_prefix_1.normalizeDatabasePrefix)(body.prefix);
|
|
37
34
|
return {
|
|
38
35
|
...body,
|
|
39
36
|
database,
|
|
@@ -44,6 +41,7 @@ async function parseCrudRequest(context) {
|
|
|
44
41
|
limit,
|
|
45
42
|
value,
|
|
46
43
|
count: body.count === true,
|
|
44
|
+
...(prefix ? { prefix } : {}),
|
|
47
45
|
};
|
|
48
46
|
}
|
|
49
47
|
async function parseTokenRequest(context) {
|
|
@@ -55,7 +53,7 @@ async function parseTokenRequest(context) {
|
|
|
55
53
|
: undefined;
|
|
56
54
|
const targets = (body.targets ?? body.scope)?.map((item) => {
|
|
57
55
|
if (!item || typeof item !== "object") {
|
|
58
|
-
throw new HttpError(400, "targets item must be an object.");
|
|
56
|
+
throw new http_error_1.HttpError(400, "targets item must be an object.");
|
|
59
57
|
}
|
|
60
58
|
const table = validateIdentifier(requiredString(item.table, "targets.table"), "targets.table");
|
|
61
59
|
const operations = validateOperations(item.operations, "targets.operations");
|
|
@@ -64,33 +62,35 @@ async function parseTokenRequest(context) {
|
|
|
64
62
|
operations,
|
|
65
63
|
};
|
|
66
64
|
});
|
|
65
|
+
const prefix = (0, database_prefix_1.normalizeDatabasePrefix)(body.prefix);
|
|
67
66
|
return {
|
|
68
67
|
...body,
|
|
69
68
|
database,
|
|
70
69
|
...(operations ? { operations } : {}),
|
|
71
70
|
...(targets ? { targets, scope: targets } : {}),
|
|
71
|
+
...(prefix ? { prefix } : {}),
|
|
72
72
|
};
|
|
73
73
|
}
|
|
74
74
|
function validateIdentifier(value, label) {
|
|
75
75
|
if (!identifierPattern.test(value)) {
|
|
76
|
-
throw new HttpError(400, `Invalid ${label}: ${value}`);
|
|
76
|
+
throw new http_error_1.HttpError(400, `Invalid ${label}: ${value}`);
|
|
77
77
|
}
|
|
78
78
|
return value;
|
|
79
79
|
}
|
|
80
80
|
function validateLogicalName(value, label) {
|
|
81
81
|
if (!/^[A-Za-z0-9_-]+$/.test(value)) {
|
|
82
|
-
throw new HttpError(400, `Invalid ${label}: ${value}`);
|
|
82
|
+
throw new http_error_1.HttpError(400, `Invalid ${label}: ${value}`);
|
|
83
83
|
}
|
|
84
84
|
return value;
|
|
85
85
|
}
|
|
86
86
|
function validateIndexKey(value) {
|
|
87
87
|
if (value.length === 0 || value.includes("/")) {
|
|
88
|
-
throw new HttpError(400, `Invalid indexKey: ${value}`);
|
|
88
|
+
throw new http_error_1.HttpError(400, `Invalid indexKey: ${value}`);
|
|
89
89
|
}
|
|
90
90
|
return value;
|
|
91
91
|
}
|
|
92
92
|
function jsonError(context, error) {
|
|
93
|
-
if (error instanceof HttpError) {
|
|
93
|
+
if (error instanceof http_error_1.HttpError) {
|
|
94
94
|
return context.json({ error: error.message }, error.status);
|
|
95
95
|
}
|
|
96
96
|
if (error instanceof Error) {
|
|
@@ -108,6 +108,7 @@ function parseGetRequest(context) {
|
|
|
108
108
|
: undefined;
|
|
109
109
|
const limit = query.limit === undefined ? undefined : Number(query.limit);
|
|
110
110
|
return {
|
|
111
|
+
prefix: query.prefix,
|
|
111
112
|
database: query.database,
|
|
112
113
|
table: query.table,
|
|
113
114
|
indexKey: query.indexKey,
|
|
@@ -126,7 +127,7 @@ async function parseJsonBody(context) {
|
|
|
126
127
|
return await context.req.json();
|
|
127
128
|
}
|
|
128
129
|
catch (_) {
|
|
129
|
-
throw new HttpError(400, "Request body must be JSON.");
|
|
130
|
+
throw new http_error_1.HttpError(400, "Request body must be JSON.");
|
|
130
131
|
}
|
|
131
132
|
}
|
|
132
133
|
function parseJsonString(value, label) {
|
|
@@ -134,18 +135,18 @@ function parseJsonString(value, label) {
|
|
|
134
135
|
return JSON.parse(value);
|
|
135
136
|
}
|
|
136
137
|
catch (_) {
|
|
137
|
-
throw new HttpError(400, `${label} must be JSON.`);
|
|
138
|
+
throw new http_error_1.HttpError(400, `${label} must be JSON.`);
|
|
138
139
|
}
|
|
139
140
|
}
|
|
140
141
|
function requiredString(value, label) {
|
|
141
142
|
if (typeof value !== "string" || value.length === 0) {
|
|
142
|
-
throw new HttpError(400, `${label} is required.`);
|
|
143
|
+
throw new http_error_1.HttpError(400, `${label} is required.`);
|
|
143
144
|
}
|
|
144
145
|
return value;
|
|
145
146
|
}
|
|
146
147
|
function validateOperations(operations, label) {
|
|
147
148
|
if (!Array.isArray(operations) || operations.length === 0) {
|
|
148
|
-
throw new HttpError(400, `${label} is required.`);
|
|
149
|
+
throw new http_error_1.HttpError(400, `${label} is required.`);
|
|
149
150
|
}
|
|
150
151
|
return operations.map((operation) => {
|
|
151
152
|
switch (operation) {
|
|
@@ -157,17 +158,17 @@ function validateOperations(operations, label) {
|
|
|
157
158
|
case "delete":
|
|
158
159
|
return operation;
|
|
159
160
|
default:
|
|
160
|
-
throw new HttpError(400, `Unsupported ${label}: ${operation}`);
|
|
161
|
+
throw new http_error_1.HttpError(400, `Unsupported ${label}: ${operation}`);
|
|
161
162
|
}
|
|
162
163
|
});
|
|
163
164
|
}
|
|
164
165
|
function validateWhere(where) {
|
|
165
166
|
if (!Array.isArray(where)) {
|
|
166
|
-
throw new HttpError(400, "where must be an array.");
|
|
167
|
+
throw new http_error_1.HttpError(400, "where must be an array.");
|
|
167
168
|
}
|
|
168
169
|
return where.map((condition) => {
|
|
169
170
|
if (!condition || typeof condition !== "object") {
|
|
170
|
-
throw new HttpError(400, "where condition must be an object.");
|
|
171
|
+
throw new http_error_1.HttpError(400, "where condition must be an object.");
|
|
171
172
|
}
|
|
172
173
|
const type = condition.type ?? "equalTo";
|
|
173
174
|
switch (type) {
|
|
@@ -186,7 +187,7 @@ function validateWhere(where) {
|
|
|
186
187
|
case "arrayContainsAny":
|
|
187
188
|
break;
|
|
188
189
|
default:
|
|
189
|
-
throw new HttpError(400, `Unsupported where condition: ${condition.type}`);
|
|
190
|
+
throw new http_error_1.HttpError(400, `Unsupported where condition: ${condition.type}`);
|
|
190
191
|
}
|
|
191
192
|
const key = validateIdentifier(requiredString(condition.key, "where.key"), "where.key");
|
|
192
193
|
return {
|
|
@@ -198,11 +199,11 @@ function validateWhere(where) {
|
|
|
198
199
|
}
|
|
199
200
|
function validateOrderBy(orderBy) {
|
|
200
201
|
if (!Array.isArray(orderBy)) {
|
|
201
|
-
throw new HttpError(400, "orderBy must be an array.");
|
|
202
|
+
throw new http_error_1.HttpError(400, "orderBy must be an array.");
|
|
202
203
|
}
|
|
203
204
|
return orderBy.map((condition) => {
|
|
204
205
|
if (!condition || typeof condition !== "object") {
|
|
205
|
-
throw new HttpError(400, "orderBy condition must be an object.");
|
|
206
|
+
throw new http_error_1.HttpError(400, "orderBy condition must be an object.");
|
|
206
207
|
}
|
|
207
208
|
return {
|
|
208
209
|
key: validateIdentifier(requiredString(condition.key, "orderBy.key"), "orderBy.key"),
|
|
@@ -215,13 +216,13 @@ function validateLimit(limit) {
|
|
|
215
216
|
return undefined;
|
|
216
217
|
}
|
|
217
218
|
if (!Number.isInteger(limit) || limit <= 0) {
|
|
218
|
-
throw new HttpError(400, "limit must be a positive integer.");
|
|
219
|
+
throw new http_error_1.HttpError(400, "limit must be a positive integer.");
|
|
219
220
|
}
|
|
220
221
|
return limit;
|
|
221
222
|
}
|
|
222
223
|
function validateValue(value) {
|
|
223
224
|
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
224
|
-
throw new HttpError(400, "value must be an object.");
|
|
225
|
+
throw new http_error_1.HttpError(400, "value must be an object.");
|
|
225
226
|
}
|
|
226
227
|
const result = {};
|
|
227
228
|
for (const [key, item] of Object.entries(value)) {
|
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/types.d.ts
CHANGED
|
@@ -21,6 +21,7 @@ export interface TursoWorkersOptions extends WorkersOptions {
|
|
|
21
21
|
export interface TursoRequestBody {
|
|
22
22
|
database?: string | undefined;
|
|
23
23
|
table?: string | undefined;
|
|
24
|
+
prefix?: string | undefined;
|
|
24
25
|
indexKey?: string | undefined;
|
|
25
26
|
where?: TursoWhereCondition[] | undefined;
|
|
26
27
|
orderBy?: TursoOrderCondition[] | undefined;
|
|
@@ -42,6 +43,7 @@ export type TursoTokenScopeInput = RulesTokenTargetInput;
|
|
|
42
43
|
export type TursoTokenScopeOutput = RulesTokenTargetOutput;
|
|
43
44
|
export interface TursoTokenRequestBody {
|
|
44
45
|
database?: string | undefined;
|
|
46
|
+
prefix?: string | undefined;
|
|
45
47
|
operations?: RulesOperationKey[] | undefined;
|
|
46
48
|
targets?: TursoTokenScopeInput[] | undefined;
|
|
47
49
|
scope?: TursoTokenScopeInput[] | undefined;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mathrunet/masamune_cloudflare_turso",
|
|
3
|
-
"version": "3.5.
|
|
3
|
+
"version": "3.5.1",
|
|
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.4",
|
|
44
|
-
"@mathrunet/masamune_cloudflare": "^3.3.
|
|
44
|
+
"@mathrunet/masamune_cloudflare": "^3.3.4",
|
|
45
45
|
"@tursodatabase/serverless": "^1.2.3",
|
|
46
46
|
"hono": "^4.12.27",
|
|
47
47
|
"typescript": "^5.9.2"
|