@ai-matrx/records 0.79.1 → 0.80.1

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.
Files changed (36) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/app-table/index.cjs +31 -6
  3. package/dist/app-table/index.cjs.map +1 -1
  4. package/dist/app-table/index.d.cts +3 -3
  5. package/dist/app-table/index.d.ts +3 -3
  6. package/dist/app-table/index.js +31 -6
  7. package/dist/app-table/index.js.map +1 -1
  8. package/dist/{client-BcVOYKL1.d.ts → client-BbLzOf08.d.ts} +1 -1
  9. package/dist/{client-DHoI0qvP.d.cts → client-GhSH0bR7.d.cts} +1 -1
  10. package/dist/core/index.cjs +41 -6
  11. package/dist/core/index.cjs.map +1 -1
  12. package/dist/core/index.d.cts +26 -5
  13. package/dist/core/index.d.ts +26 -5
  14. package/dist/core/index.js +41 -6
  15. package/dist/core/index.js.map +1 -1
  16. package/dist/data/index.cjs +31 -6
  17. package/dist/data/index.cjs.map +1 -1
  18. package/dist/data/index.d.cts +2 -2
  19. package/dist/data/index.d.ts +2 -2
  20. package/dist/data/index.js +31 -6
  21. package/dist/data/index.js.map +1 -1
  22. package/dist/{declareTable-DM9mPkSc.d.cts → declareTable-Bb0eUtPF.d.cts} +2 -2
  23. package/dist/{declareTable-CDKHwyrF.d.ts → declareTable-D6mB7Va8.d.ts} +2 -2
  24. package/dist/index.cjs.map +1 -1
  25. package/dist/index.d.cts +2 -2
  26. package/dist/index.d.ts +2 -2
  27. package/dist/index.js.map +1 -1
  28. package/dist/react/index.cjs +31 -6
  29. package/dist/react/index.cjs.map +1 -1
  30. package/dist/react/index.d.cts +6 -2
  31. package/dist/react/index.d.ts +6 -2
  32. package/dist/react/index.js +31 -6
  33. package/dist/react/index.js.map +1 -1
  34. package/dist/{table-kind-wYO_qjK1.d.cts → table-kind-DptSVo_4.d.cts} +6 -2
  35. package/dist/{table-kind-Ct-nhoCZ.d.ts → table-kind-lHVdMZGy.d.ts} +6 -2
  36. package/package.json +1 -1
@@ -292,6 +292,24 @@ module.exports = __toCommonJS(react_exports);
292
292
  // src/react/context.tsx
293
293
  var import_react = require("react");
294
294
 
295
+ // src/core/primedBundle.ts
296
+ var PRIMED_TTL_MS = 15e3;
297
+ var REGISTRY = /* @__PURE__ */ Symbol.for("@ai-matrx/records/primed-table-page-bundles");
298
+ function registry() {
299
+ const g = globalThis;
300
+ return g[REGISTRY] ??= /* @__PURE__ */ new Map();
301
+ }
302
+ var primedKey = (organizationId, tableId, viewId) => `${organizationId}|${tableId}|${viewId ?? ""}`;
303
+ function takePrimedTablePageBundle(organizationId, tableId, viewId) {
304
+ if (!organizationId) return null;
305
+ const key = primedKey(organizationId, tableId, viewId);
306
+ const primed = registry();
307
+ const held = primed.get(key);
308
+ if (!held) return null;
309
+ primed.delete(key);
310
+ return Date.now() - held.at < PRIMED_TTL_MS ? held.answer : null;
311
+ }
312
+
295
313
  // src/archive.ts
296
314
  var ARCHIVE_LANES = ["mine", "org"];
297
315
  var DEFAULT_ARCHIVE_LANE = "org";
@@ -4355,13 +4373,20 @@ function createRecordsClient(given) {
4355
4373
  }
4356
4374
  async function fillBundle(tableId, viewId) {
4357
4375
  try {
4358
- const response = await config.dataSource.rpc(
4359
- "table_page_bundle",
4360
- { p_organization_id: org, p_table_id: tableId, p_view_id: typeof viewId === "string" ? viewId : null },
4361
- { schema }
4362
- );
4376
+ const view = typeof viewId === "string" ? viewId : null;
4377
+ const usable = (r) => r !== null && !r.error && r.data !== null && typeof r.data === "object" && Array.isArray(r.data.parts);
4378
+ const primedAnswer = takePrimedTablePageBundle(org, tableId, view);
4379
+ let response = primedAnswer ? await primedAnswer : null;
4380
+ if (!usable(response)) {
4381
+ response = await config.dataSource.rpc(
4382
+ "table_page_bundle",
4383
+ { p_organization_id: org, p_table_id: tableId, p_view_id: view },
4384
+ { schema }
4385
+ );
4386
+ }
4387
+ if (!usable(response)) return;
4363
4388
  const answer = response.data;
4364
- if (response.error || !answer || !Array.isArray(answer.parts)) return;
4389
+ if (!answer || !Array.isArray(answer.parts)) return;
4365
4390
  const now = Date.now();
4366
4391
  for (const part of answer.parts) {
4367
4392
  if (part.error !== void 0 || part.data === void 0) continue;