@mathrunet/masamune_cloudflare_turso 3.2.1 → 3.2.3
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 +176 -67
- package/dist/functions/turso.js +9 -0
- package/dist/functions/turso.js.map +1 -1
- package/dist/functions/turso_token.js +18 -9
- package/dist/functions/turso_token.js.map +1 -1
- package/dist/lib/request.d.ts +1 -1
- package/dist/lib/request.js +17 -9
- package/dist/lib/request.js.map +1 -1
- package/dist/lib/rules.d.ts +34 -1
- package/dist/lib/rules.js +294 -8
- package/dist/lib/rules.js.map +1 -1
- package/dist/lib/token.d.ts +4 -4
- package/dist/lib/token.js +11 -90
- package/dist/lib/token.js.map +1 -1
- package/dist/lib/turso_client.js +5 -15
- package/dist/lib/turso_client.js.map +1 -1
- package/dist/lib/types.d.ts +12 -10
- package/package.json +1 -1
package/dist/lib/turso_client.js
CHANGED
|
@@ -13,24 +13,11 @@ function createTursoClient(connection) {
|
|
|
13
13
|
}
|
|
14
14
|
async function resolveDatabaseConnection(database, options) {
|
|
15
15
|
const normalizedDatabase = (0, request_1.validateLogicalName)(database, "database");
|
|
16
|
-
const configured = options.databases?.[normalizedDatabase];
|
|
17
|
-
if (configured) {
|
|
18
|
-
return configured;
|
|
19
|
-
}
|
|
20
|
-
if ((options.defaultDatabase ?? "main") === normalizedDatabase && options.url) {
|
|
21
|
-
return {
|
|
22
|
-
url: options.url,
|
|
23
|
-
authToken: options.authToken,
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
16
|
const databaseName = `${options.databaseNamePrefix ?? ""}${normalizedDatabase}`;
|
|
27
17
|
const cached = connectionCache.get(databaseName);
|
|
28
18
|
if (cached) {
|
|
29
19
|
return cached;
|
|
30
20
|
}
|
|
31
|
-
if (options.autoCreateDatabase === false) {
|
|
32
|
-
throw new request_1.HttpError(404, `Database is not configured: ${normalizedDatabase}`);
|
|
33
|
-
}
|
|
34
21
|
const created = await ensurePlatformDatabase(databaseName, options);
|
|
35
22
|
connectionCache.set(databaseName, created);
|
|
36
23
|
return created;
|
|
@@ -51,6 +38,9 @@ async function ensurePlatformDatabase(databaseName, options) {
|
|
|
51
38
|
headers,
|
|
52
39
|
});
|
|
53
40
|
if (existing.status === 404) {
|
|
41
|
+
if (options.autoCreateDatabase === false) {
|
|
42
|
+
throw new request_1.HttpError(404, `Database was not found: ${databaseName}`);
|
|
43
|
+
}
|
|
54
44
|
const response = await fetch(`${baseUrl}/databases`, {
|
|
55
45
|
method: "POST",
|
|
56
46
|
headers,
|
|
@@ -72,7 +62,7 @@ async function ensurePlatformDatabase(databaseName, options) {
|
|
|
72
62
|
if (!infoResponse.ok) {
|
|
73
63
|
throw new request_1.HttpError(500, `Failed to resolve Turso database: ${infoResponse.status}`);
|
|
74
64
|
}
|
|
75
|
-
const info = await infoResponse.json();
|
|
65
|
+
const info = (await infoResponse.json());
|
|
76
66
|
const url = findDatabaseUrl(info);
|
|
77
67
|
if (!url) {
|
|
78
68
|
throw new request_1.HttpError(500, "Turso database URL was not found in Platform API response.");
|
|
@@ -92,7 +82,7 @@ async function createDatabaseToken(baseUrl, databaseName, headers) {
|
|
|
92
82
|
if (!response.ok) {
|
|
93
83
|
return undefined;
|
|
94
84
|
}
|
|
95
|
-
const body = await response.json();
|
|
85
|
+
const body = (await response.json());
|
|
96
86
|
const token = body.jwt ?? body.token;
|
|
97
87
|
return typeof token === "string" ? token : undefined;
|
|
98
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turso_client.js","sourceRoot":"","sources":["../../src/lib/turso_client.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"turso_client.js","sourceRoot":"","sources":["../../src/lib/turso_client.ts"],"names":[],"mappings":";;AAwBA,8CAQC;AAED,8DAaC;AA9CD,uCAA2D;AAqB3D,MAAM,eAAe,GAAG,IAAI,GAAG,EAAmC,CAAC;AAEnE,SAAgB,iBAAiB,CAC/B,UAAmC;IAEnC,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,kCAAkC,CAAC,CAAC;IACrE,OAAO,YAAY,CAAC;QAClB,GAAG,EAAE,UAAU,CAAC,GAAG;QACnB,SAAS,EAAE,UAAU,CAAC,SAAS;KAChC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,yBAAyB,CAC7C,QAAgB,EAChB,OAA4B;IAE5B,MAAM,kBAAkB,GAAG,IAAA,6BAAmB,EAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACrE,MAAM,YAAY,GAAG,GAAG,OAAO,CAAC,kBAAkB,IAAI,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAChF,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACjD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACpE,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,YAAoB,EACpB,OAA4B;IAE5B,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAClD,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAClD,IAAI,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC3C,MAAM,IAAI,mBAAS,CACjB,GAAG,EACH,+EAA+E,CAChF,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,2CAA2C,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAClG,MAAM,OAAO,GAAG;QACd,aAAa,EAAE,UAAU,gBAAgB,EAAE;QAC3C,cAAc,EAAE,kBAAkB;KACnC,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,GAAG,OAAO,cAAc,kBAAkB,CAAC,YAAY,CAAC,EAAE,EAC1D;QACE,OAAO;KACR,CACF,CAAC;IACF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,kBAAkB,KAAK,KAAK,EAAE,CAAC;YACzC,MAAM,IAAI,mBAAS,CAAC,GAAG,EAAE,2BAA2B,YAAY,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,YAAY,EAAE;YACnD,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,SAAS;aACjB,CAAC;SACH,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,mBAAS,CACjB,GAAG,EACH,oCAAoC,QAAQ,CAAC,MAAM,EAAE,CACtD,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACxB,MAAM,IAAI,mBAAS,CACjB,GAAG,EACH,iCAAiC,QAAQ,CAAC,MAAM,EAAE,CACnD,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,KAAK,CAC9B,GAAG,OAAO,cAAc,kBAAkB,CAAC,YAAY,CAAC,EAAE,EAC1D;QACE,OAAO;KACR,CACF,CAAC;IACF,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;QACrB,MAAM,IAAI,mBAAS,CACjB,GAAG,EACH,qCAAqC,YAAY,CAAC,MAAM,EAAE,CAC3D,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,CAA4B,CAAC;IACpE,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,mBAAS,CACjB,GAAG,EACH,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC5E,OAAO;QACL,GAAG;QACH,SAAS;KACV,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,OAAe,EACf,YAAoB,EACpB,OAA+B;IAE/B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,GAAG,OAAO,cAAc,kBAAkB,CAAC,YAAY,CAAC,cAAc,EACtE;QACE,MAAM,EAAE,MAAM;QACd,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;KACzB,CACF,CAAC;IACF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA4B,CAAC;IAChE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,wBAAwB,CAAC,OAA4B;IAC5D,MAAM,SAAS,GAAG,aAAa,CAC7B,OAAO,CAAC,SAAS,EACjB,OAAO,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAC3E,CAAC;IACF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,mBAAS,CACjB,GAAG,EACH,sEAAsE,CACvE,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,aAAa,CAAC,GAAG,MAA8B;IACtD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;QAC9B,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAgC,CAAC,EAAE,CAAC;QACnE,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -4,8 +4,15 @@ export type RulesOperation = "get" | "create" | "update" | "delete";
|
|
|
4
4
|
export type RulesOperationAlias = "read" | "write";
|
|
5
5
|
export type RulesOperationKey = RulesOperation | RulesOperationAlias;
|
|
6
6
|
export type RulesAccessRule = "deny" | "allow" | "authenticated" | {
|
|
7
|
+
type: "serverOnly";
|
|
8
|
+
} | {
|
|
7
9
|
type: "fieldMatch";
|
|
8
10
|
field: string;
|
|
11
|
+
serverOnly?: boolean | undefined;
|
|
12
|
+
} | {
|
|
13
|
+
type: "pathParamMatch";
|
|
14
|
+
param: string;
|
|
15
|
+
serverOnly?: boolean | undefined;
|
|
9
16
|
};
|
|
10
17
|
export type RulesEntry = Partial<Record<RulesOperationKey, RulesAccessRule>>;
|
|
11
18
|
export interface RulesConfig {
|
|
@@ -16,16 +23,7 @@ export interface TursoDatabaseConnection {
|
|
|
16
23
|
url: string;
|
|
17
24
|
authToken?: string | undefined;
|
|
18
25
|
}
|
|
19
|
-
export interface TursoTokenIssuerOptions {
|
|
20
|
-
secret?: string | undefined;
|
|
21
|
-
issuer?: string | undefined;
|
|
22
|
-
audience?: string | undefined;
|
|
23
|
-
}
|
|
24
26
|
export interface TursoWorkersOptions extends Omit<WorkersOptions, "rules"> {
|
|
25
|
-
url?: string | undefined;
|
|
26
|
-
authToken?: string | undefined;
|
|
27
|
-
databases?: Record<string, TursoDatabaseConnection> | undefined;
|
|
28
|
-
defaultDatabase?: string | undefined;
|
|
29
27
|
databaseNamePrefix?: string | undefined;
|
|
30
28
|
organizationName?: string | undefined;
|
|
31
29
|
groupName?: string | undefined;
|
|
@@ -35,7 +33,6 @@ export interface TursoWorkersOptions extends Omit<WorkersOptions, "rules"> {
|
|
|
35
33
|
autoMigrateAddColumns?: boolean | undefined;
|
|
36
34
|
maxTtlSeconds?: number | undefined;
|
|
37
35
|
rules?: RulesConfig | undefined;
|
|
38
|
-
tokenIssuer?: TursoTokenIssuerOptions | undefined;
|
|
39
36
|
}
|
|
40
37
|
export interface TursoRequestBody {
|
|
41
38
|
database?: string | undefined;
|
|
@@ -60,6 +57,11 @@ export interface TursoTokenScopeInput {
|
|
|
60
57
|
table: string;
|
|
61
58
|
operations: RulesOperationKey[];
|
|
62
59
|
}
|
|
60
|
+
export type TursoTokenAccessMode = "none" | "functions" | "direct";
|
|
61
|
+
export interface TursoTokenScopeOutput extends TursoTokenScopeInput {
|
|
62
|
+
readMode?: TursoTokenAccessMode | undefined;
|
|
63
|
+
writeMode?: TursoTokenAccessMode | undefined;
|
|
64
|
+
}
|
|
63
65
|
export interface TursoTokenRequestBody {
|
|
64
66
|
database?: string | undefined;
|
|
65
67
|
scope?: TursoTokenScopeInput[] | undefined;
|
package/package.json
CHANGED