@amalgm/live 0.2.81-main.41740705397 → 0.2.81-main.41784750721

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 (195) hide show
  1. package/dist/apply/contracts.d.ts +4 -2
  2. package/dist/apply/contracts.d.ts.map +1 -1
  3. package/dist/apply/contracts.js.map +1 -1
  4. package/dist/apply/index.d.ts +0 -3
  5. package/dist/apply/index.d.ts.map +1 -1
  6. package/dist/apply/index.js +0 -3
  7. package/dist/apply/index.js.map +1 -1
  8. package/dist/apply/plans.d.ts +3 -4
  9. package/dist/apply/plans.d.ts.map +1 -1
  10. package/dist/apply/plans.js +2 -6
  11. package/dist/apply/plans.js.map +1 -1
  12. package/dist/apply/settling.d.ts +1 -1
  13. package/dist/apply/settling.d.ts.map +1 -1
  14. package/dist/apply/window.d.ts +0 -2
  15. package/dist/apply/window.d.ts.map +1 -1
  16. package/dist/apply/window.js +0 -2
  17. package/dist/apply/window.js.map +1 -1
  18. package/dist/contracts/validate.d.ts +0 -2
  19. package/dist/contracts/validate.d.ts.map +1 -1
  20. package/dist/contracts/validate.js +0 -2
  21. package/dist/contracts/validate.js.map +1 -1
  22. package/dist/detection/batch.d.ts +0 -1
  23. package/dist/detection/batch.d.ts.map +1 -1
  24. package/dist/detection/batch.js +1 -4
  25. package/dist/detection/batch.js.map +1 -1
  26. package/dist/detection/content.d.ts +29 -12
  27. package/dist/detection/content.d.ts.map +1 -1
  28. package/dist/detection/content.js +58 -75
  29. package/dist/detection/content.js.map +1 -1
  30. package/dist/detection/echo.d.ts +3 -15
  31. package/dist/detection/echo.d.ts.map +1 -1
  32. package/dist/detection/echo.js +3 -18
  33. package/dist/detection/echo.js.map +1 -1
  34. package/dist/detection/enrollment.d.ts +3 -5
  35. package/dist/detection/enrollment.d.ts.map +1 -1
  36. package/dist/detection/enrollment.js.map +1 -1
  37. package/dist/detection/index.d.ts +2 -0
  38. package/dist/detection/index.d.ts.map +1 -1
  39. package/dist/detection/index.js +2 -0
  40. package/dist/detection/index.js.map +1 -1
  41. package/dist/detection/record-order.d.ts +37 -0
  42. package/dist/detection/record-order.d.ts.map +1 -0
  43. package/dist/detection/record-order.js +311 -0
  44. package/dist/detection/record-order.js.map +1 -0
  45. package/dist/detection/record-proposal.d.ts +3 -0
  46. package/dist/detection/record-proposal.d.ts.map +1 -1
  47. package/dist/detection/record-proposal.js +6 -3
  48. package/dist/detection/record-proposal.js.map +1 -1
  49. package/dist/detection/removals.d.ts +0 -1
  50. package/dist/detection/removals.d.ts.map +1 -1
  51. package/dist/detection/removals.js +1 -4
  52. package/dist/detection/removals.js.map +1 -1
  53. package/dist/entities/graph-head.d.ts +0 -7
  54. package/dist/entities/graph-head.d.ts.map +1 -1
  55. package/dist/entities/graph-head.js +0 -13
  56. package/dist/entities/graph-head.js.map +1 -1
  57. package/dist/entities/index.d.ts +0 -8
  58. package/dist/entities/index.d.ts.map +1 -1
  59. package/dist/entities/index.js +0 -8
  60. package/dist/entities/index.js.map +1 -1
  61. package/dist/entities/rules.d.ts +7 -69
  62. package/dist/entities/rules.d.ts.map +1 -1
  63. package/dist/entities/rules.js +1 -148
  64. package/dist/entities/rules.js.map +1 -1
  65. package/dist/entities/types.d.ts +3 -24
  66. package/dist/entities/types.d.ts.map +1 -1
  67. package/dist/files/cloud-files.d.ts.map +1 -1
  68. package/dist/files/cloud-files.js +2 -1
  69. package/dist/files/cloud-files.js.map +1 -1
  70. package/dist/git/merge.d.ts +1 -1
  71. package/dist/git/merge.js +1 -1
  72. package/dist/records/contracts.d.ts +0 -1
  73. package/dist/records/contracts.d.ts.map +1 -1
  74. package/dist/records/contracts.js +0 -1
  75. package/dist/records/contracts.js.map +1 -1
  76. package/dist/registration/user-ground.d.ts +9 -0
  77. package/dist/registration/user-ground.d.ts.map +1 -1
  78. package/dist/registration/user-ground.js +29 -10
  79. package/dist/registration/user-ground.js.map +1 -1
  80. package/dist/steps.d.ts +0 -2
  81. package/dist/steps.d.ts.map +1 -1
  82. package/dist/steps.js +0 -2
  83. package/dist/steps.js.map +1 -1
  84. package/dist/transfer/cargo.d.ts +0 -2
  85. package/dist/transfer/cargo.d.ts.map +1 -1
  86. package/dist/transfer/cargo.js +0 -20
  87. package/dist/transfer/cargo.js.map +1 -1
  88. package/dist/transfer/index.d.ts +1 -1
  89. package/dist/transfer/index.d.ts.map +1 -1
  90. package/dist/transfer/index.js +1 -1
  91. package/dist/transfer/index.js.map +1 -1
  92. package/dist/transfer/parallel.d.ts +4 -1
  93. package/dist/transfer/parallel.d.ts.map +1 -1
  94. package/dist/transfer/parallel.js +13 -10
  95. package/dist/transfer/parallel.js.map +1 -1
  96. package/dist/watching/coverage.d.ts +0 -2
  97. package/dist/watching/coverage.d.ts.map +1 -1
  98. package/dist/watching/coverage.js +0 -5
  99. package/dist/watching/coverage.js.map +1 -1
  100. package/dist/workspace/index.d.ts +0 -1
  101. package/dist/workspace/index.d.ts.map +1 -1
  102. package/dist/workspace/index.js +0 -1
  103. package/dist/workspace/index.js.map +1 -1
  104. package/dist-cjs/apply/contracts.js.map +1 -1
  105. package/dist-cjs/apply/index.js +0 -5
  106. package/dist-cjs/apply/index.js.map +1 -1
  107. package/dist-cjs/apply/plans.js +2 -7
  108. package/dist-cjs/apply/plans.js.map +1 -1
  109. package/dist-cjs/apply/window.js +1 -4
  110. package/dist-cjs/apply/window.js.map +1 -1
  111. package/dist-cjs/contracts/validate.js +1 -4
  112. package/dist-cjs/contracts/validate.js.map +1 -1
  113. package/dist-cjs/detection/batch.js +0 -4
  114. package/dist-cjs/detection/batch.js.map +1 -1
  115. package/dist-cjs/detection/content.js +61 -78
  116. package/dist-cjs/detection/content.js.map +1 -1
  117. package/dist-cjs/detection/echo.js +3 -19
  118. package/dist-cjs/detection/echo.js.map +1 -1
  119. package/dist-cjs/detection/enrollment.js.map +1 -1
  120. package/dist-cjs/detection/index.js +2 -0
  121. package/dist-cjs/detection/index.js.map +1 -1
  122. package/dist-cjs/detection/record-order.js +314 -0
  123. package/dist-cjs/detection/record-order.js.map +1 -0
  124. package/dist-cjs/detection/record-proposal.js +7 -3
  125. package/dist-cjs/detection/record-proposal.js.map +1 -1
  126. package/dist-cjs/detection/removals.js +0 -4
  127. package/dist-cjs/detection/removals.js.map +1 -1
  128. package/dist-cjs/entities/graph-head.js +0 -14
  129. package/dist-cjs/entities/graph-head.js.map +1 -1
  130. package/dist-cjs/entities/index.js +0 -8
  131. package/dist-cjs/entities/index.js.map +1 -1
  132. package/dist-cjs/entities/rules.js +1 -157
  133. package/dist-cjs/entities/rules.js.map +1 -1
  134. package/dist-cjs/files/cloud-files.js +2 -1
  135. package/dist-cjs/files/cloud-files.js.map +1 -1
  136. package/dist-cjs/git/merge.js +1 -1
  137. package/dist-cjs/records/contracts.js +1 -3
  138. package/dist-cjs/records/contracts.js.map +1 -1
  139. package/dist-cjs/registration/user-ground.js +32 -10
  140. package/dist-cjs/registration/user-ground.js.map +1 -1
  141. package/dist-cjs/steps.js +1 -3
  142. package/dist-cjs/steps.js.map +1 -1
  143. package/dist-cjs/transfer/cargo.js +0 -21
  144. package/dist-cjs/transfer/cargo.js.map +1 -1
  145. package/dist-cjs/transfer/index.js +2 -1
  146. package/dist-cjs/transfer/index.js.map +1 -1
  147. package/dist-cjs/transfer/parallel.js +13 -10
  148. package/dist-cjs/transfer/parallel.js.map +1 -1
  149. package/dist-cjs/watching/coverage.js +0 -6
  150. package/dist-cjs/watching/coverage.js.map +1 -1
  151. package/dist-cjs/workspace/index.js +1 -3
  152. package/dist-cjs/workspace/index.js.map +1 -1
  153. package/package.json +4 -4
  154. package/dist/apply/content-results.d.ts +0 -27
  155. package/dist/apply/content-results.d.ts.map +0 -1
  156. package/dist/apply/content-results.js +0 -53
  157. package/dist/apply/content-results.js.map +0 -1
  158. package/dist/apply/local-work.d.ts +0 -34
  159. package/dist/apply/local-work.d.ts.map +0 -1
  160. package/dist/apply/local-work.js +0 -31
  161. package/dist/apply/local-work.js.map +0 -1
  162. package/dist/entities/digest-steps.d.ts +0 -14
  163. package/dist/entities/digest-steps.d.ts.map +0 -1
  164. package/dist/entities/digest-steps.js +0 -26
  165. package/dist/entities/digest-steps.js.map +0 -1
  166. package/dist/entities/json-steps.d.ts +0 -21
  167. package/dist/entities/json-steps.d.ts.map +0 -1
  168. package/dist/entities/json-steps.js +0 -130
  169. package/dist/entities/json-steps.js.map +0 -1
  170. package/dist/entities/moves.d.ts +0 -42
  171. package/dist/entities/moves.d.ts.map +0 -1
  172. package/dist/entities/moves.js +0 -82
  173. package/dist/entities/moves.js.map +0 -1
  174. package/dist/entities/trash.d.ts +0 -7
  175. package/dist/entities/trash.d.ts.map +0 -1
  176. package/dist/entities/trash.js +0 -10
  177. package/dist/entities/trash.js.map +0 -1
  178. package/dist/workspace/memory-store.d.ts +0 -7
  179. package/dist/workspace/memory-store.d.ts.map +0 -1
  180. package/dist/workspace/memory-store.js +0 -16
  181. package/dist/workspace/memory-store.js.map +0 -1
  182. package/dist-cjs/apply/content-results.js +0 -58
  183. package/dist-cjs/apply/content-results.js.map +0 -1
  184. package/dist-cjs/apply/local-work.js +0 -34
  185. package/dist-cjs/apply/local-work.js.map +0 -1
  186. package/dist-cjs/entities/digest-steps.js +0 -30
  187. package/dist-cjs/entities/digest-steps.js.map +0 -1
  188. package/dist-cjs/entities/json-steps.js +0 -135
  189. package/dist-cjs/entities/json-steps.js.map +0 -1
  190. package/dist-cjs/entities/moves.js +0 -85
  191. package/dist-cjs/entities/moves.js.map +0 -1
  192. package/dist-cjs/entities/trash.js +0 -14
  193. package/dist-cjs/entities/trash.js.map +0 -1
  194. package/dist-cjs/workspace/memory-store.js +0 -20
  195. package/dist-cjs/workspace/memory-store.js.map +0 -1
@@ -49,31 +49,34 @@ function createWeightedGate(capacity) {
49
49
  },
50
50
  };
51
51
  }
52
- /** Run a bounded number of independent effects without changing item order. */
52
+ /** Run `effect` over every item, in input order, with at most `concurrency`
53
+ * in flight. A failure stops admission; every started effect still settles,
54
+ * and the earliest started item's failure fails the loop. Admitted items are
55
+ * always a prefix, so that failure is the one an in-order loop would have met. */
53
56
  async function parallelForEach(items, concurrency, effect) {
54
57
  if (!Number.isSafeInteger(concurrency) || concurrency < 1) {
55
58
  throw new Error('transfer concurrency must be a positive integer');
56
59
  }
57
60
  let cursor = 0;
58
- let failure;
61
+ const failure = { index: items.length };
59
62
  const worker = async () => {
60
- while (failure === undefined && cursor < items.length) {
63
+ while (failure.index === items.length && cursor < items.length) {
61
64
  const index = cursor;
62
65
  cursor += 1;
63
- const item = items[index];
64
- if (item === undefined)
65
- continue;
66
66
  try {
67
- await effect(item);
67
+ await effect(items[index]);
68
68
  }
69
69
  catch (error) {
70
- failure ??= error;
70
+ if (index < failure.index) {
71
+ failure.index = index;
72
+ failure.error = error;
73
+ }
71
74
  }
72
75
  }
73
76
  };
74
77
  await Promise.all(Array.from({ length: Math.min(concurrency, items.length) }, worker));
75
- if (failure !== undefined)
76
- throw failure;
78
+ if (failure.index < items.length)
79
+ throw failure.error;
77
80
  }
78
81
  /** Run independent effects under both a count bound and a total weight
79
82
  * bound. Input order is the admission order; a failure stops new admission
@@ -1 +1 @@
1
- {"version":3,"file":"parallel.js","sourceRoot":"","sources":["../../src/transfer/parallel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parallel.js","sourceRoot":"","sources":["../../src/transfer/parallel.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,6 @@
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
14
  exports.doorbellGround = doorbellGround;
15
15
  exports.watchOwnerOf = watchOwnerOf;
16
- exports.coveredRoots = coveredRoots;
17
16
  /** '/a/b' → '/a'; '/a' → '/'; a bare name → '.'. */
18
17
  const parentDirOf = (path) => {
19
18
  const cut = path.lastIndexOf('/');
@@ -46,9 +45,4 @@ function watchOwnerOf(root, roots) {
46
45
  }
47
46
  return owner;
48
47
  }
49
- /** Every logical root routed through an owner's physical handle. */
50
- function coveredRoots(owner, roots) {
51
- return roots.filter((root) => root.rootId !== owner.rootId
52
- && watchOwnerOf(root, roots)?.rootId === owner.rootId);
53
- }
54
48
  //# sourceMappingURL=coverage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"coverage.js","sourceRoot":"","sources":["../../src/watching/coverage.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AAwBH,wCAEC;AAMD,oCASC;AAGD,oCAGC;AAnCD,oDAAoD;AACpD,MAAM,WAAW,GAAG,CAAC,IAAY,EAAU,EAAE;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACxB,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC9C,CAAC,CAAC;AAEF;;;;GAIG;AACH,SAAgB,cAAc,CAAC,IAAe;IAC5C,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACnE,CAAC;AAED;;;GAGG;AACH,SAAgB,YAAY,CAAC,IAAe,EAAE,KAA2B;IACvE,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,KAAK,GAAqB,IAAI,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,SAAS;QACpE,IAAI,MAAM,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC;YAAE,SAAS;QAC5E,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM;YAAE,KAAK,GAAG,KAAK,CAAC;IACrE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,oEAAoE;AACpE,SAAgB,YAAY,CAAC,KAAgB,EAAE,KAA2B;IACxE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;WACrD,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"coverage.js","sourceRoot":"","sources":["../../src/watching/coverage.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AAwBH,wCAEC;AAMD,oCASC;AA7BD,oDAAoD;AACpD,MAAM,WAAW,GAAG,CAAC,IAAY,EAAU,EAAE;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACxB,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC9C,CAAC,CAAC;AAEF;;;;GAIG;AACH,SAAgB,cAAc,CAAC,IAAe;IAC5C,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACnE,CAAC;AAED;;;GAGG;AACH,SAAgB,YAAY,CAAC,IAAe,EAAE,KAA2B;IACvE,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,KAAK,GAAqB,IAAI,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,SAAS;QACpE,IAAI,MAAM,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC;YAAE,SAAS;QAC5E,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM;YAAE,KAAK,GAAG,KAAK,CAAC;IACrE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WorkspaceRegistry = exports.MemoryWorkspaceStore = exports.WorkspaceRequestError = exports.assertWorkspaceEntries = exports.workspaceUriForPath = exports.uuidV7 = exports.isUuidV7 = exports.createWorkspaceApi = void 0;
3
+ exports.WorkspaceRegistry = exports.WorkspaceRequestError = exports.assertWorkspaceEntries = exports.workspaceUriForPath = exports.uuidV7 = exports.isUuidV7 = exports.createWorkspaceApi = void 0;
4
4
  var api_js_1 = require("./api.js");
5
5
  Object.defineProperty(exports, "createWorkspaceApi", { enumerable: true, get: function () { return api_js_1.createWorkspaceApi; } });
6
6
  var identity_js_1 = require("./identity.js");
@@ -10,8 +10,6 @@ Object.defineProperty(exports, "workspaceUriForPath", { enumerable: true, get: f
10
10
  var entries_js_1 = require("./entries.js");
11
11
  Object.defineProperty(exports, "assertWorkspaceEntries", { enumerable: true, get: function () { return entries_js_1.assertWorkspaceEntries; } });
12
12
  Object.defineProperty(exports, "WorkspaceRequestError", { enumerable: true, get: function () { return entries_js_1.WorkspaceRequestError; } });
13
- var memory_store_js_1 = require("./memory-store.js");
14
- Object.defineProperty(exports, "MemoryWorkspaceStore", { enumerable: true, get: function () { return memory_store_js_1.MemoryWorkspaceStore; } });
15
13
  var registry_js_1 = require("./registry.js");
16
14
  Object.defineProperty(exports, "WorkspaceRegistry", { enumerable: true, get: function () { return registry_js_1.WorkspaceRegistry; } });
17
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workspace/index.ts"],"names":[],"mappings":";;;AAAA,mCAA8C;AAArC,4GAAA,kBAAkB,OAAA;AAE3B,6CAAsE;AAA7D,uGAAA,QAAQ,OAAA;AAAE,qGAAA,MAAM,OAAA;AAAE,kHAAA,mBAAmB,OAAA;AAC9C,2CAA6E;AAApE,oHAAA,sBAAsB,OAAA;AAAE,mHAAA,qBAAqB,OAAA;AACtD,qDAAyD;AAAhD,uHAAA,oBAAoB,OAAA;AAC7B,6CAAkD;AAAzC,gHAAA,iBAAiB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workspace/index.ts"],"names":[],"mappings":";;;AAAA,mCAA8C;AAArC,4GAAA,kBAAkB,OAAA;AAE3B,6CAAsE;AAA7D,uGAAA,QAAQ,OAAA;AAAE,qGAAA,MAAM,OAAA;AAAE,kHAAA,mBAAmB,OAAA;AAC9C,2CAA6E;AAApE,oHAAA,sBAAsB,OAAA;AAAE,mHAAA,qBAAqB,OAAA;AACtD,6CAAkD;AAAzC,gHAAA,iBAAiB,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amalgm/live",
3
- "version": "0.2.81-main.41740705397",
3
+ "version": "0.2.81-main.41784750721",
4
4
  "description": "Portable realtime SDK for Amalgm — wire contracts, mutation discipline, and delivery state machines behind host-injected adapters.",
5
5
  "type": "module",
6
6
  "main": "./dist-cjs/index.js",
@@ -112,11 +112,11 @@
112
112
  "dependencies": {
113
113
  "@amalgm/core": "0.5.1-main.41264319540"
114
114
  },
115
- "gitHead": "159ddc1451f572b104b36914fa5fe8670ba34435",
115
+ "gitHead": "4fe7aaf22eb874445f8227e2438d98790858bafc",
116
116
  "amalgmSource": {
117
117
  "repository": "amalgm-inc/amalgm-live",
118
118
  "branch": "main",
119
- "commit": "159ddc1451f572b104b36914fa5fe8670ba34435",
120
- "occurrence": "41740705397"
119
+ "commit": "4fe7aaf22eb874445f8227e2438d98790858bafc",
120
+ "occurrence": "41784750721"
121
121
  }
122
122
  }
@@ -1,27 +0,0 @@
1
- /** Portable private-result construction for file, link, and construct adapters. */
2
- import type { Sha256Hex } from '../entities/types.js';
3
- import type { BinaryApplyPlan, ConstructApplyPlan, LinkApplyPlan, TextApplyPlan } from './contracts.js';
4
- /**
5
- * Construct text privately. The snapshot is mandatory truth. A delta is only
6
- * a shortcut over the exact immutable base; reproduceTextChange falls back to
7
- * the already-verified snapshot on every base or result mismatch. The returned
8
- * snapshot reference remains caller-owned immutable input; Apply never mutates
9
- * it and the host streams it into private staging.
10
- */
11
- export declare function prepareTextResult(plan: TextApplyPlan, snapshot: Uint8Array, exactBase: Uint8Array | null, sha256Hex: Sha256Hex): Uint8Array;
12
- export interface BinaryApplySinkReceipt {
13
- readonly bytes: number;
14
- readonly contentHash: string;
15
- }
16
- export interface BinaryApplySink {
17
- /** Persist one verified block at its manifest position in private staging. */
18
- write(index: number, bytes: Uint8Array): Promise<void>;
19
- /** Fsync/close and verify the staged whole without returning its bytes. */
20
- seal(): Promise<BinaryApplySinkReceipt>;
21
- }
22
- /** Verify reusable blocks while streaming them into private staging. A
23
- * construct payload stages exactly like a binary file. */
24
- export declare function prepareBinaryResult(plan: BinaryApplyPlan | ConstructApplyPlan, read: (index: number) => Promise<Uint8Array>, sink: BinaryApplySink, sha256Hex: Sha256Hex): Promise<BinaryApplySinkReceipt>;
25
- /** A link result is only its literal UTF-8 target bytes. */
26
- export declare function prepareLinkResult(plan: LinkApplyPlan, sha256Hex: Sha256Hex): string;
27
- //# sourceMappingURL=content-results.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"content-results.d.ts","sourceRoot":"","sources":["../../src/apply/content-results.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAInF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,aAAa,EACd,MAAM,gBAAgB,CAAC;AAcxB;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,aAAa,EACnB,QAAQ,EAAE,UAAU,EACpB,SAAS,EAAE,UAAU,GAAG,IAAI,EAC5B,SAAS,EAAE,SAAS,GACnB,UAAU,CAYZ;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,8EAA8E;IAC9E,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,2EAA2E;IAC3E,IAAI,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACzC;AAED;0DAC0D;AAC1D,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,eAAe,GAAG,kBAAkB,EAC1C,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,EAC5C,IAAI,EAAE,eAAe,EACrB,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,sBAAsB,CAAC,CAgBjC;AAED,4DAA4D;AAC5D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,GAAG,MAAM,CAKnF"}
@@ -1,53 +0,0 @@
1
- /** Portable private-result construction for file, link, and construct adapters. */
2
- import { reproduceTextChange } from '../detection/content.js';
3
- import { utf8Encode } from '../entities/bytes.js';
4
- const exactResult = (bytes, expected, sha256Hex, label) => {
5
- if (sha256Hex(bytes) !== expected) {
6
- throw new Error(`${label} does not match its accepted complete result`);
7
- }
8
- return bytes;
9
- };
10
- /**
11
- * Construct text privately. The snapshot is mandatory truth. A delta is only
12
- * a shortcut over the exact immutable base; reproduceTextChange falls back to
13
- * the already-verified snapshot on every base or result mismatch. The returned
14
- * snapshot reference remains caller-owned immutable input; Apply never mutates
15
- * it and the host streams it into private staging.
16
- */
17
- export function prepareTextResult(plan, snapshot, exactBase, sha256Hex) {
18
- const verifiedSnapshot = exactResult(snapshot, plan.artifact.contentHash, sha256Hex, 'text Apply snapshot');
19
- if (plan.strategy.kind === 'snapshot')
20
- return verifiedSnapshot;
21
- return reproduceTextChange(exactBase, {
22
- kind: 'file.text',
23
- mode: 'delta',
24
- basePayloadVersion: plan.strategy.basePayloadVersion,
25
- resultPayloadVersion: plan.artifact.contentHash,
26
- delta: plan.strategy.delta,
27
- }, verifiedSnapshot, sha256Hex);
28
- }
29
- /** Verify reusable blocks while streaming them into private staging. A
30
- * construct payload stages exactly like a binary file. */
31
- export async function prepareBinaryResult(plan, read, sink, sha256Hex) {
32
- for (const [index, expected] of plan.manifest.chunks.entries()) {
33
- const chunk = await read(index);
34
- if (!(chunk instanceof Uint8Array)
35
- || chunk.byteLength !== expected.bytes
36
- || sha256Hex(chunk) !== expected.sha256) {
37
- throw new Error(`binary Apply block ${index} failed verification`);
38
- }
39
- await sink.write(index, chunk);
40
- }
41
- const receipt = await sink.seal();
42
- if (receipt.bytes !== plan.manifest.bytes
43
- || receipt.contentHash !== plan.artifact.contentHash) {
44
- throw new Error('binary Apply staged result failed complete verification');
45
- }
46
- return Object.freeze({ ...receipt });
47
- }
48
- /** A link result is only its literal UTF-8 target bytes. */
49
- export function prepareLinkResult(plan, sha256Hex) {
50
- exactResult(utf8Encode(plan.targetText), plan.artifact.contentHash, sha256Hex, 'link Apply target');
51
- return plan.targetText;
52
- }
53
- //# sourceMappingURL=content-results.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"content-results.js","sourceRoot":"","sources":["../../src/apply/content-results.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAEnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AASlD,MAAM,WAAW,GAAG,CAClB,KAAiB,EACjB,QAAgB,EAChB,SAAoB,EACpB,KAAa,EACD,EAAE;IACd,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,8CAA8C,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAmB,EACnB,QAAoB,EACpB,SAA4B,EAC5B,SAAoB;IAEpB,MAAM,gBAAgB,GAAG,WAAW,CAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,EAAE,qBAAqB,CACtE,CAAC;IACF,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,gBAAgB,CAAC;IAC/D,OAAO,mBAAmB,CAAC,SAAS,EAAE;QACpC,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,OAAO;QACb,kBAAkB,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB;QACpD,oBAAoB,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW;QAC/C,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK;KAC3B,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;AAClC,CAAC;AAcD;0DAC0D;AAC1D,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAA0C,EAC1C,IAA4C,EAC5C,IAAqB,EACrB,SAAoB;IAEpB,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC;eAC7B,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAC,KAAK;eACnC,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,sBAAsB,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IAClC,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK;WACpC,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,iBAAiB,CAAC,IAAmB,EAAE,SAAoB;IACzE,WAAW,CACT,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,EAAE,mBAAmB,CACvF,CAAC;IACF,OAAO,IAAI,CAAC,UAAU,CAAC;AACzB,CAAC"}
@@ -1,34 +0,0 @@
1
- /**
2
- * Local work after a target: the local records that protect working ground
3
- * from an older accepted result. The Apply store answers it inside its
4
- * transaction; this is its pure form.
5
- *
6
- * An entity speaks only on its own channel, so a local record protects an
7
- * entity from a target when it is on that entity's channel and is not ordered
8
- * at or before the target. Order is delivery position, the one order every
9
- * channel shares; a channel's own sequence orders only that channel and never
10
- * decides here.
11
- */
12
- /** One local record as the gate reads it. */
13
- export interface LocalWork {
14
- readonly entityId: string;
15
- readonly mutationId: string;
16
- /** Its stamped delivery position; null until Send's stamp lands. */
17
- readonly deliverySequence: number | null;
18
- }
19
- /** Where the authority delivered one accepted mutation. */
20
- export interface DeliveredMutation {
21
- readonly entityId: string;
22
- readonly mutationId: string;
23
- readonly deliverySequence: number;
24
- }
25
- /**
26
- * True when a local record on the entity's channel has a position that is
27
- * unknown or after `targetDelivery`. Its position is its stamp, or, before
28
- * the stamp lands, the Inbox position of the same mutation: Receive may hold
29
- * this computer's own record first, and a result ordered at or before the
30
- * target is older than it, never newer. A local record at the target is the
31
- * target itself, which Apply verifies against the already-equal disk.
32
- */
33
- export declare function hasLocalWorkAfter(local: readonly LocalWork[], received: readonly DeliveredMutation[], entityId: string, targetDelivery: number): boolean;
34
- //# sourceMappingURL=local-work.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"local-work.d.ts","sourceRoot":"","sources":["../../src/apply/local-work.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,6CAA6C;AAC7C,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,oEAAoE;IACpE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED,2DAA2D;AAC3D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,SAAS,EAAE,EAC3B,QAAQ,EAAE,SAAS,iBAAiB,EAAE,EACtC,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,GACrB,OAAO,CAWT"}
@@ -1,31 +0,0 @@
1
- /**
2
- * Local work after a target: the local records that protect working ground
3
- * from an older accepted result. The Apply store answers it inside its
4
- * transaction; this is its pure form.
5
- *
6
- * An entity speaks only on its own channel, so a local record protects an
7
- * entity from a target when it is on that entity's channel and is not ordered
8
- * at or before the target. Order is delivery position, the one order every
9
- * channel shares; a channel's own sequence orders only that channel and never
10
- * decides here.
11
- */
12
- /**
13
- * True when a local record on the entity's channel has a position that is
14
- * unknown or after `targetDelivery`. Its position is its stamp, or, before
15
- * the stamp lands, the Inbox position of the same mutation: Receive may hold
16
- * this computer's own record first, and a result ordered at or before the
17
- * target is older than it, never newer. A local record at the target is the
18
- * target itself, which Apply verifies against the already-equal disk.
19
- */
20
- export function hasLocalWorkAfter(local, received, entityId, targetDelivery) {
21
- if (!entityId || !Number.isSafeInteger(targetDelivery) || targetDelivery < 1) {
22
- throw new Error('Apply local-work target is invalid');
23
- }
24
- return local.some((work) => {
25
- if (work.entityId !== entityId)
26
- return false;
27
- const position = work.deliverySequence ?? received.find((delivered) => (delivered.entityId === work.entityId && delivered.mutationId === work.mutationId))?.deliverySequence;
28
- return position === undefined || position > targetDelivery;
29
- });
30
- }
31
- //# sourceMappingURL=local-work.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"local-work.js","sourceRoot":"","sources":["../../src/apply/local-work.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAiBH;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAA2B,EAC3B,QAAsC,EACtC,QAAgB,EAChB,cAAsB;IAEtB,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QAC7E,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACzB,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CACrE,SAAS,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,CACjF,CAAC,EAAE,gBAAgB,CAAC;QACrB,OAAO,QAAQ,KAAK,SAAS,IAAI,QAAQ,GAAG,cAAc,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,14 +0,0 @@
1
- /**
2
- * Digests taken in steps (steps.ts): bytes a block per step, and JSON text a
3
- * bounded run per step (json-steps.ts). Each digests exactly the bytes its
4
- * whole-input form would, so the hash is the same however the steps are
5
- * paced.
6
- */
7
- import { type Steps } from '../steps.js';
8
- import type { CreateSha256 } from './types.js';
9
- /** The SHA-256 of `bytes`. */
10
- export declare function digestSteps(bytes: Uint8Array, createSha256: CreateSha256): Steps<string>;
11
- /** The SHA-256 of the UTF-8 text JSON.stringify writes for plain JSON data,
12
- * each JsonItems standing for its mapped array. */
13
- export declare function jsonDigestSteps(value: unknown, createSha256: CreateSha256): Steps<string>;
14
- //# sourceMappingURL=digest-steps.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"digest-steps.d.ts","sourceRoot":"","sources":["../../src/entities/digest-steps.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAsB,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAG7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,8BAA8B;AAC9B,wBAAiB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAOzF;AAED;mDACmD;AACnD,wBAAiB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAI1F"}
@@ -1,26 +0,0 @@
1
- /**
2
- * Digests taken in steps (steps.ts): bytes a block per step, and JSON text a
3
- * bounded run per step (json-steps.ts). Each digests exactly the bytes its
4
- * whole-input form would, so the hash is the same however the steps are
5
- * paced.
6
- */
7
- import { BYTES_PER_BOUNDARY } from '../steps.js';
8
- import { utf8Encode } from './bytes.js';
9
- import { jsonTextSteps } from './json-steps.js';
10
- /** The SHA-256 of `bytes`. */
11
- export function* digestSteps(bytes, createSha256) {
12
- const hash = createSha256();
13
- for (let offset = 0; offset < bytes.length; offset += BYTES_PER_BOUNDARY) {
14
- hash.update(bytes.subarray(offset, offset + BYTES_PER_BOUNDARY));
15
- yield;
16
- }
17
- return hash.digestHex();
18
- }
19
- /** The SHA-256 of the UTF-8 text JSON.stringify writes for plain JSON data,
20
- * each JsonItems standing for its mapped array. */
21
- export function* jsonDigestSteps(value, createSha256) {
22
- const hash = createSha256();
23
- yield* jsonTextSteps(value, text => hash.update(utf8Encode(text)));
24
- return hash.digestHex();
25
- }
26
- //# sourceMappingURL=digest-steps.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"digest-steps.js","sourceRoot":"","sources":["../../src/entities/digest-steps.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAc,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,8BAA8B;AAC9B,MAAM,SAAS,CAAC,CAAC,WAAW,CAAC,KAAiB,EAAE,YAA0B;IACxE,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,kBAAkB,EAAE,CAAC;QACzE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC;QACjE,KAAK,CAAC;IACR,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AAC1B,CAAC;AAED;mDACmD;AACnD,MAAM,SAAS,CAAC,CAAC,eAAe,CAAC,KAAc,EAAE,YAA0B;IACzE,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,KAAK,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnE,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AAC1B,CAAC"}
@@ -1,21 +0,0 @@
1
- /**
2
- * JSON text written in steps (steps.ts): exactly the text JSON.stringify
3
- * writes for plain JSON data, handed out in bounded runs, so a long list or
4
- * string never holds a host's thread however the steps are paced.
5
- */
6
- import { type Steps } from '../steps.js';
7
- /** An array within JSON text standing for `items.map(json)`, so a long list
8
- * is never copied just to be written. */
9
- export declare class JsonItems<T> {
10
- readonly items: readonly T[];
11
- readonly json: (item: T) => unknown;
12
- constructor(items: readonly T[], json: (item: T) => unknown);
13
- }
14
- /**
15
- * Hand `write` the text JSON.stringify writes for `value`, each JsonItems
16
- * standing for its mapped array, in runs that join to exactly that text.
17
- * A value whose text is surely short is written whole; longer strings,
18
- * arrays and objects are walked, a boundary after each run of items or text.
19
- */
20
- export declare function jsonTextSteps(value: unknown, write: (text: string) => void): Steps<void>;
21
- //# sourceMappingURL=json-steps.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json-steps.d.ts","sourceRoot":"","sources":["../../src/entities/json-steps.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAA0C,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAOjF;yCACyC;AACzC,qBAAa,SAAS,CAAC,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;gBAExB,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO;CAI5D;AAoCD;;;;;GAKG;AACH,wBAAiB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CA2DzF"}
@@ -1,130 +0,0 @@
1
- /**
2
- * JSON text written in steps (steps.ts): exactly the text JSON.stringify
3
- * writes for plain JSON data, handed out in bounded runs, so a long list or
4
- * string never holds a host's thread however the steps are paced.
5
- */
6
- import { BYTES_PER_BOUNDARY, ITEMS_PER_BOUNDARY } from '../steps.js';
7
- /** JSON text, in UTF-16 code units, handed out between boundaries: at most
8
- * three UTF-8 bytes each, six for an escaped control character. A string
9
- * longer than this is written in pieces of this length. */
10
- const TEXT_PER_BOUNDARY = BYTES_PER_BOUNDARY / 4;
11
- /** An array within JSON text standing for `items.map(json)`, so a long list
12
- * is never copied just to be written. */
13
- export class JsonItems {
14
- items;
15
- json;
16
- constructor(items, json) {
17
- this.items = items;
18
- this.json = json;
19
- }
20
- }
21
- /** The most UTF-16 code units JSON text spends on a value that is not a
22
- * string, array or object. */
23
- const SCALAR_TEXT = 24;
24
- /** What remains of `budget` code units once `value`'s text is spent from it,
25
- * before escaping, negative as soon as the text is surely longer. A
26
- * JsonItems is always longer. */
27
- function remaining(value, budget) {
28
- if (typeof value === 'string')
29
- return budget - value.length - 2;
30
- if (typeof value !== 'object' || value === null)
31
- return budget - SCALAR_TEXT;
32
- if (value instanceof JsonItems)
33
- return -1;
34
- budget -= 2;
35
- if (Array.isArray(value)) {
36
- for (let index = 0; index < value.length && budget >= 0; index += 1) {
37
- budget = remaining(value[index], budget - 1);
38
- }
39
- return budget;
40
- }
41
- for (const key in value) {
42
- if (budget < 0)
43
- break;
44
- budget = remaining(value[key], budget - key.length - 4);
45
- }
46
- return budget;
47
- }
48
- /** Whether a value's JSON text is surely short, so it is written whole. */
49
- const short = (value) => remaining(value, TEXT_PER_BOUNDARY) >= 0;
50
- /** What JSON.stringify writes for a value, where a value it omits is `null`
51
- * inside an array and nothing in an object. */
52
- function whole(value, inArray) {
53
- return JSON.stringify(value) ?? (inArray ? 'null' : '');
54
- }
55
- /**
56
- * Hand `write` the text JSON.stringify writes for `value`, each JsonItems
57
- * standing for its mapped array, in runs that join to exactly that text.
58
- * A value whose text is surely short is written whole; longer strings,
59
- * arrays and objects are walked, a boundary after each run of items or text.
60
- */
61
- export function* jsonTextSteps(value, write) {
62
- let text = '', work = 0;
63
- function* walk(value) {
64
- if (typeof value === 'string') {
65
- text += '"';
66
- for (let start = 0; start < value.length;) {
67
- // A piece never ends between the two halves of a surrogate pair.
68
- let end = Math.min(start + TEXT_PER_BOUNDARY, value.length);
69
- const last = value.charCodeAt(end - 1);
70
- if (end < value.length && last >= 0xd800 && last <= 0xdbff)
71
- end -= 1;
72
- text += JSON.stringify(value.slice(start, end)).slice(1, -1);
73
- start = end;
74
- write(text);
75
- text = '';
76
- yield;
77
- }
78
- text += '"';
79
- return;
80
- }
81
- const mapped = value instanceof JsonItems;
82
- if (mapped || Array.isArray(value)) {
83
- const items = mapped ? value.items : value;
84
- text += '[';
85
- for (let index = 0; index < items.length; index += 1) {
86
- if (index > 0)
87
- text += ',';
88
- const item = !(index in items) ? undefined
89
- : mapped ? value.json(items[index]) : items[index];
90
- if (short(item))
91
- text += whole(item, true);
92
- else
93
- yield* walk(item);
94
- if (++work % ITEMS_PER_BOUNDARY === 0 || text.length >= TEXT_PER_BOUNDARY) {
95
- write(text);
96
- text = '';
97
- yield;
98
- }
99
- }
100
- text += ']';
101
- return;
102
- }
103
- const fields = value;
104
- text += '{';
105
- let first = true;
106
- for (const key of Object.keys(fields)) {
107
- const field = fields[key];
108
- if (field === undefined || typeof field === 'function' || typeof field === 'symbol')
109
- continue;
110
- text += `${first ? '' : ','}${JSON.stringify(key)}:`;
111
- first = false;
112
- if (short(field))
113
- text += whole(field, false);
114
- else
115
- yield* walk(field);
116
- if (++work % ITEMS_PER_BOUNDARY === 0 || text.length >= TEXT_PER_BOUNDARY) {
117
- write(text);
118
- text = '';
119
- yield;
120
- }
121
- }
122
- text += '}';
123
- }
124
- if (short(value))
125
- text = whole(value, false);
126
- else
127
- yield* walk(value);
128
- write(text);
129
- }
130
- //# sourceMappingURL=json-steps.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json-steps.js","sourceRoot":"","sources":["../../src/entities/json-steps.ts"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- /**
2
- * Batch move validation — the entity model's one-truth-transition law for
3
- * addresses (engine docs/entity-model.md, "Continuity"): the slot law and
4
- * acyclicity are STATE invariants — they constrain the graph after the
5
- * batch, never the order inside it — so movers may hold each other's slots
6
- * (directories exchange addresses on disk, and detection reports the
7
- * endpoints). A single move is a batch of one.
8
- *
9
- * A PARENTLESS mover is ADOPTION: the whole tree joins another under one
10
- * parent update — a tree boundary is never an identity boundary, so this
11
- * is the same lawful move, not a special ceremony. Adoption sheds the root
12
- * shape in the SAME transition: workspace is the root type only, so a
13
- * parentless workspace landing under a parent lands as a folder — one
14
- * write, never a two-step that could tear into a nested workspace.
15
- *
16
- * This module validates and PLANS; the host's store applies the returned
17
- * writes in one transaction.
18
- */
19
- import { type EntityReadPort } from './types.js';
20
- /** One requested move: the entity, its target parent, its target name. */
21
- export interface EntityMove {
22
- readonly uuid: string;
23
- readonly parentUUID: string;
24
- readonly name: string;
25
- }
26
- /** One planned store write. `type: 'folder'` appears exactly when the
27
- * mover was a parentless workspace shedding its root shape on adoption. */
28
- export interface PlannedMove {
29
- readonly uuid: string;
30
- readonly parentUuid: string;
31
- readonly name: string;
32
- readonly type?: 'folder';
33
- }
34
- /**
35
- * Validate one batch of moves as one transition and return the writes to
36
- * land together. Refused whole when any move breaks a law: a mover named
37
- * twice, an inactive mover, an invalid name, a non-container target, two
38
- * movers claiming one slot, an occupied slot outside the batch, a cycle in
39
- * the post-state parent graph, or an inactive target chain.
40
- */
41
- export declare function planMoveBatch(moves: readonly EntityMove[], port: EntityReadPort): PlannedMove[];
42
- //# sourceMappingURL=moves.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"moves.d.ts","sourceRoot":"","sources":["../../src/entities/moves.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAc,KAAK,cAAc,EAAkB,MAAM,YAAY,CAAC;AAG7E,0EAA0E;AAC1E,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;2EAC2E;AAC3E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,EAAE,IAAI,EAAE,cAAc,GAAG,WAAW,EAAE,CAmD/F"}