@ai-matrx/records 0.84.1 → 0.84.2
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/app-table/index.cjs +33 -0
- package/dist/app-table/index.cjs.map +1 -1
- package/dist/app-table/index.js +33 -0
- package/dist/app-table/index.js.map +1 -1
- package/dist/core/index.cjs +39 -0
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +7 -1
- package/dist/core/index.d.ts +7 -1
- package/dist/core/index.js +39 -0
- package/dist/core/index.js.map +1 -1
- package/dist/data/index.cjs +33 -0
- package/dist/data/index.cjs.map +1 -1
- package/dist/data/index.js +33 -0
- package/dist/data/index.js.map +1 -1
- package/dist/react/index.cjs +42 -1
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +17 -1
- package/dist/react/index.d.ts +17 -1
- package/dist/react/index.js +42 -1
- package/dist/react/index.js.map +1 -1
- package/package.json +3 -3
package/dist/data/index.js
CHANGED
|
@@ -196,6 +196,26 @@ function takePrimedTablePageBundle(organizationId, tableId, viewId) {
|
|
|
196
196
|
primed.delete(key);
|
|
197
197
|
return Date.now() - held.at < PRIMED_TTL_MS ? held.answer : null;
|
|
198
198
|
}
|
|
199
|
+
var DOOR_REGISTRY = /* @__PURE__ */ Symbol.for("@ai-matrx/records/primed-door-answers");
|
|
200
|
+
function doorRegistry() {
|
|
201
|
+
const g = globalThis;
|
|
202
|
+
return g[DOOR_REGISTRY] ??= /* @__PURE__ */ new Map();
|
|
203
|
+
}
|
|
204
|
+
var PRIMED_DOOR_TTL_MS = 1e4;
|
|
205
|
+
function takePrimedDoorAnswer(key) {
|
|
206
|
+
const registry2 = doorRegistry();
|
|
207
|
+
const held = registry2.get(key);
|
|
208
|
+
if (!held) return null;
|
|
209
|
+
if (Date.now() - held.at < PRIMED_DOOR_TTL_MS) return { data: held.data };
|
|
210
|
+
registry2.delete(key);
|
|
211
|
+
return null;
|
|
212
|
+
}
|
|
213
|
+
function dropPrimedDoorAnswers() {
|
|
214
|
+
doorRegistry().clear();
|
|
215
|
+
}
|
|
216
|
+
function isWritingDoor(door) {
|
|
217
|
+
return /(_declare|_set(_|$)|_update|_write|_delete|_restore|_archive|_upsert|_reparent|_change|_duplicate|_move|_decide|_run$|_submit|_publish|_import_|_start$|_complete|_sign$|_add$|_retire|_propose|_promote|_land$|_pin$|_mute|_snooze|_unsnooze|_clear|_unclear|_revoke|_issue|_bind|_unbind|_apply|_backfill|_sync$|_decorate|_designate|_ensure|^migrate_|^home_add|^capture_|^claim_|^record_stage|^anon_|^io_import_|^io_comment_resolve|^enrich_(declare|land|pin)|^field_(declare|duplicate|propose|restore|retire|update)|^table_(declare|ensure|from_example|move|sync)|^value_restore|^relation_own)/.test(door);
|
|
218
|
+
}
|
|
199
219
|
|
|
200
220
|
// src/core/recordChanges.ts
|
|
201
221
|
var listeners = /* @__PURE__ */ new Set();
|
|
@@ -2692,7 +2712,16 @@ function createRecordsClient(given) {
|
|
|
2692
2712
|
bundleAsked.delete(tableId);
|
|
2693
2713
|
for (const key of [...bundleParts.keys()]) if (key.includes(tableId)) bundleParts.delete(key);
|
|
2694
2714
|
}
|
|
2715
|
+
function primedFor(door, args) {
|
|
2716
|
+
if (isWritingDoor(door)) {
|
|
2717
|
+
dropPrimedDoorAnswers();
|
|
2718
|
+
return null;
|
|
2719
|
+
}
|
|
2720
|
+
return takePrimedDoorAnswer(`${door}|${canonicalArgs(args)}`);
|
|
2721
|
+
}
|
|
2695
2722
|
async function callDoor(door, args, where) {
|
|
2723
|
+
const primed = primedFor(door, args);
|
|
2724
|
+
if (primed) return ok(primed.data);
|
|
2696
2725
|
const bundled = await fromBundle(door, args);
|
|
2697
2726
|
if (bundled) return ok(bundled.data);
|
|
2698
2727
|
if (!doorReady(config, door)) {
|
|
@@ -2717,6 +2746,8 @@ function createRecordsClient(given) {
|
|
|
2717
2746
|
}
|
|
2718
2747
|
async function owedDoor(door, args, where) {
|
|
2719
2748
|
if (doorExists(door)) return callDoor(door, args, where);
|
|
2749
|
+
const primed = primedFor(door, args);
|
|
2750
|
+
if (primed) return ok(primed.data);
|
|
2720
2751
|
const response = await config.dataSource.rpc(door, args, { schema });
|
|
2721
2752
|
if (response.error) {
|
|
2722
2753
|
const code = response.error.code;
|
|
@@ -2782,6 +2813,8 @@ function createRecordsClient(given) {
|
|
|
2782
2813
|
return ok(response.data);
|
|
2783
2814
|
}
|
|
2784
2815
|
async function drillDoor(door, args, where) {
|
|
2816
|
+
const primed = primedFor(door, args);
|
|
2817
|
+
if (primed) return ok(primed.data);
|
|
2785
2818
|
const response = await config.dataSource.rpc(door, args, { schema: DRILL_SCHEMA });
|
|
2786
2819
|
if (response.error) {
|
|
2787
2820
|
const refusal2 = mapPgError(response.error, where);
|