@mathrunet/masamune_cloudflare_turso 3.2.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 +363 -0
- package/LICENSE +21 -0
- package/README.md +213 -0
- package/dist/functions/test.d.ts +1 -0
- package/dist/functions/test.js +71 -0
- package/dist/functions/test.js.map +1 -0
- package/dist/functions/turso.d.ts +1 -0
- package/dist/functions/turso.js +50 -0
- package/dist/functions/turso.js.map +1 -0
- package/dist/functions/turso_token.d.ts +1 -0
- package/dist/functions/turso_token.js +40 -0
- package/dist/functions/turso_token.js.map +1 -0
- package/dist/functions.d.ts +21 -0
- package/dist/functions.js +24 -0
- package/dist/functions.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api.d.ts +183 -0
- package/dist/lib/api.js +144 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/crud.d.ts +10 -0
- package/dist/lib/crud.js +203 -0
- package/dist/lib/crud.js.map +1 -0
- package/dist/lib/exntensions/firestore.extension.d.ts +247 -0
- package/dist/lib/exntensions/firestore.extension.js +386 -0
- package/dist/lib/exntensions/firestore.extension.js.map +1 -0
- package/dist/lib/exntensions/string.extension.d.ts +214 -0
- package/dist/lib/exntensions/string.extension.js +223 -0
- package/dist/lib/exntensions/string.extension.js.map +1 -0
- package/dist/lib/model_field_value/converters/basic_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/basic_converter.js +51 -0
- package/dist/lib/model_field_value/converters/basic_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/enum_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/enum_converter.js +51 -0
- package/dist/lib/model_field_value/converters/enum_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_counter_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_counter_converter.js +216 -0
- package/dist/lib/model_field_value/converters/model_counter_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_date_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_date_converter.js +271 -0
- package/dist/lib/model_field_value/converters/model_date_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_date_range_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_date_range_converter.js +225 -0
- package/dist/lib/model_field_value/converters/model_date_range_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_geo_value_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_geo_value_converter.js +216 -0
- package/dist/lib/model_field_value/converters/model_geo_value_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_image_uri_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_image_uri_converter.js +184 -0
- package/dist/lib/model_field_value/converters/model_image_uri_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_locale_converter.d.ts +51 -0
- package/dist/lib/model_field_value/converters/model_locale_converter.js +228 -0
- package/dist/lib/model_field_value/converters/model_locale_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_localized_value_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_localized_value_converter.js +145 -0
- package/dist/lib/model_field_value/converters/model_localized_value_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_ref_base_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_ref_base_converter.js +159 -0
- package/dist/lib/model_field_value/converters/model_ref_base_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_search_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_search_converter.js +138 -0
- package/dist/lib/model_field_value/converters/model_search_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_server_command_base_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_server_command_base_converter.js +119 -0
- package/dist/lib/model_field_value/converters/model_server_command_base_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_time_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_time_converter.js +271 -0
- package/dist/lib/model_field_value/converters/model_time_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_time_range_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_time_range_converter.js +225 -0
- package/dist/lib/model_field_value/converters/model_time_range_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_timestamp_converter.d.ts +66 -0
- package/dist/lib/model_field_value/converters/model_timestamp_converter.js +297 -0
- package/dist/lib/model_field_value/converters/model_timestamp_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_timestamp_range_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_timestamp_range_converter.js +225 -0
- package/dist/lib/model_field_value/converters/model_timestamp_range_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_token_converter.d.ts +48 -0
- package/dist/lib/model_field_value/converters/model_token_converter.js +137 -0
- package/dist/lib/model_field_value/converters/model_token_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_uri_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_uri_converter.js +184 -0
- package/dist/lib/model_field_value/converters/model_uri_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_vector_value_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_vector_value_converter.js +125 -0
- package/dist/lib/model_field_value/converters/model_vector_value_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_video_uri_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_video_uri_converter.js +184 -0
- package/dist/lib/model_field_value/converters/model_video_uri_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/null_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/null_converter.js +72 -0
- package/dist/lib/model_field_value/converters/null_converter.js.map +1 -0
- package/dist/lib/model_field_value/default_model_field_value_converter.d.ts +155 -0
- package/dist/lib/model_field_value/default_model_field_value_converter.js +303 -0
- package/dist/lib/model_field_value/default_model_field_value_converter.js.map +1 -0
- package/dist/lib/model_field_value/model_field_value.d.ts +467 -0
- package/dist/lib/model_field_value/model_field_value.js +665 -0
- package/dist/lib/model_field_value/model_field_value.js.map +1 -0
- package/dist/lib/model_field_value/model_field_value_converter.d.ts +117 -0
- package/dist/lib/model_field_value/model_field_value_converter.js +49 -0
- package/dist/lib/model_field_value/model_field_value_converter.js.map +1 -0
- package/dist/lib/regions.d.ts +6 -0
- package/dist/lib/regions.js +3 -0
- package/dist/lib/regions.js.map +1 -0
- package/dist/lib/request.d.ts +12 -0
- package/dist/lib/request.js +213 -0
- package/dist/lib/request.js.map +1 -0
- package/dist/lib/rules.d.ts +32 -0
- package/dist/lib/rules.js +299 -0
- package/dist/lib/rules.js.map +1 -0
- package/dist/lib/schema.d.ts +15 -0
- package/dist/lib/schema.js +141 -0
- package/dist/lib/schema.js.map +1 -0
- package/dist/lib/src/call_process_function_base.d.ts +39 -0
- package/dist/lib/src/call_process_function_base.js +72 -0
- package/dist/lib/src/call_process_function_base.js.map +1 -0
- package/dist/lib/src/firebase_loader.d.ts +30 -0
- package/dist/lib/src/firebase_loader.js +96 -0
- package/dist/lib/src/firebase_loader.js.map +1 -0
- package/dist/lib/src/firestore_base.d.ts +114 -0
- package/dist/lib/src/firestore_base.js +363 -0
- package/dist/lib/src/firestore_base.js.map +1 -0
- package/dist/lib/src/firestore_triggered_process_function_base.d.ts +40 -0
- package/dist/lib/src/firestore_triggered_process_function_base.js +72 -0
- package/dist/lib/src/firestore_triggered_process_function_base.js.map +1 -0
- package/dist/lib/src/functions_base.d.ts +327 -0
- package/dist/lib/src/functions_base.js +63 -0
- package/dist/lib/src/functions_base.js.map +1 -0
- package/dist/lib/src/functions_data.d.ts +10 -0
- package/dist/lib/src/functions_data.js +19 -0
- package/dist/lib/src/functions_data.js.map +1 -0
- package/dist/lib/src/request_process_function_base.d.ts +39 -0
- package/dist/lib/src/request_process_function_base.js +70 -0
- package/dist/lib/src/request_process_function_base.js.map +1 -0
- package/dist/lib/src/request_process_workders_base.d.ts +37 -0
- package/dist/lib/src/request_process_workders_base.js +27 -0
- package/dist/lib/src/request_process_workders_base.js.map +1 -0
- package/dist/lib/src/schedule_process_function_base.d.ts +33 -0
- package/dist/lib/src/schedule_process_function_base.js +71 -0
- package/dist/lib/src/schedule_process_function_base.js.map +1 -0
- package/dist/lib/src/sql_api_base.d.ts +185 -0
- package/dist/lib/src/sql_api_base.js +83 -0
- package/dist/lib/src/sql_api_base.js.map +1 -0
- package/dist/lib/src/workers_base.d.ts +74 -0
- package/dist/lib/src/workers_base.js +57 -0
- package/dist/lib/src/workers_base.js.map +1 -0
- package/dist/lib/src/workers_data.d.ts +10 -0
- package/dist/lib/src/workers_data.js +21 -0
- package/dist/lib/src/workers_data.js.map +1 -0
- package/dist/lib/token.d.ts +12 -0
- package/dist/lib/token.js +123 -0
- package/dist/lib/token.js.map +1 -0
- package/dist/lib/turso_client.d.ts +14 -0
- package/dist/lib/turso_client.js +130 -0
- package/dist/lib/turso_client.js.map +1 -0
- package/dist/lib/types.d.ts +71 -0
- package/dist/lib/types.js +3 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/utils.d.ts +82 -0
- package/dist/lib/utils.js +141 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/workers/test.d.ts +1 -0
- package/dist/workers/test.js +14 -0
- package/dist/workers/test.js.map +1 -0
- package/dist/workers/turso.d.ts +1 -0
- package/dist/workers/turso.js +50 -0
- package/dist/workers/turso.js.map +1 -0
- package/dist/workers/turso_token.d.ts +1 -0
- package/dist/workers/turso_token.js +40 -0
- package/dist/workers/turso_token.js.map +1 -0
- package/package.json +55 -0
package/README.md
ADDED
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="https://mathru.net">
|
|
3
|
+
<img width="240px" src="https://raw.githubusercontent.com/mathrunet/node_masamune/main/.github/images/icon.png" alt="Masamune logo" style="border-radius: 32px"s><br/>
|
|
4
|
+
</a>
|
|
5
|
+
<h1 align="center">Turso for Cloudflare Workers</h1>
|
|
6
|
+
</p>
|
|
7
|
+
|
|
8
|
+
<p align="center">
|
|
9
|
+
<a href="https://github.com/mathrunet">
|
|
10
|
+
<img src="https://img.shields.io/static/v1?label=GitHub&message=Follow&logo=GitHub&color=333333&link=https://github.com/mathrunet" alt="Follow on GitHub" />
|
|
11
|
+
</a>
|
|
12
|
+
<a href="https://x.com/mathru">
|
|
13
|
+
<img src="https://img.shields.io/static/v1?label=@mathru&message=Follow&logo=X&color=0F1419&link=https://x.com/mathru" alt="Follow on X" />
|
|
14
|
+
</a>
|
|
15
|
+
<a href="https://www.youtube.com/c/mathrunetchannel">
|
|
16
|
+
<img src="https://img.shields.io/static/v1?label=YouTube&message=Follow&logo=YouTube&color=FF0000&link=https://www.youtube.com/c/mathrunetchannel" alt="Follow on YouTube" />
|
|
17
|
+
</a>
|
|
18
|
+
<a href="https://github.com/invertase/melos">
|
|
19
|
+
<img src="https://img.shields.io/static/v1?label=maintained%20with&message=melos&color=FF1493&link=https://github.com/invertase/melos" alt="Maintained with Melos" />
|
|
20
|
+
</a>
|
|
21
|
+
</p>
|
|
22
|
+
|
|
23
|
+
<p align="center">
|
|
24
|
+
<a href="https://github.com/sponsors/mathrunet"><img src="https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=ff69b4&link=https://github.com/sponsors/mathrunet" alt="GitHub Sponsor" /></a>
|
|
25
|
+
</p>
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
[[GitHub]](https://github.com/mathrunet) | [[YouTube]](https://www.youtube.com/c/mathrunetchannel) | [[Packages]](https://pub.dev/publishers/mathru.net/packages) | [[X]](https://x.com/mathru) | [[LinkedIn]](https://www.linkedin.com/in/mathrunet/) | [[mathru.net]](https://mathru.net)
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
Just load the package in index.ts and pass the predefined data to the methods to implement the server side.
|
|
34
|
+
|
|
35
|
+
Also, [katana_functions_firebase](https://pub.dev/packages/katana_functions_firebase/score) can be used to execute server-side functions from methods defined on the client side, allowing for safe implementation.
|
|
36
|
+
|
|
37
|
+
# Installation
|
|
38
|
+
|
|
39
|
+
Install the following packages
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npm install @mathrunet/masamune_cloudflare_turso
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
# Implementation
|
|
46
|
+
|
|
47
|
+
Pass the return value of the `deploy` function to `export default`. It is defined by passing various Workers to the `deploy` function.
|
|
48
|
+
|
|
49
|
+
```typescript
|
|
50
|
+
import * as m from "@mathrunet/masamune_cloudflare_turso";
|
|
51
|
+
|
|
52
|
+
export default m.deploy(
|
|
53
|
+
[
|
|
54
|
+
m.Functions.turso({
|
|
55
|
+
url: TURSO_DATABASE_URL,
|
|
56
|
+
authToken: TURSO_AUTH_TOKEN,
|
|
57
|
+
rules: {
|
|
58
|
+
version: "1",
|
|
59
|
+
rules: {
|
|
60
|
+
"database/*/table/*/*": {
|
|
61
|
+
read: "deny",
|
|
62
|
+
write: "deny",
|
|
63
|
+
},
|
|
64
|
+
"database/main/table/users/*": {
|
|
65
|
+
read: "authenticated",
|
|
66
|
+
write: "authenticated",
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
}),
|
|
71
|
+
m.Functions.tursoToken({
|
|
72
|
+
url: TURSO_DATABASE_URL,
|
|
73
|
+
authToken: TURSO_AUTH_TOKEN,
|
|
74
|
+
rules: {
|
|
75
|
+
version: "1",
|
|
76
|
+
rules: {
|
|
77
|
+
"database/main/table/users/*": {
|
|
78
|
+
read: "authenticated",
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
tokenIssuer: {
|
|
83
|
+
secret: TURSO_TOKEN_SECRET,
|
|
84
|
+
},
|
|
85
|
+
}),
|
|
86
|
+
],
|
|
87
|
+
);
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
# Endpoints
|
|
91
|
+
|
|
92
|
+
The package exposes Turso through a single provider path.
|
|
93
|
+
|
|
94
|
+
| Method | Path | Description |
|
|
95
|
+
|---|---|---|
|
|
96
|
+
| `GET` | `/turso` | Read rows or count rows. |
|
|
97
|
+
| `POST` | `/turso` | Create a row. |
|
|
98
|
+
| `PUT` | `/turso` | Update rows. |
|
|
99
|
+
| `DELETE` | `/turso` | Delete rows. |
|
|
100
|
+
| `POST` | `/turso/token` | Issue a scoped short-lived token. |
|
|
101
|
+
|
|
102
|
+
`GET /turso` uses query parameters.
|
|
103
|
+
|
|
104
|
+
```text
|
|
105
|
+
/turso?database=main&table=users&indexKey=user_1
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Collection queries can pass `where`, `orderBy`, and `limit`.
|
|
109
|
+
|
|
110
|
+
```text
|
|
111
|
+
/turso?database=main&table=users&where=[{"type":"equalTo","key":"name","value":"Alice"}]&orderBy=[{"key":"created_at","descending":true}]&limit=20
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Supported `where` types are `equalTo`, `notEqualTo`, `lessThan`,
|
|
115
|
+
`lessThanOrEqualTo`, `greaterThan`, `greaterThanOrEqualTo`, `whereIn`,
|
|
116
|
+
`whereNotIn`, `isNull`, `isNotNull`, and `like`.
|
|
117
|
+
|
|
118
|
+
`POST` / `PUT` / `DELETE` use JSON bodies.
|
|
119
|
+
|
|
120
|
+
```json
|
|
121
|
+
{
|
|
122
|
+
"database": "main",
|
|
123
|
+
"table": "users",
|
|
124
|
+
"indexKey": "user_1",
|
|
125
|
+
"value": {
|
|
126
|
+
"name": "Alice"
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
# Database and schema management
|
|
132
|
+
|
|
133
|
+
The worker can create Turso databases and tables automatically.
|
|
134
|
+
|
|
135
|
+
```typescript
|
|
136
|
+
m.Functions.turso({
|
|
137
|
+
organizationName: TURSO_ORGANIZATION_NAME,
|
|
138
|
+
groupName: TURSO_GROUP_NAME,
|
|
139
|
+
platformApiToken: TURSO_PLATFORM_API_TOKEN,
|
|
140
|
+
defaultDatabase: "main",
|
|
141
|
+
autoCreateDatabase: true,
|
|
142
|
+
autoCreateTable: true,
|
|
143
|
+
autoMigrateAddColumns: true,
|
|
144
|
+
});
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
`groupName` can also be omitted when the runtime environment provides
|
|
148
|
+
`TURSO_GROUP_NAME`, such as through a local `.env` file or Cloudflare Worker
|
|
149
|
+
environment variables. When neither `groupName` nor `TURSO_GROUP_NAME` is
|
|
150
|
+
configured, database access that needs automatic database creation returns an
|
|
151
|
+
error.
|
|
152
|
+
|
|
153
|
+
Automatic migration is intentionally limited to additive field changes.
|
|
154
|
+
|
|
155
|
+
- New fields in `value` are added with `ALTER TABLE ADD COLUMN`.
|
|
156
|
+
- Existing fields are not migrated when their inferred type changes.
|
|
157
|
+
- Field rename, field deletion, primary key changes, unique constraints, and foreign keys are not automatically migrated.
|
|
158
|
+
- `PUT` and `DELETE` require `indexKey` or `where` to avoid accidental full-table changes.
|
|
159
|
+
|
|
160
|
+
The default table shape is:
|
|
161
|
+
|
|
162
|
+
```sql
|
|
163
|
+
CREATE TABLE IF NOT EXISTS table_name (
|
|
164
|
+
id TEXT PRIMARY KEY,
|
|
165
|
+
created_at INTEGER,
|
|
166
|
+
updated_at INTEGER,
|
|
167
|
+
...
|
|
168
|
+
)
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
Objects and arrays are stored as JSON strings.
|
|
172
|
+
|
|
173
|
+
# Scoped short-lived token
|
|
174
|
+
|
|
175
|
+
Use `/turso/token` to issue a token after filtering the requested scope through `rules`.
|
|
176
|
+
|
|
177
|
+
```json
|
|
178
|
+
{
|
|
179
|
+
"database": "main",
|
|
180
|
+
"scope": [
|
|
181
|
+
{
|
|
182
|
+
"table": "users",
|
|
183
|
+
"operations": ["read"]
|
|
184
|
+
}
|
|
185
|
+
],
|
|
186
|
+
"ttlSeconds": 600
|
|
187
|
+
}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
The response is:
|
|
191
|
+
|
|
192
|
+
```json
|
|
193
|
+
{
|
|
194
|
+
"token": "<jwt>",
|
|
195
|
+
"expiresAt": 1760000000
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
`ttlSeconds` defaults to 600 seconds and is capped by `maxTtlSeconds` (default: 3600 seconds).
|
|
200
|
+
|
|
201
|
+
When `organizationName` and `platformApiToken` are configured, tokens are generated with the Turso Platform API:
|
|
202
|
+
|
|
203
|
+
```text
|
|
204
|
+
POST /v1/organizations/{organizationSlug}/databases/{databaseName}/auth/tokens
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
If Platform API settings are not available, the worker falls back to a local HS256 JWT signed with `tokenIssuer.secret` or `authToken`.
|
|
208
|
+
|
|
209
|
+
# GitHub Sponsors
|
|
210
|
+
|
|
211
|
+
Sponsors are always welcome. Thank you for your support!
|
|
212
|
+
|
|
213
|
+
[https://github.com/sponsors/mathrunet](https://github.com/sponsors/mathrunet)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
const functions = __importStar(require("firebase-functions/v2"));
|
|
37
|
+
const firebase_loader_1 = require("../lib/src/firebase_loader");
|
|
38
|
+
/**
|
|
39
|
+
* Endpoints for testing.
|
|
40
|
+
*
|
|
41
|
+
* テストを行うためのエンドポイントです。
|
|
42
|
+
*/
|
|
43
|
+
module.exports = (regions, options, data) => functions.https.onCall({
|
|
44
|
+
region: options.region ?? regions,
|
|
45
|
+
timeoutSeconds: options.timeoutSeconds,
|
|
46
|
+
memory: options.memory,
|
|
47
|
+
minInstances: options.minInstances,
|
|
48
|
+
concurrency: options.concurrency,
|
|
49
|
+
maxInstances: options.maxInstances,
|
|
50
|
+
serviceAccount: options?.serviceAccount ?? undefined,
|
|
51
|
+
enforceAppCheck: options.enforceAppCheck ?? undefined,
|
|
52
|
+
consumeAppCheckToken: options.consumeAppCheckToken ?? undefined,
|
|
53
|
+
}, async (query) => {
|
|
54
|
+
try {
|
|
55
|
+
const path = query.data.path;
|
|
56
|
+
if (!path) {
|
|
57
|
+
return {};
|
|
58
|
+
}
|
|
59
|
+
const firestoreDatabaseIds = options.firestoreDatabaseIds ?? [""];
|
|
60
|
+
for (const databaseId of firestoreDatabaseIds) {
|
|
61
|
+
const firestoreInstance = (0, firebase_loader_1.firestoreLoader)(databaseId);
|
|
62
|
+
const doc = await firestoreInstance.doc(path).load();
|
|
63
|
+
return { ...doc.data() };
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
console.error(err);
|
|
68
|
+
throw err;
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
//# sourceMappingURL=test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/functions/test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAmD;AAEnD,gEAA6D;AAE7D;;;;GAIG;AACH,MAAM,CAAC,OAAO,GAAG,CACf,OAAiB,EACjB,OAA6B,EAC7B,IAA4B,EAC5B,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CACzB;IACE,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO;IACjC,cAAc,EAAE,OAAO,CAAC,cAAc;IACtC,MAAM,EAAE,OAAO,CAAC,MAAM;IACtB,YAAY,EAAE,OAAO,CAAC,YAAY;IAClC,WAAW,EAAE,OAAO,CAAC,WAAW;IAChC,YAAY,EAAE,OAAO,CAAC,YAAY;IAClC,cAAc,EAAE,OAAO,EAAE,cAAc,IAAI,SAAS;IACpD,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,SAAS;IACrD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,IAAI,SAAS;CAChE,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;IACd,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,IAAI,CAAC,EAAE,CAAC,CAAC;QAClE,KAAK,MAAM,UAAU,IAAI,oBAAoB,EAAE,CAAC;YAC9C,MAAM,iBAAiB,GAAG,IAAA,iCAAe,EAAC,UAAU,CAAC,CAAC;YACtD,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACrD,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const crud_1 = require("../lib/crud");
|
|
4
|
+
const request_1 = require("../lib/request");
|
|
5
|
+
const rules_1 = require("../lib/rules");
|
|
6
|
+
const turso_client_1 = require("../lib/turso_client");
|
|
7
|
+
module.exports = (hono, options, data) => {
|
|
8
|
+
hono.get("/", async (context) => handleCrud(context, options, "GET"));
|
|
9
|
+
hono.post("/", async (context) => handleCrud(context, options, "POST"));
|
|
10
|
+
hono.put("/", async (context) => handleCrud(context, options, "PUT"));
|
|
11
|
+
hono.delete("/", async (context) => handleCrud(context, options, "DELETE"));
|
|
12
|
+
return hono;
|
|
13
|
+
};
|
|
14
|
+
async function handleCrud(context, options, method) {
|
|
15
|
+
try {
|
|
16
|
+
const request = await (0, request_1.parseCrudRequest)(context);
|
|
17
|
+
const connection = await (0, turso_client_1.resolveDatabaseConnection)(request.database, options);
|
|
18
|
+
const client = (0, turso_client_1.createTursoClient)(connection);
|
|
19
|
+
const engine = (0, rules_1.createTursoRulesEngine)(options.rules);
|
|
20
|
+
const authentication = context.get("authentication");
|
|
21
|
+
const result = await engine.evaluate({
|
|
22
|
+
path: (0, rules_1.buildRulesPath)({
|
|
23
|
+
database: request.database,
|
|
24
|
+
table: request.table,
|
|
25
|
+
indexKey: request.indexKey ?? "*",
|
|
26
|
+
}),
|
|
27
|
+
operation: (0, rules_1.normalizeHttpMethodToRulesOperation)(method),
|
|
28
|
+
authentication,
|
|
29
|
+
fetchDocument: async () => (0, crud_1.fetchDocumentForRules)(client, request),
|
|
30
|
+
});
|
|
31
|
+
if (!result.allowed) {
|
|
32
|
+
return context.json({
|
|
33
|
+
error: "denied",
|
|
34
|
+
rule: result.rulePath,
|
|
35
|
+
}, 403);
|
|
36
|
+
}
|
|
37
|
+
const response = await (0, crud_1.executeCrud)({
|
|
38
|
+
client,
|
|
39
|
+
method,
|
|
40
|
+
request,
|
|
41
|
+
autoCreateTable: options.autoCreateTable !== false,
|
|
42
|
+
autoMigrateAddColumns: options.autoMigrateAddColumns !== false,
|
|
43
|
+
});
|
|
44
|
+
return context.json({ data: response });
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
return (0, request_1.jsonError)(context, error);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=turso.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turso.js","sourceRoot":"","sources":["../../src/functions/turso.ts"],"names":[],"mappings":";;AAMA,sCAAiE;AACjE,4CAA6D;AAC7D,wCAIsB;AACtB,sDAG6B;AAE7B,MAAM,CAAC,OAAO,GAAG,CACf,IAAU,EACV,OAA4B,EAC5B,IAAgC,EAChC,EAAE;IACF,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACtE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACxE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACtE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC5E,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,KAAK,UAAU,UAAU,CACvB,OAAgB,EAChB,OAA4B,EAC5B,MAAuB;IAEvB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAA,0BAAgB,EAAC,OAAO,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,MAAM,IAAA,wCAAyB,EAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAG,IAAA,gCAAiB,EAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAA,8BAAsB,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAsC,CAAC;QAC1F,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;YACnC,IAAI,EAAE,IAAA,sBAAc,EAAC;gBACnB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,GAAG;aAClC,CAAC;YACF,SAAS,EAAE,IAAA,2CAAmC,EAAC,MAAM,CAAC;YACtD,cAAc;YACd,aAAa,EAAE,KAAK,IAAI,EAAE,CAAC,IAAA,4BAAqB,EAAC,MAAM,EAAE,OAAO,CAAC;SAClE,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,OAAO,CAAC,IAAI,CAAC;gBAClB,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,MAAM,CAAC,QAAQ;aACtB,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAA,kBAAW,EAAC;YACjC,MAAM;YACN,MAAM;YACN,OAAO;YACP,eAAe,EAAE,OAAO,CAAC,eAAe,KAAK,KAAK;YAClD,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,KAAK,KAAK;SAC/D,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAA,mBAAS,EAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const request_1 = require("../lib/request");
|
|
4
|
+
const rules_1 = require("../lib/rules");
|
|
5
|
+
const turso_client_1 = require("../lib/turso_client");
|
|
6
|
+
const token_1 = require("../lib/token");
|
|
7
|
+
module.exports = (hono, options, data) => {
|
|
8
|
+
hono.post("/", async (context) => handleToken(context, options));
|
|
9
|
+
return hono;
|
|
10
|
+
};
|
|
11
|
+
async function handleToken(context, options) {
|
|
12
|
+
try {
|
|
13
|
+
const request = await (0, request_1.parseTokenRequest)(context);
|
|
14
|
+
await (0, turso_client_1.resolveDatabaseConnection)(request.database, options);
|
|
15
|
+
const authentication = context.get("authentication");
|
|
16
|
+
const engine = (0, rules_1.createTursoRulesEngine)(options.rules);
|
|
17
|
+
const scope = await (0, rules_1.filterAllowedScope)({
|
|
18
|
+
engine,
|
|
19
|
+
database: request.database,
|
|
20
|
+
scope: request.scope,
|
|
21
|
+
authentication,
|
|
22
|
+
});
|
|
23
|
+
if (scope.length === 0) {
|
|
24
|
+
return context.json({
|
|
25
|
+
error: "denied",
|
|
26
|
+
}, 403);
|
|
27
|
+
}
|
|
28
|
+
const token = await (0, token_1.issueScopedToken)({
|
|
29
|
+
database: request.database,
|
|
30
|
+
scope,
|
|
31
|
+
ttlSeconds: request.ttlSeconds,
|
|
32
|
+
options,
|
|
33
|
+
});
|
|
34
|
+
return context.json(token);
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
return (0, request_1.jsonError)(context, error);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=turso_token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turso_token.js","sourceRoot":"","sources":["../../src/functions/turso_token.ts"],"names":[],"mappings":";;AAKA,4CAA8D;AAC9D,wCAGsB;AACtB,sDAAgE;AAChE,wCAAgD;AAEhD,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,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,KAAK,UAAU,WAAW,CACxB,OAAgB,EAChB,OAA4B;IAE5B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAA,2BAAiB,EAAC,OAAO,CAAC,CAAC;QACjD,MAAM,IAAA,wCAAyB,EAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC3D,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAsC,CAAC;QAC1F,MAAM,MAAM,GAAG,IAAA,8BAAsB,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,MAAM,IAAA,0BAAkB,EAAC;YACrC,MAAM;YACN,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,cAAc;SACf,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC,IAAI,CAAC;gBAClB,KAAK,EAAE,QAAQ;aAChB,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,IAAA,wBAAgB,EAAC;YACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK;YACL,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,OAAO;SACR,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAA,mBAAS,EAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { WorkersData } from "@mathrunet/masamune_cloudflare";
|
|
2
|
+
import { TursoWorkersOptions } from "./lib/types";
|
|
3
|
+
/**
|
|
4
|
+
* Define a list of applicable Functions for Cloudflare Workers.
|
|
5
|
+
*
|
|
6
|
+
* Cloudflare Workers用の適用可能なFunctionsの一覧を定義します。
|
|
7
|
+
*/
|
|
8
|
+
export declare const Functions: {
|
|
9
|
+
/**
|
|
10
|
+
* Endpoints for Turso database CRUD.
|
|
11
|
+
*
|
|
12
|
+
* TursoデータベースCRUD用のエンドポイントです。
|
|
13
|
+
*/
|
|
14
|
+
readonly turso: (options?: TursoWorkersOptions) => WorkersData;
|
|
15
|
+
/**
|
|
16
|
+
* Endpoint for issuing scoped short-lived Turso tokens.
|
|
17
|
+
*
|
|
18
|
+
* スコープされた短命Tursoトークン発行用のエンドポイントです。
|
|
19
|
+
*/
|
|
20
|
+
readonly tursoToken: (options?: TursoWorkersOptions) => WorkersData;
|
|
21
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Functions = void 0;
|
|
4
|
+
const masamune_cloudflare_1 = require("@mathrunet/masamune_cloudflare");
|
|
5
|
+
/**
|
|
6
|
+
* Define a list of applicable Functions for Cloudflare Workers.
|
|
7
|
+
*
|
|
8
|
+
* Cloudflare Workers用の適用可能なFunctionsの一覧を定義します。
|
|
9
|
+
*/
|
|
10
|
+
exports.Functions = {
|
|
11
|
+
/**
|
|
12
|
+
* Endpoints for Turso database CRUD.
|
|
13
|
+
*
|
|
14
|
+
* TursoデータベースCRUD用のエンドポイントです。
|
|
15
|
+
*/
|
|
16
|
+
turso: (options = {}) => new masamune_cloudflare_1.WorkersData({ path: "/turso", func: require("./functions/turso"), options: options }),
|
|
17
|
+
/**
|
|
18
|
+
* Endpoint for issuing scoped short-lived Turso tokens.
|
|
19
|
+
*
|
|
20
|
+
* スコープされた短命Tursoトークン発行用のエンドポイントです。
|
|
21
|
+
*/
|
|
22
|
+
tursoToken: (options = {}) => new masamune_cloudflare_1.WorkersData({ path: "/turso/token", func: require("./functions/turso_token"), options: options }),
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":";;;AAAA,wEAA6E;AAG7E;;;;GAIG;AACU,QAAA,SAAS,GAAG;IACvB;;;;OAIG;IACH,KAAK,EAAE,CAAC,UAA+B,EAAE,EAAE,EAAE,CAAC,IAAI,iCAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,OAAoC,EAAE,CAAC;IAEpK;;;;OAIG;IACH,UAAU,EAAE,CAAC,UAA+B,EAAE,EAAE,EAAE,CAAC,IAAI,iCAAW,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,yBAAyB,CAAC,EAAE,OAAO,EAAE,OAAoC,EAAE,CAAC;CAC7K,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 mathru. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Server-side package of the Masamune framework for working with Turso via Cloudflare.
|
|
5
|
+
*
|
|
6
|
+
* To use, import * as m from "@mathrunet/masamune_cloudflare_turso";
|
|
7
|
+
*
|
|
8
|
+
* [mathru.net]: https://mathru.net
|
|
9
|
+
* [YouTube]: https://www.youtube.com/c/mathrunetchannel
|
|
10
|
+
*/
|
|
11
|
+
export * from "@mathrunet/masamune";
|
|
12
|
+
export * from "@mathrunet/masamune_cloudflare";
|
|
13
|
+
export * from "./functions";
|
|
14
|
+
export type { RulesAccessRule, RulesConfig, RulesEntry, RulesOperation, RulesOperationAlias, RulesOperationKey, } from "./lib/types";
|
|
15
|
+
export * from "./lib/types";
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
/**
|
|
18
|
+
* Copyright (c) 2025 mathru. All rights reserved.
|
|
19
|
+
*
|
|
20
|
+
* Server-side package of the Masamune framework for working with Turso via Cloudflare.
|
|
21
|
+
*
|
|
22
|
+
* To use, import * as m from "@mathrunet/masamune_cloudflare_turso";
|
|
23
|
+
*
|
|
24
|
+
* [mathru.net]: https://mathru.net
|
|
25
|
+
* [YouTube]: https://www.youtube.com/c/mathrunetchannel
|
|
26
|
+
*/
|
|
27
|
+
__exportStar(require("@mathrunet/masamune"), exports);
|
|
28
|
+
__exportStar(require("@mathrunet/masamune_cloudflare"), exports);
|
|
29
|
+
__exportStar(require("./functions"), exports);
|
|
30
|
+
__exportStar(require("./lib/types"), exports);
|
|
31
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,sDAAoC;AACpC,iEAA+C;AAC/C,8CAA4B;AAS5B,8CAA4B"}
|