@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.cjs
CHANGED
|
@@ -13775,20 +13775,22 @@ function tableRenderSchema(facts) {
|
|
|
13775
13775
|
function refuse4(code, message, hint) {
|
|
13776
13776
|
return { ok: false, error: { code, message, hint, ours: true } };
|
|
13777
13777
|
}
|
|
13778
|
-
function alternatePatch(document, field_key, alternate_index) {
|
|
13778
|
+
function alternatePatch(document, field_key, alternate_index, rank) {
|
|
13779
13779
|
const block = document._values ?? {};
|
|
13780
13780
|
const envelope = block[field_key];
|
|
13781
13781
|
const alternates = Array.isArray(envelope?.alternates) ? envelope.alternates : [];
|
|
13782
|
-
const
|
|
13782
|
+
const at = rank === void 0 ? alternate_index : alternates.findIndex((a) => a.rank === rank);
|
|
13783
|
+
alternate_index = at;
|
|
13784
|
+
const chosen = alternates[at];
|
|
13783
13785
|
if (!envelope || !chosen) return { ok: false, message: "That other value is no longer on this record." };
|
|
13784
13786
|
const kept = alternates.filter((_, i) => i !== alternate_index);
|
|
13785
13787
|
const current = document[field_key];
|
|
13786
13788
|
const next = [...kept];
|
|
13787
13789
|
if (current !== null && current !== void 0) {
|
|
13788
13790
|
const taken = new Set(kept.map((a) => a.rank));
|
|
13789
|
-
let
|
|
13790
|
-
while (taken.has(
|
|
13791
|
-
next.push({ value: current, ...envelope.src ? { src: envelope.src } : {}, rank });
|
|
13791
|
+
let rank2 = 1;
|
|
13792
|
+
while (taken.has(rank2)) rank2 += 1;
|
|
13793
|
+
next.push({ value: current, ...envelope.src ? { src: envelope.src } : {}, rank: rank2 });
|
|
13792
13794
|
}
|
|
13793
13795
|
const { ver: _ver, actor: _actor, at: _at, on_behalf_of: _on, absent: _absent, alternates: _alts, src: _src, ...rest } = envelope;
|
|
13794
13796
|
const changed = { ...rest, ...chosen.src ? { src: chosen.src } : {} };
|
|
@@ -13802,14 +13804,20 @@ function alternatePatch(document, field_key, alternate_index) {
|
|
|
13802
13804
|
}
|
|
13803
13805
|
};
|
|
13804
13806
|
}
|
|
13805
|
-
async function chooseAlternate(client, { record_id, field_key, alternate_index }) {
|
|
13807
|
+
async function chooseAlternate(client, { record_id, field_key, alternate_index, rank }) {
|
|
13806
13808
|
const read = await client.recordRead({ record_id, withVersion: true });
|
|
13807
13809
|
if (!read.ok) return read;
|
|
13810
|
+
if (Object.keys(read.data.hidden ?? {}).length > 0) {
|
|
13811
|
+
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.");
|
|
13812
|
+
}
|
|
13808
13813
|
const version = read.data.version;
|
|
13809
13814
|
if (version === null || version === void 0) {
|
|
13810
13815
|
return refuse4("stale_read", "Nothing was saved: this record's latest changes could not be checked.", "Reload, then try again.");
|
|
13811
13816
|
}
|
|
13812
|
-
const
|
|
13817
|
+
const raw = await client.recordAsOf({ record_id, recorded_at: (/* @__PURE__ */ new Date()).toISOString() });
|
|
13818
|
+
if (!raw.ok) return raw;
|
|
13819
|
+
if (raw.data === null) return refuse4("not_found", "That record is no longer here.", "Reload, then look again.");
|
|
13820
|
+
const built = alternatePatch(raw.data, field_key, alternate_index, rank);
|
|
13813
13821
|
if (!built.ok) return refuse4("not_found", built.message, "Reload, then look again.");
|
|
13814
13822
|
return client.recordUpdate({ record_id, patch: built.patch, expectedVersion: version });
|
|
13815
13823
|
}
|