@mathrunet/masamune_cloudflare_turso 3.2.2 → 3.2.4
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 +42 -24
- package/dist/functions/turso.js +14 -4
- package/dist/functions/turso.js.map +1 -1
- package/dist/functions/turso_token.js +7 -3
- package/dist/functions/turso_token.js.map +1 -1
- package/dist/lib/env.d.ts +3 -0
- package/dist/lib/env.js +16 -0
- package/dist/lib/env.js.map +1 -0
- package/dist/lib/request.js +15 -4
- package/dist/lib/request.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -51,9 +51,8 @@ import * as m from "@mathrunet/masamune_cloudflare_turso";
|
|
|
51
51
|
|
|
52
52
|
export default m.deploy([
|
|
53
53
|
m.Functions.turso({
|
|
54
|
-
organizationName:
|
|
55
|
-
groupName:
|
|
56
|
-
platformApiToken: TURSO_PLATFORM_API_TOKEN,
|
|
54
|
+
organizationName: "xxxx",
|
|
55
|
+
groupName: "xxxx",
|
|
57
56
|
autoCreateDatabase: true,
|
|
58
57
|
autoCreateTable: true,
|
|
59
58
|
autoMigrateAddColumns: true,
|
|
@@ -72,9 +71,8 @@ export default m.deploy([
|
|
|
72
71
|
},
|
|
73
72
|
}),
|
|
74
73
|
m.Functions.tursoToken({
|
|
75
|
-
organizationName:
|
|
76
|
-
groupName:
|
|
77
|
-
platformApiToken: TURSO_PLATFORM_API_TOKEN,
|
|
74
|
+
organizationName: "xxxx",
|
|
75
|
+
groupName: "xxxx",
|
|
78
76
|
rules: {
|
|
79
77
|
version: "1",
|
|
80
78
|
rules: {
|
|
@@ -88,47 +86,67 @@ export default m.deploy([
|
|
|
88
86
|
]);
|
|
89
87
|
```
|
|
90
88
|
|
|
89
|
+
Cloudflare bindings are also supported and take precedence over options:
|
|
90
|
+
|
|
91
|
+
- `TURSO_PLATFORM_API_TOKEN`
|
|
92
|
+
- `TURSO_ORGANIZATION_NAME`
|
|
93
|
+
- `TURSO_GROUP_NAME`
|
|
94
|
+
|
|
95
|
+
For production, store the Platform API token as a secret:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
wrangler secret put TURSO_PLATFORM_API_TOKEN
|
|
99
|
+
```
|
|
100
|
+
|
|
91
101
|
# Endpoints
|
|
92
102
|
|
|
93
103
|
The package exposes Turso through a single provider path.
|
|
94
104
|
|
|
95
105
|
| Method | Path | Description |
|
|
96
106
|
| -------- | -------------- | --------------------------------- |
|
|
97
|
-
| `GET` | `/turso`
|
|
98
|
-
| `
|
|
99
|
-
| `
|
|
100
|
-
| `
|
|
101
|
-
| `
|
|
102
|
-
|
|
103
|
-
`
|
|
107
|
+
| `GET` | `/turso/database/{database}/{table}` | Read rows or count rows. |
|
|
108
|
+
| `GET` | `/turso/database/{database}/{table}/{indexKey}` | Read a row. |
|
|
109
|
+
| `POST` | `/turso/database/{database}/{table}` | Create a row. |
|
|
110
|
+
| `POST` | `/turso/database/{database}/{table}/{indexKey}` | Create a row with an explicit ID. |
|
|
111
|
+
| `PUT` | `/turso/database/{database}/{table}` | Update rows. |
|
|
112
|
+
| `PUT` | `/turso/database/{database}/{table}/{indexKey}` | Update a row. |
|
|
113
|
+
| `DELETE` | `/turso/database/{database}/{table}` | Delete rows. |
|
|
114
|
+
| `DELETE` | `/turso/database/{database}/{table}/{indexKey}` | Delete a row. |
|
|
115
|
+
| `POST` | `/turso/token/database/{database}` | Issue a database-scoped short-lived token. |
|
|
116
|
+
|
|
117
|
+
`GET` uses the path for `database`, `table`, and optional `indexKey`.
|
|
104
118
|
|
|
105
119
|
```text
|
|
106
|
-
/turso
|
|
120
|
+
/turso/database/main/users/user_1
|
|
107
121
|
```
|
|
108
122
|
|
|
109
123
|
Collection queries can pass `where`, `orderBy`, and `limit`.
|
|
110
124
|
|
|
111
125
|
```text
|
|
112
|
-
/turso
|
|
126
|
+
/turso/database/main/users?where=[{"type":"equalTo","key":"name","value":"Alice"}]&orderBy=[{"key":"created_at","descending":true}]&limit=20
|
|
113
127
|
```
|
|
114
128
|
|
|
115
129
|
Supported `where` types are `equalTo`, `notEqualTo`, `lessThan`,
|
|
116
130
|
`lessThanOrEqualTo`, `greaterThan`, `greaterThanOrEqualTo`, `whereIn`,
|
|
117
131
|
`whereNotIn`, `isNull`, `isNotNull`, and `like`.
|
|
118
132
|
|
|
119
|
-
`POST` / `PUT` / `DELETE` use JSON bodies
|
|
133
|
+
`POST` / `PUT` / `DELETE` use the same path format and JSON bodies for
|
|
134
|
+
`value` or query filters.
|
|
120
135
|
|
|
121
136
|
```json
|
|
122
137
|
{
|
|
123
|
-
"database": "main",
|
|
124
|
-
"table": "users",
|
|
125
|
-
"indexKey": "user_1",
|
|
126
138
|
"value": {
|
|
127
139
|
"name": "Alice"
|
|
128
140
|
}
|
|
129
141
|
}
|
|
130
142
|
```
|
|
131
143
|
|
|
144
|
+
The previous query/body style is still accepted for compatibility:
|
|
145
|
+
|
|
146
|
+
```text
|
|
147
|
+
/turso?database=main&table=users&indexKey=user_1
|
|
148
|
+
```
|
|
149
|
+
|
|
132
150
|
# Database and schema management
|
|
133
151
|
|
|
134
152
|
The worker can create Turso databases and tables automatically.
|
|
@@ -179,8 +197,8 @@ Objects and arrays are stored as JSON strings.
|
|
|
179
197
|
|
|
180
198
|
# Database-scoped short-lived token
|
|
181
199
|
|
|
182
|
-
Use `/turso/token` to issue a Turso database token after
|
|
183
|
-
or `full-access` authorization through `rules`.
|
|
200
|
+
Use `/turso/token/database/{database}` to issue a Turso database token after
|
|
201
|
+
resolving `read-only` or `full-access` authorization through `rules`.
|
|
184
202
|
|
|
185
203
|
Token authorization is evaluated against the database path:
|
|
186
204
|
|
|
@@ -246,7 +264,6 @@ document-level `fieldMatch` or `pathParamMatch` checks on the client.
|
|
|
246
264
|
|
|
247
265
|
```json
|
|
248
266
|
{
|
|
249
|
-
"database": "main",
|
|
250
267
|
"ttlSeconds": 600,
|
|
251
268
|
"scope": [
|
|
252
269
|
{
|
|
@@ -277,8 +294,9 @@ The response is:
|
|
|
277
294
|
}
|
|
278
295
|
```
|
|
279
296
|
|
|
280
|
-
If both read and write are functions-only, `/turso/token`
|
|
281
|
-
`token`, `expiresAt`, or `url`; it returns only the resolved
|
|
297
|
+
If both read and write are functions-only, `/turso/token/database/{database}`
|
|
298
|
+
does not return `token`, `expiresAt`, or `url`; it returns only the resolved
|
|
299
|
+
modes and scopes:
|
|
282
300
|
|
|
283
301
|
```json
|
|
284
302
|
{
|
package/dist/functions/turso.js
CHANGED
|
@@ -4,19 +4,29 @@ const crud_1 = require("../lib/crud");
|
|
|
4
4
|
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
|
+
const env_1 = require("../lib/env");
|
|
7
8
|
module.exports = (hono, options, data) => {
|
|
8
9
|
hono.get("/", async (context) => handleCrud(context, options, "GET"));
|
|
10
|
+
hono.get("/database/:database/:table", async (context) => handleCrud(context, options, "GET"));
|
|
11
|
+
hono.get("/database/:database/:table/:indexKey", async (context) => handleCrud(context, options, "GET"));
|
|
9
12
|
hono.post("/", async (context) => handleCrud(context, options, "POST"));
|
|
13
|
+
hono.post("/database/:database/:table", async (context) => handleCrud(context, options, "POST"));
|
|
14
|
+
hono.post("/database/:database/:table/:indexKey", async (context) => handleCrud(context, options, "POST"));
|
|
10
15
|
hono.put("/", async (context) => handleCrud(context, options, "PUT"));
|
|
16
|
+
hono.put("/database/:database/:table", async (context) => handleCrud(context, options, "PUT"));
|
|
17
|
+
hono.put("/database/:database/:table/:indexKey", async (context) => handleCrud(context, options, "PUT"));
|
|
11
18
|
hono.delete("/", async (context) => handleCrud(context, options, "DELETE"));
|
|
19
|
+
hono.delete("/database/:database/:table", async (context) => handleCrud(context, options, "DELETE"));
|
|
20
|
+
hono.delete("/database/:database/:table/:indexKey", async (context) => handleCrud(context, options, "DELETE"));
|
|
12
21
|
return hono;
|
|
13
22
|
};
|
|
14
23
|
async function handleCrud(context, options, method) {
|
|
15
24
|
try {
|
|
25
|
+
const resolvedOptions = (0, env_1.resolveTursoWorkersOptionsFromEnv)(context, options);
|
|
16
26
|
const request = await (0, request_1.parseCrudRequest)(context);
|
|
17
|
-
const connection = await (0, turso_client_1.resolveDatabaseConnection)(request.database,
|
|
27
|
+
const connection = await (0, turso_client_1.resolveDatabaseConnection)(request.database, resolvedOptions);
|
|
18
28
|
const client = (0, turso_client_1.createTursoClient)(connection);
|
|
19
|
-
const engine = (0, rules_1.createTursoRulesEngine)(
|
|
29
|
+
const engine = (0, rules_1.createTursoRulesEngine)(resolvedOptions.rules);
|
|
20
30
|
const authentication = context.get("authentication");
|
|
21
31
|
const result = await engine.evaluate({
|
|
22
32
|
path: (0, rules_1.buildRulesPath)({
|
|
@@ -39,8 +49,8 @@ async function handleCrud(context, options, method) {
|
|
|
39
49
|
client,
|
|
40
50
|
method,
|
|
41
51
|
request,
|
|
42
|
-
autoCreateTable:
|
|
43
|
-
autoMigrateAddColumns:
|
|
52
|
+
autoCreateTable: resolvedOptions.autoCreateTable !== false,
|
|
53
|
+
autoMigrateAddColumns: resolvedOptions.autoMigrateAddColumns !== false,
|
|
44
54
|
});
|
|
45
55
|
return context.json({ data: response });
|
|
46
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turso.js","sourceRoot":"","sources":["../../src/functions/turso.ts"],"names":[],"mappings":";;AAMA,sCAAiE;AACjE,4CAA6D;AAC7D,wCAIsB;AACtB,sDAG6B;
|
|
1
|
+
{"version":3,"file":"turso.js","sourceRoot":"","sources":["../../src/functions/turso.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,16 +4,20 @@ const request_1 = require("../lib/request");
|
|
|
4
4
|
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
|
+
const env_1 = require("../lib/env");
|
|
7
8
|
module.exports = (hono, options, data) => {
|
|
8
9
|
hono.post("/", async (context) => handleToken(context, options));
|
|
10
|
+
hono.post("/database/:database", async (context) => handleToken(context, options));
|
|
11
|
+
hono.post("/:database", async (context) => handleToken(context, options));
|
|
9
12
|
return hono;
|
|
10
13
|
};
|
|
11
14
|
async function handleToken(context, options) {
|
|
12
15
|
try {
|
|
16
|
+
const resolvedOptions = (0, env_1.resolveTursoWorkersOptionsFromEnv)(context, options);
|
|
13
17
|
const request = await (0, request_1.parseTokenRequest)(context);
|
|
14
|
-
const connection = await (0, turso_client_1.resolveDatabaseConnection)(request.database,
|
|
18
|
+
const connection = await (0, turso_client_1.resolveDatabaseConnection)(request.database, resolvedOptions);
|
|
15
19
|
const authentication = context.get("authentication");
|
|
16
|
-
const engine = (0, rules_1.createTursoRulesEngine)(
|
|
20
|
+
const engine = (0, rules_1.createTursoRulesEngine)(resolvedOptions.rules);
|
|
17
21
|
const access = await (0, rules_1.resolveDatabaseTokenAccess)({
|
|
18
22
|
engine,
|
|
19
23
|
database: request.database,
|
|
@@ -30,7 +34,7 @@ async function handleToken(context, options) {
|
|
|
30
34
|
database: request.database,
|
|
31
35
|
authorization: access.authorization,
|
|
32
36
|
ttlSeconds: request.ttlSeconds,
|
|
33
|
-
options,
|
|
37
|
+
options: resolvedOptions,
|
|
34
38
|
})
|
|
35
39
|
: undefined;
|
|
36
40
|
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,sDAAgE;AAChE,wCAAkD;
|
|
1
|
+
{"version":3,"file":"turso_token.js","sourceRoot":"","sources":["../../src/functions/turso_token.ts"],"names":[],"mappings":";;AAEA,4CAA8D;AAC9D,wCAGsB;AACtB,sDAAgE;AAChE,wCAAkD;AAClD,oCAA+D;AAE/D,MAAM,CAAC,OAAO,GAAG,CACf,IAAU,EACV,OAA4B,EAC5B,IAAgC,EAChC,EAAE;IACF,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACjE,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACnF,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1E,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,KAAK,UAAU,WAAW,CACxB,OAAgB,EAChB,OAA4B;IAE5B,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,IAAA,uCAAiC,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAG,MAAM,IAAA,2BAAiB,EAAC,OAAO,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,MAAM,IAAA,wCAAyB,EAChD,OAAO,CAAC,QAAQ,EAChB,eAAe,CAChB,CAAC;QACF,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAsC,CAAC;QAC1F,MAAM,MAAM,GAAG,IAAA,8BAAsB,EAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,IAAA,kCAA0B,EAAC;YAC9C,MAAM;YACN,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,cAAc;SACf,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC,IAAI,CACjB;gBACE,KAAK,EAAE,QAAQ;aAChB,EACD,GAAG,CACJ,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa;YAChC,CAAC,CAAC,MAAM,IAAA,0BAAkB,EAAC;gBACvB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,OAAO,EAAE,eAAe;aACzB,CAAC;YACJ,CAAC,CAAC,SAAS,CAAC;QACd,OAAO,OAAO,CAAC,IAAI,CAAC;YAClB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAA,mBAAS,EAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;AACH,CAAC"}
|
package/dist/lib/env.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveTursoWorkersOptionsFromEnv = resolveTursoWorkersOptionsFromEnv;
|
|
4
|
+
function resolveTursoWorkersOptionsFromEnv(context, options) {
|
|
5
|
+
const env = (context.env ?? {});
|
|
6
|
+
return {
|
|
7
|
+
...options,
|
|
8
|
+
organizationName: firstNonEmpty(env.TURSO_ORGANIZATION_NAME, options.organizationName),
|
|
9
|
+
groupName: firstNonEmpty(env.TURSO_GROUP_NAME, options.groupName),
|
|
10
|
+
platformApiToken: firstNonEmpty(env.TURSO_PLATFORM_API_TOKEN, options.platformApiToken),
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function firstNonEmpty(...values) {
|
|
14
|
+
return values.find((value) => typeof value === "string" && value.length > 0);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/lib/env.ts"],"names":[],"mappings":";;AASA,8EAiBC;AAjBD,SAAgB,iCAAiC,CAC/C,OAAgB,EAChB,OAA4B;IAE5B,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAoB,CAAC;IACnD,OAAO;QACL,GAAG,OAAO;QACV,gBAAgB,EAAE,aAAa,CAC7B,GAAG,CAAC,uBAAuB,EAC3B,OAAO,CAAC,gBAAgB,CACzB;QACD,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,SAAS,CAAC;QACjE,gBAAgB,EAAE,aAAa,CAC7B,GAAG,CAAC,wBAAwB,EAC5B,OAAO,CAAC,gBAAgB,CACzB;KACF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,GAAG,MAA8B;IAEjC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC/E,CAAC"}
|
package/dist/lib/request.js
CHANGED
|
@@ -18,12 +18,18 @@ class HttpError extends Error {
|
|
|
18
18
|
exports.HttpError = HttpError;
|
|
19
19
|
async function parseCrudRequest(context) {
|
|
20
20
|
const method = context.req.method.toUpperCase();
|
|
21
|
+
const pathDatabase = optionalParam(context, "database");
|
|
22
|
+
const pathTable = optionalParam(context, "table");
|
|
23
|
+
const pathIndexKey = optionalParam(context, "indexKey");
|
|
21
24
|
const body = method === "GET"
|
|
22
25
|
? parseGetRequest(context)
|
|
23
26
|
: await parseJsonBody(context);
|
|
24
|
-
const database = validateLogicalName(body.database ?? "main", "database");
|
|
25
|
-
const table = validateIdentifier(requiredString(body.table, "table"), "table");
|
|
26
|
-
const
|
|
27
|
+
const database = validateLogicalName(pathDatabase ?? body.database ?? "main", "database");
|
|
28
|
+
const table = validateIdentifier(requiredString(pathTable ?? body.table, "table"), "table");
|
|
29
|
+
const requestedIndexKey = pathIndexKey ?? body.indexKey;
|
|
30
|
+
const indexKey = requestedIndexKey
|
|
31
|
+
? validateIndexKey(requiredString(requestedIndexKey, "indexKey"))
|
|
32
|
+
: undefined;
|
|
27
33
|
const where = validateWhere(body.where ?? []);
|
|
28
34
|
const orderBy = validateOrderBy(body.orderBy ?? []);
|
|
29
35
|
const limit = validateLimit(body.limit);
|
|
@@ -41,8 +47,9 @@ async function parseCrudRequest(context) {
|
|
|
41
47
|
};
|
|
42
48
|
}
|
|
43
49
|
async function parseTokenRequest(context) {
|
|
50
|
+
const pathDatabase = optionalParam(context, "database");
|
|
44
51
|
const body = await parseJsonBody(context);
|
|
45
|
-
const database = validateLogicalName(body.database ?? "main", "database");
|
|
52
|
+
const database = validateLogicalName(pathDatabase ?? body.database ?? "main", "database");
|
|
46
53
|
const scope = body.scope?.map((item) => {
|
|
47
54
|
if (!item || typeof item !== "object") {
|
|
48
55
|
throw new HttpError(400, "scope item must be an object.");
|
|
@@ -117,6 +124,10 @@ function parseGetRequest(context) {
|
|
|
117
124
|
count: query.count === "true",
|
|
118
125
|
};
|
|
119
126
|
}
|
|
127
|
+
function optionalParam(context, name) {
|
|
128
|
+
const value = context.req.param(name);
|
|
129
|
+
return value && value.length > 0 ? value : undefined;
|
|
130
|
+
}
|
|
120
131
|
async function parseJsonBody(context) {
|
|
121
132
|
try {
|
|
122
133
|
return await context.req.json();
|
package/dist/lib/request.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/lib/request.ts"],"names":[],"mappings":";;;AAmBA,
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/lib/request.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED