run402 4.101.0 → 4.103.0

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/cli.mjs CHANGED
@@ -384,24 +384,6 @@ switch (cmd) {
384
384
  await run(sub, rest);
385
385
  break;
386
386
  }
387
- // `message` is RESERVED, not merely renamed: it is being kept free for
388
- // addressed agent/human messaging. Aliasing it to feedback would cement the
389
- // old meaning on the exact noun that is about to mean something else.
390
- case "message": {
391
- const { fail } = await import("./lib/sdk-errors.mjs");
392
- fail({
393
- code: "COMMAND_REMOVED",
394
- message: "`run402 message` was renamed to `run402 feedback`.",
395
- hint: "run402 feedback send \"<text>\"",
396
- details: { was: "message", now: "feedback", reserved: "the `message` noun is reserved for addressed agent/human messaging" },
397
- next_actions: [
398
- { type: "edit_request", command: "run402 feedback send \"<text>\"", why: "Send feedback to the Run402 developers." },
399
- { type: "edit_request", command: "run402 messages send \"<text>\"", why: "Message the other agents working in this room." },
400
- { type: "edit_request", command: "run402 escalations raise \"<text>\"", why: "Page a human and wait for a named one to take it." },
401
- ],
402
- });
403
- break;
404
- }
405
387
  case "agent": {
406
388
  const { run } = await import("./lib/agent.mjs");
407
389
  await run(sub, rest);
@@ -472,11 +454,6 @@ switch (cmd) {
472
454
  await run(sub, rest);
473
455
  break;
474
456
  }
475
- case "notifications": {
476
- const { run } = await import("./lib/notifications.mjs");
477
- await run(sub, rest);
478
- break;
479
- }
480
457
  case "webhook-secret": {
481
458
  const { run } = await import("./lib/webhook-secret.mjs");
482
459
  await run(sub, rest);
@@ -484,28 +484,4 @@ export const COMMAND_MANIFEST = [
484
484
  // completeness check against cli.mjs's dispatch switch.
485
485
  export const SKIPPED_FAMILIES = {
486
486
  "dev": "interactive wrapper that spawns `astro dev`",
487
- // RESERVED, not dispatched: every `run402 message …` fails with
488
- // COMMAND_REMOVED pointing at `feedback send` / `messages send` /
489
- // `escalations raise`. It has no subcommands to manifest because it takes
490
- // none — the noun is being held for addressed agent/human messaging.
491
- "message": "reserved noun; fails with COMMAND_REMOVED (renamed to `feedback`)",
492
- // Split into `deliveries` / `contacts` / `subscriptions`; every subcommand
493
- // answers COMMAND_REMOVED naming its successor.
494
- "notifications": "reserved group; split by legible-cli-surface",
495
- };
496
-
497
- /**
498
- * SUBCOMMAND spellings kept alive only to answer `COMMAND_REMOVED`.
499
- *
500
- * A retired spelling still needs a `case` branch — that branch IS the redirect,
501
- * and without it a caller gets a generic "unknown subcommand" instead of being
502
- * told where the verb went. But it is not a command: it dispatches nothing and
503
- * belongs in no capability mapping, so the inventory gate must not demand one.
504
- *
505
- * The family-level equivalent is SKIPPED_FAMILIES above. This exists because
506
- * some spellings are retired INSIDE a family rather than as a whole family,
507
- * which the family list cannot express.
508
- */
509
- export const RESERVED_SUBCOMMANDS = {
510
- "escalations:contacts": "merged into `contacts` — the ladder and Telegram channels are one question",
511
487
  };
package/lib/contacts.mjs CHANGED
@@ -83,7 +83,7 @@ async function preferences(args) {
83
83
  }
84
84
 
85
85
  if (positionals[0] !== "set") {
86
- fail({ code: "BAD_USAGE", message: "Usage: run402 notifications preferences [set <key>=<value> ...]" });
86
+ fail({ code: "BAD_USAGE", message: "Usage: run402 contacts preferences [set <key>=<value> ...]" });
87
87
  }
88
88
 
89
89
  // SET — parse remaining positional args as key=value
@@ -171,7 +171,7 @@ async function channelsConnect(args) {
171
171
  if (positionals.length === 0) {
172
172
  fail({
173
173
  code: "BAD_USAGE",
174
- message: "Usage: run402 notifications channels connect telegram [--label <name>]",
174
+ message: "Usage: run402 contacts connect telegram [--label <name>]",
175
175
  });
176
176
  }
177
177
  if (positionals[0] !== "telegram") {
@@ -209,7 +209,7 @@ async function channelsConnect(args) {
209
209
  return;
210
210
  }
211
211
  console.error("Timed out waiting for you to tap the link — the connect code has expired.");
212
- console.error("Run `run402 notifications channels connect telegram` again for a fresh link.");
212
+ console.error("Run `run402 contacts connect telegram` again for a fresh link.");
213
213
  console.log(JSON.stringify({ ...pending, connected: false, timed_out: true }, null, 2));
214
214
  process.exit(1);
215
215
  }
@@ -229,7 +229,7 @@ async function channelsRevoke(args) {
229
229
  const [bindingId] = requirePositionalCount(a, [], {
230
230
  min: 1,
231
231
  max: 1,
232
- command: "run402 notifications channels revoke <binding_id>",
232
+ command: "run402 contacts rm <contact_id>",
233
233
  missing: "Missing <binding_id>.",
234
234
  });
235
235
  walletAuthHeaders("/agent/v1/notifications/channels/telegram");
@@ -264,8 +264,8 @@ async function runChannels(args) {
264
264
  await channelsRevoke(rest);
265
265
  return;
266
266
  }
267
- failUnknownSubcommand("notifications channels", channelsAction, {
268
- hint: "Run `run402 notifications channels --help` for usage.",
267
+ failUnknownSubcommand("contacts", channelsAction, {
268
+ hint: "Run `run402 contacts --help` for usage.",
269
269
  });
270
270
  }
271
271
 
@@ -519,3 +519,32 @@ describe("scanSourceFiles — explicit file list (GH-409)", () => {
519
519
  );
520
520
  });
521
521
  });
522
+
523
+ describe("scanFileContent — the service key inside a user's request (SERVICE_KEY_IN_USER_REQUEST)", () => {
524
+ it("flags adminDb() in a file that reads the current user", () => {
525
+ const content = [
526
+ 'import { adminDb, auth } from "@run402/functions";',
527
+ "const user = await auth.requireUser();",
528
+ 'const rows = await adminDb().from("posts").select("*");',
529
+ ].join("\n");
530
+ const f = scanFileContent(content).find((x) => x.code === "SERVICE_KEY_IN_USER_REQUEST");
531
+ assert.ok(f, "expected a SERVICE_KEY_IN_USER_REQUEST finding");
532
+ assert.equal(f.severity, SCAN_SEVERITY.WARN);
533
+ assert.equal(f.line, 3);
534
+ assert.match(f.fix, /db\(req\)/);
535
+ });
536
+
537
+ it("does not flag adminDb() in a file that never reads a user", () => {
538
+ const content = 'import { adminDb } from "@run402/functions";\nawait adminDb().sql("DELETE FROM sessions WHERE expires_at < now()");';
539
+ assert.ok(!scanFileContent(content).some((x) => x.code === "SERVICE_KEY_IN_USER_REQUEST"));
540
+ });
541
+
542
+ it("is silenced by `// run402-allow-admin-db:` on the line before", () => {
543
+ const content = [
544
+ "const user = await auth.user();",
545
+ "// run402-allow-admin-db: admin-only action, checked above",
546
+ 'await adminDb().from("audit").insert({ actor: user.id });',
547
+ ].join("\n");
548
+ assert.ok(!scanFileContent(content).some((x) => x.code === "SERVICE_KEY_IN_USER_REQUEST"));
549
+ });
550
+ });
package/lib/doctor.mjs CHANGED
@@ -51,7 +51,8 @@ Output:
51
51
  api_reachable error, tier inactive / frozen / past_due /
52
52
  dormant / missing / error, error-severity source_scan findings
53
53
  advisory a warning that never stops a deploy: account_health,
54
- recovery_posture, vault, runtime_staleness, cli_update gaps
54
+ recovery_posture, vault, runtime_staleness, retiring_routes,
55
+ cli_update gaps
55
56
  info ok / skipped / unknown
56
57
  Agents: branch on \`ok\`; read \`warnings[]\` (one entry per gap) for the
57
58
  non-blocking gaps and \`blocking[]\` for what to fix when \`ok\` is false.
@@ -226,24 +226,6 @@ async function resolveCmd(args) {
226
226
  }
227
227
  }
228
228
 
229
- async function contacts(args) {
230
- // Merged into `run402 contacts` (legible-cli-surface D4): the escalation
231
- // ladder and Telegram channels were the same idea — "where a human is
232
- // reachable" — under two names, and neither spelling suggested the other
233
- // existed. Reserved, not aliased.
234
- const [sub] = Array.isArray(args) ? args : [];
235
- fail({
236
- code: "COMMAND_REMOVED",
237
- message: "`run402 escalations contacts` moved to `run402 contacts`.",
238
- hint: sub === "remove" ? "run402 contacts rm <contact_id>" : `run402 contacts ${sub ?? "list"}`,
239
- details: {
240
- was: `escalations contacts${sub ? ` ${sub}` : ""}`,
241
- now: "contacts",
242
- why: "the paging ladder and Telegram channels are one question — where a human is reachable",
243
- },
244
- });
245
- }
246
-
247
229
  export async function run(sub, args) {
248
230
  const argv = Array.isArray(args) ? args : [];
249
231
  if (!sub || hasHelp([sub, ...argv])) {
@@ -266,15 +248,8 @@ export async function run(sub, args) {
266
248
  case "resolve":
267
249
  await resolveCmd(argv);
268
250
  break;
269
- case "contacts":
270
- await contacts(argv);
271
- break;
272
251
  default:
273
252
  failUnknownSubcommand("escalations", sub, {
274
- // `contacts` is a nested group, so it has no manifest row of its own —
275
- // without this it would be missing from the suggestion list a lost
276
- // agent reads.
277
- extraSubcommands: ["contacts"],
278
253
  hint: "Run `run402 escalations --help` for usage.",
279
254
  });
280
255
  }
package/lib/projects.mjs CHANGED
@@ -208,6 +208,7 @@ Examples:
208
208
  Usage:
209
209
  run402 projects sql "<query>" [--project <project_id>] [options]
210
210
  run402 projects sql --file <path> [--project <project_id>] [options]
211
+ run402 projects sql --batch <path> [--transaction all|each] [--project <project_id>]
211
212
 
212
213
  Legacy (still supported):
213
214
  run402 projects sql <prj_id> "<query>" [options]
@@ -220,11 +221,21 @@ Options:
220
221
  prj_... positional is also still accepted)
221
222
  --file <path> Read SQL from a file instead of an inline query
222
223
  --params '<json>' JSON array of parameters for a parameterized query
224
+ --batch <path> Run several statements from a JSON file: an array of
225
+ { "sql": "...", "params": [...] } (one statement each)
226
+ --transaction <all|each>
227
+ With --batch: "all" (default) rolls back every statement
228
+ on the first failure; "each" commits each on its own
229
+
230
+ Result: { rows, row_count, fields, statements, warnings }. warnings[] never
231
+ changes the result: SCHEMA_CHANGE_OUTSIDE_MIGRATION means a schema change on
232
+ a released project belongs in spec.database.migrations.
223
233
 
224
234
  Examples:
225
235
  run402 projects sql "SELECT * FROM users LIMIT 5" --project prj_abc123
226
236
  run402 projects sql "SELECT * FROM users WHERE id = $1" --params '[42]'
227
237
  run402 projects sql --file setup.sql --project prj_abc123
238
+ run402 projects sql --batch seed.json --transaction all --project prj_abc123
228
239
  `,
229
240
  costs: `run402 projects costs — Show admin-only per-project finance
230
241
 
@@ -642,40 +653,23 @@ async function current() {
642
653
  console.log(JSON.stringify(out, null, 2));
643
654
  }
644
655
 
645
- function commandMoved(name) {
646
- fail({
647
- code: "COMMAND_MOVED",
648
- message: `run402 projects ${name} moved to the explicit local credential-cache surface.`,
649
- hint: "Use `run402 credentials project-keys status/export --project <project_id>`.",
650
- details: {
651
- old_command: `projects ${name}`,
652
- new_command: name === "keys" ? "credentials project-keys export --reveal" : "credentials project-keys status",
653
- source: "local_cache",
654
- },
655
- next_actions: [
656
- {
657
- type: "run_command",
658
- command: "run402 credentials project-keys status --project <project_id>",
659
- why: "Inspect cached key presence without revealing secrets.",
660
- },
661
- {
662
- type: "run_command",
663
- command: "run402 credentials project-keys export --project <project_id> --reveal",
664
- why: "Reveal cached project keys only when you explicitly need secret material.",
665
- },
666
- ],
667
- });
668
- }
669
-
670
656
  async function sqlCmd(projectId, args = []) {
671
657
  let file = null;
672
658
  let query = null;
673
659
  let paramsRaw = null;
660
+ let batchFile = null;
661
+ let transaction = null;
674
662
  for (let i = 0; i < args.length; i++) {
675
663
  if (args[i] === "--file" && args[i + 1]) { file = args[++i]; }
676
664
  else if (args[i] === "--params" && args[i + 1]) { paramsRaw = args[++i]; }
665
+ else if (args[i] === "--batch" && args[i + 1]) { batchFile = args[++i]; }
666
+ else if (args[i] === "--transaction" && args[i + 1]) { transaction = args[++i]; }
677
667
  else if (!query && !args[i].startsWith("--")) { query = args[i]; }
678
668
  }
669
+ if (batchFile) return sqlBatchCmd(projectId, batchFile, transaction, { query, file, paramsRaw });
670
+ if (transaction) {
671
+ fail({ code: "BAD_USAGE", message: "--transaction applies only with --batch <path>." });
672
+ }
679
673
  if (file) validateRegularFile(file, "--file");
680
674
  const sql = file ? readFileSync(file, "utf-8") : query;
681
675
  if (!sql) {
@@ -703,6 +697,38 @@ async function sqlCmd(projectId, args = []) {
703
697
  }
704
698
  }
705
699
 
700
+ async function sqlBatchCmd(projectId, batchFile, transaction, others) {
701
+ if (others.query || others.file || others.paramsRaw) {
702
+ fail({ code: "BAD_USAGE", message: "--batch takes its statements from the file; drop the inline query, --file, and --params." });
703
+ }
704
+ if (transaction !== null && transaction !== "all" && transaction !== "each") {
705
+ fail({ code: "BAD_USAGE", message: "--transaction must be all or each." });
706
+ }
707
+ validateRegularFile(batchFile, "--batch");
708
+ let parsed;
709
+ try {
710
+ parsed = JSON.parse(readFileSync(batchFile, "utf-8"));
711
+ } catch (err) {
712
+ fail({ code: "BAD_USAGE", message: `--batch ${batchFile} is not valid JSON: ${err.message}` });
713
+ }
714
+ const statements = Array.isArray(parsed) ? parsed : parsed?.statements;
715
+ if (!Array.isArray(statements) || statements.length === 0) {
716
+ fail({
717
+ code: "BAD_USAGE",
718
+ message: "--batch expects a JSON array of { \"sql\": \"...\", \"params\": [...] } statements.",
719
+ hint: "One statement per entry, e.g. [{\"sql\":\"INSERT INTO t VALUES ($1)\",\"params\":[1]},{\"sql\":\"SELECT * FROM t\"}]",
720
+ });
721
+ }
722
+ const tx = transaction ?? (Array.isArray(parsed) ? undefined : parsed?.transaction);
723
+ try {
724
+ const data = await getSdk().projects.sqlBatch(projectId, statements, tx ? { transaction: tx } : {});
725
+ console.log(JSON.stringify(data, null, 2));
726
+ if (data && data.status === "partial") process.exitCode = 1;
727
+ } catch (err) {
728
+ reportSdkError(err);
729
+ }
730
+ }
731
+
706
732
  function toCliExposeValidationResult(data) {
707
733
  if (!data || typeof data !== "object" || Array.isArray(data)) return data;
708
734
  if ("has_errors" in data) return data;
@@ -875,7 +901,7 @@ const FLAGS_BY_SUB = {
875
901
  "get-expose": { known: ["--project"], values: ["--project"] },
876
902
  "promote-user": { known: ["--project"], values: ["--project"] },
877
903
  "demote-user": { known: ["--project"], values: ["--project"] },
878
- sql: { known: ["--project", "--file", "--params"], values: ["--project", "--file", "--params"] },
904
+ sql: { known: ["--project", "--file", "--params", "--batch", "--transaction"], values: ["--project", "--file", "--params", "--batch", "--transaction"] },
879
905
  costs: { known: ["--project", "--window"], values: ["--project", "--window"] },
880
906
  "apply-expose": { known: ["--project", "--file"], values: ["--project", "--file"] },
881
907
  "validate-expose": {
@@ -919,8 +945,6 @@ export async function run(sub, args) {
919
945
  case "rename": { const { projectId, rest } = resolveProjectSelector(args, { rejectBareFirst: true, valueFlags: FLAGS_BY_SUB.rename.values }); await rename(projectId, rest); break; }
920
946
  case "tenant-payments": { const { projectId, rest } = resolveProjectSelector(args, { rejectBareFirst: true, valueFlags: FLAGS_BY_SUB["tenant-payments"].values }); await tenantPayments(projectId, rest); break; }
921
947
  case "get": { const { projectId } = resolveProjectSelector(args, { rejectBareFirst: true }); await get(projectId); break; }
922
- case "info": commandMoved("info"); break;
923
- case "keys": commandMoved("keys"); break;
924
948
  case "sql": { const { projectId, rest } = resolveProjectSelector(args, { maxBarePositionals: 1, valueFlags: FLAGS_BY_SUB.sql.values, rejectBareFirstWhenFlagPresent: ["--file"] }); await sqlCmd(projectId, rest); break; }
925
949
  case "rest": { const { projectId, rest: restArgs } = resolveProjectSelector(args, { valueFlags: FLAGS_BY_SUB.rest.values }); await rest(projectId, restArgs); break; }
926
950
  case "usage": { const { projectId } = resolveProjectSelector(args, { rejectBareFirst: true }); await usage(projectId); break; }
@@ -119,7 +119,7 @@ async function rulesRm(args) {
119
119
  const [ruleId] = requirePositionalCount(a, [], {
120
120
  min: 1,
121
121
  max: 1,
122
- command: "run402 notifications rules rm <rule_id>",
122
+ command: "run402 subscriptions rm <subscription_id>",
123
123
  missing: "Missing <rule_id>.",
124
124
  });
125
125
  walletAuthHeaders("/agent/v1/notifications/rules");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "run402",
3
- "version": "4.101.0",
3
+ "version": "4.103.0",
4
4
  "description": "CLI for Run402 — full-stack backend infrastructure for AI agents: Postgres, auth, storage, serverless functions and atomic deploys. Paid with x402/MPP. Includes $0.03 image generation.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -13,7 +13,7 @@
13
13
  import type { Client } from "../kernel.js";
14
14
  import type { ProjectKeys } from "../credentials.js";
15
15
  import type { ExposeManifest } from "./deploy.types.js";
16
- import type { ExposeManifestValidationInput, ExposeManifestValidationResult, ListProjectsOptions, ListProjectsResult, ProjectDetail, ProjectInfo, ProjectRestOptions, ProjectRestResponse, ProvisionOptions, ProvisionResult, QuoteResult, RenameProjectResult, SetRepoNameResult, SchemaReport, ListTenantPaymentsOptions, TenantPaymentListResult, UsageReport, ValidateExposeOptions } from "./projects.types.js";
16
+ import type { SqlBatchOptions, SqlBatchResult, SqlBatchStatement, SqlResult, ExposeManifestValidationInput, ExposeManifestValidationResult, ListProjectsOptions, ListProjectsResult, ProjectDetail, ProjectInfo, ProjectRestOptions, ProjectRestResponse, ProvisionOptions, ProvisionResult, QuoteResult, RenameProjectResult, SetRepoNameResult, SchemaReport, ListTenantPaymentsOptions, TenantPaymentListResult, UsageReport, ValidateExposeOptions } from "./projects.types.js";
17
17
  export declare class Projects {
18
18
  private readonly client;
19
19
  readonly schema: (id: string) => Promise<SchemaReport>;
@@ -113,12 +113,23 @@ export declare class Projects {
113
113
  * constraints, and RLS policies.
114
114
  */
115
115
  getSchema(id: string): Promise<SchemaReport>;
116
- /** Run SQL against the project's database using the service key. Returns
117
- * the gateway envelope verbatim: `{ status, schema, rows, row_count, fields,
118
- * statements }`. `rows` and `fields` come from the last statement and
116
+ /** Run SQL against the project's database using the service key
117
+ * (`POST /projects/v1/:project_id/sql`). Returns the gateway envelope
118
+ * verbatim: `{ status, schema, rows, row_count, fields, statements,
119
+ * warnings }`. `rows` and `fields` come from the last statement and
119
120
  * `row_count` is that statement's count; `statements[]` carries each
120
- * statement's `{ command, row_count }` for a multi-statement batch. */
121
- sql(id: string, sql: string, params?: unknown[]): Promise<unknown>;
121
+ * statement's `{ command, row_count }` for a multi-statement text.
122
+ * `warnings[]` never changes the result: `SCHEMA_CHANGE_OUTSIDE_MIGRATION`
123
+ * means a schema change on a released project belongs in a migration, and
124
+ * `MULTI_STATEMENT_TEXT_BODY` points at {@link sqlBatch}. */
125
+ sql(id: string, sql: string, params?: unknown[]): Promise<SqlResult>;
126
+ /** Run several statements (1 to 100, one statement each) with an explicit
127
+ * transaction (`POST /projects/v1/:project_id/sql/batch`). With
128
+ * `transaction: "all"` (default) the first failure rolls back the batch and
129
+ * throws `SQL_BATCH_STATEMENT_FAILED` naming the statement's index; with
130
+ * `"each"` every statement commits on its own and `results[i].status` says
131
+ * how each went. */
132
+ sqlBatch(id: string, statements: SqlBatchStatement[], opts?: SqlBatchOptions): Promise<SqlBatchResult>;
122
133
  /** Query or mutate a project table through PostgREST. */
123
134
  rest<T = unknown>(id: string, table: string, options?: ProjectRestOptions): Promise<T>;
124
135
  /** Query or mutate a project table through PostgREST and preserve HTTP status. */
@@ -1 +1 @@
1
- {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/namespaces/projects.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/namespaces/projects.ts"],"names":[],"mappings":"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"}
@@ -26,7 +26,7 @@ function normalizeListProjectsResult(result) {
26
26
  };
27
27
  }
28
28
  // The SQL response is returned VERBATIM in the wire shape:
29
- // { status, schema, rows, row_count, fields, statements } (snake_case, docs/style.md).
29
+ // { status, schema, rows, row_count, fields, statements, warnings } (snake_case, docs/style.md).
30
30
  // A former normalization here renamed row_count -> rowCount, which made the
31
31
  // SDK the odd layer out — the gateway, the in-function `adminDb().sql()`
32
32
  // runtime, and the CLI all speak row_count. One logical operation, one shape.
@@ -270,15 +270,19 @@ export class Projects {
270
270
  context: "fetching schema",
271
271
  });
272
272
  }
273
- /** Run SQL against the project's database using the service key. Returns
274
- * the gateway envelope verbatim: `{ status, schema, rows, row_count, fields,
275
- * statements }`. `rows` and `fields` come from the last statement and
273
+ /** Run SQL against the project's database using the service key
274
+ * (`POST /projects/v1/:project_id/sql`). Returns the gateway envelope
275
+ * verbatim: `{ status, schema, rows, row_count, fields, statements,
276
+ * warnings }`. `rows` and `fields` come from the last statement and
276
277
  * `row_count` is that statement's count; `statements[]` carries each
277
- * statement's `{ command, row_count }` for a multi-statement batch. */
278
+ * statement's `{ command, row_count }` for a multi-statement text.
279
+ * `warnings[]` never changes the result: `SCHEMA_CHANGE_OUTSIDE_MIGRATION`
280
+ * means a schema change on a released project belongs in a migration, and
281
+ * `MULTI_STATEMENT_TEXT_BODY` points at {@link sqlBatch}. */
278
282
  async sql(id, sql, params) {
279
283
  const keys = await requireProjectCredentials(this.client, id, "running SQL");
280
284
  const useParams = Array.isArray(params) && params.length > 0;
281
- return this.client.request(`/projects/v1/admin/${id}/sql`, {
285
+ return this.client.request(`/projects/v1/${id}/sql`, {
282
286
  method: "POST",
283
287
  headers: {
284
288
  Authorization: `Bearer ${keys.service_key}`,
@@ -289,6 +293,21 @@ export class Projects {
289
293
  context: "running SQL",
290
294
  });
291
295
  }
296
+ /** Run several statements (1 to 100, one statement each) with an explicit
297
+ * transaction (`POST /projects/v1/:project_id/sql/batch`). With
298
+ * `transaction: "all"` (default) the first failure rolls back the batch and
299
+ * throws `SQL_BATCH_STATEMENT_FAILED` naming the statement's index; with
300
+ * `"each"` every statement commits on its own and `results[i].status` says
301
+ * how each went. */
302
+ async sqlBatch(id, statements, opts = {}) {
303
+ const keys = await requireProjectCredentials(this.client, id, "running a SQL batch");
304
+ return this.client.request(`/projects/v1/${id}/sql/batch`, {
305
+ method: "POST",
306
+ headers: { Authorization: `Bearer ${keys.service_key}` },
307
+ body: { statements, transaction: opts.transaction ?? "all" },
308
+ context: "running a SQL batch",
309
+ });
310
+ }
292
311
  /** Query or mutate a project table through PostgREST. */
293
312
  async rest(id, table, options) {
294
313
  return (await this.restResponse(id, table, options)).body;
@@ -308,10 +327,11 @@ export class Projects {
308
327
  if (method !== "GET")
309
328
  headers.Prefer = "return=representation";
310
329
  // The gateway rejects the service_role on the public PostgREST path
311
- // (/rest/v1/*), so service-key REST is routed through the admin REST
312
- // route (/admin/v1/rest/*). Anon keys use the public path.
330
+ // (/rest/v1/*), so service-key REST is routed through the project's
331
+ // service REST route (/projects/v1/:project_id/rest/*). Anon keys use the
332
+ // public path.
313
333
  const path = useService
314
- ? `/admin/v1/rest/${encodeURIComponent(table)}${query}`
334
+ ? `/projects/v1/${id}/rest/${encodeURIComponent(table)}${query}`
315
335
  : `/rest/v1/${encodeURIComponent(table)}${query}`;
316
336
  try {
317
337
  return await this.client.requestWithResponse(path, {
@@ -1 +1 @@
1
- {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/namespaces/projects.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/namespaces/projects.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAmCtE,SAAS,2BAA2B,CAAC,MAAgE;IACnG,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,OAAO;QACL,GAAI,MAA6B;QACjC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACzB,MAAM,GAAG,GAAG,GAAyB,CAAC;YACtC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;YACnD,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,SAAS,IAAI,EAAE,EAAE,GAAG,IAAI,EAAoB,CAAC;QAClE,CAAC,CAAC;KACH,CAAC;AACJ,CAAC;AAED,2DAA2D;AAC3D,iGAAiG;AACjG,4EAA4E;AAC5E,yEAAyE;AACzE,8EAA8E;AAE9E,SAAS,+BAA+B,CAAC,KAA6N;IACpQ,IAAI,WAAW,IAAI,KAAK;QAAE,OAAO,KAAuC,CAAC;IACzE,OAAO;QACL,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,SAAS,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI;QACpC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QACvD,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;KAC9D,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,QAAQ;IAOU;IANpB,MAAM,CAAwC;IAC9C,KAAK,CAAuC;IAC5C,KAAK,CAA6B;IAClC,WAAW,CAA+C;IAC1D,UAAU,CAA+C;IAElE,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,EAAE,EAAU,EAAE,KAAa,EAAE,MAAsC,EAAE,OAAe,EAAE,EAAE;YACxG,MAAM,IAAI,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YACvE,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAU,sBAAsB,EAAE,IAAI,MAAM,EAAE,EAAE;gBACvE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE,EAAE;gBACxD,IAAI,EAAE,EAAE,KAAK,EAAE;gBACf,OAAO;aACR,CAAC,CAAC;QACL,CAAC,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;QACpF,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;IACnF,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,SAAS,CAAC,OAAyB,EAAE;QACzC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAC;QACpD,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACnD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACnD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;QAEvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAkB,cAAc,EAAE;YACxE,MAAM,EAAE,MAAM;YACd,IAAI;YACJ,sEAAsE;YACtE,4EAA4E;YAC5E,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,iBAAiB,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,6EAA6E;YAC7E,8EAA8E;YAC9E,GAAG,CAAC,IAAI,CAAC,KAAK;gBACZ,CAAC,CAAC;oBACE,QAAQ,EAAE;wBACR,MAAM,EAAE,oBAAoB;wBAC5B,UAAU,EAAE,oBAA6B;wBACzC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE;qBAC/B;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,OAAO,EAAE,sBAAsB;SAChC,CAAC,CAAC;QAEH,0EAA0E;QAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE;gBACzC,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7F,CAAC,CAAC;QACL,CAAC;QACD,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC3B,MAAM,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,IAAI,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAElF,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAU,gBAAgB,EAAE,EAAE,EAAE;YACvD,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE,EAAE;YACxD,OAAO,EAAE,kBAAkB;SAC5B,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,KAAK,CAAC,aAAa;YAAE,MAAM,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,KAAK,CAAC,IAAI,CAAC,OAA4B,EAAE;QACvC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YACvC,MAAM,IAAI,UAAU,CAClB,+GAA+G,EAC/G,kBAAkB,CACnB,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,qEAAqE;YACrE,uEAAuE;YACvE,qEAAqE;YACrE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YACnF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAqB,uBAAuB,EAAE;gBACpF,OAAO,EAAE,kBAAkB;gBAC3B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACjD,CAAC,CAAC;YACH,OAAO,2BAA2B,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC;QAED,2EAA2E;QAC3E,yEAAyE;QACzE,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS;YAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAClE,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAqB,eAAe,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE;YACtG,OAAO,EAAE,kBAAkB;SAC5B,CAAC,CAAC;QACH,OAAO,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,IAAY;QAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAsB,gBAAgB,SAAS,EAAE,EAAE;YAC3E,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,EAAE,IAAI,EAAE;YACd,OAAO,EAAE,kBAAkB;SAC5B,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,IAAY;QAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAoB,gBAAgB,SAAS,YAAY,EAAE;YACnF,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE,IAAI,EAAE;YACd,OAAO,EAAE,iCAAiC;SAC3C,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB,CAAC,SAAiB,EAAE,OAAkC,EAAE;QAC9E,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAClE,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CACxB,gBAAgB,kBAAkB,CAAC,SAAS,CAAC,mBAAmB,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAC1F,EAAE,OAAO,EAAE,yBAAyB,EAAE,CACvC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,IAAI,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAEhF,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAc,sBAAsB,EAAE,QAAQ,EAAE;YACxE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE,EAAE;YACxD,OAAO,EAAE,gBAAgB;SAC1B,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,EAAU;QACxB,MAAM,IAAI,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC;QAEjF,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAe,sBAAsB,EAAE,SAAS,EAAE;YAC1E,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE,EAAE;YACxD,OAAO,EAAE,iBAAiB;SAC3B,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;kEAQ8D;IAC9D,KAAK,CAAC,GAAG,CAAC,EAAU,EAAE,GAAW,EAAE,MAAkB;QACnD,MAAM,IAAI,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;QAE7E,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAY,gBAAgB,EAAE,MAAM,EAAE;YAC9D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE;gBAC3C,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY;aAC9D;YACD,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS;YAC7C,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;YACpC,OAAO,EAAE,aAAa;SACvB,CAAC,CAAC;IACL,CAAC;IAED;;;;;yBAKqB;IACrB,KAAK,CAAC,QAAQ,CAAC,EAAU,EAAE,UAA+B,EAAE,OAAwB,EAAE;QACpF,MAAM,IAAI,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,qBAAqB,CAAC,CAAC;QACrF,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAiB,gBAAgB,EAAE,YAAY,EAAE;YACzE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE,EAAE;YACxD,IAAI,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,KAAK,EAAE;YAC5D,OAAO,EAAE,qBAAqB;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,yDAAyD;IACzD,KAAK,CAAC,IAAI,CACR,EAAU,EACV,KAAa,EACb,OAA4B;QAE5B,OAAO,CAAC,MAAM,IAAI,CAAC,YAAY,CAAI,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,CAAC;IAED,kFAAkF;IAClF,KAAK,CAAC,YAAY,CAChB,EAAU,EACV,KAAa,EACb,OAA4B;QAE5B,MAAM,IAAI,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC;QAE/E,MAAM,IAAI,GAAuB,OAAO,IAAI,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC;QAC9C,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC1D,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,OAAO,GAA2B;YACtC,MAAM,EAAE,GAAG;YACX,aAAa,EAAE,UAAU,GAAG,EAAE;SAC/B,CAAC;QACF,IAAI,MAAM,KAAK,KAAK;YAAE,OAAO,CAAC,MAAM,GAAG,uBAAuB,CAAC;QAE/D,oEAAoE;QACpE,oEAAoE;QACpE,0EAA0E;QAC1E,eAAe;QACf,MAAM,IAAI,GAAG,UAAU;YACrB,CAAC,CAAC,gBAAgB,EAAE,SAAS,kBAAkB,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE;YAChE,CAAC,CAAC,YAAY,kBAAkB,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE,CAAC;QAEpD,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAI,IAAI,EAAE;gBACpD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK;aAC5E,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,KAAK,CAAC,WAAW,CAAC,EAAU,EAAE,QAAwB;QACpD,MAAM,IAAI,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,0BAA0B,CAAC,CAAC;QAC1F,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAU,sBAAsB,EAAE,SAAS,EAAE;YACrE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE,EAAE;YACxD,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,0BAA0B;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,cAAc,CAClB,QAAuC,EACvC,OAA8B,EAAE;QAEhC,MAAM,OAAO,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,kCAAkC,CAAC,QAAQ,CAAC,CAAC;QAC5D,IAAI,WAAW,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAEzC,MAAM,IAAI,GAA4B,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpE,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;YAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC;QAE5E,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,4BAA4B,CAAC,CAAC;YACjG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CACtC,sBAAsB,OAAO,kBAAkB,EAC/C;gBACE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE,EAAE;gBACxD,IAAI;gBACJ,OAAO,EAAE,4BAA4B;gBACrC,QAAQ,EAAE,KAAK;aAChB,CACF,CAAC;YACF,OAAO,+BAA+B,CAAC,MAAM,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAkJ,8BAA8B,EAAE;YACxN,MAAM,EAAE,MAAM;YACd,IAAI;YACJ,OAAO,EAAE,4BAA4B;SACtC,CAAC,CAAC;QACH,OAAO,+BAA+B,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,mDAAmD;IACnD,KAAK,CAAC,SAAS,CAAC,EAAU;QACxB,MAAM,IAAI,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,yBAAyB,CAAC,CAAC;QACzF,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAiB,sBAAsB,EAAE,SAAS,EAAE;YAC5E,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE,EAAE;YACxD,OAAO,EAAE,yBAAyB;SACnC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAc,WAAW,EAAE;YACnD,OAAO,EAAE,eAAe;YACxB,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAgB,gBAAgB,EAAE,EAAE,EAAE;YAC9D,OAAO,EAAE,iBAAiB;SAC3B,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,EAAU;QACnB,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,uBAAuB,CAAC,CAAC;QACvF,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC;IACrC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,EAAU;QACnB,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;QAC7C,OAAO,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,uBAAuB,CAAC,CAAC;IAC7E,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC;QACxD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,UAAU,CAClB,4IAA4I,EAC5I,wBAAwB,CACzB,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,MAAM;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC;QACxD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;CACF;AAED,SAAS,eAAe,CAAC,KAAkC;IACzD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;IACrD,CAAC;IACD,MAAM,EAAE,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC1B,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,0BAA0B,CAAC,IAA2B;IAC7D,IACE,IAAI,CAAC,OAAO,KAAK,SAAS;QAC1B,IAAI,CAAC,UAAU,KAAK,SAAS;QAC7B,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,UAAU,EAChC,CAAC;QACD,MAAM,IAAI,UAAU,CAClB,gGAAgG,EAChG,4BAA4B,CAC7B,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC;AACzC,CAAC;AAED,SAAS,kCAAkC,CACzC,QAAuC;IAEvC,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IACtD,IAAI,CAAC;QACH,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC5C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO;YACL,SAAS,EAAE,IAAI;YACf,MAAM,EAAE;gBACN;oBACE,IAAI,EAAE,cAAc;oBACpB,QAAQ,EAAE,OAAO;oBACjB,MAAM,EAAE,oCAAoC,OAAO,EAAE;oBACrD,GAAG,EAAE,+FAA+F;iBACrG;aACF;YACD,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -345,6 +345,73 @@ export interface SchemaReport {
345
345
  schema: string;
346
346
  tables: TableSchema[];
347
347
  }
348
+ /** A warning on a SQL result. A warning never changes the result. */
349
+ export interface SqlWarning {
350
+ /** `ROUTE_RETIRING` (a retiring route was called), `SCHEMA_CHANGE_OUTSIDE_MIGRATION`
351
+ * (DDL on a project with a live release, which the release no longer
352
+ * describes), or `MULTI_STATEMENT_TEXT_BODY` (several statements in one text
353
+ * body; use {@link Projects.sqlBatch}). Future codes remain valid strings. */
354
+ code: "ROUTE_RETIRING" | "SCHEMA_CHANGE_OUTSIDE_MIGRATION" | "MULTI_STATEMENT_TEXT_BODY" | (string & {});
355
+ severity?: string;
356
+ message: string;
357
+ next_actions: Array<Record<string, unknown>>;
358
+ [key: string]: unknown;
359
+ }
360
+ /** One result column: its name and Postgres type. */
361
+ export interface SqlField {
362
+ name: string;
363
+ type: string;
364
+ }
365
+ /** The result of {@link Projects.sql}, in the wire shape. */
366
+ export interface SqlResult {
367
+ status: string;
368
+ schema: string;
369
+ /** The last statement's rows. */
370
+ rows: Array<Record<string, unknown>>;
371
+ /** The last statement's row count (returned or affected). */
372
+ row_count: number;
373
+ /** The last statement's columns. */
374
+ fields: SqlField[];
375
+ /** One entry per statement, in order; their sum is a batch's total. */
376
+ statements: Array<{
377
+ command: string | null;
378
+ row_count: number;
379
+ }>;
380
+ warnings: SqlWarning[];
381
+ }
382
+ /** One statement in a {@link Projects.sqlBatch} call: exactly one SQL statement. */
383
+ export interface SqlBatchStatement {
384
+ sql: string;
385
+ params?: unknown[];
386
+ }
387
+ export interface SqlBatchOptions {
388
+ /** `all` (default): one transaction; the first failure rolls back every
389
+ * statement and throws `SQL_BATCH_STATEMENT_FAILED` naming its index.
390
+ * `each`: every statement in its own transaction; failures are reported
391
+ * per statement and later statements still run. */
392
+ transaction?: "all" | "each";
393
+ }
394
+ export type SqlBatchStatementResult = {
395
+ index: number;
396
+ status: "ok";
397
+ command: string | null;
398
+ rows: Array<Record<string, unknown>>;
399
+ row_count: number;
400
+ fields: SqlField[];
401
+ } | {
402
+ index: number;
403
+ status: "error";
404
+ message: string;
405
+ };
406
+ /** The result of {@link Projects.sqlBatch}. `status` is `partial` when a
407
+ * statement failed under `transaction: "each"`. */
408
+ export interface SqlBatchResult {
409
+ status: "ok" | "partial";
410
+ schema: string;
411
+ transaction: "all" | "each";
412
+ results: SqlBatchStatementResult[];
413
+ warnings: SqlWarning[];
414
+ }
348
415
  export type ProjectRestMethod = "GET" | "POST" | "PATCH" | "DELETE";
349
416
  export type ProjectRestKeyType = "anon" | "service";
350
417
  export interface ProjectRestOptions {