@ai-matrx/records 0.92.2 → 0.93.0

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 (102) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/{client-Dzd8gtAo.d.ts → client-DsPuWFp0.d.ts} +8 -8
  3. package/dist/{client-Cn3odIIB.d.cts → client-EyD3rS0T.d.cts} +8 -8
  4. package/dist/core/index.cjs +101 -32
  5. package/dist/core/index.cjs.map +1 -1
  6. package/dist/core/index.d.cts +16 -15
  7. package/dist/core/index.d.ts +16 -15
  8. package/dist/core/index.js +101 -32
  9. package/dist/core/index.js.map +1 -1
  10. package/dist/data/index.cjs +46 -24
  11. package/dist/data/index.cjs.map +1 -1
  12. package/dist/data/index.d.cts +11 -11
  13. package/dist/data/index.d.ts +11 -11
  14. package/dist/data/index.js +46 -24
  15. package/dist/data/index.js.map +1 -1
  16. package/dist/{declareTable-CrL6AZKB.d.cts → declareTable-Bkk_Ewib.d.cts} +4 -4
  17. package/dist/{declareTable-ZRW5EsTQ.d.ts → declareTable-kL5qZoTe.d.ts} +4 -4
  18. package/dist/entity/index.cjs +43 -29
  19. package/dist/entity/index.cjs.map +1 -1
  20. package/dist/entity/index.d.cts +7 -6
  21. package/dist/entity/index.d.ts +7 -6
  22. package/dist/entity/index.js +43 -29
  23. package/dist/entity/index.js.map +1 -1
  24. package/dist/entity/react.cjs +43 -29
  25. package/dist/entity/react.cjs.map +1 -1
  26. package/dist/entity/react.js +43 -29
  27. package/dist/entity/react.js.map +1 -1
  28. package/dist/{field-CCY1rG9l.d.cts → field-6rwt4ejZ.d.cts} +1 -1
  29. package/dist/{field-enufS5ry.d.ts → field-B-WaVZnS.d.ts} +1 -1
  30. package/dist/forms/index.d.cts +3 -3
  31. package/dist/forms/index.d.ts +3 -3
  32. package/dist/index.cjs +92 -25
  33. package/dist/index.cjs.map +1 -1
  34. package/dist/index.d.cts +13 -33
  35. package/dist/index.d.ts +13 -33
  36. package/dist/index.js +92 -25
  37. package/dist/index.js.map +1 -1
  38. package/dist/memory/index.d.cts +7 -7
  39. package/dist/memory/index.d.ts +7 -7
  40. package/dist/objectOrganization-BII_K3Gm.d.ts +45 -0
  41. package/dist/objectOrganization-DfjDQtDb.d.cts +45 -0
  42. package/dist/{port-C54ykAOv.d.ts → port--acgmxh5.d.ts} +5 -2
  43. package/dist/{port-Drioh9al.d.cts → port-Cx76dq-X.d.cts} +5 -2
  44. package/dist/{portal-DRdmZ-xv.d.cts → portal-9sRr6cpG.d.cts} +1 -1
  45. package/dist/{portal-or_f7BkT.d.ts → portal-BDAqsGkg.d.ts} +1 -1
  46. package/dist/{ports-s0D2jvqn.d.cts → ports-9BQ3zo2y.d.cts} +108 -2
  47. package/dist/{ports-BeOgjwYl.d.ts → ports-DYWE1ENo.d.ts} +108 -2
  48. package/dist/react/index.cjs +101 -32
  49. package/dist/react/index.cjs.map +1 -1
  50. package/dist/react/index.d.cts +1463 -1363
  51. package/dist/react/index.d.ts +1463 -1363
  52. package/dist/react/index.js +101 -32
  53. package/dist/react/index.js.map +1 -1
  54. package/dist/realtime/index.cjs +43 -13
  55. package/dist/realtime/index.cjs.map +1 -1
  56. package/dist/realtime/index.d.cts +9 -3
  57. package/dist/realtime/index.d.ts +9 -3
  58. package/dist/realtime/index.js +43 -13
  59. package/dist/realtime/index.js.map +1 -1
  60. package/dist/{record-BwCf9wKW.d.cts → record-DmmeuUrC.d.cts} +1 -1
  61. package/dist/{record-BwCf9wKW.d.ts → record-DmmeuUrC.d.ts} +1 -1
  62. package/dist/{relation-eLMgv_dV.d.ts → relation-Op1M67le.d.ts} +2 -2
  63. package/dist/{relation-8vAWCa67.d.cts → relation-qrb2NbHf.d.cts} +2 -2
  64. package/dist/{rule-wHI5B0Ka.d.cts → rule-CeHg1sy1.d.cts} +1 -1
  65. package/dist/{rule-D9yNiorf.d.ts → rule-tN2lxvJ1.d.ts} +1 -1
  66. package/dist/search/index.d.cts +1 -1
  67. package/dist/search/index.d.ts +1 -1
  68. package/dist/setup/index.cjs +117 -42
  69. package/dist/setup/index.cjs.map +1 -1
  70. package/dist/setup/index.d.cts +25 -11
  71. package/dist/setup/index.d.ts +25 -11
  72. package/dist/setup/index.js +117 -42
  73. package/dist/setup/index.js.map +1 -1
  74. package/dist/{subscription-CdoI-UaB.d.cts → subscription-Drbxn-9Z.d.cts} +3 -3
  75. package/dist/{subscription-BynsG1K6.d.ts → subscription-hdTaRrfK.d.ts} +3 -3
  76. package/dist/{table-kind-i3lZJa3f.d.ts → table-kind-BZkvzBgc.d.ts} +4 -29
  77. package/dist/{table-kind-DzctQ7dO.d.cts → table-kind-C-hZxDN7.d.cts} +4 -29
  78. package/dist/templates/index.d.cts +10 -10
  79. package/dist/templates/index.d.ts +10 -10
  80. package/dist/typed-table/index.cjs +46 -24
  81. package/dist/typed-table/index.cjs.map +1 -1
  82. package/dist/typed-table/index.d.cts +10 -10
  83. package/dist/typed-table/index.d.ts +10 -10
  84. package/dist/typed-table/index.js +46 -24
  85. package/dist/typed-table/index.js.map +1 -1
  86. package/dist/{types-BvL_oKFl.d.ts → types-BauAeFW8.d.ts} +2 -2
  87. package/dist/{types-DAFP6XFe.d.cts → types-CBmUdBT0.d.cts} +2 -2
  88. package/dist/{types-BKYEeFt4.d.cts → types-Dek9owBe.d.cts} +2 -2
  89. package/dist/{types-D8qdG3Lg.d.cts → types-DsgXrESm.d.cts} +2 -2
  90. package/dist/{types-cpKY7Pjb.d.ts → types-HVgWcZDY.d.ts} +2 -2
  91. package/dist/{types-DYzXhD7j.d.ts → types-hrw-Eff1.d.ts} +2 -2
  92. package/dist/use-cases/index.d.cts +5 -5
  93. package/dist/use-cases/index.d.ts +5 -5
  94. package/dist/{validate-DfNMxjmU.d.cts → validate-B_iUeyh2.d.cts} +1 -1
  95. package/dist/{validate-DbvAParj.d.ts → validate-w-HGGTf-.d.ts} +1 -1
  96. package/dist/views/index.cjs +438 -0
  97. package/dist/views/index.cjs.map +1 -0
  98. package/dist/views/index.d.cts +401 -0
  99. package/dist/views/index.d.ts +401 -0
  100. package/dist/views/index.js +415 -0
  101. package/dist/views/index.js.map +1 -0
  102. package/package.json +13 -3
@@ -379,34 +379,47 @@ import {
379
379
  import { globalSlot } from "@ai-matrx/kit/global-slot";
380
380
  var REMEMBER_MS = 3e4;
381
381
  var REMEMBER_MAX = 500;
382
- var ours = globalSlot("ai-matrx.records.op-ledger", () => /* @__PURE__ */ new Map());
383
- function trim(now) {
384
- for (const [id, at] of ours) {
385
- if (now - at <= REMEMBER_MS) break;
386
- ours.delete(id);
387
- }
388
- while (ours.size > REMEMBER_MAX) {
389
- const oldest = ours.keys().next();
390
- if (oldest.done === true) break;
391
- ours.delete(oldest.value);
382
+ function ledgerOver(ours) {
383
+ function trim(now) {
384
+ for (const [id, at] of ours) {
385
+ if (now - at <= REMEMBER_MS) break;
386
+ ours.delete(id);
387
+ }
388
+ while (ours.size > REMEMBER_MAX) {
389
+ const oldest = ours.keys().next();
390
+ if (oldest.done === true) break;
391
+ ours.delete(oldest.value);
392
+ }
392
393
  }
394
+ return {
395
+ mint() {
396
+ const id = crypto.randomUUID();
397
+ const now = Date.now();
398
+ ours.set(id, now);
399
+ trim(now);
400
+ return id;
401
+ },
402
+ isOwn(opId) {
403
+ if (!opId) return false;
404
+ const at = ours.get(opId);
405
+ if (at === void 0) return false;
406
+ if (Date.now() - at > REMEMBER_MS) {
407
+ ours.delete(opId);
408
+ return false;
409
+ }
410
+ return true;
411
+ },
412
+ clear() {
413
+ ours.clear();
414
+ },
415
+ get size() {
416
+ return ours.size;
417
+ }
418
+ };
393
419
  }
394
- function mintOpId() {
395
- const id = crypto.randomUUID();
396
- const now = Date.now();
397
- ours.set(id, now);
398
- trim(now);
399
- return id;
400
- }
420
+ var defaultOpLedger = ledgerOver(globalSlot("ai-matrx.records.op-ledger", () => /* @__PURE__ */ new Map()));
401
421
  function isOwnOp(opId) {
402
- if (!opId) return false;
403
- const at = ours.get(opId);
404
- if (at === void 0) return false;
405
- if (Date.now() - at > REMEMBER_MS) {
406
- ours.delete(opId);
407
- return false;
408
- }
409
- return true;
422
+ return defaultOpLedger.isOwn(opId);
410
423
  }
411
424
 
412
425
  // src/entity/core/realtime.ts
@@ -669,6 +682,7 @@ function toWireValues(values) {
669
682
  }
670
683
  function createEntityDataPort(options) {
671
684
  const client = options.client ?? createEntityClient({ dataSource: options.dataSource });
685
+ const ledger = options.opLedger ?? defaultOpLedger;
672
686
  const activeOrganization = () => (options.activeOrganizationId ? options.activeOrganizationId() : options.organization) ?? null;
673
687
  const gets = /* @__PURE__ */ new Map();
674
688
  const aliases = options.aliases;
@@ -859,27 +873,27 @@ function createEntityDataPort(options) {
859
873
  "Pick an organization, then add the row again. Nothing was saved."
860
874
  );
861
875
  }
862
- const answer = await client.insert({ token: binding.token, organizationId, rows: [toWireValues(values)], opId: mintOpId() });
876
+ const answer = await client.insert({ token: binding.token, organizationId, rows: [toWireValues(values)], opId: ledger.mint() });
863
877
  return readBack(alias, answer, "The new row");
864
878
  },
865
879
  async update(alias, id, patch, baseVersion) {
866
880
  const binding = bindingOf(alias);
867
881
  if (!binding) return noSuchAlias(alias);
868
882
  if (!isUuidShape(id)) return refusal("invalid_argument", `"${String(id)}" is not a row id.`);
869
- const answer = await client.update({ token: binding.token, id, baseVersion, patch: toWireValues(patch), opId: mintOpId() });
883
+ const answer = await client.update({ token: binding.token, id, baseVersion, patch: toWireValues(patch), opId: ledger.mint() });
870
884
  return readBack(alias, answer, "The change");
871
885
  },
872
886
  async archive(alias, id) {
873
887
  const binding = bindingOf(alias);
874
888
  if (!binding) return noSuchAlias(alias);
875
889
  if (!isUuidShape(id)) return refusal("invalid_argument", `"${String(id)}" is not a row id.`);
876
- return done(await client.archive({ token: binding.token, ids: [id], opId: mintOpId() }));
890
+ return done(await client.archive({ token: binding.token, ids: [id], opId: ledger.mint() }));
877
891
  },
878
892
  async restore(alias, id) {
879
893
  const binding = bindingOf(alias);
880
894
  if (!binding) return noSuchAlias(alias);
881
895
  if (!isUuidShape(id)) return refusal("invalid_argument", `"${String(id)}" is not a row id.`);
882
- return done(await client.unarchive({ token: binding.token, ids: [id], opId: mintOpId() }));
896
+ return done(await client.unarchive({ token: binding.token, ids: [id], opId: ledger.mint() }));
883
897
  },
884
898
  subscribe(event, listener) {
885
899
  const alias = event.startsWith("rows:") ? event.slice(5) : null;