@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.
@@ -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);