@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.cjs
CHANGED
|
@@ -240,6 +240,26 @@ function takePrimedTablePageBundle(organizationId, tableId, viewId) {
|
|
|
240
240
|
primed.delete(key);
|
|
241
241
|
return Date.now() - held.at < PRIMED_TTL_MS ? held.answer : null;
|
|
242
242
|
}
|
|
243
|
+
var DOOR_REGISTRY = /* @__PURE__ */ Symbol.for("@ai-matrx/records/primed-door-answers");
|
|
244
|
+
function doorRegistry() {
|
|
245
|
+
const g = globalThis;
|
|
246
|
+
return g[DOOR_REGISTRY] ??= /* @__PURE__ */ new Map();
|
|
247
|
+
}
|
|
248
|
+
var PRIMED_DOOR_TTL_MS = 1e4;
|
|
249
|
+
function takePrimedDoorAnswer(key) {
|
|
250
|
+
const registry2 = doorRegistry();
|
|
251
|
+
const held = registry2.get(key);
|
|
252
|
+
if (!held) return null;
|
|
253
|
+
if (Date.now() - held.at < PRIMED_DOOR_TTL_MS) return { data: held.data };
|
|
254
|
+
registry2.delete(key);
|
|
255
|
+
return null;
|
|
256
|
+
}
|
|
257
|
+
function dropPrimedDoorAnswers() {
|
|
258
|
+
doorRegistry().clear();
|
|
259
|
+
}
|
|
260
|
+
function isWritingDoor(door) {
|
|
261
|
+
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);
|
|
262
|
+
}
|
|
243
263
|
|
|
244
264
|
// src/core/recordChanges.ts
|
|
245
265
|
var listeners = /* @__PURE__ */ new Set();
|
|
@@ -2736,7 +2756,16 @@ function createRecordsClient(given) {
|
|
|
2736
2756
|
bundleAsked.delete(tableId);
|
|
2737
2757
|
for (const key of [...bundleParts.keys()]) if (key.includes(tableId)) bundleParts.delete(key);
|
|
2738
2758
|
}
|
|
2759
|
+
function primedFor(door, args) {
|
|
2760
|
+
if (isWritingDoor(door)) {
|
|
2761
|
+
dropPrimedDoorAnswers();
|
|
2762
|
+
return null;
|
|
2763
|
+
}
|
|
2764
|
+
return takePrimedDoorAnswer(`${door}|${canonicalArgs(args)}`);
|
|
2765
|
+
}
|
|
2739
2766
|
async function callDoor(door, args, where) {
|
|
2767
|
+
const primed = primedFor(door, args);
|
|
2768
|
+
if (primed) return ok(primed.data);
|
|
2740
2769
|
const bundled = await fromBundle(door, args);
|
|
2741
2770
|
if (bundled) return ok(bundled.data);
|
|
2742
2771
|
if (!doorReady(config, door)) {
|
|
@@ -2761,6 +2790,8 @@ function createRecordsClient(given) {
|
|
|
2761
2790
|
}
|
|
2762
2791
|
async function owedDoor(door, args, where) {
|
|
2763
2792
|
if (doorExists(door)) return callDoor(door, args, where);
|
|
2793
|
+
const primed = primedFor(door, args);
|
|
2794
|
+
if (primed) return ok(primed.data);
|
|
2764
2795
|
const response = await config.dataSource.rpc(door, args, { schema });
|
|
2765
2796
|
if (response.error) {
|
|
2766
2797
|
const code = response.error.code;
|
|
@@ -2826,6 +2857,8 @@ function createRecordsClient(given) {
|
|
|
2826
2857
|
return ok(response.data);
|
|
2827
2858
|
}
|
|
2828
2859
|
async function drillDoor(door, args, where) {
|
|
2860
|
+
const primed = primedFor(door, args);
|
|
2861
|
+
if (primed) return ok(primed.data);
|
|
2829
2862
|
const response = await config.dataSource.rpc(door, args, { schema: DRILL_SCHEMA });
|
|
2830
2863
|
if (response.error) {
|
|
2831
2864
|
const refusal2 = mapPgError(response.error, where);
|