@ikeboy003/cloudrest-client 0.0.1 → 0.2.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/dist/client.d.ts CHANGED
@@ -2,6 +2,14 @@ import type { AnyPaths, ClientOptions, RowOf, TableName } from "./types.js";
2
2
  import { QueryBuilder } from "./query.js";
3
3
  import { InsertBuilder, UpdateBuilder, DeleteBuilder } from "./mutation.js";
4
4
  import { RpcCaller } from "./rpc.js";
5
+ export interface CopyOptions {
6
+ /** Target columns, in body order. Required (maps to `?columns=`). */
7
+ columns: string[];
8
+ /** Schema the table lives in (default "public"). */
9
+ schema?: string;
10
+ /** Wire format of `body` (default "csv"). NDJSON is transcoded server-side. */
11
+ format?: "csv" | "ndjson";
12
+ }
5
13
  export declare class CloudRestClient<P extends AnyPaths> {
6
14
  private readonly ctx;
7
15
  constructor(opts: ClientOptions);
@@ -15,6 +23,15 @@ export declare class CloudRestClient<P extends AnyPaths> {
15
23
  delete<T extends TableName<P>>(table: T): DeleteBuilder<P, T>;
16
24
  /** Call a Postgres function via `POST /rpc/<fn>`. Awaitable. */
17
25
  rpc<Result = unknown>(fn: string, args?: Record<string, unknown>): RpcCaller<Result>;
26
+ /**
27
+ * Bulk-ingest via the server's COPY endpoint
28
+ * (`POST /_copy/{schema}/{table}?columns=`). `body` is CSV (with a header row)
29
+ * or NDJSON. Streams straight into `COPY` — far faster than row-by-row
30
+ * inserts for large loads. Resolves to `{ inserted: N }`.
31
+ */
32
+ copy(table: TableName<P>, body: string | Uint8Array, opts: CopyOptions): Promise<{
33
+ inserted: number;
34
+ }>;
18
35
  }
19
36
  export declare function createClient<P extends AnyPaths>(opts: ClientOptions): CloudRestClient<P>;
20
37
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAoB,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,qBAAa,eAAe,CAAC,CAAC,SAAS,QAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAc;gBAEtB,IAAI,EAAE,aAAa;IAW/B,gDAAgD;IAChD,IAAI,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IAI1D,qFAAqF;IACrF,MAAM,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAC3B,KAAK,EAAE,CAAC,EACR,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAClD,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAItB,0DAA0D;IAC1D,MAAM,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAC3B,KAAK,EAAE,CAAC,EACR,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAC1B,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAItB,0DAA0D;IAC1D,MAAM,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAI7D,gEAAgE;IAChE,GAAG,CAAC,MAAM,GAAG,OAAO,EAClB,EAAE,EAAE,MAAM,EACV,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACjC,SAAS,CAAC,MAAM,CAAC;CAGrB;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,aAAa,GAAG,eAAe,CAAC,CAAC,CAAC,CAExF"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAoB,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,WAAW,WAAW;IAC1B,qEAAqE;IACrE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;CAC3B;AAED,qBAAa,eAAe,CAAC,CAAC,SAAS,QAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAc;gBAEtB,IAAI,EAAE,aAAa;IAW/B,gDAAgD;IAChD,IAAI,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IAI1D,qFAAqF;IACrF,MAAM,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAC3B,KAAK,EAAE,CAAC,EACR,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAClD,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAItB,0DAA0D;IAC1D,MAAM,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAC3B,KAAK,EAAE,CAAC,EACR,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAC1B,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAItB,0DAA0D;IAC1D,MAAM,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAI7D,gEAAgE;IAChE,GAAG,CAAC,MAAM,GAAG,OAAO,EAClB,EAAE,EAAE,MAAM,EACV,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACjC,SAAS,CAAC,MAAM,CAAC;IAIpB;;;;;OAKG;IACG,IAAI,CACR,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EACnB,IAAI,EAAE,MAAM,GAAG,UAAU,EACzB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAyBjC;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,aAAa,GAAG,eAAe,CAAC,CAAC,CAAC,CAExF"}
package/dist/client.js CHANGED
@@ -33,6 +33,36 @@ export class CloudRestClient {
33
33
  rpc(fn, args = {}) {
34
34
  return new RpcCaller(this.ctx, fn, args);
35
35
  }
36
+ /**
37
+ * Bulk-ingest via the server's COPY endpoint
38
+ * (`POST /_copy/{schema}/{table}?columns=`). `body` is CSV (with a header row)
39
+ * or NDJSON. Streams straight into `COPY` — far faster than row-by-row
40
+ * inserts for large loads. Resolves to `{ inserted: N }`.
41
+ */
42
+ async copy(table, body, opts) {
43
+ const schema = opts.schema ?? "public";
44
+ const cols = opts.columns.map(encodeURIComponent).join(",");
45
+ const url = `${this.ctx.baseUrl}/_copy/${schema}/${String(table)}?columns=${cols}`;
46
+ const headers = {
47
+ Accept: "application/json",
48
+ "Content-Type": opts.format === "ndjson" ? "application/x-ndjson" : "text/csv",
49
+ ...this.ctx.headers,
50
+ };
51
+ const token = await this.ctx.getToken?.();
52
+ if (token)
53
+ headers["Authorization"] = `Bearer ${token}`;
54
+ const res = await this.ctx.fetch(url, {
55
+ method: "POST",
56
+ headers,
57
+ body: body,
58
+ });
59
+ if (!res.ok) {
60
+ const errBody = await res.json().catch(() => null);
61
+ const { CloudRestError } = await import("./errors.js");
62
+ throw new CloudRestError(res.status, res.statusText, errBody);
63
+ }
64
+ return (await res.json());
65
+ }
36
66
  }
37
67
  export function createClient(opts) {
38
68
  return new CloudRestClient(opts);
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAoB,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,OAAO,eAAe;IACT,GAAG,CAAc;IAElC,YAAY,IAAmB;QAC7B,uEAAuE;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,GAAG;YACT,OAAO;YACP,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;YACtD,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;SAC5B,CAAC;IACJ,CAAC;IAED,gDAAgD;IAChD,IAAI,CAAyB,KAAQ;QACnC,OAAO,IAAI,YAAY,CAAO,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,qFAAqF;IACrF,MAAM,CACJ,KAAQ,EACR,IAAmD;QAEnD,OAAO,IAAI,aAAa,CAAO,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,0DAA0D;IAC1D,MAAM,CACJ,KAAQ,EACR,KAA2B;QAE3B,OAAO,IAAI,aAAa,CAAO,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,0DAA0D;IAC1D,MAAM,CAAyB,KAAQ;QACrC,OAAO,IAAI,aAAa,CAAO,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,gEAAgE;IAChE,GAAG,CACD,EAAU,EACV,OAAgC,EAAE;QAElC,OAAO,IAAI,SAAS,CAAS,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAAqB,IAAmB;IAClE,OAAO,IAAI,eAAe,CAAI,IAAI,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/filter.d.ts CHANGED
@@ -1,17 +1,58 @@
1
1
  export type IsValue = "null" | "true" | "false" | "unknown";
2
2
  export interface FilterEntry {
3
+ /** Leaf: the column. Group: "and" | "or". */
3
4
  column: string;
5
+ /** Leaf: "op.value". Group: "(child,child,...)". */
4
6
  expr: string;
7
+ /** True for a logic group (and/or), so child-rendering omits the dot. */
8
+ group?: boolean;
5
9
  }
6
- export declare function fEq(column: string, value: unknown): FilterEntry;
7
- export declare function fNeq(column: string, value: unknown): FilterEntry;
8
- export declare function fGt(column: string, value: unknown): FilterEntry;
9
- export declare function fGte(column: string, value: unknown): FilterEntry;
10
- export declare function fLt(column: string, value: unknown): FilterEntry;
11
- export declare function fLte(column: string, value: unknown): FilterEntry;
12
- export declare function fLike(column: string, pattern: string): FilterEntry;
13
- export declare function fIlike(column: string, pattern: string): FilterEntry;
14
- export declare function fIn(column: string, values: readonly unknown[]): FilterEntry;
15
- export declare function fIs(column: string, value: IsValue): FilterEntry;
10
+ export declare const fEq: (c: string, v: unknown) => FilterEntry;
11
+ export declare const fNeq: (c: string, v: unknown) => FilterEntry;
12
+ export declare const fGt: (c: string, v: unknown) => FilterEntry;
13
+ export declare const fGte: (c: string, v: unknown) => FilterEntry;
14
+ export declare const fLt: (c: string, v: unknown) => FilterEntry;
15
+ export declare const fLte: (c: string, v: unknown) => FilterEntry;
16
+ export declare const fLike: (c: string, p: string) => FilterEntry;
17
+ export declare const fIlike: (c: string, p: string) => FilterEntry;
18
+ /** POSIX regex (`~`). */
19
+ export declare const fMatch: (c: string, p: string) => FilterEntry;
20
+ /** Case-insensitive POSIX regex (`~*`). */
21
+ export declare const fImatch: (c: string, p: string) => FilterEntry;
22
+ export declare const fIn: (c: string, vals: readonly unknown[]) => FilterEntry;
23
+ export declare const fIs: (c: string, v: IsValue) => FilterEntry;
24
+ /** `IS DISTINCT FROM` — null-safe inequality. */
25
+ export declare const fIsDistinct: (c: string, v: unknown) => FilterEntry;
26
+ /** `to_tsquery` full-text search. */
27
+ export declare const fFts: (c: string, query: string, config?: string) => FilterEntry;
28
+ /** `plainto_tsquery`. */
29
+ export declare const fPlfts: (c: string, query: string, config?: string) => FilterEntry;
30
+ /** `phraseto_tsquery`. */
31
+ export declare const fPhfts: (c: string, query: string, config?: string) => FilterEntry;
32
+ /** `websearch_to_tsquery`. */
33
+ export declare const fWfts: (c: string, query: string, config?: string) => FilterEntry;
34
+ /** contains `@>` (array/range/jsonb). */
35
+ export declare const fCs: (c: string, v: readonly unknown[]) => FilterEntry;
36
+ /** contained-in `<@`. */
37
+ export declare const fCd: (c: string, v: readonly unknown[]) => FilterEntry;
38
+ /** overlap `&&` (array or range). */
39
+ export declare const fOv: (c: string, v: readonly unknown[] | string) => FilterEntry;
40
+ /** strictly-left-of `<<`. */
41
+ export declare const fSl: (c: string, range: unknown) => FilterEntry;
42
+ /** strictly-right-of `>>`. */
43
+ export declare const fSr: (c: string, range: unknown) => FilterEntry;
44
+ /** does-not-extend-to-the-right-of `&<`. */
45
+ export declare const fNxr: (c: string, range: unknown) => FilterEntry;
46
+ /** does-not-extend-to-the-left-of `&>`. */
47
+ export declare const fNxl: (c: string, range: unknown) => FilterEntry;
48
+ /** adjacent `-|-`. */
49
+ export declare const fAdj: (c: string, range: unknown) => FilterEntry;
50
+ /** Any operator + already-serialized value, e.g. `fFilter("data->>k", "eq", "x")`. */
51
+ export declare const fFilter: (c: string, op: string, value: string) => FilterEntry;
52
+ /** Negate any single-op filter: `column=not.is.null`, `column=not.eq.5`. */
16
53
  export declare function fNot(entry: FilterEntry): FilterEntry;
54
+ /** Composite AND — `and=(a.eq.1,b.gt.2)`. Children may be leaves or groups (nests). */
55
+ export declare function fAnd(entries: readonly FilterEntry[]): FilterEntry;
56
+ /** Composite OR — `or=(a.eq.1,b.gt.2)`. Children may be leaves or groups (nests). */
57
+ export declare function fOr(entries: readonly FilterEntry[]): FilterEntry;
17
58
  //# sourceMappingURL=filter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAE5D,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,WAAW,CAE/D;AACD,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,WAAW,CAEhE;AACD,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,WAAW,CAE/D;AACD,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,WAAW,CAEhE;AACD,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,WAAW,CAE/D;AACD,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,WAAW,CAEhE;AACD,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,CAElE;AACD,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,CAEnE;AACD,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,OAAO,EAAE,GAAG,WAAW,CAE3E;AAED,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,WAAW,CAE/D;AAGD,wBAAgB,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAEpD"}
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":"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"}
package/dist/filter.js CHANGED
@@ -1,42 +1,77 @@
1
- // Filter ops — v0 covers the 80% of queries: equality, comparison, set membership,
2
- // null checks, pattern match. Composite ops (or, and, fts, jsonpath) come later.
1
+ // Filter ops — the full PostgREST operator set + nestable and/or/not logic.
3
2
  //
4
- // Each filter contributes one entry to URLSearchParams as `column=op.value`.
5
- import { serializeValue } from "./serialize.js";
6
- export function fEq(column, value) {
7
- return { column, expr: `eq.${serializeValue(value)}` };
8
- }
9
- export function fNeq(column, value) {
10
- return { column, expr: `neq.${serializeValue(value)}` };
11
- }
12
- export function fGt(column, value) {
13
- return { column, expr: `gt.${serializeValue(value)}` };
14
- }
15
- export function fGte(column, value) {
16
- return { column, expr: `gte.${serializeValue(value)}` };
17
- }
18
- export function fLt(column, value) {
19
- return { column, expr: `lt.${serializeValue(value)}` };
20
- }
21
- export function fLte(column, value) {
22
- return { column, expr: `lte.${serializeValue(value)}` };
23
- }
24
- export function fLike(column, pattern) {
25
- return { column, expr: `like.${serializeValue(pattern)}` };
26
- }
27
- export function fIlike(column, pattern) {
28
- return { column, expr: `ilike.${serializeValue(pattern)}` };
3
+ // Each filter contributes one entry. A leaf renders as `column=op.value`; a
4
+ // logic group renders as `and=(child,child)` / `or=(...)`. As a CHILD inside a
5
+ // group, a leaf re-spells to `column.op.value` and a group to `and(...)`/`or(...)`,
6
+ // which is how PostgREST nests them.
7
+ import { serializeValue, serializeArray, serializeRange } from "./serialize.js";
8
+ const leaf = (column, expr) => ({ column, expr });
9
+ // ── comparison / equality ───────────────────────────────────────────────────
10
+ export const fEq = (c, v) => leaf(c, `eq.${serializeValue(v)}`);
11
+ export const fNeq = (c, v) => leaf(c, `neq.${serializeValue(v)}`);
12
+ export const fGt = (c, v) => leaf(c, `gt.${serializeValue(v)}`);
13
+ export const fGte = (c, v) => leaf(c, `gte.${serializeValue(v)}`);
14
+ export const fLt = (c, v) => leaf(c, `lt.${serializeValue(v)}`);
15
+ export const fLte = (c, v) => leaf(c, `lte.${serializeValue(v)}`);
16
+ // ── pattern match ───────────────────────────────────────────────────────────
17
+ export const fLike = (c, p) => leaf(c, `like.${serializeValue(p)}`);
18
+ export const fIlike = (c, p) => leaf(c, `ilike.${serializeValue(p)}`);
19
+ /** POSIX regex (`~`). */
20
+ export const fMatch = (c, p) => leaf(c, `match.${serializeValue(p)}`);
21
+ /** Case-insensitive POSIX regex (`~*`). */
22
+ export const fImatch = (c, p) => leaf(c, `imatch.${serializeValue(p)}`);
23
+ // ── set membership / null / distinct ────────────────────────────────────────
24
+ export const fIn = (c, vals) => leaf(c, `in.${serializeValue(vals)}`);
25
+ // `is` is the correct NULL / boolean check — `eq.null` is a SQL no-op.
26
+ export const fIs = (c, v) => leaf(c, `is.${v}`);
27
+ /** `IS DISTINCT FROM` — null-safe inequality. */
28
+ export const fIsDistinct = (c, v) => leaf(c, `isdistinct.${serializeValue(v)}`);
29
+ // ── full-text search ────────────────────────────────────────────────────────
30
+ // Optional text-search config (e.g. "english") rides in parens: `fts(english).query`.
31
+ const ftsOp = (op) => (c, query, config) => leaf(c, config ? `${op}(${config}).${serializeValue(query)}` : `${op}.${serializeValue(query)}`);
32
+ /** `to_tsquery` full-text search. */
33
+ export const fFts = ftsOp("fts");
34
+ /** `plainto_tsquery`. */
35
+ export const fPlfts = ftsOp("plfts");
36
+ /** `phraseto_tsquery`. */
37
+ export const fPhfts = ftsOp("phfts");
38
+ /** `websearch_to_tsquery`. */
39
+ export const fWfts = ftsOp("wfts");
40
+ // ── array / range containment + adjacency ───────────────────────────────────
41
+ /** contains `@>` (array/range/jsonb). */
42
+ export const fCs = (c, v) => leaf(c, `cs.${serializeArray(v)}`);
43
+ /** contained-in `<@`. */
44
+ export const fCd = (c, v) => leaf(c, `cd.${serializeArray(v)}`);
45
+ /** overlap `&&` (array or range). */
46
+ export const fOv = (c, v) => leaf(c, `ov.${Array.isArray(v) ? serializeArray(v) : serializeRange(v)}`);
47
+ /** strictly-left-of `<<`. */
48
+ export const fSl = (c, range) => leaf(c, `sl.${serializeRange(range)}`);
49
+ /** strictly-right-of `>>`. */
50
+ export const fSr = (c, range) => leaf(c, `sr.${serializeRange(range)}`);
51
+ /** does-not-extend-to-the-right-of `&<`. */
52
+ export const fNxr = (c, range) => leaf(c, `nxr.${serializeRange(range)}`);
53
+ /** does-not-extend-to-the-left-of `&>`. */
54
+ export const fNxl = (c, range) => leaf(c, `nxl.${serializeRange(range)}`);
55
+ /** adjacent `-|-`. */
56
+ export const fAdj = (c, range) => leaf(c, `adj.${serializeRange(range)}`);
57
+ // ── generic escape hatch ────────────────────────────────────────────────────
58
+ /** Any operator + already-serialized value, e.g. `fFilter("data->>k", "eq", "x")`. */
59
+ export const fFilter = (c, op, value) => leaf(c, `${op}.${value}`);
60
+ // ── negation + logic groups (nestable) ──────────────────────────────────────
61
+ /** Negate any single-op filter: `column=not.is.null`, `column=not.eq.5`. */
62
+ export function fNot(entry) {
63
+ return { column: entry.column, expr: `not.${entry.expr}` };
29
64
  }
30
- export function fIn(column, values) {
31
- return { column, expr: `in.${serializeValue(values)}` };
65
+ /** Render an entry as a CHILD inside a logic group. */
66
+ function renderChild(e) {
67
+ return e.group ? `${e.column}${e.expr}` : `${e.column}.${e.expr}`;
32
68
  }
33
- // `is` is the correct way to check NULL / boolean — `eq.null` is a no-op in SQL.
34
- export function fIs(column, value) {
35
- return { column, expr: `is.${value}` };
69
+ /** Composite AND — `and=(a.eq.1,b.gt.2)`. Children may be leaves or groups (nests). */
70
+ export function fAnd(entries) {
71
+ return { column: "and", expr: `(${entries.map(renderChild).join(",")})`, group: true };
36
72
  }
37
- // Negate any single-op filter: PostgREST prefixes the operator with `not.`
38
- // e.g. `column=not.is.null`, `column=not.eq.5`.
39
- export function fNot(entry) {
40
- return { column: entry.column, expr: `not.${entry.expr}` };
73
+ /** Composite OR `or=(a.eq.1,b.gt.2)`. Children may be leaves or groups (nests). */
74
+ export function fOr(entries) {
75
+ return { column: "or", expr: `(${entries.map(renderChild).join(",")})`, group: true };
41
76
  }
42
77
  //# sourceMappingURL=filter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,iFAAiF;AACjF,EAAE;AACF,6EAA6E;AAE7E,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAShD,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,KAAc;IAChD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;AACzD,CAAC;AACD,MAAM,UAAU,IAAI,CAAC,MAAc,EAAE,KAAc;IACjD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;AAC1D,CAAC;AACD,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,KAAc;IAChD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;AACzD,CAAC;AACD,MAAM,UAAU,IAAI,CAAC,MAAc,EAAE,KAAc;IACjD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;AAC1D,CAAC;AACD,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,KAAc;IAChD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;AACzD,CAAC;AACD,MAAM,UAAU,IAAI,CAAC,MAAc,EAAE,KAAc;IACjD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;AAC1D,CAAC;AACD,MAAM,UAAU,KAAK,CAAC,MAAc,EAAE,OAAe;IACnD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,cAAc,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;AAC7D,CAAC;AACD,MAAM,UAAU,MAAM,CAAC,MAAc,EAAE,OAAe;IACpD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,cAAc,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;AAC9D,CAAC;AACD,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,MAA0B;IAC5D,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;AAC1D,CAAC;AACD,iFAAiF;AACjF,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,KAAc;IAChD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,EAAE,EAAE,CAAC;AACzC,CAAC;AACD,2EAA2E;AAC3E,gDAAgD;AAChD,MAAM,UAAU,IAAI,CAAC,KAAkB;IACrC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,43 @@
1
1
  export { createClient, CloudRestClient } from "./client.js";
2
+ export type { CopyOptions } from "./client.js";
2
3
  export { CloudRestError } from "./errors.js";
3
4
  export { QueryBuilder } from "./query.js";
5
+ export type { OrderOptions, CountStrategy, SingleQuery, PagedQuery } from "./query.js";
4
6
  export { InsertBuilder, UpdateBuilder, DeleteBuilder } from "./mutation.js";
5
7
  export { RpcCaller } from "./rpc.js";
6
8
  export type { AnyPaths, ClientOptions, RowOf, TableName, TokenGetter, } from "./types.js";
7
- export type { OrderOptions } from "./query.js";
8
- export type { IsValue } from "./filter.js";
9
+ export type { IsValue, FilterEntry } from "./filter.js";
10
+ import * as F from "./filter.js";
11
+ import type { FilterEntry } from "./filter.js";
12
+ export declare const cond: {
13
+ readonly eq: (c: string, v: unknown) => FilterEntry;
14
+ readonly neq: (c: string, v: unknown) => FilterEntry;
15
+ readonly gt: (c: string, v: unknown) => FilterEntry;
16
+ readonly gte: (c: string, v: unknown) => FilterEntry;
17
+ readonly lt: (c: string, v: unknown) => FilterEntry;
18
+ readonly lte: (c: string, v: unknown) => FilterEntry;
19
+ readonly like: (c: string, p: string) => FilterEntry;
20
+ readonly ilike: (c: string, p: string) => FilterEntry;
21
+ readonly match: (c: string, p: string) => FilterEntry;
22
+ readonly imatch: (c: string, p: string) => FilterEntry;
23
+ readonly in: (c: string, vals: readonly unknown[]) => FilterEntry;
24
+ readonly is: (c: string, v: F.IsValue) => FilterEntry;
25
+ readonly isDistinct: (c: string, v: unknown) => FilterEntry;
26
+ readonly fts: (c: string, query: string, config?: string) => FilterEntry;
27
+ readonly plfts: (c: string, query: string, config?: string) => FilterEntry;
28
+ readonly phfts: (c: string, query: string, config?: string) => FilterEntry;
29
+ readonly wfts: (c: string, query: string, config?: string) => FilterEntry;
30
+ readonly cs: (c: string, v: readonly unknown[]) => FilterEntry;
31
+ readonly cd: (c: string, v: readonly unknown[]) => FilterEntry;
32
+ readonly ov: (c: string, v: readonly unknown[] | string) => FilterEntry;
33
+ readonly sl: (c: string, range: unknown) => FilterEntry;
34
+ readonly sr: (c: string, range: unknown) => FilterEntry;
35
+ readonly nxr: (c: string, range: unknown) => FilterEntry;
36
+ readonly nxl: (c: string, range: unknown) => FilterEntry;
37
+ readonly adj: (c: string, range: unknown) => FilterEntry;
38
+ readonly filter: (c: string, op: string, value: string) => FilterEntry;
39
+ readonly not: typeof F.fNot;
40
+ readonly and: (...e: FilterEntry[]) => FilterEntry;
41
+ readonly or: (...e: FilterEntry[]) => FilterEntry;
42
+ };
9
43
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,YAAY,EACV,QAAQ,EACR,aAAa,EACb,KAAK,EACL,SAAS,EACT,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC5D,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,YAAY,EACV,QAAQ,EACR,aAAa,EACb,KAAK,EACL,SAAS,EACT,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAKxD,OAAO,KAAK,CAAC,MAAM,aAAa,CAAC;AACjC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAQH,WAAW,EAAE,KAAG,WAAW;wBAC5B,WAAW,EAAE,KAAG,WAAW;CAC9B,CAAC"}
package/dist/index.js CHANGED
@@ -3,4 +3,19 @@ export { CloudRestError } from "./errors.js";
3
3
  export { QueryBuilder } from "./query.js";
4
4
  export { InsertBuilder, UpdateBuilder, DeleteBuilder } from "./mutation.js";
5
5
  export { RpcCaller } from "./rpc.js";
6
+ // Bare condition builders for composing `.and(...)` / `.or(...)` (nestable).
7
+ // db.from("books").or(cond.ilike("title","*x*"), cond.ilike("author","*x*"))
8
+ // db.from("books").and(cond.gte("year",2000), cond.or(cond.eq("a",1), cond.eq("b",2)))
9
+ import * as F from "./filter.js";
10
+ export const cond = {
11
+ eq: F.fEq, neq: F.fNeq, gt: F.fGt, gte: F.fGte, lt: F.fLt, lte: F.fLte,
12
+ like: F.fLike, ilike: F.fIlike, match: F.fMatch, imatch: F.fImatch,
13
+ in: F.fIn, is: F.fIs, isDistinct: F.fIsDistinct,
14
+ fts: F.fFts, plfts: F.fPlfts, phfts: F.fPhfts, wfts: F.fWfts,
15
+ cs: F.fCs, cd: F.fCd, ov: F.fOv, sl: F.fSl, sr: F.fSr, nxr: F.fNxr, nxl: F.fNxl, adj: F.fAdj,
16
+ filter: F.fFilter, not: F.fNot,
17
+ // Variadic so they compose ergonomically + nest: cond.and(cond.eq(..), cond.or(..)).
18
+ and: (...e) => F.fAnd(e),
19
+ or: (...e) => F.fOr(e),
20
+ };
6
21
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAUrC,6EAA6E;AAC7E,+EAA+E;AAC/E,yFAAyF;AACzF,OAAO,KAAK,CAAC,MAAM,aAAa,CAAC;AAEjC,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI;IACtE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO;IAClE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,WAAW;IAC/C,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK;IAC5D,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI;IAC5F,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI;IAC9B,qFAAqF;IACrF,GAAG,EAAE,CAAC,GAAG,CAAgB,EAAe,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,EAAE,EAAE,CAAC,GAAG,CAAgB,EAAe,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAC1C,CAAC"}
@@ -1,45 +1,107 @@
1
1
  import type { AnyPaths, RowOf, TableName } from "./types.js";
2
- import { type FilterEntry, type IsValue } from "./filter.js";
2
+ import type { FilterEntry, IsValue } from "./filter.js";
3
3
  import type { ExecContext } from "./query.js";
4
- declare class FilterableMutation<Row> {
4
+ declare abstract class WriteTuning<Row> {
5
+ protected returnMode?: "representation" | "minimal";
6
+ protected txMode?: "rollback" | "commit";
7
+ protected maxAff?: number;
8
+ protected minAff?: number;
9
+ protected tz?: string;
10
+ protected bufferedFlag: boolean;
11
+ protected missingMode?: "default" | "null";
12
+ protected resolution?: "merge-duplicates" | "ignore-duplicates";
13
+ /** Return affected rows (adds Prefer: return=representation). */
14
+ returning(): this;
15
+ /** No body back (Prefer: return=minimal) — the default if unset. */
16
+ minimal(): this;
17
+ /** Dry-run: run + roll back (Prefer: tx=rollback). */
18
+ dryRun(): this;
19
+ /** Fail (PGRST) if more than N rows would be affected. */
20
+ maxAffected(n: number): this;
21
+ /** Fail if fewer than N rows are affected. */
22
+ minAffected(n: number): this;
23
+ /** Render timestamptz output in this zone (Prefer: timezone=<tz>). */
24
+ timezone(tz: string): this;
25
+ /** Buffer the response + set Content-Length (Prefer: response-buffered). */
26
+ buffered(): this;
27
+ protected prefer(): string[];
28
+ }
29
+ declare abstract class FilterableMutation<Row> extends WriteTuning<Row> {
5
30
  protected filters: FilterEntry[];
6
- eq(col: string, v: unknown): this;
7
- neq(col: string, v: unknown): this;
8
- gt(col: string, v: unknown): this;
9
- gte(col: string, v: unknown): this;
10
- lt(col: string, v: unknown): this;
11
- lte(col: string, v: unknown): this;
12
- like(col: string, pat: string): this;
13
- ilike(col: string, pat: string): this;
14
- in(col: string, vals: readonly unknown[]): this;
15
- is(col: string, v: IsValue): this;
31
+ eq(c: string, v: unknown): this;
32
+ neq(c: string, v: unknown): this;
33
+ gt(c: string, v: unknown): this;
34
+ gte(c: string, v: unknown): this;
35
+ lt(c: string, v: unknown): this;
36
+ lte(c: string, v: unknown): this;
37
+ like(c: string, p: string): this;
38
+ ilike(c: string, p: string): this;
39
+ match(c: string, p: string): this;
40
+ imatch(c: string, p: string): this;
41
+ in(c: string, vals: readonly unknown[]): this;
42
+ is(c: string, v: IsValue): this;
43
+ isDistinct(c: string, v: unknown): this;
44
+ fts(c: string, q: string, cfg?: string): this;
45
+ plfts(c: string, q: string, cfg?: string): this;
46
+ phfts(c: string, q: string, cfg?: string): this;
47
+ wfts(c: string, q: string, cfg?: string): this;
48
+ cs(c: string, vals: readonly unknown[]): this;
49
+ cd(c: string, vals: readonly unknown[]): this;
50
+ ov(c: string, v: readonly unknown[] | string): this;
51
+ sl(c: string, r: unknown): this;
52
+ sr(c: string, r: unknown): this;
53
+ nxr(c: string, r: unknown): this;
54
+ nxl(c: string, r: unknown): this;
55
+ adj(c: string, r: unknown): this;
56
+ not(entry: FilterEntry): this;
57
+ notIs(c: string, v: IsValue): this;
58
+ filter(c: string, op: string, value: string): this;
59
+ and(...entries: FilterEntry[]): this;
60
+ or(...entries: FilterEntry[]): this;
61
+ protected filterQs(): string;
16
62
  }
17
- export declare class InsertBuilder<P extends AnyPaths, T extends TableName<P>, Row = RowOf<P, T>> implements PromiseLike<Row[]> {
63
+ export declare class InsertBuilder<P extends AnyPaths, T extends TableName<P>, Row = RowOf<P, T>> extends WriteTuning<Row> implements PromiseLike<Row[]> {
18
64
  private readonly ctx;
19
65
  private readonly table;
20
66
  private rows;
21
- private returnRows;
67
+ private files;
68
+ private onConflictCols?;
69
+ private columnsList?;
22
70
  constructor(ctx: ExecContext, table: T, rows: Partial<Row> | Partial<Row>[]);
23
- /** Return inserted rows (adds Prefer: return=representation). */
24
- returning(): this;
71
+ /**
72
+ * Upsert on conflict of `columns` (a PK/unique set). Default resolution
73
+ * merges (UPDATE); pass `{ ignoreDuplicates: true }` for DO NOTHING.
74
+ */
75
+ onConflict(columns: string | string[], opts?: {
76
+ ignoreDuplicates?: boolean;
77
+ }): this;
78
+ /** Restrict the insert to these columns (`?columns=`) — consistent bulk keys. */
79
+ columns(cols: string[]): this;
80
+ /** Treat keys absent from a row as `NULL` rather than the column default. */
81
+ missing(mode: "default" | "null"): this;
82
+ /**
83
+ * Attach a file for a media column — switches to a multipart write (scalar
84
+ * columns as a JSON `payload` part, each file as a part named after its
85
+ * column). The server's media stage stores bytes → reference into the column.
86
+ * Single-row inserts only.
87
+ */
88
+ attach(column: string, file: Blob): this;
89
+ private buildUrl;
90
+ private formBody;
25
91
  then<R1 = Row[], R2 = never>(onfulfilled?: ((value: Row[]) => R1 | PromiseLike<R1>) | null, onrejected?: ((reason: unknown) => R2 | PromiseLike<R2>) | null): PromiseLike<R1 | R2>;
26
92
  }
27
93
  export declare class UpdateBuilder<P extends AnyPaths, T extends TableName<P>, Row = RowOf<P, T>> extends FilterableMutation<Row> implements PromiseLike<Row[]> {
28
94
  private readonly ctx;
29
95
  private readonly table;
30
96
  private readonly patch;
31
- private returnRows;
32
97
  constructor(ctx: ExecContext, table: T, patch: Partial<Row>);
33
- returning(): this;
34
98
  private url;
35
99
  then<R1 = Row[], R2 = never>(onfulfilled?: ((value: Row[]) => R1 | PromiseLike<R1>) | null, onrejected?: ((reason: unknown) => R2 | PromiseLike<R2>) | null): PromiseLike<R1 | R2>;
36
100
  }
37
101
  export declare class DeleteBuilder<P extends AnyPaths, T extends TableName<P>, Row = RowOf<P, T>> extends FilterableMutation<Row> implements PromiseLike<Row[]> {
38
102
  private readonly ctx;
39
103
  private readonly table;
40
- private returnRows;
41
104
  constructor(ctx: ExecContext, table: T);
42
- returning(): this;
43
105
  private url;
44
106
  then<R1 = Row[], R2 = never>(onfulfilled?: ((value: Row[]) => R1 | PromiseLike<R1>) | null, onrejected?: ((reason: unknown) => R2 | PromiseLike<R2>) | null): PromiseLike<R1 | R2>;
45
107
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mutation.d.ts","sourceRoot":"","sources":["../src/mutation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mutation.d.ts","sourceRoot":"","sources":["../src/mutation.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE7D,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C,uBAAe,WAAW,CAAC,GAAG;IAC5B,SAAS,CAAC,UAAU,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACpD,SAAS,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IACzC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,YAAY,UAAS;IAC/B,SAAS,CAAC,WAAW,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC3C,SAAS,CAAC,UAAU,CAAC,EAAE,kBAAkB,GAAG,mBAAmB,CAAC;IAEhE,iEAAiE;IACjE,SAAS,IAAI,IAAI;IACjB,oEAAoE;IACpE,OAAO,IAAI,IAAI;IACf,sDAAsD;IACtD,MAAM,IAAI,IAAI;IACd,0DAA0D;IAC1D,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAC5B,8CAA8C;IAC9C,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAC5B,sEAAsE;IACtE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAC1B,4EAA4E;IAC5E,QAAQ,IAAI,IAAI;IAEhB,SAAS,CAAC,MAAM,IAAI,MAAM,EAAE;CAY7B;AAGD,uBAAe,kBAAkB,CAAC,GAAG,CAAE,SAAQ,WAAW,CAAC,GAAG,CAAC;IAC7D,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,CAAM;IACtC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI;IAC/B,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI;IAChC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI;IAC/B,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI;IAChC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI;IAC/B,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI;IAChC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAChC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IACjC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IACjC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAClC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI;IAC7C,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI;IAC/B,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI;IACvC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAC7C,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAC/C,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAC/C,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAC9C,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI;IAC7C,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI;IAC7C,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,GAAG,IAAI;IACnD,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI;IAC/B,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI;IAC/B,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI;IAChC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI;IAChC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI;IAChC,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAC7B,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI;IAClC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAClD,GAAG,CAAC,GAAG,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI;IACpC,EAAE,CAAC,GAAG,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI;IAEnC,SAAS,CAAC,QAAQ,IAAI,MAAM;CAK7B;AAqCD,qBAAa,aAAa,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CACtF,SAAQ,WAAW,CAAC,GAAG,CACvB,YAAW,WAAW,CAAC,GAAG,EAAE,CAAC;IAQ3B,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAPxB,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,WAAW,CAAC,CAAS;gBAGV,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,CAAC,EACzB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE;IAMrC;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,IAAI,GAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,IAAI;IAMvF,iFAAiF;IACjF,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;IAK7B,6EAA6E;IAC7E,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI;IAKvC;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI;IAKxC,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,QAAQ;IAahB,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,KAAK,EACzB,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAC7D,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAC9D,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC;CAOxB;AAED,qBAAa,aAAa,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CACtF,SAAQ,kBAAkB,CAAC,GAAG,CAC9B,YAAW,WAAW,CAAC,GAAG,EAAE,CAAC;IAG3B,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAFL,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,CAAC,EACR,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC;IAKtC,OAAO,CAAC,GAAG;IAKX,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,KAAK,EACzB,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAC7D,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAC9D,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC;CAKxB;AAED,qBAAa,aAAa,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CACtF,SAAQ,kBAAkB,CAAC,GAAG,CAC9B,YAAW,WAAW,CAAC,GAAG,EAAE,CAAC;IAG3B,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADL,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,CAAC;IAK3B,OAAO,CAAC,GAAG;IAKX,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,KAAK,EACzB,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAC7D,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAC9D,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC;CAKxB"}