@ai-matrx/data 0.25.0 → 0.26.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/db.d.cts CHANGED
@@ -902,7 +902,9 @@ interface QueryLike extends PromiseLike<Resp<any>> {
902
902
  interface SupabaseLike {
903
903
  schema(name: string): {
904
904
  from(table: string): QueryLike;
905
- rpc(fn: string, args?: Record<string, unknown>): PromiseLike<Resp<any>>;
905
+ rpc(fn: string, args?: Record<string, unknown>, opts?: {
906
+ count?: "exact" | "planned" | "estimated";
907
+ }): PromiseLike<Resp<any>>;
906
908
  };
907
909
  auth?: {
908
910
  getSession(): Promise<{
@@ -1073,6 +1075,22 @@ declare function archive<R, I, U>(db: Db, table: TableDescriptor<R, I, U>, id: u
1073
1075
  declare const restore: <R, I, U>(db: Db, table: TableDescriptor<R, I, U>, id: unknown, guard?: UpdateGuard) => Promise<WriteResult<R>>;
1074
1076
  /** Call a database function through its generated door (PostgREST chooses an overload by argument names). */
1075
1077
  declare function call<F extends FunctionDescriptor<any, any>>(db: Db, fn: F, args: ArgsOf<F>): Promise<ResultOf<F>>;
1078
+ /** One ordering column of a set-returning function's rows (PostgREST `order`). */
1079
+ type CallOrder = string | {
1080
+ column: string;
1081
+ ascending?: boolean;
1082
+ nullsFirst?: boolean;
1083
+ };
1084
+ /**
1085
+ * EVERY row a set-returning function answers, paged past the 1,000-row cap by
1086
+ * `range` over a stable `order` (name enough columns to make it total — end on a key);
1087
+ * throws a `DatabaseError` with the database's own error, or `IncompleteReadError` on a short read.
1088
+ */
1089
+ declare function callAll<F extends FunctionDescriptor<any, any>>(db: Db, fn: F, args: ArgsOf<F>, opts: {
1090
+ order: readonly CallOrder[];
1091
+ pageSize?: number;
1092
+ maxRows?: number;
1093
+ }): Promise<ResultOf<F> extends readonly (infer Row)[] ? Row[] : ResultOf<F>[]>;
1076
1094
  /** One schema's flags (`<schema>.flags.ts` from `matrx-data generate --flags-index`): "schema.table" → descriptor. */
1077
1095
  type FlagsIndex = Readonly<Record<string, TableDescriptor>>;
1078
1096
  /** Per-schema loaders (`flags-index.ts`): only the schema a runtime name names is loaded (pay-only). */
@@ -1087,4 +1105,4 @@ declare function changesOf(table: TableDescriptor<any, any, any>): {
1087
1105
  table: string;
1088
1106
  };
1089
1107
 
1090
- export { type ActiveOrgCookie, type ActiveOrgCookieOptions, type ActiveOrgSelection, type ArgsOf, type AuthRetryableResult, BulkWriteError, type CreateActiveOrgCookieArgs, type CreateDbOptions, type CreateOAuthRefreshFetchArgs, type CreateSessionRetryOptions, DEFAULT_ACTIVE_ORG_COOKIE_MAX_AGE, DEFAULT_ACTIVE_ORG_COOKIE_NAME, DatabaseError, type Db, DoorRefusedError, type Filter, type FlagLoaders, type FlagsIndex, type FunctionDescriptor, type GuardedUpdateArgs, type GuardedUpdateResult, IncompleteReadError, type InsertOf, type JsonObject, type MergeJsonColumnArgs, type MergeJsonColumnResult, type OAuthRefreshStorage, type OrgRule, type PagedReadQuery, type PagedReadResult, type QueryLike, type ReadAllRowsOptions, type ReadAllRowsRestOptions, type ReadOptions, RecordUnavailableError, type RecordUnavailableReason, type RecordUnavailableResolution, type ResultOf, type RowOf, type SessionSource, SessionUnavailableError, type SupabaseLike, type TableDescriptor, type TableType, type TryWriteOneResult, type UpdateGuard, type UpdateOf, type UserCredentialsPort, type VersionedRow, type Where, WriteDidNotLandError, type WriteDidNotLandReason, type WriteFailureWords, type WriteOneAction, type WriteOneOptions, type WriteOneRowResult, WriteRefusedError, type WriteResult, archive, asJsonObject, assertDoor, assertWriteLanded, call, changesOf, count, createActiveOrgCookie, createDb, createOAuthRefreshFetch, createServiceDb, createSessionRetry, decodeActiveOrgSelection, decodeOAuthRefreshClaims, describeWriteFailure, encodeActiveOrgSelection, guardedUpdate, insert, isMissingSessionError, isRecordUnavailableError, listAll, loadTableByName, mergeJsonColumn, page, personSentence, read, readAllRows, readAllRowsRest, recordUnavailableMessage, remove, restore, serverMessageFromBody, tableByName, tryReadAllRows, tryReadAllRowsRest, tryWriteOne, update, writeFailureStatus, writeOne, writeOneRow };
1108
+ export { type ActiveOrgCookie, type ActiveOrgCookieOptions, type ActiveOrgSelection, type ArgsOf, type AuthRetryableResult, BulkWriteError, type CallOrder, type CreateActiveOrgCookieArgs, type CreateDbOptions, type CreateOAuthRefreshFetchArgs, type CreateSessionRetryOptions, DEFAULT_ACTIVE_ORG_COOKIE_MAX_AGE, DEFAULT_ACTIVE_ORG_COOKIE_NAME, DatabaseError, type Db, DoorRefusedError, type Filter, type FlagLoaders, type FlagsIndex, type FunctionDescriptor, type GuardedUpdateArgs, type GuardedUpdateResult, IncompleteReadError, type InsertOf, type JsonObject, type MergeJsonColumnArgs, type MergeJsonColumnResult, type OAuthRefreshStorage, type OrgRule, type PagedReadQuery, type PagedReadResult, type QueryLike, type ReadAllRowsOptions, type ReadAllRowsRestOptions, type ReadOptions, RecordUnavailableError, type RecordUnavailableReason, type RecordUnavailableResolution, type ResultOf, type RowOf, type SessionSource, SessionUnavailableError, type SupabaseLike, type TableDescriptor, type TableType, type TryWriteOneResult, type UpdateGuard, type UpdateOf, type UserCredentialsPort, type VersionedRow, type Where, WriteDidNotLandError, type WriteDidNotLandReason, type WriteFailureWords, type WriteOneAction, type WriteOneOptions, type WriteOneRowResult, WriteRefusedError, type WriteResult, archive, asJsonObject, assertDoor, assertWriteLanded, call, callAll, changesOf, count, createActiveOrgCookie, createDb, createOAuthRefreshFetch, createServiceDb, createSessionRetry, decodeActiveOrgSelection, decodeOAuthRefreshClaims, describeWriteFailure, encodeActiveOrgSelection, guardedUpdate, insert, isMissingSessionError, isRecordUnavailableError, listAll, loadTableByName, mergeJsonColumn, page, personSentence, read, readAllRows, readAllRowsRest, recordUnavailableMessage, remove, restore, serverMessageFromBody, tableByName, tryReadAllRows, tryReadAllRowsRest, tryWriteOne, update, writeFailureStatus, writeOne, writeOneRow };
package/dist/db.d.ts CHANGED
@@ -902,7 +902,9 @@ interface QueryLike extends PromiseLike<Resp<any>> {
902
902
  interface SupabaseLike {
903
903
  schema(name: string): {
904
904
  from(table: string): QueryLike;
905
- rpc(fn: string, args?: Record<string, unknown>): PromiseLike<Resp<any>>;
905
+ rpc(fn: string, args?: Record<string, unknown>, opts?: {
906
+ count?: "exact" | "planned" | "estimated";
907
+ }): PromiseLike<Resp<any>>;
906
908
  };
907
909
  auth?: {
908
910
  getSession(): Promise<{
@@ -1073,6 +1075,22 @@ declare function archive<R, I, U>(db: Db, table: TableDescriptor<R, I, U>, id: u
1073
1075
  declare const restore: <R, I, U>(db: Db, table: TableDescriptor<R, I, U>, id: unknown, guard?: UpdateGuard) => Promise<WriteResult<R>>;
1074
1076
  /** Call a database function through its generated door (PostgREST chooses an overload by argument names). */
1075
1077
  declare function call<F extends FunctionDescriptor<any, any>>(db: Db, fn: F, args: ArgsOf<F>): Promise<ResultOf<F>>;
1078
+ /** One ordering column of a set-returning function's rows (PostgREST `order`). */
1079
+ type CallOrder = string | {
1080
+ column: string;
1081
+ ascending?: boolean;
1082
+ nullsFirst?: boolean;
1083
+ };
1084
+ /**
1085
+ * EVERY row a set-returning function answers, paged past the 1,000-row cap by
1086
+ * `range` over a stable `order` (name enough columns to make it total — end on a key);
1087
+ * throws a `DatabaseError` with the database's own error, or `IncompleteReadError` on a short read.
1088
+ */
1089
+ declare function callAll<F extends FunctionDescriptor<any, any>>(db: Db, fn: F, args: ArgsOf<F>, opts: {
1090
+ order: readonly CallOrder[];
1091
+ pageSize?: number;
1092
+ maxRows?: number;
1093
+ }): Promise<ResultOf<F> extends readonly (infer Row)[] ? Row[] : ResultOf<F>[]>;
1076
1094
  /** One schema's flags (`<schema>.flags.ts` from `matrx-data generate --flags-index`): "schema.table" → descriptor. */
1077
1095
  type FlagsIndex = Readonly<Record<string, TableDescriptor>>;
1078
1096
  /** Per-schema loaders (`flags-index.ts`): only the schema a runtime name names is loaded (pay-only). */
@@ -1087,4 +1105,4 @@ declare function changesOf(table: TableDescriptor<any, any, any>): {
1087
1105
  table: string;
1088
1106
  };
1089
1107
 
1090
- export { type ActiveOrgCookie, type ActiveOrgCookieOptions, type ActiveOrgSelection, type ArgsOf, type AuthRetryableResult, BulkWriteError, type CreateActiveOrgCookieArgs, type CreateDbOptions, type CreateOAuthRefreshFetchArgs, type CreateSessionRetryOptions, DEFAULT_ACTIVE_ORG_COOKIE_MAX_AGE, DEFAULT_ACTIVE_ORG_COOKIE_NAME, DatabaseError, type Db, DoorRefusedError, type Filter, type FlagLoaders, type FlagsIndex, type FunctionDescriptor, type GuardedUpdateArgs, type GuardedUpdateResult, IncompleteReadError, type InsertOf, type JsonObject, type MergeJsonColumnArgs, type MergeJsonColumnResult, type OAuthRefreshStorage, type OrgRule, type PagedReadQuery, type PagedReadResult, type QueryLike, type ReadAllRowsOptions, type ReadAllRowsRestOptions, type ReadOptions, RecordUnavailableError, type RecordUnavailableReason, type RecordUnavailableResolution, type ResultOf, type RowOf, type SessionSource, SessionUnavailableError, type SupabaseLike, type TableDescriptor, type TableType, type TryWriteOneResult, type UpdateGuard, type UpdateOf, type UserCredentialsPort, type VersionedRow, type Where, WriteDidNotLandError, type WriteDidNotLandReason, type WriteFailureWords, type WriteOneAction, type WriteOneOptions, type WriteOneRowResult, WriteRefusedError, type WriteResult, archive, asJsonObject, assertDoor, assertWriteLanded, call, changesOf, count, createActiveOrgCookie, createDb, createOAuthRefreshFetch, createServiceDb, createSessionRetry, decodeActiveOrgSelection, decodeOAuthRefreshClaims, describeWriteFailure, encodeActiveOrgSelection, guardedUpdate, insert, isMissingSessionError, isRecordUnavailableError, listAll, loadTableByName, mergeJsonColumn, page, personSentence, read, readAllRows, readAllRowsRest, recordUnavailableMessage, remove, restore, serverMessageFromBody, tableByName, tryReadAllRows, tryReadAllRowsRest, tryWriteOne, update, writeFailureStatus, writeOne, writeOneRow };
1108
+ export { type ActiveOrgCookie, type ActiveOrgCookieOptions, type ActiveOrgSelection, type ArgsOf, type AuthRetryableResult, BulkWriteError, type CallOrder, type CreateActiveOrgCookieArgs, type CreateDbOptions, type CreateOAuthRefreshFetchArgs, type CreateSessionRetryOptions, DEFAULT_ACTIVE_ORG_COOKIE_MAX_AGE, DEFAULT_ACTIVE_ORG_COOKIE_NAME, DatabaseError, type Db, DoorRefusedError, type Filter, type FlagLoaders, type FlagsIndex, type FunctionDescriptor, type GuardedUpdateArgs, type GuardedUpdateResult, IncompleteReadError, type InsertOf, type JsonObject, type MergeJsonColumnArgs, type MergeJsonColumnResult, type OAuthRefreshStorage, type OrgRule, type PagedReadQuery, type PagedReadResult, type QueryLike, type ReadAllRowsOptions, type ReadAllRowsRestOptions, type ReadOptions, RecordUnavailableError, type RecordUnavailableReason, type RecordUnavailableResolution, type ResultOf, type RowOf, type SessionSource, SessionUnavailableError, type SupabaseLike, type TableDescriptor, type TableType, type TryWriteOneResult, type UpdateGuard, type UpdateOf, type UserCredentialsPort, type VersionedRow, type Where, WriteDidNotLandError, type WriteDidNotLandReason, type WriteFailureWords, type WriteOneAction, type WriteOneOptions, type WriteOneRowResult, WriteRefusedError, type WriteResult, archive, asJsonObject, assertDoor, assertWriteLanded, call, callAll, changesOf, count, createActiveOrgCookie, createDb, createOAuthRefreshFetch, createServiceDb, createSessionRetry, decodeActiveOrgSelection, decodeOAuthRefreshClaims, describeWriteFailure, encodeActiveOrgSelection, guardedUpdate, insert, isMissingSessionError, isRecordUnavailableError, listAll, loadTableByName, mergeJsonColumn, page, personSentence, read, readAllRows, readAllRowsRest, recordUnavailableMessage, remove, restore, serverMessageFromBody, tableByName, tryReadAllRows, tryReadAllRowsRest, tryWriteOne, update, writeFailureStatus, writeOne, writeOneRow };
package/dist/db.js CHANGED
@@ -1124,6 +1124,27 @@ async function call(db, fn, args) {
1124
1124
  }
1125
1125
  return check(door, await db.client.schema(fn.schema).rpc(fn.name, args));
1126
1126
  }
1127
+ async function callAll(db, fn, args, opts) {
1128
+ const door = `callAll ${fn.schema}.${fn.name}`;
1129
+ const role = db.role === "service" ? "service_role" : "authenticated";
1130
+ if (!fn.roles.includes(role) && !(role === "authenticated" && fn.roles.includes("anon"))) {
1131
+ throw new DoorRefusedError(door, `not executable by ${role} (executable by: ${fn.roles.join(", ") || "nobody"})`);
1132
+ }
1133
+ if (!opts.order.length) throw new DoorRefusedError(door, "a paged read needs an order (end on a key) \u2014 pages over no order can skip or repeat rows");
1134
+ return readAllRows(
1135
+ ({ from: lo, to: hi }) => {
1136
+ let q = db.client.schema(fn.schema).rpc(fn.name, args, { count: "exact" });
1137
+ for (const o of opts.order) {
1138
+ q = typeof o === "string" ? q.order(o) : q.order(o.column, { ascending: o.ascending ?? true, ...o.nullsFirst !== void 0 ? { nullsFirst: o.nullsFirst } : {} });
1139
+ }
1140
+ return Promise.resolve(q.range(lo, hi)).then((res) => {
1141
+ if (res.error) throw new DatabaseError(door, res.error);
1142
+ return res;
1143
+ });
1144
+ },
1145
+ { label: door, ...opts.pageSize !== void 0 ? { pageSize: opts.pageSize } : {}, ...opts.maxRows !== void 0 ? { maxRows: opts.maxRows } : {} }
1146
+ );
1147
+ }
1127
1148
  function tableByName(index, name) {
1128
1149
  const t = index[name];
1129
1150
  if (!t) throw new DoorRefusedError(`tableByName ${name}`, "no such table in the database description (schema-qualify it: schema.table)");
@@ -1156,6 +1177,7 @@ export {
1156
1177
  assertDoor,
1157
1178
  assertWriteLanded,
1158
1179
  call,
1180
+ callAll,
1159
1181
  changesOf,
1160
1182
  count,
1161
1183
  createActiveOrgCookie,