@ai-matrx/records 0.98.10 → 0.98.11
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 +6 -0
- package/dist/core/index.cjs +15 -7
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.js +15 -7
- package/dist/core/index.js.map +1 -1
- package/dist/index.cjs +15 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -2
- package/dist/index.d.ts +4 -2
- package/dist/index.js +15 -7
- package/dist/index.js.map +1 -1
- package/dist/react/index.cjs +15 -7
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +4 -2
- package/dist/react/index.d.ts +4 -2
- package/dist/react/index.js +15 -7
- package/dist/react/index.js.map +1 -1
- package/package.json +2 -2
package/dist/react/index.d.cts
CHANGED
|
@@ -16258,16 +16258,18 @@ interface ChooseAlternateArgs {
|
|
|
16258
16258
|
field_key: string;
|
|
16259
16259
|
/** Position in the field's `alternates` list as the record holds it. */
|
|
16260
16260
|
alternate_index: number;
|
|
16261
|
+
/** When given, the alternate holding this rank is chosen instead — the list a screen drew may be ordered differently. */
|
|
16262
|
+
rank?: number;
|
|
16261
16263
|
}
|
|
16262
16264
|
/** The patch that makes alternate `alternate_index` of `field_key` the value. Pure; exported for tests. */
|
|
16263
|
-
declare function alternatePatch(document: RecordDocument, field_key: string, alternate_index: number): {
|
|
16265
|
+
declare function alternatePatch(document: RecordDocument, field_key: string, alternate_index: number, rank?: number): {
|
|
16264
16266
|
ok: true;
|
|
16265
16267
|
patch: Record<string, unknown>;
|
|
16266
16268
|
} | {
|
|
16267
16269
|
ok: false;
|
|
16268
16270
|
message: string;
|
|
16269
16271
|
};
|
|
16270
|
-
declare function chooseAlternate(client: Pick<RecordsClient, "recordRead" | "recordUpdate">, { record_id, field_key, alternate_index }: ChooseAlternateArgs): Promise<RecordsResult<number>>;
|
|
16272
|
+
declare function chooseAlternate(client: Pick<RecordsClient, "recordRead" | "recordAsOf" | "recordUpdate">, { record_id, field_key, alternate_index, rank }: ChooseAlternateArgs): Promise<RecordsResult<number>>;
|
|
16271
16273
|
|
|
16272
16274
|
interface RecordsProviderProps {
|
|
16273
16275
|
config: RecordsConfig;
|
package/dist/react/index.d.ts
CHANGED
|
@@ -16258,16 +16258,18 @@ interface ChooseAlternateArgs {
|
|
|
16258
16258
|
field_key: string;
|
|
16259
16259
|
/** Position in the field's `alternates` list as the record holds it. */
|
|
16260
16260
|
alternate_index: number;
|
|
16261
|
+
/** When given, the alternate holding this rank is chosen instead — the list a screen drew may be ordered differently. */
|
|
16262
|
+
rank?: number;
|
|
16261
16263
|
}
|
|
16262
16264
|
/** The patch that makes alternate `alternate_index` of `field_key` the value. Pure; exported for tests. */
|
|
16263
|
-
declare function alternatePatch(document: RecordDocument, field_key: string, alternate_index: number): {
|
|
16265
|
+
declare function alternatePatch(document: RecordDocument, field_key: string, alternate_index: number, rank?: number): {
|
|
16264
16266
|
ok: true;
|
|
16265
16267
|
patch: Record<string, unknown>;
|
|
16266
16268
|
} | {
|
|
16267
16269
|
ok: false;
|
|
16268
16270
|
message: string;
|
|
16269
16271
|
};
|
|
16270
|
-
declare function chooseAlternate(client: Pick<RecordsClient, "recordRead" | "recordUpdate">, { record_id, field_key, alternate_index }: ChooseAlternateArgs): Promise<RecordsResult<number>>;
|
|
16272
|
+
declare function chooseAlternate(client: Pick<RecordsClient, "recordRead" | "recordAsOf" | "recordUpdate">, { record_id, field_key, alternate_index, rank }: ChooseAlternateArgs): Promise<RecordsResult<number>>;
|
|
16271
16273
|
|
|
16272
16274
|
interface RecordsProviderProps {
|
|
16273
16275
|
config: RecordsConfig;
|
package/dist/react/index.js
CHANGED
|
@@ -13456,20 +13456,22 @@ function tableRenderSchema(facts) {
|
|
|
13456
13456
|
function refuse4(code, message, hint) {
|
|
13457
13457
|
return { ok: false, error: { code, message, hint, ours: true } };
|
|
13458
13458
|
}
|
|
13459
|
-
function alternatePatch(document, field_key, alternate_index) {
|
|
13459
|
+
function alternatePatch(document, field_key, alternate_index, rank) {
|
|
13460
13460
|
const block = document._values ?? {};
|
|
13461
13461
|
const envelope = block[field_key];
|
|
13462
13462
|
const alternates = Array.isArray(envelope?.alternates) ? envelope.alternates : [];
|
|
13463
|
-
const
|
|
13463
|
+
const at = rank === void 0 ? alternate_index : alternates.findIndex((a) => a.rank === rank);
|
|
13464
|
+
alternate_index = at;
|
|
13465
|
+
const chosen = alternates[at];
|
|
13464
13466
|
if (!envelope || !chosen) return { ok: false, message: "That other value is no longer on this record." };
|
|
13465
13467
|
const kept = alternates.filter((_, i) => i !== alternate_index);
|
|
13466
13468
|
const current = document[field_key];
|
|
13467
13469
|
const next = [...kept];
|
|
13468
13470
|
if (current !== null && current !== void 0) {
|
|
13469
13471
|
const taken = new Set(kept.map((a) => a.rank));
|
|
13470
|
-
let
|
|
13471
|
-
while (taken.has(
|
|
13472
|
-
next.push({ value: current, ...envelope.src ? { src: envelope.src } : {}, rank });
|
|
13472
|
+
let rank2 = 1;
|
|
13473
|
+
while (taken.has(rank2)) rank2 += 1;
|
|
13474
|
+
next.push({ value: current, ...envelope.src ? { src: envelope.src } : {}, rank: rank2 });
|
|
13473
13475
|
}
|
|
13474
13476
|
const { ver: _ver, actor: _actor, at: _at, on_behalf_of: _on, absent: _absent, alternates: _alts, src: _src, ...rest } = envelope;
|
|
13475
13477
|
const changed = { ...rest, ...chosen.src ? { src: chosen.src } : {} };
|
|
@@ -13483,14 +13485,20 @@ function alternatePatch(document, field_key, alternate_index) {
|
|
|
13483
13485
|
}
|
|
13484
13486
|
};
|
|
13485
13487
|
}
|
|
13486
|
-
async function chooseAlternate(client, { record_id, field_key, alternate_index }) {
|
|
13488
|
+
async function chooseAlternate(client, { record_id, field_key, alternate_index, rank }) {
|
|
13487
13489
|
const read = await client.recordRead({ record_id, withVersion: true });
|
|
13488
13490
|
if (!read.ok) return read;
|
|
13491
|
+
if (Object.keys(read.data.hidden ?? {}).length > 0) {
|
|
13492
|
+
return refuse4("refused_by_rule", "Some fields here are hidden from you, so this choice can't be saved safely.", "Ask someone who can see every field.");
|
|
13493
|
+
}
|
|
13489
13494
|
const version = read.data.version;
|
|
13490
13495
|
if (version === null || version === void 0) {
|
|
13491
13496
|
return refuse4("stale_read", "Nothing was saved: this record's latest changes could not be checked.", "Reload, then try again.");
|
|
13492
13497
|
}
|
|
13493
|
-
const
|
|
13498
|
+
const raw = await client.recordAsOf({ record_id, recorded_at: (/* @__PURE__ */ new Date()).toISOString() });
|
|
13499
|
+
if (!raw.ok) return raw;
|
|
13500
|
+
if (raw.data === null) return refuse4("not_found", "That record is no longer here.", "Reload, then look again.");
|
|
13501
|
+
const built = alternatePatch(raw.data, field_key, alternate_index, rank);
|
|
13494
13502
|
if (!built.ok) return refuse4("not_found", built.message, "Reload, then look again.");
|
|
13495
13503
|
return client.recordUpdate({ record_id, patch: built.patch, expectedVersion: version });
|
|
13496
13504
|
}
|