@ai-matrx/records 0.84.1 → 0.84.3
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 +12 -0
- package/dist/app-table/index.cjs +49 -0
- package/dist/app-table/index.cjs.map +1 -1
- package/dist/app-table/index.js +49 -0
- package/dist/app-table/index.js.map +1 -1
- package/dist/core/index.cjs +55 -0
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +10 -1
- package/dist/core/index.d.ts +10 -1
- package/dist/core/index.js +55 -0
- package/dist/core/index.js.map +1 -1
- package/dist/data/index.cjs +49 -0
- package/dist/data/index.cjs.map +1 -1
- package/dist/data/index.js +49 -0
- package/dist/data/index.js.map +1 -1
- package/dist/react/index.cjs +58 -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 +58 -1
- package/dist/react/index.js.map +1 -1
- package/package.json +1 -1
package/dist/app-table/index.js
CHANGED
|
@@ -376,6 +376,37 @@ function takePrimedTablePageBundle(organizationId, tableId, viewId) {
|
|
|
376
376
|
primed.delete(key);
|
|
377
377
|
return Date.now() - held.at < PRIMED_TTL_MS ? held.answer : null;
|
|
378
378
|
}
|
|
379
|
+
var DOOR_REGISTRY = /* @__PURE__ */ Symbol.for("@ai-matrx/records/primed-door-answers");
|
|
380
|
+
function doorRegistry() {
|
|
381
|
+
const g = globalThis;
|
|
382
|
+
return g[DOOR_REGISTRY] ??= /* @__PURE__ */ new Map();
|
|
383
|
+
}
|
|
384
|
+
var PRIMED_DOOR_TTL_MS = 1e4;
|
|
385
|
+
function takePrimedDoorAnswer(key) {
|
|
386
|
+
const registry2 = doorRegistry();
|
|
387
|
+
const held = registry2.get(key);
|
|
388
|
+
if (!held) return null;
|
|
389
|
+
if (Date.now() - held.at < PRIMED_DOOR_TTL_MS) return { data: held.data };
|
|
390
|
+
registry2.delete(key);
|
|
391
|
+
return null;
|
|
392
|
+
}
|
|
393
|
+
function dropPrimedDoorAnswers(doors) {
|
|
394
|
+
const registry2 = doorRegistry();
|
|
395
|
+
if (!doors) {
|
|
396
|
+
registry2.clear();
|
|
397
|
+
return;
|
|
398
|
+
}
|
|
399
|
+
for (const key of [...registry2.keys()]) if (doors.some((door) => key.startsWith(`${door}|`))) registry2.delete(key);
|
|
400
|
+
}
|
|
401
|
+
var LOOK_WRITES = {
|
|
402
|
+
view_declare: ["views", "view_look_read", "grid_layout", "table_page_bundle"],
|
|
403
|
+
view_designate: ["views", "view_look_read", "grid_layout", "table_page_bundle"],
|
|
404
|
+
view_look_set: ["views", "view_look_read", "grid_layout", "table_page_bundle"],
|
|
405
|
+
view_record_order_set: ["views", "view_look_read", "grid_layout", "table_page_bundle"]
|
|
406
|
+
};
|
|
407
|
+
function isWritingDoor(door) {
|
|
408
|
+
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);
|
|
409
|
+
}
|
|
379
410
|
|
|
380
411
|
// src/core/recordChanges.ts
|
|
381
412
|
var listeners = /* @__PURE__ */ new Set();
|
|
@@ -2848,7 +2879,21 @@ function createRecordsClient(given) {
|
|
|
2848
2879
|
bundleAsked.delete(tableId);
|
|
2849
2880
|
for (const key of [...bundleParts.keys()]) if (key.includes(tableId)) bundleParts.delete(key);
|
|
2850
2881
|
}
|
|
2882
|
+
function primedFor(door, args) {
|
|
2883
|
+
const look = LOOK_WRITES[door];
|
|
2884
|
+
if (look) {
|
|
2885
|
+
dropPrimedDoorAnswers(look);
|
|
2886
|
+
return null;
|
|
2887
|
+
}
|
|
2888
|
+
if (isWritingDoor(door)) {
|
|
2889
|
+
dropPrimedDoorAnswers();
|
|
2890
|
+
return null;
|
|
2891
|
+
}
|
|
2892
|
+
return takePrimedDoorAnswer(`${door}|${canonicalArgs(args)}`);
|
|
2893
|
+
}
|
|
2851
2894
|
async function callDoor(door, args, where) {
|
|
2895
|
+
const primed = primedFor(door, args);
|
|
2896
|
+
if (primed) return ok(primed.data);
|
|
2852
2897
|
const bundled = await fromBundle(door, args);
|
|
2853
2898
|
if (bundled) return ok(bundled.data);
|
|
2854
2899
|
if (!doorReady(config, door)) {
|
|
@@ -2873,6 +2918,8 @@ function createRecordsClient(given) {
|
|
|
2873
2918
|
}
|
|
2874
2919
|
async function owedDoor(door, args, where) {
|
|
2875
2920
|
if (doorExists(door)) return callDoor(door, args, where);
|
|
2921
|
+
const primed = primedFor(door, args);
|
|
2922
|
+
if (primed) return ok(primed.data);
|
|
2876
2923
|
const response = await config.dataSource.rpc(door, args, { schema });
|
|
2877
2924
|
if (response.error) {
|
|
2878
2925
|
const code = response.error.code;
|
|
@@ -2938,6 +2985,8 @@ function createRecordsClient(given) {
|
|
|
2938
2985
|
return ok(response.data);
|
|
2939
2986
|
}
|
|
2940
2987
|
async function drillDoor(door, args, where) {
|
|
2988
|
+
const primed = primedFor(door, args);
|
|
2989
|
+
if (primed) return ok(primed.data);
|
|
2941
2990
|
const response = await config.dataSource.rpc(door, args, { schema: DRILL_SCHEMA });
|
|
2942
2991
|
if (response.error) {
|
|
2943
2992
|
const refusal2 = mapPgError(response.error, where);
|