@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/data/index.cjs
CHANGED
|
@@ -240,6 +240,37 @@ 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(doors) {
|
|
258
|
+
const registry2 = doorRegistry();
|
|
259
|
+
if (!doors) {
|
|
260
|
+
registry2.clear();
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
for (const key of [...registry2.keys()]) if (doors.some((door) => key.startsWith(`${door}|`))) registry2.delete(key);
|
|
264
|
+
}
|
|
265
|
+
var LOOK_WRITES = {
|
|
266
|
+
view_declare: ["views", "view_look_read", "grid_layout", "table_page_bundle"],
|
|
267
|
+
view_designate: ["views", "view_look_read", "grid_layout", "table_page_bundle"],
|
|
268
|
+
view_look_set: ["views", "view_look_read", "grid_layout", "table_page_bundle"],
|
|
269
|
+
view_record_order_set: ["views", "view_look_read", "grid_layout", "table_page_bundle"]
|
|
270
|
+
};
|
|
271
|
+
function isWritingDoor(door) {
|
|
272
|
+
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);
|
|
273
|
+
}
|
|
243
274
|
|
|
244
275
|
// src/core/recordChanges.ts
|
|
245
276
|
var listeners = /* @__PURE__ */ new Set();
|
|
@@ -2736,7 +2767,21 @@ function createRecordsClient(given) {
|
|
|
2736
2767
|
bundleAsked.delete(tableId);
|
|
2737
2768
|
for (const key of [...bundleParts.keys()]) if (key.includes(tableId)) bundleParts.delete(key);
|
|
2738
2769
|
}
|
|
2770
|
+
function primedFor(door, args) {
|
|
2771
|
+
const look = LOOK_WRITES[door];
|
|
2772
|
+
if (look) {
|
|
2773
|
+
dropPrimedDoorAnswers(look);
|
|
2774
|
+
return null;
|
|
2775
|
+
}
|
|
2776
|
+
if (isWritingDoor(door)) {
|
|
2777
|
+
dropPrimedDoorAnswers();
|
|
2778
|
+
return null;
|
|
2779
|
+
}
|
|
2780
|
+
return takePrimedDoorAnswer(`${door}|${canonicalArgs(args)}`);
|
|
2781
|
+
}
|
|
2739
2782
|
async function callDoor(door, args, where) {
|
|
2783
|
+
const primed = primedFor(door, args);
|
|
2784
|
+
if (primed) return ok(primed.data);
|
|
2740
2785
|
const bundled = await fromBundle(door, args);
|
|
2741
2786
|
if (bundled) return ok(bundled.data);
|
|
2742
2787
|
if (!doorReady(config, door)) {
|
|
@@ -2761,6 +2806,8 @@ function createRecordsClient(given) {
|
|
|
2761
2806
|
}
|
|
2762
2807
|
async function owedDoor(door, args, where) {
|
|
2763
2808
|
if (doorExists(door)) return callDoor(door, args, where);
|
|
2809
|
+
const primed = primedFor(door, args);
|
|
2810
|
+
if (primed) return ok(primed.data);
|
|
2764
2811
|
const response = await config.dataSource.rpc(door, args, { schema });
|
|
2765
2812
|
if (response.error) {
|
|
2766
2813
|
const code = response.error.code;
|
|
@@ -2826,6 +2873,8 @@ function createRecordsClient(given) {
|
|
|
2826
2873
|
return ok(response.data);
|
|
2827
2874
|
}
|
|
2828
2875
|
async function drillDoor(door, args, where) {
|
|
2876
|
+
const primed = primedFor(door, args);
|
|
2877
|
+
if (primed) return ok(primed.data);
|
|
2829
2878
|
const response = await config.dataSource.rpc(door, args, { schema: DRILL_SCHEMA });
|
|
2830
2879
|
if (response.error) {
|
|
2831
2880
|
const refusal2 = mapPgError(response.error, where);
|