@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.js
CHANGED
|
@@ -196,6 +196,37 @@ 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(doors) {
|
|
214
|
+
const registry2 = doorRegistry();
|
|
215
|
+
if (!doors) {
|
|
216
|
+
registry2.clear();
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
for (const key of [...registry2.keys()]) if (doors.some((door) => key.startsWith(`${door}|`))) registry2.delete(key);
|
|
220
|
+
}
|
|
221
|
+
var LOOK_WRITES = {
|
|
222
|
+
view_declare: ["views", "view_look_read", "grid_layout", "table_page_bundle"],
|
|
223
|
+
view_designate: ["views", "view_look_read", "grid_layout", "table_page_bundle"],
|
|
224
|
+
view_look_set: ["views", "view_look_read", "grid_layout", "table_page_bundle"],
|
|
225
|
+
view_record_order_set: ["views", "view_look_read", "grid_layout", "table_page_bundle"]
|
|
226
|
+
};
|
|
227
|
+
function isWritingDoor(door) {
|
|
228
|
+
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);
|
|
229
|
+
}
|
|
199
230
|
|
|
200
231
|
// src/core/recordChanges.ts
|
|
201
232
|
var listeners = /* @__PURE__ */ new Set();
|
|
@@ -2692,7 +2723,21 @@ function createRecordsClient(given) {
|
|
|
2692
2723
|
bundleAsked.delete(tableId);
|
|
2693
2724
|
for (const key of [...bundleParts.keys()]) if (key.includes(tableId)) bundleParts.delete(key);
|
|
2694
2725
|
}
|
|
2726
|
+
function primedFor(door, args) {
|
|
2727
|
+
const look = LOOK_WRITES[door];
|
|
2728
|
+
if (look) {
|
|
2729
|
+
dropPrimedDoorAnswers(look);
|
|
2730
|
+
return null;
|
|
2731
|
+
}
|
|
2732
|
+
if (isWritingDoor(door)) {
|
|
2733
|
+
dropPrimedDoorAnswers();
|
|
2734
|
+
return null;
|
|
2735
|
+
}
|
|
2736
|
+
return takePrimedDoorAnswer(`${door}|${canonicalArgs(args)}`);
|
|
2737
|
+
}
|
|
2695
2738
|
async function callDoor(door, args, where) {
|
|
2739
|
+
const primed = primedFor(door, args);
|
|
2740
|
+
if (primed) return ok(primed.data);
|
|
2696
2741
|
const bundled = await fromBundle(door, args);
|
|
2697
2742
|
if (bundled) return ok(bundled.data);
|
|
2698
2743
|
if (!doorReady(config, door)) {
|
|
@@ -2717,6 +2762,8 @@ function createRecordsClient(given) {
|
|
|
2717
2762
|
}
|
|
2718
2763
|
async function owedDoor(door, args, where) {
|
|
2719
2764
|
if (doorExists(door)) return callDoor(door, args, where);
|
|
2765
|
+
const primed = primedFor(door, args);
|
|
2766
|
+
if (primed) return ok(primed.data);
|
|
2720
2767
|
const response = await config.dataSource.rpc(door, args, { schema });
|
|
2721
2768
|
if (response.error) {
|
|
2722
2769
|
const code = response.error.code;
|
|
@@ -2782,6 +2829,8 @@ function createRecordsClient(given) {
|
|
|
2782
2829
|
return ok(response.data);
|
|
2783
2830
|
}
|
|
2784
2831
|
async function drillDoor(door, args, where) {
|
|
2832
|
+
const primed = primedFor(door, args);
|
|
2833
|
+
if (primed) return ok(primed.data);
|
|
2785
2834
|
const response = await config.dataSource.rpc(door, args, { schema: DRILL_SCHEMA });
|
|
2786
2835
|
if (response.error) {
|
|
2787
2836
|
const refusal2 = mapPgError(response.error, where);
|