@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/CHANGELOG.md +10 -0
- package/dist/db.cjs +22 -0
- package/dist/db.cjs.map +1 -1
- package/dist/db.d.cts +20 -2
- package/dist/db.d.ts +20 -2
- package/dist/db.js +22 -0
- package/dist/db.js.map +1 -1
- package/package.json +2 -2
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
|
|
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
|
|
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,
|