@somewhere-tech/cli 0.37.9 → 0.37.10
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/dist/commands/cron.js +9 -4
- package/dist/commands/cron.js.map +1 -1
- package/dist/lib/init-feature-template.js +3 -3
- package/dist/lib/skills-pack.generated.js +8 -8
- package/dist/lib/skills-pack.generated.js.map +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/runtime/DECLARED-DATA-VENDOR.json +10 -8
- package/runtime/declared-data.cjs +302 -18
package/dist/commands/cron.js
CHANGED
|
@@ -212,7 +212,8 @@ export function registerCron(program) {
|
|
|
212
212
|
+ ' somewhere cron create "0 8 * * *" /api/daily-digest --project my-app\n'
|
|
213
213
|
+ ' somewhere cron create "0 9 * * *" /api/daily-digest --project my-app --timezone America/Los_Angeles\n'
|
|
214
214
|
+ ' somewhere cron run daily-digest --wait # queue one run now and wait for its result\n'
|
|
215
|
-
+ '\
|
|
215
|
+
+ '\nA new schedule is read in UTC unless --timezone names an IANA zone. `cron list` shows the\n'
|
|
216
|
+
+ 'zone each trigger is stored in, and `cron update --schedule` keeps that zone unless --timezone changes it.\n');
|
|
216
217
|
cron
|
|
217
218
|
.command('list')
|
|
218
219
|
.alias('ls')
|
|
@@ -238,10 +239,12 @@ export function registerCron(program) {
|
|
|
238
239
|
console.log(dim('No scheduled triggers.'));
|
|
239
240
|
}
|
|
240
241
|
else {
|
|
241
|
-
|
|
242
|
+
// Each trigger's schedule is read in its own stored zone (tsk_b07f1dac).
|
|
243
|
+
table(['ID', 'Name', 'Schedule', 'Time zone', 'Handler', 'Enabled'], rows.map((row) => [
|
|
242
244
|
cronRowId(row) ?? '—',
|
|
243
245
|
truncateText(row.name, 32),
|
|
244
246
|
typeof row.schedule === 'string' ? row.schedule : '—',
|
|
247
|
+
typeof row.timezone === 'string' && row.timezone ? row.timezone : '—',
|
|
245
248
|
truncateText(row.handler, 48),
|
|
246
249
|
row.enabled === false ? 'no' : 'yes',
|
|
247
250
|
]));
|
|
@@ -347,7 +350,8 @@ export function registerCron(program) {
|
|
|
347
350
|
cron
|
|
348
351
|
.command('update <cron-id>')
|
|
349
352
|
.description('Update a scheduled trigger')
|
|
350
|
-
.option('--schedule <expression>',
|
|
353
|
+
.option('--schedule <expression>', "New 5-field cron expression, read in the trigger's stored time zone (shown by cron list) unless --timezone changes it")
|
|
354
|
+
.option('--timezone <iana>', 'New IANA time zone the schedule is read in, e.g. America/Los_Angeles; omit to keep the stored zone')
|
|
351
355
|
.option('--handler <path-or-url>', 'New project-relative /api path or https URL')
|
|
352
356
|
.option('--name <name>', 'New display name')
|
|
353
357
|
.option('--payload <json>', 'New JSON object sent to the handler')
|
|
@@ -361,13 +365,14 @@ export function registerCron(program) {
|
|
|
361
365
|
const args = compactRecord([
|
|
362
366
|
['cron_id', cronId],
|
|
363
367
|
['schedule', opts.schedule],
|
|
368
|
+
['timezone', opts.timezone],
|
|
364
369
|
['handler', opts.handler],
|
|
365
370
|
['name', opts.name],
|
|
366
371
|
['payload', parsePayload(opts.payload)],
|
|
367
372
|
['enabled', opts.enable ? true : opts.disable ? false : undefined],
|
|
368
373
|
]);
|
|
369
374
|
if (Object.keys(args).length === 1) {
|
|
370
|
-
throw new Error('No update supplied. Pass a field such as --schedule, --handler, --enable, or --disable.');
|
|
375
|
+
throw new Error('No update supplied. Pass a field such as --schedule, --timezone, --handler, --enable, or --disable.');
|
|
371
376
|
}
|
|
372
377
|
await runCronTool('cron_update', args, opts.json, (value) => printCronMutation('Scheduled trigger updated', value));
|
|
373
378
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cron.js","sourceRoot":"","sources":["../../src/commands/cron.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cron.js","sourceRoot":"","sources":["../../src/commands/cron.ts"],"names":[],"mappings":"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"}
|
|
@@ -417,7 +417,7 @@ export default schema({
|
|
|
417
417
|
});
|
|
418
418
|
`;
|
|
419
419
|
const NOTES_TYPES = `export interface Note {
|
|
420
|
-
id: number
|
|
420
|
+
id: number;
|
|
421
421
|
title: string;
|
|
422
422
|
body: string;
|
|
423
423
|
}
|
|
@@ -940,12 +940,12 @@ export interface ToolActivity {
|
|
|
940
940
|
|
|
941
941
|
/** A task the assistant drafted; it becomes a task only after approval. */
|
|
942
942
|
export interface Proposal {
|
|
943
|
-
id: number
|
|
943
|
+
id: number;
|
|
944
944
|
title: string;
|
|
945
945
|
}
|
|
946
946
|
|
|
947
947
|
export interface AgentTask {
|
|
948
|
-
id: number
|
|
948
|
+
id: number;
|
|
949
949
|
title: string;
|
|
950
950
|
}
|
|
951
951
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
export const BUNDLED_SKILLS_PACK = {
|
|
2
2
|
"schema": 1,
|
|
3
3
|
"name": "somewhere-skills",
|
|
4
|
-
"version": "1+
|
|
5
|
-
"sha256": "
|
|
4
|
+
"version": "1+3394a026e6f8",
|
|
5
|
+
"sha256": "3394a026e6f8d3d4553af8b97605ad40f8e035d769e33bbf23fb4fd5263f61d1",
|
|
6
6
|
"files": [
|
|
7
7
|
{
|
|
8
8
|
"path": "deploy-verify-loop/SKILL.md",
|
|
9
|
-
"sha256": "
|
|
10
|
-
"content": "---\nname: deploy-verify-loop\ndescription: After every change: deploy the raw source, check the live app, and read logs or errors before guessing at a fix.\n---\n\n# Deploy, verify, read the failure\n\n## The loop\n\n```bash\nsomewhere typecheck\nsomewhere deploy\n```\n\nDon't bundle the source yourself; the platform runs the frontend build.\n\n```bash\nsomewhere deploy-check --run /api/hello -X POST -d '{\"name\":\"Ada\"}'\n```\n\n| Step | Command | What it tells you |\n|---|---|---|\n| Verify | `somewhere verify [--flow flow.json]` | Runs the live app at desktop and phone sizes: named steps, console/network health, both screenshots. |\n| Inspect | `somewhere browser [target]` | One page: screenshot, snapshot, DOM, network, or an evaluated expression. |\n| Diagnose | `somewhere logs --tail 10`, `somewhere errors` | Recent function output, then failures split into refused and exception. `errors`
|
|
9
|
+
"sha256": "a00ce22447da1c70678de35f696cc81f976fbb0b56d832fa55edf2802fd8271e",
|
|
10
|
+
"content": "---\nname: deploy-verify-loop\ndescription: After every change: deploy the raw source, check the live app, and read logs or errors before guessing at a fix.\n---\n\n# Deploy, verify, read the failure\n\n## The loop\n\n```bash\nsomewhere typecheck\nsomewhere deploy\n```\n\nDon't bundle the source yourself; the platform runs the frontend build.\n\n```bash\nsomewhere deploy-check --run /api/hello -X POST -d '{\"name\":\"Ada\"}'\n```\n\n| Step | Command | What it tells you |\n|---|---|---|\n| Verify | `somewhere verify [--flow flow.json]` | Runs the live app at desktop and phone sizes: named steps, console/network health, both screenshots. |\n| Inspect | `somewhere browser [target]` | One page: screenshot, snapshot, DOM, network, or an evaluated expression. |\n| Diagnose | `somewhere logs --tail 10`, `somewhere errors` | Recent function output, then failures split into refused and exception. `errors` also works on a temporary project. |\n\n## A flow for verify --flow\n\n```json\n{ \"actions\": [{ \"fill\": \"#title\", \"value\": \"Verify entry\" }, { \"fill\": \"#from_email\", \"value\": \"v@example.com\" },\n { \"click\": \"#send\" }, { \"expect\": { \"selector\": \"#status\", \"text\": \"Received\" } }], \"viewports\": [\"desktop\", \"mobile\"] }\n```\n\n`passed` requires successful steps and request expectations, no page errors, and no unexpected failed requests. It can be false even when every step succeeded.\n\n## Failure 1: the live site still shows the old version\n\nBrowser or CDN cache. Hard-reload (Cmd-Shift-R), or check with `curl -sI https://{subdomain}.somewhere.site`.\n\n## Failure 2: a route fails\n\nShow recent failures with a `kind` column: **refused** for a 4xx your own handler returned on purpose, **exception** for an uncaught throw or a 5xx.\n\nThe `stack` field is the single most useful field for debugging — it tells you the exact file + line in your code where the throw originated.\n\n| `somewhere rollback [project]` | `-y, --yes`, `--json` | Select the previous retained production release. |\n\nSources (`somewhere docs <topic>`): browser, cli, common-mistakes, getting-started, recipe-signed-in-app, troubleshooting.\n"
|
|
11
11
|
},
|
|
12
12
|
{
|
|
13
13
|
"path": "schema-changes/SKILL.md",
|
|
@@ -26,13 +26,13 @@ export const BUNDLED_SKILLS_PACK = {
|
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
"path": "realtime-and-background/SKILL.md",
|
|
29
|
-
"sha256": "
|
|
30
|
-
"content": "---\nname: realtime-and-background\ndescription: When the page must update without a reload, users need audio/video, or work must run outside one request.\n---\n\n# Live views, call rooms, jobs, queues, cron\n\n## Live view: the page updates when rows change\n\n`sw.db.live(name, sw.db.from(...))` is the live path a signed-in browser can subscribe to.\n\n```ts\n// api/open-notes.ts — the declaration and the SELECT stay server-side\nexport default async function (_req, sw) {\n return Response.json(await sw.db.live('notes.open', sw.db.from('notes', {\n where: { done: false },\n columns: ['id', 'title', 'done', 'created_at'],\n order: [['created_at', 'desc'], ['id', 'asc']],\n limit: 20,\n })))\n}\n
|
|
29
|
+
"sha256": "762f0082f694ca5a0e6ae11b133d89da8c25e46729697be346fbc19c6e212d31",
|
|
30
|
+
"content": "---\nname: realtime-and-background\ndescription: When the page must update without a reload, users need audio/video, or work must run outside one request.\n---\n\n# Live views, call rooms, jobs, queues, cron\n\n## Live view: the page updates when rows change\n\n`sw.db.live(name, sw.db.from(...))` is the live path a signed-in browser can subscribe to.\n\n```ts\n// api/open-notes.ts — the declaration and the SELECT stay server-side\nexport default async function (_req, sw) {\n return Response.json(await sw.db.live('notes.open', sw.db.from('notes', {\n where: { done: false },\n columns: ['id', 'title', 'done', 'created_at'],\n order: [['created_at', 'desc'], ['id', 'asc']],\n limit: 20,\n })))\n}\n```\n\n## Call room: audio and video\n\nBuild video calling, screen sharing, or live audio rooms.\n\n## Job: slow work with a status\n\nQueue work that shouldn't block a user request. Make handlers idempotent — they may run more than once.\n\n```ts\nconst job = await sw.jobs.create({\n handler: '/api/jobs/summarize-notes',\n idempotency_key: `summary:${user.id}:${operationId}`,\n // user_id comes from the verified session, so the handler can trust it.\n payload: { summary_id: `${user.id}:${operationId}`, user_id: user.id },\n});\n```\n\n```ts\nif (!(await sw.jobs.verifyInvocation(request))) {\n return Response.json({ error: 'forbidden' }, { status: 403 });\n}\n```\n\n## Queue: fire and forget\n\nFor fire-and-forget tasks where you don't need to inspect status later. Use sw.jobs if you DO need to look up the result.\n\n## Cron: on a schedule\n\nSchedules run on every plan. The finest granularity is one minute: a 5-field expression has no seconds field.\n\n```js\ncron_create({\n project_id: \"my-app\",\n schedule: \"0 9 * * *\", // 5-field cron expression\n timezone: \"America/Los_Angeles\", // optional; defaults to UTC\n handler: \"/api/jobs/daily-digest\",\n payload: { segment: \"daily\" } // optional\n})\n```\n\n```bash\nsomewhere cron run cleanup --project <project> --wait # run once now and wait for the result (id or name)\n```\n\n## Failure 1: REALTIME_RETIRED (410) or CHANNEL_FORBIDDEN (403)\n\nCaller-named channels are retired. This is not a configuration problem and there is no flag to turn them on.\n\n## Failure 2: CRON_SCHEDULE_TOO_FREQUENT\n\nA schedule tighter than `min_interval_minutes` is refused when you create or edit it, with `CRON_SCHEDULE_TOO_FREQUENT` naming both intervals.\n\nSources (`somewhere docs <topic>`): calls, cron, live, sw.jobs, sw.queue, troubleshooting.\n"
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
"path": "email-and-test-inbox/SKILL.md",
|
|
34
|
-
"sha256": "
|
|
35
|
-
"content": "---\nname: email-and-test-inbox\ndescription: When the app sends email, or you need to test sign-up, magic-link, or reset mail without a real mailbox.\n---\n\n# Send email and read the test inbox\n\n## Send\n\n```ts\
|
|
34
|
+
"sha256": "440d7f08e21be5d23d9218944b1e80bd4050134b6a8dba36bc789646a5ad1908",
|
|
35
|
+
"content": "---\nname: email-and-test-inbox\ndescription: When the app sends email, or you need to test sign-up, magic-link, or reset mail without a real mailbox.\n---\n\n# Send email and read the test inbox\n\n## Send\n\n```ts\n// api/_lib/order-email.ts — call it from a handler that already checked who\n// receives this; the address comes from your saved order, never the request.\nexport function sendOrderShipped(\n sw: SomewhereRuntimeContext,\n order: { id: string; email: string; trackingNumber: string },\n): Promise<SomewhereEmailSendResult> {\n return sw.email.send({\n to: order.email,\n subject: 'Your order shipped',\n text: `Tracking: ${order.trackingNumber}`, // or html, or both\n reply_to: 'support@yourapp.com', // optional\n idempotency_key: `order-shipped:${order.id}`,\n });\n}\n```\n\nIt can only email people registered with this project (including pending magic-link sign-ins) or the project's owner.\n\n## Test inbox\n\nAddresses `<anything>@<project-subdomain>.test.somewhere.site` never reach a real mailbox. Read it with `somewhere email test-inbox <address>` (or `sw.email.inbox(address)`) → `{ address, messages: [{ id, to, subject, text, html, magic_link, created_at }] }`.\n\n## Failure 1: MANAGED_SENDER_RECIPIENT_NOT_A_USER\n\nOther recipients return `MANAGED_SENDER_RECIPIENT_NOT_A_USER`; verify your own sender domain for outreach.\n\n## Failure 2: gating on status 'sent'\n\nDo not gate follow-up work on `status === 'sent'` alone: a captured test send and a replay of a delivered message are both successful sends.\n\nSources (`somewhere docs <topic>`): sw.email.\n"
|
|
36
36
|
}
|
|
37
37
|
]
|
|
38
38
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills-pack.generated.js","sourceRoot":"","sources":["../../src/lib/skills-pack.generated.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,mBAAmB,GAAe;IAC7C,QAAQ,EAAE,CAAC;IACX,MAAM,EAAE,kBAAkB;IAC1B,SAAS,EAAE,gBAAgB;IAC3B,QAAQ,EAAE,kEAAkE;IAC5E,OAAO,EAAE;QACP;YACE,MAAM,EAAE,6BAA6B;YACrC,QAAQ,EAAE,kEAAkE;YAC5E,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"skills-pack.generated.js","sourceRoot":"","sources":["../../src/lib/skills-pack.generated.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,mBAAmB,GAAe;IAC7C,QAAQ,EAAE,CAAC;IACX,MAAM,EAAE,kBAAkB;IAC1B,SAAS,EAAE,gBAAgB;IAC3B,QAAQ,EAAE,kEAAkE;IAC5E,OAAO,EAAE;QACP;YACE,MAAM,EAAE,6BAA6B;YACrC,QAAQ,EAAE,kEAAkE;YAC5E,SAAS,EAAE,goEAAgoE;SAC5oE;QACD;YACE,MAAM,EAAE,yBAAyB;YACjC,QAAQ,EAAE,kEAAkE;YAC5E,SAAS,EAAE,ggEAAggE;SAC5gE;QACD;YACE,MAAM,EAAE,wBAAwB;YAChC,QAAQ,EAAE,kEAAkE;YAC5E,SAAS,EAAE,mkEAAmkE;SAC/kE;QACD;YACE,MAAM,EAAE,0BAA0B;YAClC,QAAQ,EAAE,kEAAkE;YAC5E,SAAS,EAAE,gwDAAgwD;SAC5wD;QACD;YACE,MAAM,EAAE,kCAAkC;YAC1C,QAAQ,EAAE,kEAAkE;YAC5E,SAAS,EAAE,6hFAA6hF;SACziF;QACD;YACE,MAAM,EAAE,+BAA+B;YACvC,QAAQ,EAAE,kEAAkE;YAC5E,SAAS,EAAE,8kDAA8kD;SAC1lD;KACF;CACF,CAAC"}
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@somewhere-tech/cli",
|
|
3
|
-
"version": "0.37.
|
|
3
|
+
"version": "0.37.10",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@somewhere-tech/cli",
|
|
9
|
-
"version": "0.37.
|
|
9
|
+
"version": "0.37.10",
|
|
10
10
|
"bundleDependencies": [
|
|
11
11
|
"@modelcontextprotocol/sdk",
|
|
12
12
|
"chokidar",
|
package/package.json
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"esbuild": "0.24.0",
|
|
3
3
|
"source_files": {
|
|
4
|
-
"worker/containers/compile/declared-data-contract.cjs": "
|
|
5
|
-
"worker/containers/compile/runtime-types.cjs": "
|
|
6
|
-
"worker/containers/compile/schema-types.cjs": "
|
|
4
|
+
"worker/containers/compile/declared-data-contract.cjs": "f8a4d1353773f34881aaffbe7ad74aa1eb1458628f2da46cda961e6dd352eb40",
|
|
5
|
+
"worker/containers/compile/runtime-types.cjs": "2ea89ebdf25073a70b69c76cbe78502d8a29f6e89b55323c8bc84ed6651c94eb",
|
|
6
|
+
"worker/containers/compile/schema-types.cjs": "f31099146c91e38e0b526ea4b59b33d4d83f7cdafe79f9805769df850e101848",
|
|
7
7
|
"worker/containers/compile/typed-data.cjs": "57b458e16a373e42d48a0e527317fcdf609299ae368eb539a8b582b9a47abb15",
|
|
8
|
-
"worker/containers/compile/typed-files.cjs": "
|
|
9
|
-
"worker/src/utils/authority/scope-enforcement.ts": "
|
|
8
|
+
"worker/containers/compile/typed-files.cjs": "0e17085a38d2c40f84849ebdd5c892a838b9d18d6a5111c0b224f4d389872e90",
|
|
9
|
+
"worker/src/utils/authority/scope-enforcement.ts": "77133d3026c26a7a842952221f54703916322dbccb7d744c98e3f69dec56e5f0",
|
|
10
|
+
"worker/src/utils/db-schema-deploy/bigint-text.ts": "ef3f581daeecb234d2c1e288bc09495a6facd7b0354b300134918f6c0cf10cc2",
|
|
10
11
|
"worker/src/utils/db-schema-deploy/client-contract-source.ts": "92b9fc756f88b9c26159b6e1785bd2229b788bfc1f62af13aed1bc66c277ff14",
|
|
11
|
-
"worker/src/utils/db-schema-deploy/client-permissions.ts": "
|
|
12
|
+
"worker/src/utils/db-schema-deploy/client-permissions.ts": "1ec99e9b5e9c575460253f8d4a656228919aca6da09d43065e2b34bcbb633b0c",
|
|
12
13
|
"worker/src/utils/db-schema-deploy/extract-schema-files.ts": "5923d30040251b3ec4481d38f3f4ddbbd4889129d77bb08843d9dd7992467a0a",
|
|
13
14
|
"worker/src/utils/db-schema-deploy/extract-schema-relations.ts": "3984683d3227e964845836079476687a7295e6907b525ef21b9eebc488825bf8",
|
|
14
|
-
"worker/src/utils/db-schema-deploy/extract-schema-ts.ts": "
|
|
15
|
+
"worker/src/utils/db-schema-deploy/extract-schema-ts.ts": "405a8d9da80cdb3dbc2dfc93a70e0ed475a93393c14214c9f288b7c58ffd402b",
|
|
16
|
+
"worker/src/utils/db-schema-deploy/schema-constants.ts": "07e648748409207fa4b97367b8942463c047a0bb0e27a36f16f696f90f2b550d",
|
|
15
17
|
"worker/src/utils/db-schema-deploy/schema-ownership.ts": "e6c811a87bc657707be3518dfe547c6d97718ac073108b126eb7f791c9c08202"
|
|
16
18
|
},
|
|
17
|
-
"sha256": "
|
|
19
|
+
"sha256": "786df868aee907143e2b3e9c0497792c5d8eb9bf7d2582860db7ad0107eaba40"
|
|
18
20
|
}
|
|
@@ -35,7 +35,13 @@ var require_declared_data_contract = __commonJS({
|
|
|
35
35
|
"worker/containers/compile/declared-data-contract.cjs"(exports2, module2) {
|
|
36
36
|
"use strict";
|
|
37
37
|
var identifier = /^[a-z_][a-z0-9_]*$/;
|
|
38
|
-
var types = /* @__PURE__ */ new Set(["integer", "number", "text", "boolean", "timestamp", "json", "blob"]);
|
|
38
|
+
var types = /* @__PURE__ */ new Set(["integer", "bigint", "number", "text", "boolean", "timestamp", "json", "blob"]);
|
|
39
|
+
function canonicalBigintText(value) {
|
|
40
|
+
if (typeof value !== "string" || !/^(0|-?[1-9][0-9]*)$/.test(value)) return false;
|
|
41
|
+
const digits = value.startsWith("-") ? value.slice(1) : value;
|
|
42
|
+
const limit = value.startsWith("-") ? "9223372036854775808" : "9223372036854775807";
|
|
43
|
+
return digits.length < limit.length || digits.length === limit.length && digits <= limit;
|
|
44
|
+
}
|
|
39
45
|
function fail(detail) {
|
|
40
46
|
throw new Error(`Invalid declared data contract: ${detail}`);
|
|
41
47
|
}
|
|
@@ -120,7 +126,7 @@ var require_declared_data_contract = __commonJS({
|
|
|
120
126
|
for (const [field, value] of entries.sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0)) {
|
|
121
127
|
const column = columns.find((column2) => column2.n === field);
|
|
122
128
|
if (!column || ["json", "blob"].includes(column.t) || !(value === null || typeof value === "string" && value.length <= 256 || typeof value === "boolean" || typeof value === "number" && Number.isFinite(value))) fail(`${name} public read predicate`);
|
|
123
|
-
if (value === null ? column.nul !== 1 : column.t === "boolean" ? typeof value !== "boolean" :
|
|
129
|
+
if (value === null ? column.nul !== 1 : column.t === "boolean" ? typeof value !== "boolean" : column.t === "integer" ? !Number.isSafeInteger(value) : column.t === "number" ? typeof value !== "number" : column.t === "bigint" ? !canonicalBigintText(value) : ["text", "timestamp"].includes(column.t) ? typeof value !== "string" : true) fail(`${name} public read predicate type`);
|
|
124
130
|
where[field] = value;
|
|
125
131
|
}
|
|
126
132
|
publicRead = { where };
|
|
@@ -211,7 +217,7 @@ var require_declared_data_contract = __commonJS({
|
|
|
211
217
|
return JSON.stringify({ version: 1, tables });
|
|
212
218
|
}
|
|
213
219
|
function columnType(column) {
|
|
214
|
-
const type = { integer: "number
|
|
220
|
+
const type = { integer: "number", bigint: "string", number: "number", text: "string", timestamp: "string", boolean: "boolean", json: "Json", blob: "number[]" }[column.t];
|
|
215
221
|
return column.nul ? `${type} | null` : type;
|
|
216
222
|
}
|
|
217
223
|
function shape(columns, names, mode, required = /* @__PURE__ */ new Set()) {
|
|
@@ -1792,6 +1798,20 @@ interface SomewhereRuntimeContext {
|
|
|
1792
1798
|
// ---- sw.ai ----
|
|
1793
1799
|
type SomewhereAiProvider = 'anthropic' | 'openai' | 'xai' | 'workers-ai' | 'deepseek' | 'deepinfra';
|
|
1794
1800
|
interface SomewhereAiInputBlock { type: string; [key: string]: unknown }
|
|
1801
|
+
/** Native Anthropic image input. Encode file bytes without a data: URL prefix. */
|
|
1802
|
+
interface SomewhereAiImageInputBlock extends SomewhereAiInputBlock {
|
|
1803
|
+
type: 'image';
|
|
1804
|
+
source: {
|
|
1805
|
+
type: 'base64';
|
|
1806
|
+
media_type: 'image/jpeg' | 'image/png' | 'image/gif' | 'image/webp';
|
|
1807
|
+
data: string;
|
|
1808
|
+
};
|
|
1809
|
+
}
|
|
1810
|
+
/** Native Anthropic PDF input for one-shot extraction. */
|
|
1811
|
+
interface SomewhereAiDocumentInputBlock extends SomewhereAiInputBlock {
|
|
1812
|
+
type: 'document';
|
|
1813
|
+
source: { type: 'base64'; media_type: 'application/pdf'; data: string };
|
|
1814
|
+
}
|
|
1795
1815
|
interface SomewhereAiMessage {
|
|
1796
1816
|
role: 'user' | 'assistant' | 'system';
|
|
1797
1817
|
content: string | readonly SomewhereAiInputBlock[];
|
|
@@ -1944,7 +1964,13 @@ interface SomewhereAiUserMemory {
|
|
|
1944
1964
|
clear(): Promise<{ cleared: true }>;
|
|
1945
1965
|
compact(schema: SomewhereJsonObject, options?: SomewhereAiUserMemoryCompactOptions): Promise<SomewhereJsonObject>;
|
|
1946
1966
|
}
|
|
1947
|
-
type SomewhereAiTranscribeOptions = {
|
|
1967
|
+
type SomewhereAiTranscribeOptions = {
|
|
1968
|
+
model?: string;
|
|
1969
|
+
/** Spoken language hint for the default transcription model, e.g. 'en'. */
|
|
1970
|
+
language?: string;
|
|
1971
|
+
/** Names, vocabulary or context for the default transcription model. */
|
|
1972
|
+
prompt?: string;
|
|
1973
|
+
} & (
|
|
1948
1974
|
| { audio: string; audio_url?: string }
|
|
1949
1975
|
| { audio?: string; audio_url: string }
|
|
1950
1976
|
);
|
|
@@ -2720,9 +2746,17 @@ interface SomewhereJob {
|
|
|
2720
2746
|
run_at: string | null;
|
|
2721
2747
|
recovery: SomewhereJobsRecovery | null;
|
|
2722
2748
|
}
|
|
2749
|
+
interface SomewhereJobsCancelResult {
|
|
2750
|
+
job_id: string;
|
|
2751
|
+
status: 'cancelled';
|
|
2752
|
+
ownership_status: 'app_user' | 'project_owner';
|
|
2753
|
+
owner_subject_id: string | null;
|
|
2754
|
+
}
|
|
2723
2755
|
interface SomewhereRuntimeJobs {
|
|
2724
2756
|
create(options: SomewhereJobsCreateOptions): Promise<SomewhereJobsCreateResult>;
|
|
2725
2757
|
status(jobId: string): Promise<SomewhereJob>;
|
|
2758
|
+
// Cancels queued work. An ordinary handler already running finishes; its side effects remain.
|
|
2759
|
+
cancel(jobId: string): Promise<SomewhereJobsCancelResult>;
|
|
2726
2760
|
// True only for a platform-signed job/queue/cron delivery; never throws.
|
|
2727
2761
|
verifyInvocation(req: Request): Promise<boolean>;
|
|
2728
2762
|
}
|
|
@@ -2951,7 +2985,7 @@ interface SomewhereEndpointConfig<Auth extends SomewhereEndpointAuth, Schema ext
|
|
|
2951
2985
|
): unknown;
|
|
2952
2986
|
}
|
|
2953
2987
|
`;
|
|
2954
|
-
var DECLARED_COLUMN_TYPES = { integer: "number
|
|
2988
|
+
var DECLARED_COLUMN_TYPES = { integer: "number", bigint: "string", number: "number", text: "string", timestamp: "string", boolean: "boolean", json: "__SomewhereJson", blob: "number[]" };
|
|
2955
2989
|
function declaredOwnerColumn2(name, table, scopes) {
|
|
2956
2990
|
if (Object.prototype.hasOwnProperty.call(scopes, name)) return scopes[name];
|
|
2957
2991
|
const find = (policy) => !policy ? null : policy.k === "o" ? policy.c : policy.k === "a" ? find(policy.p[0]) || find(policy.p[1]) : null;
|
|
@@ -3011,7 +3045,7 @@ var require_typed_files = __commonJS({
|
|
|
3011
3045
|
const groupOption = member ? `${groupKey}: string | number; ` : "";
|
|
3012
3046
|
const ops = [];
|
|
3013
3047
|
if (collection.client.read) {
|
|
3014
|
-
ops.push(`list(options?: { ${groupOption.replace(": string | number; ", "?: string | number; ")}limit?: number; cursor?: string | null }): Promise<FileResult<{ items:
|
|
3048
|
+
ops.push(`list(options?: { ${groupOption.replace(": string | number; ", "?: string | number; ")}limit?: number; cursor?: string | null }): Promise<FileResult<{ items: Array<${meta}>; next: string | null; has_more: boolean }>>`);
|
|
3015
3049
|
ops.push(`get(id: string): Promise<FileResult<${meta}>>`);
|
|
3016
3050
|
ops.push("url(id: string): string");
|
|
3017
3051
|
ops.push("shareLink(id: string, options?: { expiresIn?: number }): Promise<FileResult<{ url: string; expires_at: string; expires_in: number }>>");
|
|
@@ -3161,8 +3195,8 @@ var require_schema_types = __commonJS({
|
|
|
3161
3195
|
references?: string; onDelete?: 'cascade' | 'restrict'; renamedFrom?: string;
|
|
3162
3196
|
}
|
|
3163
3197
|
interface ClientPermissions<Field extends string> {
|
|
3164
|
-
identity?: 'authenticated' | 'visitor'; read?: boolean | Field[]; publicRead?: boolean | { where: Partial<Record<Field, string | number | boolean | null>> };
|
|
3165
|
-
create?: Field[] | false | null; update?: Field[] | false | null; delete?: boolean;
|
|
3198
|
+
identity?: 'authenticated' | 'visitor'; read?: boolean | readonly Field[]; publicRead?: boolean | { where: Partial<Record<Field, string | number | boolean | null>> };
|
|
3199
|
+
create?: readonly Field[] | false | null; update?: readonly Field[] | false | null; delete?: boolean;
|
|
3166
3200
|
}
|
|
3167
3201
|
interface FileCollection { readonly __somewhereFileCollection: unique symbol }
|
|
3168
3202
|
type FileOperation = 'read' | 'upload' | 'replace' | 'delete';
|
|
@@ -3183,6 +3217,7 @@ function id(options?: { uuid?: boolean }): SomewhereSchemaDeclaration.Column;
|
|
|
3183
3217
|
function text(options?: SomewhereSchemaDeclaration.ColumnOptions<string>): SomewhereSchemaDeclaration.Column;
|
|
3184
3218
|
function number(options?: SomewhereSchemaDeclaration.ColumnOptions<number>): SomewhereSchemaDeclaration.Column;
|
|
3185
3219
|
function integer(options?: SomewhereSchemaDeclaration.ColumnOptions<number>): SomewhereSchemaDeclaration.Column;
|
|
3220
|
+
function bigint(options?: SomewhereSchemaDeclaration.ColumnOptions<string>): SomewhereSchemaDeclaration.Column;
|
|
3186
3221
|
function boolean(options?: SomewhereSchemaDeclaration.ColumnOptions<boolean>): SomewhereSchemaDeclaration.Column;
|
|
3187
3222
|
function timestamp(options?: SomewhereSchemaDeclaration.ColumnOptions<string>): SomewhereSchemaDeclaration.Column;
|
|
3188
3223
|
function json(options?: SomewhereSchemaDeclaration.ColumnOptions<string>): SomewhereSchemaDeclaration.Column;
|
|
@@ -3225,6 +3260,15 @@ module.exports = __toCommonJS(declared_data_vendor_entry_exports);
|
|
|
3225
3260
|
// worker/src/utils/db-schema-deploy/schema-ownership.ts
|
|
3226
3261
|
var SHARED_AUTHOR_COLUMN = "_sw_author_id";
|
|
3227
3262
|
|
|
3263
|
+
// worker/src/utils/db-schema-deploy/bigint-text.ts
|
|
3264
|
+
function isCanonicalBigintText(value) {
|
|
3265
|
+
if (!/^(0|-?[1-9][0-9]*)$/.test(value)) return false;
|
|
3266
|
+
const negative = value.startsWith("-");
|
|
3267
|
+
const digits = negative ? value.slice(1) : value;
|
|
3268
|
+
const limit = negative ? "9223372036854775808" : "9223372036854775807";
|
|
3269
|
+
return digits.length < limit.length || digits.length === limit.length && digits <= limit;
|
|
3270
|
+
}
|
|
3271
|
+
|
|
3228
3272
|
// worker/src/utils/db-schema-deploy/client-permissions.ts
|
|
3229
3273
|
function parseClientPermissions(value, columns, scope) {
|
|
3230
3274
|
const fail = (message) => ({ ok: false, message });
|
|
@@ -3268,7 +3312,7 @@ function parseClientPermissions(value, columns, scope) {
|
|
|
3268
3312
|
if (!(literal === null || typeof literal === "boolean" || typeof literal === "string" || typeof literal === "number" && Number.isFinite(literal))) return fail(`client.publicRead.where field "${rawName}" must equal a literal scalar.`);
|
|
3269
3313
|
if (typeof literal === "string" && literal.length > 256) return fail(`client.publicRead.where field "${rawName}" exceeds 256 characters.`);
|
|
3270
3314
|
if (literal === null && !column.nullable) return fail(`client.publicRead.where field "${rawName}" cannot equal null because it is required.`);
|
|
3271
|
-
if (literal !== null && (column.helper === "boolean" && typeof literal !== "boolean" || ["integer", "number"].includes(column.helper) && typeof literal !== "number" || ["text", "timestamp"].includes(column.helper) && typeof literal !== "string")) {
|
|
3315
|
+
if (literal !== null && (column.helper === "boolean" && typeof literal !== "boolean" || ["integer", "number"].includes(column.helper) && typeof literal !== "number" || column.helper === "integer" && !Number.isSafeInteger(literal) || column.helper === "bigint" && (typeof literal !== "string" || !isCanonicalBigintText(literal)) || ["text", "timestamp"].includes(column.helper) && typeof literal !== "string")) {
|
|
3272
3316
|
return fail(`client.publicRead.where field "${rawName}" must match its declared type.`);
|
|
3273
3317
|
}
|
|
3274
3318
|
normalized[name] = literal;
|
|
@@ -3367,7 +3411,7 @@ function bakedTableSchemaFromDeclared(declaredJson) {
|
|
|
3367
3411
|
if (col.helper === "id") {
|
|
3368
3412
|
t = col.uuid === true ? "text" : "integer";
|
|
3369
3413
|
implicitDefault = true;
|
|
3370
|
-
} else if (col.helper === "integer" || col.helper === "number" || col.helper === "text" || col.helper === "boolean" || col.helper === "timestamp" || col.helper === "json" || col.helper === "blob") {
|
|
3414
|
+
} else if (col.helper === "integer" || col.helper === "bigint" || col.helper === "number" || col.helper === "text" || col.helper === "boolean" || col.helper === "timestamp" || col.helper === "json" || col.helper === "blob") {
|
|
3371
3415
|
t = col.helper;
|
|
3372
3416
|
} else {
|
|
3373
3417
|
return null;
|
|
@@ -3510,6 +3554,229 @@ function bakedMemberFromDeclared(scope) {
|
|
|
3510
3554
|
return { g, m: s.membership.toLowerCase(), u: s.memberUser.toLowerCase(), mg, ...o !== void 0 ? { o } : {} };
|
|
3511
3555
|
}
|
|
3512
3556
|
|
|
3557
|
+
// worker/src/utils/db-schema-deploy/schema-constants.ts
|
|
3558
|
+
var LITERAL_WORDS = /* @__PURE__ */ new Set(["true", "false", "null"]);
|
|
3559
|
+
var STATEMENT_WORDS = /* @__PURE__ */ new Set([
|
|
3560
|
+
"import",
|
|
3561
|
+
"export",
|
|
3562
|
+
"default",
|
|
3563
|
+
"from",
|
|
3564
|
+
"const",
|
|
3565
|
+
"let",
|
|
3566
|
+
"var",
|
|
3567
|
+
"as",
|
|
3568
|
+
"function",
|
|
3569
|
+
"class"
|
|
3570
|
+
]);
|
|
3571
|
+
var isPunct = (t, value) => !!t && t.kind === "punct" && t.value === value;
|
|
3572
|
+
var OPENERS = "([{";
|
|
3573
|
+
var CLOSERS = ")]}";
|
|
3574
|
+
function append(into, tokens) {
|
|
3575
|
+
for (const t of tokens) into.push(t);
|
|
3576
|
+
}
|
|
3577
|
+
var isIdent = (t, value) => !!t && t.kind === "ident" && t.value === value;
|
|
3578
|
+
function resolveSchemaConstants(tokens, callable, maxTokens, fail) {
|
|
3579
|
+
const out = [];
|
|
3580
|
+
let i = 0;
|
|
3581
|
+
const imported = /* @__PURE__ */ new Set();
|
|
3582
|
+
while (isIdent(tokens[i], "import")) {
|
|
3583
|
+
const start = i;
|
|
3584
|
+
while (tokens[i].kind !== "eof" && !isIdent(tokens[i], "from")) {
|
|
3585
|
+
if (tokens[i].kind === "ident" && i > start) imported.add(tokens[i].value);
|
|
3586
|
+
i++;
|
|
3587
|
+
}
|
|
3588
|
+
if (isIdent(tokens[i], "from")) i += 2;
|
|
3589
|
+
if (isPunct(tokens[i], ";")) i++;
|
|
3590
|
+
append(out, tokens.slice(start, i));
|
|
3591
|
+
}
|
|
3592
|
+
const constants = /* @__PURE__ */ new Map();
|
|
3593
|
+
const declaredLater = /* @__PURE__ */ new Map();
|
|
3594
|
+
for (let k = i; k < tokens.length; k++) {
|
|
3595
|
+
const t = tokens[k];
|
|
3596
|
+
if ((isIdent(t, "const") || isIdent(t, "let") || isIdent(t, "var")) && tokens[k + 1]?.kind === "ident") {
|
|
3597
|
+
if (!declaredLater.has(tokens[k + 1].value)) declaredLater.set(tokens[k + 1].value, tokens[k + 1].line);
|
|
3598
|
+
}
|
|
3599
|
+
}
|
|
3600
|
+
let expanded = out.length;
|
|
3601
|
+
const budget = (line, adding) => {
|
|
3602
|
+
expanded += adding;
|
|
3603
|
+
if (expanded > maxTokens) {
|
|
3604
|
+
fail(line, "reusing constants here expands the declaration past the size db/schema.ts allows. Reuse fewer copies, or write the shared part once.");
|
|
3605
|
+
}
|
|
3606
|
+
};
|
|
3607
|
+
const expandRange = (from, to, into, owner) => {
|
|
3608
|
+
const open2 = [];
|
|
3609
|
+
for (let k = from; k < to; k++) {
|
|
3610
|
+
const t = tokens[k];
|
|
3611
|
+
if (t.kind === "punct" && OPENERS.includes(t.value)) open2.push(t.value);
|
|
3612
|
+
else if (t.kind === "punct" && CLOSERS.includes(t.value)) open2.pop();
|
|
3613
|
+
if (isPunct(t, ".") && isPunct(tokens[k + 1], ".") && isPunct(tokens[k + 2], ".")) {
|
|
3614
|
+
const target = tokens[k + 3];
|
|
3615
|
+
const opener = open2.length > 0 ? open2[open2.length - 1] : null;
|
|
3616
|
+
if (!target || target.kind !== "ident") {
|
|
3617
|
+
fail(t.line, "a spread (...) must name a constant declared above, as in ...sharedColumns.");
|
|
3618
|
+
}
|
|
3619
|
+
const constant = lookup(target, owner);
|
|
3620
|
+
if (opener !== "{") {
|
|
3621
|
+
fail(t.line, `...${target.value} is only supported inside an object literal { \u2026 }. Reference ${target.value} directly, or write the values inline.`);
|
|
3622
|
+
}
|
|
3623
|
+
if (!constant.objectLiteral) {
|
|
3624
|
+
fail(t.line, `...${target.value} spreads a constant that is not an object literal { \u2026 }. Only object constants can be spread.`);
|
|
3625
|
+
}
|
|
3626
|
+
const inner = constant.tokens.slice(1, -1);
|
|
3627
|
+
if (inner.length > 0 && isPunct(inner[inner.length - 1], ",")) inner.pop();
|
|
3628
|
+
budget(t.line, Math.max(inner.length, 4));
|
|
3629
|
+
append(into, inner);
|
|
3630
|
+
if (inner.length === 0 && isPunct(tokens[k + 4], ",")) k++;
|
|
3631
|
+
k += 3;
|
|
3632
|
+
continue;
|
|
3633
|
+
}
|
|
3634
|
+
if (t.kind !== "ident") {
|
|
3635
|
+
into.push(t);
|
|
3636
|
+
continue;
|
|
3637
|
+
}
|
|
3638
|
+
const next = tokens[k + 1];
|
|
3639
|
+
const prev = tokens[k - 1];
|
|
3640
|
+
const keyPosition = isPunct(next, ":") && (isPunct(prev, "{") || isPunct(prev, ","));
|
|
3641
|
+
if (keyPosition || LITERAL_WORDS.has(t.value) || isPunct(prev, ".")) {
|
|
3642
|
+
into.push(t);
|
|
3643
|
+
continue;
|
|
3644
|
+
}
|
|
3645
|
+
if (owner === null && STATEMENT_WORDS.has(t.value)) {
|
|
3646
|
+
if (isIdent(t, "export") && isIdent(next, "const")) {
|
|
3647
|
+
fail(t.line, '"export const" is not supported in db/schema.ts; the file exports only the schema. Remove "export" from the constant.');
|
|
3648
|
+
}
|
|
3649
|
+
into.push(t);
|
|
3650
|
+
continue;
|
|
3651
|
+
}
|
|
3652
|
+
if (constants.has(t.value) || declaredLater.has(t.value)) {
|
|
3653
|
+
const constant = lookup(t, owner);
|
|
3654
|
+
if (isPunct(next, "(")) {
|
|
3655
|
+
fail(t.line, `${t.value} is a constant, not a function \u2014 write ${t.value} without "( \u2026 )".`);
|
|
3656
|
+
}
|
|
3657
|
+
if (isPunct(next, ".")) {
|
|
3658
|
+
fail(t.line, `${t.value}.${tokens[k + 2]?.value ?? ""} reads a property of a constant, which db/schema.ts cannot evaluate. Declare that part as its own constant, or write it inline.`);
|
|
3659
|
+
}
|
|
3660
|
+
budget(t.line, constant.tokens.length);
|
|
3661
|
+
append(into, constant.tokens);
|
|
3662
|
+
continue;
|
|
3663
|
+
}
|
|
3664
|
+
if (callable.has(t.value)) {
|
|
3665
|
+
into.push(t);
|
|
3666
|
+
continue;
|
|
3667
|
+
}
|
|
3668
|
+
if ((isPunct(next, "(") || isPunct(next, ".")) && owner === null) {
|
|
3669
|
+
into.push(t);
|
|
3670
|
+
continue;
|
|
3671
|
+
}
|
|
3672
|
+
if (isPunct(next, ".")) {
|
|
3673
|
+
fail(t.line, `${t.value}.${tokens[k + 2]?.value ?? ""} reads a value at run time; db/schema.ts is read without running it. Write the literal value instead.`);
|
|
3674
|
+
}
|
|
3675
|
+
if (isPunct(next, "(")) {
|
|
3676
|
+
fail(t.line, `${t.value}(\u2026) is a function call; db/schema.ts is read without running it, so only the schema helpers can be called. Write the value inline, or declare it with const using schema helpers and literals.`);
|
|
3677
|
+
}
|
|
3678
|
+
fail(t.line, `"${t.value}" is not defined in db/schema.ts. Declare it above export default as const ${t.value} = \u2026; or write the value inline.`);
|
|
3679
|
+
}
|
|
3680
|
+
};
|
|
3681
|
+
const lookup = (t, owner) => {
|
|
3682
|
+
const constant = constants.get(t.value);
|
|
3683
|
+
if (constant) return constant;
|
|
3684
|
+
const at = declaredLater.get(t.value);
|
|
3685
|
+
if (owner === t.value) {
|
|
3686
|
+
fail(t.line, `constant ${t.value} refers to itself. A constant must be built from values declared above it.`);
|
|
3687
|
+
}
|
|
3688
|
+
if (at !== void 0) {
|
|
3689
|
+
fail(t.line, owner ? `constant ${owner} uses ${t.value}, which is declared later (line ${at}). Move ${t.value} above ${owner}; constants that refer to each other in a cycle cannot be resolved.` : `${t.value} is used before its declaration on line ${at}. Move the const above export default.`);
|
|
3690
|
+
}
|
|
3691
|
+
return fail(t.line, `"${t.value}" is not defined in db/schema.ts. Declare it above export default as const ${t.value} = \u2026; or write the value inline.`);
|
|
3692
|
+
};
|
|
3693
|
+
while (!isIdent(tokens[i], "export")) {
|
|
3694
|
+
const t = tokens[i];
|
|
3695
|
+
if (t.kind === "eof") return [...out, t];
|
|
3696
|
+
if (isIdent(t, "let") || isIdent(t, "var")) {
|
|
3697
|
+
fail(t.line, `"${t.value}" declares a changeable binding; db/schema.ts allows only const. Change "${t.value}" to "const".`);
|
|
3698
|
+
}
|
|
3699
|
+
if (!isIdent(t, "const")) {
|
|
3700
|
+
if (t.kind === "ident" && constants.has(t.value)) {
|
|
3701
|
+
fail(t.line, `${t.value} is changed after its declaration; constants in db/schema.ts cannot be reassigned or mutated. Declare the final value once with const.`);
|
|
3702
|
+
}
|
|
3703
|
+
if (isIdent(t, "import")) fail(t.line, "imports must come first in db/schema.ts, before any const.");
|
|
3704
|
+
return [...out, ...tokens.slice(i)];
|
|
3705
|
+
}
|
|
3706
|
+
const nameTok = tokens[i + 1];
|
|
3707
|
+
if (!nameTok || nameTok.kind !== "ident") {
|
|
3708
|
+
fail(t.line, "destructuring (const { \u2026 } = / const [ \u2026 ] =) is not supported in db/schema.ts. Declare one constant per name: const name = \u2026;");
|
|
3709
|
+
}
|
|
3710
|
+
const name = nameTok.value;
|
|
3711
|
+
if (callable.has(name) || LITERAL_WORDS.has(name) || STATEMENT_WORDS.has(name) || name === "schema") {
|
|
3712
|
+
fail(nameTok.line, `const ${name} shadows a db/schema.ts helper or keyword. Choose another name, such as ${name}Rule.`);
|
|
3713
|
+
}
|
|
3714
|
+
if (imported.has(name)) {
|
|
3715
|
+
fail(nameTok.line, `const ${name} has the same name as an import. Choose another name.`);
|
|
3716
|
+
}
|
|
3717
|
+
if (constants.has(name)) fail(nameTok.line, `const ${name} is declared twice. Keep one declaration.`);
|
|
3718
|
+
if (isPunct(tokens[i + 2], ":")) {
|
|
3719
|
+
fail(tokens[i + 2].line, `const ${name} has a type annotation; db/schema.ts constants take their type from the helpers. Remove ": \u2026".`);
|
|
3720
|
+
}
|
|
3721
|
+
if (!isPunct(tokens[i + 2], "=")) fail(nameTok.line, `expected "=" after const ${name}.`);
|
|
3722
|
+
const start = i + 3;
|
|
3723
|
+
let k = start;
|
|
3724
|
+
let depth = 0;
|
|
3725
|
+
for (; tokens[k].kind !== "eof"; k++) {
|
|
3726
|
+
const v = tokens[k];
|
|
3727
|
+
if (v.kind === "punct" && OPENERS.includes(v.value)) depth++;
|
|
3728
|
+
else if (v.kind === "punct" && CLOSERS.includes(v.value)) {
|
|
3729
|
+
depth--;
|
|
3730
|
+
if (depth < 0) fail(v.line, `const ${name} has an unmatched "${v.value}". Balance its brackets.`);
|
|
3731
|
+
} else if (depth === 0 && (isPunct(v, ";") || isPunct(v, ",") || isIdent(v, "const") && !isIdent(tokens[k - 1], "as") || isIdent(v, "let") || isIdent(v, "var") || isIdent(v, "export"))) break;
|
|
3732
|
+
if (depth === 0 && isPunct(v, "=")) fail(v.line, `${name} is assigned twice; give each constant one value.`);
|
|
3733
|
+
}
|
|
3734
|
+
if (depth !== 0) fail(nameTok.line, `const ${name} has an unclosed bracket. Balance its brackets.`);
|
|
3735
|
+
let end2 = k;
|
|
3736
|
+
if (end2 - start >= 2 && isIdent(tokens[end2 - 2], "as") && isIdent(tokens[end2 - 1], "const")) end2 -= 2;
|
|
3737
|
+
if (end2 === start) fail(nameTok.line, `const ${name} has no value.`);
|
|
3738
|
+
if (isPunct(tokens[k], ",")) {
|
|
3739
|
+
fail(tokens[k].line, `one declaration declares several constants; write one const per name (const ${name} = \u2026;).`);
|
|
3740
|
+
}
|
|
3741
|
+
const value = [];
|
|
3742
|
+
expandRange(start, end2, value, name);
|
|
3743
|
+
const objectLiteral = isPunct(tokens[start], "{") && matchingClose(tokens, start) === end2 - 1;
|
|
3744
|
+
constants.set(name, { name, line: nameTok.line, tokens: value, objectLiteral });
|
|
3745
|
+
i = isPunct(tokens[k], ";") ? k + 1 : k;
|
|
3746
|
+
}
|
|
3747
|
+
if (isIdent(tokens[i], "export") && isIdent(tokens[i + 1], "const")) {
|
|
3748
|
+
fail(tokens[i].line, '"export const" is not supported in db/schema.ts; the file exports only the schema. Remove "export" from the constant.');
|
|
3749
|
+
}
|
|
3750
|
+
const body = [];
|
|
3751
|
+
const open = tokens.findIndex((v, k) => k > i && isPunct(v, "(") && isIdent(tokens[k - 1], "schema"));
|
|
3752
|
+
const close = open < 0 ? -1 : matchingClose(tokens, open);
|
|
3753
|
+
const end = close < 0 ? tokens.length : close + 1;
|
|
3754
|
+
expandRange(i, end, body, null);
|
|
3755
|
+
for (let k = end; k < tokens.length; k++) {
|
|
3756
|
+
const v = tokens[k];
|
|
3757
|
+
if (v.kind === "ident" && constants.has(v.value) && (isPunct(tokens[k + 1], "=") || isPunct(tokens[k + 1], "."))) {
|
|
3758
|
+
fail(v.line, `${v.value} is changed after its declaration; constants in db/schema.ts cannot be reassigned or mutated. Declare the final value once with const.`);
|
|
3759
|
+
}
|
|
3760
|
+
body.push(v);
|
|
3761
|
+
}
|
|
3762
|
+
if (out.length + body.length > maxTokens) {
|
|
3763
|
+
fail(tokens[i].line, "reusing constants here expands the declaration past the size db/schema.ts allows. Reuse fewer copies, or write the shared part once.");
|
|
3764
|
+
}
|
|
3765
|
+
return [...out, ...body];
|
|
3766
|
+
}
|
|
3767
|
+
function matchingClose(tokens, open) {
|
|
3768
|
+
let depth = 0;
|
|
3769
|
+
for (let k = open; k < tokens.length; k++) {
|
|
3770
|
+
const v = tokens[k];
|
|
3771
|
+
if (v.kind === "punct" && "([{".includes(v.value)) depth++;
|
|
3772
|
+
else if (v.kind === "punct" && ")]}".includes(v.value)) {
|
|
3773
|
+
depth--;
|
|
3774
|
+
if (depth === 0) return k;
|
|
3775
|
+
}
|
|
3776
|
+
}
|
|
3777
|
+
return -1;
|
|
3778
|
+
}
|
|
3779
|
+
|
|
3513
3780
|
// worker/src/utils/db-schema-deploy/extract-schema-relations.ts
|
|
3514
3781
|
function validateDeclaredRelations(tables, tableByName, knownColumns, markedGone, errors) {
|
|
3515
3782
|
const columnByName = (t, col) => t.columns.find((c) => c.name === col);
|
|
@@ -3876,6 +4143,7 @@ var COLUMN_HELPERS = /* @__PURE__ */ new Set([
|
|
|
3876
4143
|
"text",
|
|
3877
4144
|
"number",
|
|
3878
4145
|
"integer",
|
|
4146
|
+
"bigint",
|
|
3879
4147
|
"boolean",
|
|
3880
4148
|
"timestamp",
|
|
3881
4149
|
"json",
|
|
@@ -3883,6 +4151,17 @@ var COLUMN_HELPERS = /* @__PURE__ */ new Set([
|
|
|
3883
4151
|
]);
|
|
3884
4152
|
var SCOPE_HELPERS = /* @__PURE__ */ new Set(["owner", "shared", "serverOnly", "member", "anyOf", "parent"]);
|
|
3885
4153
|
var TABLE_MARKER_HELPERS = /* @__PURE__ */ new Set(["removedTable", "exported"]);
|
|
4154
|
+
var SCHEMA_CALLABLE = /* @__PURE__ */ new Set([
|
|
4155
|
+
...COLUMN_HELPERS,
|
|
4156
|
+
...SCOPE_HELPERS,
|
|
4157
|
+
...TABLE_MARKER_HELPERS,
|
|
4158
|
+
"schema",
|
|
4159
|
+
"table",
|
|
4160
|
+
"removed",
|
|
4161
|
+
"hasMany",
|
|
4162
|
+
"belongsTo",
|
|
4163
|
+
"files"
|
|
4164
|
+
]);
|
|
3886
4165
|
var SAFE_IDENT = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
|
|
3887
4166
|
var RESERVED_PREFIXES = ["app_", "sqlite_", "d1_", "__sw_"];
|
|
3888
4167
|
var MAX_TABLES = 100;
|
|
@@ -3979,7 +4258,7 @@ function tokenize(source) {
|
|
|
3979
4258
|
i = j;
|
|
3980
4259
|
continue;
|
|
3981
4260
|
}
|
|
3982
|
-
if ("(){}[]
|
|
4261
|
+
if ("(){}[]:,;.=".includes(ch)) {
|
|
3983
4262
|
tokens.push({ kind: "punct", value: ch, line });
|
|
3984
4263
|
i++;
|
|
3985
4264
|
continue;
|
|
@@ -4146,7 +4425,7 @@ function readColumn(r, tableName, rawName, line) {
|
|
|
4146
4425
|
}
|
|
4147
4426
|
if (!COLUMN_HELPERS.has(helper)) {
|
|
4148
4427
|
throw new SchemaTsError(
|
|
4149
|
-
`line ${helperTok.line}: unknown column type "${helper}" on "${tableName}"."${rawName}". Use one of: id, text, number, integer, boolean, timestamp, json, blob.`
|
|
4428
|
+
`line ${helperTok.line}: unknown column type "${helper}" on "${tableName}"."${rawName}". Use one of: id, text, number, integer, bigint, boolean, timestamp, json, blob.`
|
|
4150
4429
|
);
|
|
4151
4430
|
}
|
|
4152
4431
|
r.expectPunct("(", `after "${helper}"`);
|
|
@@ -4196,14 +4475,17 @@ function readColumn(r, tableName, rawName, line) {
|
|
|
4196
4475
|
col.autoNow = true;
|
|
4197
4476
|
break;
|
|
4198
4477
|
}
|
|
4199
|
-
const okType = value === null || t === "boolean" && typeof value === "boolean" || (t === "number" || t === "integer") && typeof value === "number" || (t === "text" || t === "timestamp" || t === "json") && typeof value === "string";
|
|
4478
|
+
const okType = value === null || t === "boolean" && typeof value === "boolean" || (t === "number" || t === "integer") && typeof value === "number" || (t === "text" || t === "timestamp" || t === "json" || t === "bigint") && typeof value === "string";
|
|
4200
4479
|
if (!okType) {
|
|
4201
4480
|
throw new SchemaTsError(
|
|
4202
|
-
`line ${optLine}: the default for "${tableName}"."${rawName}" (${t}) must be ${t === "boolean" ? "true or false" : t === "number" || t === "integer" ? "a number" : t === "blob" ? "omitted \u2014 blob columns cannot declare a default" : "a string"} or null.`
|
|
4481
|
+
`line ${optLine}: the default for "${tableName}"."${rawName}" (${t}) must be ${t === "boolean" ? "true or false" : t === "number" || t === "integer" ? "a number" : t === "bigint" ? "a whole number written as a string, like '9007199254740993'" : t === "blob" ? "omitted \u2014 blob columns cannot declare a default" : "a string"} or null.`
|
|
4203
4482
|
);
|
|
4204
4483
|
}
|
|
4205
|
-
if (t === "integer" && typeof value === "number" && !Number.
|
|
4206
|
-
throw new SchemaTsError(`line ${optLine}: the default for integer column "${tableName}"."${rawName}" must be a whole number.`);
|
|
4484
|
+
if (t === "integer" && typeof value === "number" && !Number.isSafeInteger(value)) {
|
|
4485
|
+
throw new SchemaTsError(Number.isInteger(value) ? `line ${optLine}: the default for integer column "${tableName}"."${rawName}" is outside JavaScript's exact whole-number range (\xB19007199254740991). Declare the column bigint() and write the default as a string.` : `line ${optLine}: the default for integer column "${tableName}"."${rawName}" must be a whole number.`);
|
|
4486
|
+
}
|
|
4487
|
+
if (t === "bigint" && typeof value === "string" && !isCanonicalBigintText(value)) {
|
|
4488
|
+
throw new SchemaTsError(`line ${optLine}: the default for bigint column "${tableName}"."${rawName}" must be a whole number between -9223372036854775808 and 9223372036854775807, written as a string with no sign other than a leading minus and no leading zeros.`);
|
|
4207
4489
|
}
|
|
4208
4490
|
col.hasDefault = true;
|
|
4209
4491
|
col.default = value;
|
|
@@ -4755,12 +5037,14 @@ function extractSchemaTs(source) {
|
|
|
4755
5037
|
return { ok: false, errors: [`db/schema.ts is larger than ${Math.floor(MAX_SOURCE_BYTES / 1024)}KB \u2014 that is not a schema declaration.`] };
|
|
4756
5038
|
}
|
|
4757
5039
|
try {
|
|
4758
|
-
const r = new Reader(tokenize(source))
|
|
5040
|
+
const r = new Reader(resolveSchemaConstants(tokenize(source), SCHEMA_CALLABLE, MAX_SOURCE_BYTES, (line, message) => {
|
|
5041
|
+
throw new SchemaTsError(`line ${line}: ${message}`);
|
|
5042
|
+
}));
|
|
4759
5043
|
while (r.peek().kind === "ident" && r.peek().value === "import") skipImport(r);
|
|
4760
5044
|
const exp = r.expectIdent("to start the declaration");
|
|
4761
5045
|
if (exp.value !== "export") {
|
|
4762
5046
|
throw new SchemaTsError(
|
|
4763
|
-
`line ${exp.line}: db/schema.ts must contain only the schema declaration: optional imports, then "export default schema({ \u2026 })". Found "${exp.value}".`
|
|
5047
|
+
`line ${exp.line}: db/schema.ts must contain only the schema declaration: optional imports, optional const declarations, then "export default schema({ \u2026 })". Found "${exp.value}".`
|
|
4764
5048
|
);
|
|
4765
5049
|
}
|
|
4766
5050
|
const def = r.expectIdent('after "export"');
|