@superbee/core 0.2.0-pre.40 → 0.2.0-pre.42

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 (300) hide show
  1. package/README.md +96 -9
  2. package/dist/backend.d.ts +17 -1
  3. package/dist/backend.d.ts.map +1 -1
  4. package/dist/backend.js +41 -6
  5. package/dist/backend.js.map +1 -1
  6. package/dist/body-pages.d.ts +20 -0
  7. package/dist/body-pages.d.ts.map +1 -0
  8. package/dist/body-pages.js +56 -0
  9. package/dist/body-pages.js.map +1 -0
  10. package/dist/body-replace-guards.d.ts +29 -3
  11. package/dist/body-replace-guards.d.ts.map +1 -1
  12. package/dist/body-replace-guards.js +112 -19
  13. package/dist/body-replace-guards.js.map +1 -1
  14. package/dist/bounded-yaml.d.ts +28 -0
  15. package/dist/bounded-yaml.d.ts.map +1 -0
  16. package/dist/bounded-yaml.js +182 -0
  17. package/dist/bounded-yaml.js.map +1 -0
  18. package/dist/builtin-recipes/site.d.ts +5 -0
  19. package/dist/builtin-recipes/site.d.ts.map +1 -0
  20. package/dist/builtin-recipes/site.js +83 -0
  21. package/dist/builtin-recipes/site.js.map +1 -0
  22. package/dist/builtin-recipes.d.ts.map +1 -1
  23. package/dist/builtin-recipes.js +22 -0
  24. package/dist/builtin-recipes.js.map +1 -1
  25. package/dist/bundle-health/index.d.ts +2 -2
  26. package/dist/bundle-health/index.d.ts.map +1 -1
  27. package/dist/bundle-health/index.js +1 -1
  28. package/dist/bundle-health/index.js.map +1 -1
  29. package/dist/bundle-health/legacy-page.d.ts +8 -26
  30. package/dist/bundle-health/legacy-page.d.ts.map +1 -1
  31. package/dist/bundle-health/legacy-page.js +10 -35
  32. package/dist/bundle-health/legacy-page.js.map +1 -1
  33. package/dist/bundle-health/report.d.ts +0 -16
  34. package/dist/bundle-health/report.d.ts.map +1 -1
  35. package/dist/bundle-health/report.js +24 -54
  36. package/dist/bundle-health/report.js.map +1 -1
  37. package/dist/bundle-ops.d.ts +4 -1
  38. package/dist/bundle-ops.d.ts.map +1 -1
  39. package/dist/bundle-ops.js +6 -2
  40. package/dist/bundle-ops.js.map +1 -1
  41. package/dist/bundle.d.ts +1 -1
  42. package/dist/bundle.d.ts.map +1 -1
  43. package/dist/bundle.js +1 -1
  44. package/dist/bundle.js.map +1 -1
  45. package/dist/cross-bundle.d.ts +2 -2
  46. package/dist/cross-bundle.js +2 -2
  47. package/dist/document-codec.d.ts +3 -1
  48. package/dist/document-codec.d.ts.map +1 -1
  49. package/dist/document-codec.js +3 -1
  50. package/dist/document-codec.js.map +1 -1
  51. package/dist/document-mutation.d.ts +2 -0
  52. package/dist/document-mutation.d.ts.map +1 -1
  53. package/dist/document-mutation.js +44 -9
  54. package/dist/document-mutation.js.map +1 -1
  55. package/dist/document-scan.d.ts +23 -0
  56. package/dist/document-scan.d.ts.map +1 -0
  57. package/dist/document-scan.js +70 -0
  58. package/dist/document-scan.js.map +1 -0
  59. package/dist/document-transfer.d.ts +110 -4
  60. package/dist/document-transfer.d.ts.map +1 -1
  61. package/dist/document-transfer.js +490 -30
  62. package/dist/document-transfer.js.map +1 -1
  63. package/dist/engine.d.ts +4 -19
  64. package/dist/engine.d.ts.map +1 -1
  65. package/dist/engine.js +7 -47
  66. package/dist/engine.js.map +1 -1
  67. package/dist/errors.d.ts +37 -1
  68. package/dist/errors.d.ts.map +1 -1
  69. package/dist/errors.js +75 -3
  70. package/dist/errors.js.map +1 -1
  71. package/dist/file-journaled-backend.d.ts.map +1 -1
  72. package/dist/file-journaled-backend.js +2 -2
  73. package/dist/file-journaled-backend.js.map +1 -1
  74. package/dist/filesystem-identity.d.ts +9 -0
  75. package/dist/filesystem-identity.d.ts.map +1 -1
  76. package/dist/filesystem-identity.js +186 -64
  77. package/dist/filesystem-identity.js.map +1 -1
  78. package/dist/filesystem-lock.d.ts +2 -2
  79. package/dist/filesystem-lock.d.ts.map +1 -1
  80. package/dist/filesystem-lock.js +81 -14
  81. package/dist/filesystem-lock.js.map +1 -1
  82. package/dist/filesystem-temp-name.d.ts +9 -0
  83. package/dist/filesystem-temp-name.d.ts.map +1 -0
  84. package/dist/filesystem-temp-name.js +20 -0
  85. package/dist/filesystem-temp-name.js.map +1 -0
  86. package/dist/filesystem.d.ts +6 -0
  87. package/dist/filesystem.d.ts.map +1 -1
  88. package/dist/filesystem.js +2 -1
  89. package/dist/filesystem.js.map +1 -1
  90. package/dist/frontmatter-contract.d.ts +14 -0
  91. package/dist/frontmatter-contract.d.ts.map +1 -1
  92. package/dist/frontmatter-contract.js +22 -0
  93. package/dist/frontmatter-contract.js.map +1 -1
  94. package/dist/frontmatter-splitter.d.ts +6 -0
  95. package/dist/frontmatter-splitter.d.ts.map +1 -1
  96. package/dist/frontmatter-splitter.js +8 -0
  97. package/dist/frontmatter-splitter.js.map +1 -1
  98. package/dist/frontmatter.d.ts +8 -1
  99. package/dist/frontmatter.d.ts.map +1 -1
  100. package/dist/frontmatter.js +43 -7
  101. package/dist/frontmatter.js.map +1 -1
  102. package/dist/hosted-client/client.d.ts +22 -5
  103. package/dist/hosted-client/client.d.ts.map +1 -1
  104. package/dist/hosted-client/client.js +57 -10
  105. package/dist/hosted-client/client.js.map +1 -1
  106. package/dist/hosted-client/index.d.ts +1 -0
  107. package/dist/hosted-client/index.d.ts.map +1 -1
  108. package/dist/hosted-client/index.js +1 -0
  109. package/dist/hosted-client/index.js.map +1 -1
  110. package/dist/hosted-client/view-content.d.ts +107 -0
  111. package/dist/hosted-client/view-content.d.ts.map +1 -0
  112. package/dist/hosted-client/view-content.js +155 -0
  113. package/dist/hosted-client/view-content.js.map +1 -0
  114. package/dist/hosted-transport/carrier.d.ts +1 -1
  115. package/dist/hosted-transport/carrier.d.ts.map +1 -1
  116. package/dist/hosted-transport/carrier.js +27 -18
  117. package/dist/hosted-transport/carrier.js.map +1 -1
  118. package/dist/hosted-transport/document-backend.d.ts +74 -0
  119. package/dist/hosted-transport/document-backend.d.ts.map +1 -0
  120. package/dist/hosted-transport/document-backend.js +160 -0
  121. package/dist/hosted-transport/document-backend.js.map +1 -0
  122. package/dist/hosted-transport/index.d.ts +1 -0
  123. package/dist/hosted-transport/index.d.ts.map +1 -1
  124. package/dist/hosted-transport/index.js +1 -0
  125. package/dist/hosted-transport/index.js.map +1 -1
  126. package/dist/hosted-transport/read-adapter.d.ts +1 -2
  127. package/dist/hosted-transport/read-adapter.d.ts.map +1 -1
  128. package/dist/hosted-transport/read-adapter.js.map +1 -1
  129. package/dist/identity-fold.d.ts +12 -14
  130. package/dist/identity-fold.d.ts.map +1 -1
  131. package/dist/identity-fold.js +17 -15
  132. package/dist/identity-fold.js.map +1 -1
  133. package/dist/index-projection.d.ts +2 -1
  134. package/dist/index-projection.d.ts.map +1 -1
  135. package/dist/index-projection.js +14 -5
  136. package/dist/index-projection.js.map +1 -1
  137. package/dist/index.d.ts +24 -15
  138. package/dist/index.d.ts.map +1 -1
  139. package/dist/index.js +19 -15
  140. package/dist/index.js.map +1 -1
  141. package/dist/indexeddb-backend.d.ts.map +1 -1
  142. package/dist/indexeddb-backend.js +2 -2
  143. package/dist/indexeddb-backend.js.map +1 -1
  144. package/dist/json-data.d.ts +3 -0
  145. package/dist/json-data.d.ts.map +1 -0
  146. package/dist/json-data.js +19 -0
  147. package/dist/json-data.js.map +1 -0
  148. package/dist/kind-authoring.d.ts +18 -0
  149. package/dist/kind-authoring.d.ts.map +1 -1
  150. package/dist/kind-authoring.js +54 -4
  151. package/dist/kind-authoring.js.map +1 -1
  152. package/dist/kind-coverage.d.ts +1 -0
  153. package/dist/kind-coverage.d.ts.map +1 -1
  154. package/dist/kind-coverage.js +4 -5
  155. package/dist/kind-coverage.js.map +1 -1
  156. package/dist/kind-undeclared-fields.d.ts +70 -0
  157. package/dist/kind-undeclared-fields.d.ts.map +1 -0
  158. package/dist/kind-undeclared-fields.js +120 -0
  159. package/dist/kind-undeclared-fields.js.map +1 -0
  160. package/dist/kinds-load.d.ts.map +1 -1
  161. package/dist/kinds-load.js +4 -1
  162. package/dist/kinds-load.js.map +1 -1
  163. package/dist/kinds.d.ts +9 -0
  164. package/dist/kinds.d.ts.map +1 -1
  165. package/dist/kinds.js +20 -0
  166. package/dist/kinds.js.map +1 -1
  167. package/dist/link-findings.d.ts +130 -0
  168. package/dist/link-findings.d.ts.map +1 -0
  169. package/dist/link-findings.js +272 -0
  170. package/dist/link-findings.js.map +1 -0
  171. package/dist/link-types.d.ts +7 -0
  172. package/dist/link-types.d.ts.map +1 -1
  173. package/dist/link-types.js +17 -2
  174. package/dist/link-types.js.map +1 -1
  175. package/dist/memory-backend.d.ts.map +1 -1
  176. package/dist/memory-backend.js +2 -2
  177. package/dist/memory-backend.js.map +1 -1
  178. package/dist/page.d.ts +3 -7
  179. package/dist/page.d.ts.map +1 -1
  180. package/dist/page.js +3 -7
  181. package/dist/page.js.map +1 -1
  182. package/dist/path-fold.d.ts +29 -16
  183. package/dist/path-fold.d.ts.map +1 -1
  184. package/dist/path-fold.js +30 -17
  185. package/dist/path-fold.js.map +1 -1
  186. package/dist/paths.d.ts +28 -0
  187. package/dist/paths.d.ts.map +1 -1
  188. package/dist/paths.js +82 -1
  189. package/dist/paths.js.map +1 -1
  190. package/dist/platform.d.ts +9 -0
  191. package/dist/platform.d.ts.map +1 -1
  192. package/dist/platform.js.map +1 -1
  193. package/dist/portable-frontmatter.d.ts +6 -0
  194. package/dist/portable-frontmatter.d.ts.map +1 -1
  195. package/dist/portable-frontmatter.js +26 -2
  196. package/dist/portable-frontmatter.js.map +1 -1
  197. package/dist/recipe-lifecycle/install.d.ts +4 -7
  198. package/dist/recipe-lifecycle/install.d.ts.map +1 -1
  199. package/dist/recipe-lifecycle/install.js +3 -20
  200. package/dist/recipe-lifecycle/install.js.map +1 -1
  201. package/dist/recipe-lifecycle/legacy-aliases.d.ts +1 -13
  202. package/dist/recipe-lifecycle/legacy-aliases.d.ts.map +1 -1
  203. package/dist/recipe-lifecycle/legacy-aliases.js +5 -34
  204. package/dist/recipe-lifecycle/legacy-aliases.js.map +1 -1
  205. package/dist/record-overlay/apply.d.ts.map +1 -1
  206. package/dist/record-overlay/apply.js +0 -4
  207. package/dist/record-overlay/apply.js.map +1 -1
  208. package/dist/record-overlay/findings.d.ts.map +1 -1
  209. package/dist/record-overlay/findings.js +4 -1
  210. package/dist/record-overlay/findings.js.map +1 -1
  211. package/dist/record-overlay/plan.js +3 -3
  212. package/dist/record-overlay/plan.js.map +1 -1
  213. package/dist/record-overlay/signal-text.d.ts +9 -2
  214. package/dist/record-overlay/signal-text.d.ts.map +1 -1
  215. package/dist/record-overlay/signal-text.js +21 -11
  216. package/dist/record-overlay/signal-text.js.map +1 -1
  217. package/dist/remote-backend.d.ts +9 -19
  218. package/dist/remote-backend.d.ts.map +1 -1
  219. package/dist/remote-backend.js +17 -5
  220. package/dist/remote-backend.js.map +1 -1
  221. package/dist/remote-operations.d.ts.map +1 -1
  222. package/dist/remote-operations.js +2 -0
  223. package/dist/remote-operations.js.map +1 -1
  224. package/dist/remote-parsers.d.ts +19 -0
  225. package/dist/remote-parsers.d.ts.map +1 -1
  226. package/dist/remote-parsers.js.map +1 -1
  227. package/dist/remote.d.ts +2 -4
  228. package/dist/remote.d.ts.map +1 -1
  229. package/dist/remote.js +2 -3
  230. package/dist/remote.js.map +1 -1
  231. package/dist/reserved-write.d.ts +9 -0
  232. package/dist/reserved-write.d.ts.map +1 -0
  233. package/dist/reserved-write.js +15 -0
  234. package/dist/reserved-write.js.map +1 -0
  235. package/dist/search/backend-source.d.ts +2 -2
  236. package/dist/search/backend-source.d.ts.map +1 -1
  237. package/dist/search/backend-source.js +30 -6
  238. package/dist/search/backend-source.js.map +1 -1
  239. package/dist/search/contract.d.ts +3 -0
  240. package/dist/search/contract.d.ts.map +1 -1
  241. package/dist/search/contract.js.map +1 -1
  242. package/dist/search/search.d.ts.map +1 -1
  243. package/dist/search/search.js +4 -1
  244. package/dist/search/search.js.map +1 -1
  245. package/dist/search/source.d.ts +3 -0
  246. package/dist/search/source.d.ts.map +1 -1
  247. package/dist/site-manifest.d.ts +49 -0
  248. package/dist/site-manifest.d.ts.map +1 -0
  249. package/dist/site-manifest.js +113 -0
  250. package/dist/site-manifest.js.map +1 -0
  251. package/dist/skip-reasons.d.ts +12 -0
  252. package/dist/skip-reasons.d.ts.map +1 -0
  253. package/dist/skip-reasons.js +15 -0
  254. package/dist/skip-reasons.js.map +1 -0
  255. package/dist/source-engine/driver.d.ts +4 -4
  256. package/dist/source-engine/driver.d.ts.map +1 -1
  257. package/dist/source-engine/driver.js +155 -34
  258. package/dist/source-engine/driver.js.map +1 -1
  259. package/dist/source-engine/index.d.ts +3 -1
  260. package/dist/source-engine/index.d.ts.map +1 -1
  261. package/dist/source-engine/index.js +1 -0
  262. package/dist/source-engine/index.js.map +1 -1
  263. package/dist/source-engine/machine-state.d.ts +19 -6
  264. package/dist/source-engine/machine-state.d.ts.map +1 -1
  265. package/dist/source-engine/machine-state.js +48 -2
  266. package/dist/source-engine/machine-state.js.map +1 -1
  267. package/dist/source-engine/observe.d.ts.map +1 -1
  268. package/dist/source-engine/observe.js +10 -4
  269. package/dist/source-engine/observe.js.map +1 -1
  270. package/dist/source-engine/snapshot.js +1 -1
  271. package/dist/source-engine/snapshot.js.map +1 -1
  272. package/dist/source-engine/target-consumer.d.ts +12 -0
  273. package/dist/source-engine/target-consumer.d.ts.map +1 -0
  274. package/dist/source-engine/target-consumer.js +15 -0
  275. package/dist/source-engine/target-consumer.js.map +1 -0
  276. package/dist/source-engine/target-descriptor.d.ts +3 -0
  277. package/dist/source-engine/target-descriptor.d.ts.map +1 -0
  278. package/dist/source-engine/target-descriptor.js +26 -0
  279. package/dist/source-engine/target-descriptor.js.map +1 -0
  280. package/dist/source-engine/target.d.ts +82 -0
  281. package/dist/source-engine/target.d.ts.map +1 -0
  282. package/dist/source-engine/target.js +213 -0
  283. package/dist/source-engine/target.js.map +1 -0
  284. package/dist/source-engine/types.d.ts +5 -1
  285. package/dist/source-engine/types.d.ts.map +1 -1
  286. package/dist/source-profiles/index.d.ts +1 -1
  287. package/dist/source-profiles/index.js +1 -1
  288. package/dist/string-identity-agreement.d.ts +1 -1
  289. package/dist/string-identity-agreement.d.ts.map +1 -1
  290. package/dist/string-identity-agreement.js +6 -0
  291. package/dist/string-identity-agreement.js.map +1 -1
  292. package/dist/system-documents.d.ts +13 -0
  293. package/dist/system-documents.d.ts.map +1 -0
  294. package/dist/system-documents.js +44 -0
  295. package/dist/system-documents.js.map +1 -0
  296. package/dist/types.d.ts +7 -0
  297. package/dist/types.d.ts.map +1 -1
  298. package/dist/validation.d.ts +5 -0
  299. package/dist/validation.d.ts.map +1 -1
  300. package/package.json +19 -7
@@ -6,6 +6,19 @@ import { createHash, randomUUID } from "node:crypto";
6
6
  const OWNER_FILE = "owner.json";
7
7
  const DEFAULT_WAIT_MS = 5_000;
8
8
  const DEFAULT_POLL_MS = 25;
9
+ /**
10
+ * How long one ownership check polls an owner record it cannot read. Scanner and descriptor
11
+ * transients clear in milliseconds; a record that stays unreadable this long will not clear, and
12
+ * waiting out a caller's whole budget for it only delays the same fail-closed refusal.
13
+ */
14
+ const UNREADABLE_OWNER_POLL_MS = 2_000;
15
+ /**
16
+ * How old an owner-less lock directory must be before a claimer removes it as abandoned. A live
17
+ * claimer writes its record milliseconds after its `mkdir`. The age only spares a live claimer a
18
+ * needless retry; removal is safe at any age (see `removeAbandonedClaim`). It stays below the
19
+ * default wait, so a claim recovers the leftover within one default wait.
20
+ */
21
+ const ABANDONED_CLAIM_AGE_MS = 2_000;
9
22
  export class FilesystemMutationLockError extends Error {
10
23
  lockPath;
11
24
  owner;
@@ -118,15 +131,20 @@ async function readOwnerRecord(lockPath) {
118
131
  }
119
132
  /**
120
133
  * Resolve the owner record to a definitive answer, polling out an indeterminate read inside the
121
- * caller's remaining budget. `EMFILE`/`ENFILE` under concurrency, and the `EBUSY`/`EACCES`/`EPERM`
134
+ * caller's remaining budget and at most `UNREADABLE_OWNER_POLL_MS`. `EMFILE`/`ENFILE` under concurrency, and the `EBUSY`/`EACCES`/`EPERM`
122
135
  * open transients that Windows indexing and antivirus software produce, otherwise read as "no
123
136
  * record" and let a caller conclude that a lock it still owns has changed hands. An unreadable
124
137
  * record never authorizes the destructive step: the caller fails closed when the budget expires.
125
138
  */
126
139
  async function resolveOwnerRecord(lockPath, started, waitMs, pollMs) {
140
+ let firstUnreadable;
127
141
  while (true) {
128
142
  const record = await readOwnerRecord(lockPath);
129
- if (record.state !== "unreadable" || Date.now() - started >= waitMs)
143
+ if (record.state !== "unreadable")
144
+ return record;
145
+ const now = Date.now();
146
+ firstUnreadable ??= now;
147
+ if (now - started >= waitMs || now - firstUnreadable >= UNREADABLE_OWNER_POLL_MS)
130
148
  return record;
131
149
  await delay(pollMs);
132
150
  }
@@ -209,6 +227,29 @@ async function quarantineStaleLock(lockPath, owner, policy) {
209
227
  throw err;
210
228
  }
211
229
  }
230
+ /**
231
+ * Remove an owner-less lock directory left by a claimer that stopped between its `mkdir` and its
232
+ * owner record. A claim is held only once its `wx` create of owner.json succeeds, and `rmdir`
233
+ * removes only an empty directory, so this can never remove a held lock: a directory with any
234
+ * owner.json, even an empty or partial one, refuses. The age is read before the removal, so a
235
+ * recoverer can also remove another claimer's fresh, still unheld directory that replaced the one
236
+ * it aged; that claimer's owner write then fails and it claims again. Any failure, including losing
237
+ * a race to another recoverer, is non-progress: the caller keeps waiting.
238
+ */
239
+ async function removeAbandonedClaim(lockPath) {
240
+ try {
241
+ const info = await fs.lstat(lockPath);
242
+ // A directory dated in the future has no trustworthy age.
243
+ const age = Date.now() - info.mtimeMs;
244
+ if (!info.isDirectory() || age < ABANDONED_CLAIM_AGE_MS)
245
+ return false;
246
+ await fs.rmdir(lockPath);
247
+ return true;
248
+ }
249
+ catch {
250
+ return false;
251
+ }
252
+ }
212
253
  function delay(ms) {
213
254
  return new Promise((resolve) => setTimeout(resolve, ms));
214
255
  }
@@ -312,7 +353,7 @@ async function timeoutError(lockPath, snapshot, guarded) {
312
353
  if (malformed) {
313
354
  message =
314
355
  `timed out waiting for filesystem mutation lock '${lockPath}'; its owner metadata is missing or malformed. ` +
315
- `Inspect and remove the lock only after confirming no process is mutating the target, then retry.`;
356
+ `Remove the lock directory once no Superbee process is running, then retry.`;
316
357
  }
317
358
  else if (stale) {
318
359
  message =
@@ -402,7 +443,10 @@ async function claimLockPath(lockPath, owner, waitMs, pollMs, policy) {
402
443
  else {
403
444
  unwitnessedRetryUsed = false;
404
445
  }
405
- let existingOwner = await readOwner(lockPath);
446
+ const existing = await readOwnerRecord(lockPath);
447
+ let existingOwner = existing.state === "record" ? existing.owner : null;
448
+ if (existing.state === "absent" && (await removeAbandonedClaim(lockPath)))
449
+ continue;
406
450
  if (existingOwner !== null) {
407
451
  if (await quarantineStaleLock(lockPath, existingOwner, policy))
408
452
  continue;
@@ -436,14 +480,17 @@ async function claimLockPath(lockPath, owner, waitMs, pollMs, policy) {
436
480
  // `wx` fails with EEXIST only when another claimer's owner.json was already there, possibly
437
481
  // opened but not yet written. The directory is that claimer's now: never roll it back.
438
482
  // A lost claim re-enters the loop, whose next `mkdir` either claims or reaches the timeout check.
439
- if (code === "EEXIST") {
483
+ // A directory gone, or replaced by another, was removed under this claim before its record
484
+ // landed (an abandoned-claim recoverer can do that), so there is nothing to roll back and any
485
+ // directory there now belongs to another claimer. The write's error code does not say so
486
+ // reliably: an exclusive create racing the removal of its directory fails with EINVAL on
487
+ // macOS and EPERM on Windows, so the directory's identity decides.
488
+ if (code === "EEXIST" || code === "ENOENT" || code === "ENOTDIR" || (await claimDirectoryLost(lockPath, claimed))) {
440
489
  heldTokens.delete(owner.token);
441
490
  continue;
442
491
  }
443
492
  await rollBackOwnClaim(lockPath, owner, claimed, waitMs, pollMs, policy).catch(() => { });
444
493
  heldTokens.delete(owner.token);
445
- if (code === "ENOENT" || code === "ENOTDIR")
446
- continue;
447
494
  throw err;
448
495
  }
449
496
  // One release in flight per claim: a concurrent second invocation shares the first outcome
@@ -481,7 +528,7 @@ async function claimLockPath(lockPath, owner, waitMs, pollMs, policy) {
481
528
  * alone. So is a record this process still cannot read once the wait budget is spent (a transient
482
529
  * read failure is polled out first), and a host that reports no birth time (Linux on NFS, say), where the
483
530
  * directory cannot be told from a successor that reused its inode: an owner-less lock left behind
484
- * is reported as orphaned once the claim grace passes, while a deleted live lock breaks exclusion.
531
+ * is removed by a later claimer once it ages, while a deleted live lock breaks exclusion.
485
532
  */
486
533
  async function rollBackOwnClaim(lockPath, owner, claimed, waitMs, pollMs, policy) {
487
534
  const started = Date.now();
@@ -493,10 +540,30 @@ async function rollBackOwnClaim(lockPath, owner, claimed, waitMs, pollMs, policy
493
540
  }
494
541
  if (record.state === "unreadable" || !(await isClaimedDirectory(lockPath, claimed)))
495
542
  return;
496
- // Move exactly the verified directory aside, under a name only this claim can produce, then remove it.
497
- const remnant = releasedLockRemnantPath(lockPath, owner);
498
- await fs.rename(lockPath, remnant);
499
- await fs.rm(remnant, { recursive: true, force: true });
543
+ // rmdir, never a rename: between the identity check and this step another claimer may remove
544
+ // the verified directory as abandoned and a third may claim the path and write its record. rmdir
545
+ // refuses that directory because it is not empty; a rename would move the live lock away.
546
+ await fs.rmdir(lockPath);
547
+ }
548
+ /**
549
+ * Whether the lock path no longer holds the directory this claim made: it is gone, or it is a
550
+ * different directory. A host can give a removed directory's inode to its replacement, so a birth
551
+ * time, where the host reports one, also tells them apart; without one, a replacement that reused
552
+ * the inode reads as this claim's own and the claim fails closed instead of retrying. Unknown when
553
+ * this claim could not record its directory, so not lost.
554
+ */
555
+ async function claimDirectoryLost(lockPath, claimed) {
556
+ try {
557
+ const current = await fs.lstat(lockPath, { bigint: true });
558
+ if (claimed === null)
559
+ return false;
560
+ const reborn = claimed.birthtimeNs > 0n && current.birthtimeNs > 0n && current.birthtimeNs !== claimed.birthtimeNs;
561
+ return current.dev !== claimed.dev || current.ino !== claimed.ino || reborn;
562
+ }
563
+ catch (err) {
564
+ const code = err.code;
565
+ return code === "ENOENT" || code === "ENOTDIR";
566
+ }
500
567
  }
501
568
  async function isClaimedDirectory(lockPath, claimed) {
502
569
  if (claimed === null || claimed.birthtimeNs <= 0n)
@@ -615,8 +682,8 @@ function newOwner(target) {
615
682
  * `mkdir` is the atomic claim. Locks live in a private per-user runtime namespace keyed by the
616
683
  * canonical target path, never inside the portable bundle: Git staging, establishment snapshots,
617
684
  * copying, and packaging cannot capture them. A valid same-host lock whose PID is absent is moved
618
- * to a token-fenced quarantine and retried; malformed, foreign-host, and live locks remain
619
- * fail-closed.
685
+ * to a token-fenced quarantine and retried; an empty lock directory older than the claim window is
686
+ * removed and retried; malformed, foreign-host, and live locks remain fail-closed.
620
687
  */
621
688
  export async function acquireFilesystemMutationLock(target, options = {}) {
622
689
  const policy = captureFilesystemHostPolicy(options.hostPolicy);
@@ -1 +1 @@
1
- {"version":3,"file":"filesystem-lock.js","sourceRoot":"","sources":["../src/filesystem-lock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filesystem-lock.js","sourceRoot":"","sources":["../src/filesystem-lock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * The name of the temp file a replacement writes beside its target before the atomic rename. A
3
+ * crash can leave one behind, so anything that publishes a folder's files (a board sync) skips
4
+ * names {@link isIdentityTempName} matches.
5
+ */
6
+ export declare function identityTempName(leaf: string): string;
7
+ /** True for a file name a filesystem replacement uses for its temp file (the last path segment). */
8
+ export declare function isIdentityTempName(name: string): boolean;
9
+ //# sourceMappingURL=filesystem-temp-name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem-temp-name.d.ts","sourceRoot":"","sources":["../src/filesystem-temp-name.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIrD;AAID,oGAAoG;AACpG,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD"}
@@ -0,0 +1,20 @@
1
+ // The one naming convention for the temp file a filesystem replacement writes beside its target.
2
+ // Kept apart from the identity module so a publisher (a board sync) can recognize leftovers without
3
+ // reaching the identity protocol.
4
+ import { randomUUID } from "node:crypto";
5
+ /**
6
+ * The name of the temp file a replacement writes beside its target before the atomic rename. A
7
+ * crash can leave one behind, so anything that publishes a folder's files (a board sync) skips
8
+ * names {@link isIdentityTempName} matches.
9
+ */
10
+ export function identityTempName(leaf) {
11
+ // Unique per call, not per process: one process can issue two writes to the same
12
+ // target within a millisecond, and the second's temp file must not clobber the first's.
13
+ return `.${leaf}.${process.pid}.${Date.now()}.${randomUUID()}.tmp`;
14
+ }
15
+ const IDENTITY_TEMP_NAME = /^\..+\.\d+\.\d+\.[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\.tmp$/;
16
+ /** True for a file name a filesystem replacement uses for its temp file (the last path segment). */
17
+ export function isIdentityTempName(name) {
18
+ return IDENTITY_TEMP_NAME.test(name);
19
+ }
20
+ //# sourceMappingURL=filesystem-temp-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem-temp-name.js","sourceRoot":"","sources":["../src/filesystem-temp-name.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,oGAAoG;AACpG,kCAAkC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,iFAAiF;IACjF,wFAAwF;IACxF,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,UAAU,EAAE,MAAM,CAAC;AACrE,CAAC;AAED,MAAM,kBAAkB,GAAG,qFAAqF,CAAC;AAEjH,oGAAoG;AACpG,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC"}
@@ -10,6 +10,12 @@ export interface FilesystemRuntime {
10
10
  initBundle(root: string, options?: InitBundleOptions): Promise<Bundle>;
11
11
  withMutationLock<T>(target: string, body: () => Promise<T>, options?: Omit<FilesystemMutationLockOptions, "hostPolicy">): Promise<T>;
12
12
  mutationLockPath(target: string, portableRoot?: string): string;
13
+ /**
14
+ * Run `body` holding the same root lock every document write to the bundle at `root` holds, so
15
+ * an outside step that moves files under the bundle (a Git rebase, say) is ordered with writes.
16
+ * `body` must not write through a backend for the same root: that write would wait on this lock.
17
+ */
18
+ withRootMutationLock<T>(root: string, body: () => Promise<T>): Promise<T>;
13
19
  }
14
20
  /** Each runtime retains its selected host; it never changes another consumer's defaults. */
15
21
  export declare function createFilesystemRuntime(policy?: FilesystemHostPolicy): FilesystemRuntime;
@@ -1 +1 @@
1
- {"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../src/filesystem.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAA+B,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAGL,KAAK,6BAA6B,EACnC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE3F,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAAC;IACzC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvE,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,6BAA6B,EAAE,YAAY,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACrI,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACjE;AAED,4FAA4F;AAC5F,wBAAgB,uBAAuB,CAAC,MAAM,CAAC,EAAE,oBAAoB,GAAG,iBAAiB,CASxF;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../src/filesystem.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,OAAO,EAAE,iBAAiB,EAAkC,MAAM,cAAc,CAAC;AAEjF,OAAO,EAA+B,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAGL,KAAK,6BAA6B,EACnC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE3F,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAAC;IACzC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvE,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,6BAA6B,EAAE,YAAY,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACrI,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAChE;;;;OAIG;IACH,oBAAoB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC3E;AAED,4FAA4F;AAC5F,wBAAgB,uBAAuB,CAAC,MAAM,CAAC,EAAE,oBAAoB,GAAG,iBAAiB,CAWxF;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /** Explicit Node filesystem construction, independent of executable or CLI startup. */
2
- import { FilesystemBackend } from "./backend.js";
2
+ import { FilesystemBackend, withFilesystemRootMutationLock } from "./backend.js";
3
3
  import { initBundle } from "./bundle.js";
4
4
  import { captureFilesystemHostPolicy } from "./filesystem-host.js";
5
5
  import { filesystemMutationLockPath, withFilesystemMutationLock, } from "./filesystem-lock.js";
@@ -12,6 +12,7 @@ export function createFilesystemRuntime(policy) {
12
12
  initBundle: (root, options) => initBundle(root, options, { hostPolicy }),
13
13
  withMutationLock: (target, body, options) => withFilesystemMutationLock(target, body, { ...options, hostPolicy }),
14
14
  mutationLockPath: (target, portableRoot) => filesystemMutationLockPath(target, portableRoot, hostPolicy),
15
+ withRootMutationLock: (root, body) => withFilesystemRootMutationLock(root, body, hostPolicy),
15
16
  });
16
17
  }
17
18
  export { snapshotHostPolicy } from "./host-policy-snapshot.js";
@@ -1 +1 @@
1
- {"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../src/filesystem.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,2BAA2B,EAA6B,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,GAE3B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAUjD,4FAA4F;AAC5F,MAAM,UAAU,uBAAuB,CAAC,MAA6B;IACnE,MAAM,UAAU,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,iBAAiB,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC;QACtE,UAAU,EAAE,CAAC,IAAY,EAAE,OAA2B,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC;QACpG,gBAAgB,EAAE,CAAI,MAAc,EAAE,IAAsB,EAAE,OAA2D,EAAE,EAAE,CAC3H,0BAA0B,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,CAAC;QACtE,gBAAgB,EAAE,CAAC,MAAc,EAAE,YAAqB,EAAE,EAAE,CAAC,0BAA0B,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC;KAC1H,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../src/filesystem.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,OAAO,EAAE,iBAAiB,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,2BAA2B,EAA6B,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,GAE3B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAgBjD,4FAA4F;AAC5F,MAAM,UAAU,uBAAuB,CAAC,MAA6B;IACnE,MAAM,UAAU,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,iBAAiB,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC;QACtE,UAAU,EAAE,CAAC,IAAY,EAAE,OAA2B,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC;QACpG,gBAAgB,EAAE,CAAI,MAAc,EAAE,IAAsB,EAAE,OAA2D,EAAE,EAAE,CAC3H,0BAA0B,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,CAAC;QACtE,gBAAgB,EAAE,CAAC,MAAc,EAAE,YAAqB,EAAE,EAAE,CAAC,0BAA0B,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC;QACzH,oBAAoB,EAAE,CAAI,IAAY,EAAE,IAAsB,EAAE,EAAE,CAChE,8BAA8B,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC;KACzD,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -1,10 +1,24 @@
1
1
  /** Runtime-neutral error and predicates shared by storage adapters and the engine. */
2
+ /** Stable codes for YAML the bounded loader refuses before or while parsing. */
3
+ export type FrontmatterLimitCode = "FRONTMATTER_TOO_LARGE" | "FRONTMATTER_TOO_DEEP" | "FRONTMATTER_ALIAS_LIMIT" | "FRONTMATTER_CYCLE";
4
+ /** Whether a value names one of the {@link FrontmatterLimitCode}s. */
5
+ export declare function isFrontmatterLimitCode(value: unknown): value is FrontmatterLimitCode;
6
+ /** Stable codes a {@link MalformedDocumentError} carries. */
7
+ export type MalformedDocumentCode = "FRONTMATTER_MALFORMED" | FrontmatterLimitCode;
8
+ /** YAML refused by a frontmatter limit. */
9
+ export declare class FrontmatterLimitError extends Error {
10
+ readonly name = "FrontmatterLimitError";
11
+ readonly code: FrontmatterLimitCode;
12
+ constructor(code: FrontmatterLimitCode, message: string);
13
+ }
2
14
  /**
3
15
  * A document whose YAML frontmatter could not be parsed. `context` identifies the document when
4
16
  * known; `detail` is the first line of the parser error, and `cause` preserves the original error.
17
+ * `code` is `FRONTMATTER_MALFORMED` unless a frontmatter limit refused the YAML.
5
18
  */
6
19
  export declare class MalformedDocumentError extends Error {
7
20
  readonly name = "MalformedDocumentError";
21
+ readonly code: MalformedDocumentCode;
8
22
  readonly context?: string;
9
23
  readonly detail: string;
10
24
  constructor(context: string | undefined, cause: unknown);
@@ -1 +1 @@
1
- {"version":3,"file":"frontmatter-contract.d.ts","sourceRoot":"","sources":["../src/frontmatter-contract.ts"],"names":[],"mappings":"AAAA,sFAAsF;AAEtF;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,SAAkB,IAAI,4BAA4B;IAClD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO;CAWxD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEjE"}
1
+ {"version":3,"file":"frontmatter-contract.d.ts","sourceRoot":"","sources":["../src/frontmatter-contract.ts"],"names":[],"mappings":"AAAA,sFAAsF;AAEtF,gFAAgF;AAChF,MAAM,MAAM,oBAAoB,GAC5B,uBAAuB,GACvB,sBAAsB,GACtB,yBAAyB,GACzB,mBAAmB,CAAC;AASxB,sEAAsE;AACtE,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,CAEpF;AAED,6DAA6D;AAC7D,MAAM,MAAM,qBAAqB,GAAG,uBAAuB,GAAG,oBAAoB,CAAC;AAEnF,2CAA2C;AAC3C,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,SAAkB,IAAI,2BAA2B;IACjD,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;gBAExB,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM;CAIxD;AAED;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,SAAkB,IAAI,4BAA4B;IAClD,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO;CAYxD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEjE"}
@@ -1,10 +1,31 @@
1
1
  /** Runtime-neutral error and predicates shared by storage adapters and the engine. */
2
+ const FRONTMATTER_LIMIT_CODES = new Set([
3
+ "FRONTMATTER_TOO_LARGE",
4
+ "FRONTMATTER_TOO_DEEP",
5
+ "FRONTMATTER_ALIAS_LIMIT",
6
+ "FRONTMATTER_CYCLE",
7
+ ]);
8
+ /** Whether a value names one of the {@link FrontmatterLimitCode}s. */
9
+ export function isFrontmatterLimitCode(value) {
10
+ return typeof value === "string" && FRONTMATTER_LIMIT_CODES.has(value);
11
+ }
12
+ /** YAML refused by a frontmatter limit. */
13
+ export class FrontmatterLimitError extends Error {
14
+ name = "FrontmatterLimitError";
15
+ code;
16
+ constructor(code, message) {
17
+ super(message);
18
+ this.code = code;
19
+ }
20
+ }
2
21
  /**
3
22
  * A document whose YAML frontmatter could not be parsed. `context` identifies the document when
4
23
  * known; `detail` is the first line of the parser error, and `cause` preserves the original error.
24
+ * `code` is `FRONTMATTER_MALFORMED` unless a frontmatter limit refused the YAML.
5
25
  */
6
26
  export class MalformedDocumentError extends Error {
7
27
  name = "MalformedDocumentError";
28
+ code;
8
29
  context;
9
30
  detail;
10
31
  constructor(context, cause) {
@@ -12,6 +33,7 @@ export class MalformedDocumentError extends Error {
12
33
  .trim();
13
34
  super(`malformed frontmatter${context ? ` in '${context}'` : ""}: ${detail} — ` +
14
35
  `fix the YAML or remove the file`);
36
+ this.code = cause instanceof FrontmatterLimitError ? cause.code : "FRONTMATTER_MALFORMED";
15
37
  if (context !== undefined)
16
38
  this.context = context;
17
39
  this.detail = detail;
@@ -1 +1 @@
1
- {"version":3,"file":"frontmatter-contract.js","sourceRoot":"","sources":["../src/frontmatter-contract.ts"],"names":[],"mappings":"AAAA,sFAAsF;AAEtF;;;GAGG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC7B,IAAI,GAAG,wBAAwB,CAAC;IACzC,OAAO,CAAU;IACjB,MAAM,CAAS;IAExB,YAAY,OAA2B,EAAE,KAAc;QACrD,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAC3F,IAAI,EAAE,CAAC;QACV,KAAK,CACH,wBAAwB,OAAO,CAAC,CAAC,CAAC,QAAQ,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,KAAK;YACvE,iCAAiC,CACpC,CAAC;QACF,IAAI,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAClD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,KAAK,KAAK,SAAS;YAAG,IAA4B,CAAC,KAAK,GAAG,KAAK,CAAC;IACvE,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"frontmatter-contract.js","sourceRoot":"","sources":["../src/frontmatter-contract.ts"],"names":[],"mappings":"AAAA,sFAAsF;AAStF,MAAM,uBAAuB,GAAwB,IAAI,GAAG,CAAuB;IACjF,uBAAuB;IACvB,sBAAsB;IACtB,yBAAyB;IACzB,mBAAmB;CACpB,CAAC,CAAC;AAEH,sEAAsE;AACtE,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACzE,CAAC;AAKD,2CAA2C;AAC3C,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC5B,IAAI,GAAG,uBAAuB,CAAC;IACxC,IAAI,CAAuB;IAEpC,YAAY,IAA0B,EAAE,OAAe;QACrD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC7B,IAAI,GAAG,wBAAwB,CAAC;IACzC,IAAI,CAAwB;IAC5B,OAAO,CAAU;IACjB,MAAM,CAAS;IAExB,YAAY,OAA2B,EAAE,KAAc;QACrD,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAC3F,IAAI,EAAE,CAAC;QACV,KAAK,CACH,wBAAwB,OAAO,CAAC,CAAC,CAAC,QAAQ,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,KAAK;YACvE,iCAAiC,CACpC,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,KAAK,YAAY,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC;QAC1F,IAAI,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAClD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,KAAK,KAAK,SAAS;YAAG,IAA4B,CAAC,KAAK,GAAG,KAAK,CAAC;IACvE,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AAC1D,CAAC"}
@@ -5,6 +5,12 @@ export type LeadingFrontmatterSplit = {
5
5
  yamlSource: string;
6
6
  body: string;
7
7
  };
8
+ /**
9
+ * Whether the splitter would change `text` read as a whole document: a leading BOM is dropped and
10
+ * an exact opening delimiter line starts a frontmatter block. A serializer emitting no frontmatter
11
+ * must fence such a body, or the reader recovers different content.
12
+ */
13
+ export declare function startsWithFrontmatterSyntax(text: string): boolean;
8
14
  /**
9
15
  * Normalize one leading UTF-8 BOM, then split only exact `---` delimiter lines. Schema selection
10
16
  * and parsed-value validation remain the responsibility of each parser surface.
@@ -1 +1 @@
1
- {"version":3,"file":"frontmatter-splitter.d.ts","sourceRoot":"","sources":["../src/frontmatter-splitter.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAI7F,MAAM,MAAM,uBAAuB,GAC/B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAYzC;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,uBAAuB,CAoB9F"}
1
+ {"version":3,"file":"frontmatter-splitter.d.ts","sourceRoot":"","sources":["../src/frontmatter-splitter.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAI7F,MAAM,MAAM,uBAAuB,GAC/B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAYzC;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,uBAAuB,CAoB9F"}
@@ -13,6 +13,14 @@ function delimiterLineEnd(input, offset) {
13
13
  return suffix + 2;
14
14
  return null;
15
15
  }
16
+ /**
17
+ * Whether the splitter would change `text` read as a whole document: a leading BOM is dropped and
18
+ * an exact opening delimiter line starts a frontmatter block. A serializer emitting no frontmatter
19
+ * must fence such a body, or the reader recovers different content.
20
+ */
21
+ export function startsWithFrontmatterSyntax(text) {
22
+ return text.startsWith("\uFEFF") || delimiterLineEnd(text, 0) !== null;
23
+ }
16
24
  /**
17
25
  * Normalize one leading UTF-8 BOM, then split only exact `---` delimiter lines. Schema selection
18
26
  * and parsed-value validation remain the responsibility of each parser surface.
@@ -1 +1 @@
1
- {"version":3,"file":"frontmatter-splitter.js","sourceRoot":"","sources":["../src/frontmatter-splitter.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAE7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAMnE,+FAA+F;AAC/F,SAAS,gBAAgB,CAAC,KAAa,EAAE,MAAc;IACrD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;IAC1B,IAAI,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;IAC3C,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI;QAAE,OAAO,MAAM,GAAG,CAAC,CAAC;IAC9C,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,MAAM,GAAG,CAAC,CAAC;IAC5E,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAW,EAAE,OAAgB;IACnE,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5D,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9C,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAEhD,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,OAAO,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO;gBACL,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC;gBAC9C,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC;aAC9B,CAAC;QACJ,CAAC;QACD,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACpD,IAAI,YAAY,KAAK,CAAC,CAAC;YAAE,MAAM;QAC/B,SAAS,GAAG,YAAY,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,IAAI,sBAAsB,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC,CAAC;AAClG,CAAC"}
1
+ {"version":3,"file":"frontmatter-splitter.js","sourceRoot":"","sources":["../src/frontmatter-splitter.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAE7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAMnE,+FAA+F;AAC/F,SAAS,gBAAgB,CAAC,KAAa,EAAE,MAAc;IACrD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;IAC1B,IAAI,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;IAC3C,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI;QAAE,OAAO,MAAM,GAAG,CAAC,CAAC;IAC9C,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,MAAM,GAAG,CAAC,CAAC;IAC5E,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAAY;IACtD,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;AACzE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAW,EAAE,OAAgB;IACnE,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5D,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9C,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAEhD,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,OAAO,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO;gBACL,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC;gBAC9C,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC;aAC9B,CAAC;QACJ,CAAC;QACD,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACpD,IAAI,YAAY,KAAK,CAAC,CAAC;YAAE,MAAM;QAC/B,SAAS,GAAG,YAAY,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,IAAI,sBAAsB,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC,CAAC;AAClG,CAAC"}
@@ -27,7 +27,14 @@ export declare function parseMarkdown(raw: string, context?: string, options?: P
27
27
  };
28
28
  /** Decode YAML metadata independently of document delimiters and body content. */
29
29
  export declare function parseFrontmatter(source: string, context?: string, options?: ParseDocumentOptions): Frontmatter;
30
- /** The metadata bytes shared by document serialization and parsed-object stores. */
30
+ /** Whether an error is the engine running out of stack, as each JavaScript engine reports it. */
31
+ export declare function isStackExhaustion(error: unknown): boolean;
32
+ /**
33
+ * The metadata bytes shared by document serialization and parsed-object stores. Every document
34
+ * write serializes its frontmatter here, and this refuses with {@link FrontmatterRefusedError} any
35
+ * bytes the frontmatter reader would refuse. Reserved files are stored as given, so each backend
36
+ * checks them with `assertStorableReservedWrite` instead.
37
+ */
31
38
  export declare function stringifyFrontmatter(data: Record<string, unknown>): string;
32
39
  /** Match the exact body shape emitted by the document serializer. */
33
40
  export declare function normalizeDocumentBodyForStorage(body: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../src/frontmatter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AA4CtF,oEAAoE;AACpE,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yFAAyF;IACzF,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AA4BD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,GAAE,oBAAyB,GACjC;IAAE,WAAW,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAK5C;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,GAAE,oBAAyB,GACjC,WAAW,CAQb;AAED,oFAAoF;AACpF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAE1E;AAED,qEAAqE;AACrE,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,4FAA4F;AAC5F,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAErF;AAED,2FAA2F;AAC3F,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAKvF;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3E"}
1
+ {"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../src/frontmatter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AA4CtF,oEAAoE;AACpE,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yFAAyF;IACzF,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AA4BD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,GAAE,oBAAyB,GACjC;IAAE,WAAW,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAK5C;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,GAAE,oBAAyB,GACjC,WAAW,CAQb;AAED,iGAAiG;AACjG,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGzD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAkB1E;AAED,qEAAqE;AACrE,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,4FAA4F;AAC5F,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAErF;AAED,2FAA2F;AAC3F,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CASvF;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3E"}
@@ -7,8 +7,10 @@
7
7
  * v0.2 §11 permissive consumption).
8
8
  */
9
9
  import yaml from "js-yaml";
10
- import { isUsableTimestamp, MalformedDocumentError } from "./frontmatter-contract.js";
11
- import { splitLeadingFrontmatter } from "./frontmatter-splitter.js";
10
+ import { FRONTMATTER_LIMITS, loadBoundedYaml } from "./bounded-yaml.js";
11
+ import { FrontmatterRefusedError } from "./errors.js";
12
+ import { FrontmatterLimitError, MalformedDocumentError } from "./frontmatter-contract.js";
13
+ import { splitLeadingFrontmatter, startsWithFrontmatterSyntax } from "./frontmatter-splitter.js";
12
14
  export { isUsableTimestamp, MalformedDocumentError } from "./frontmatter-contract.js";
13
15
  const YAML_TIMESTAMP_TAG = "tag:yaml.org,2002:timestamp";
14
16
  function requireYamlTimestampType() {
@@ -34,7 +36,7 @@ const losslessDateSchema = new yaml.Schema({
34
36
  });
35
37
  const yamlEngine = {
36
38
  parse(input) {
37
- return (yaml.safeLoad(input, { schema: losslessDateSchema }) ?? {});
39
+ return (loadBoundedYaml(input, { schema: losslessDateSchema }) ?? {});
38
40
  },
39
41
  };
40
42
  /**
@@ -90,9 +92,40 @@ export function parseFrontmatter(source, context, options = {}) {
90
92
  }
91
93
  return normalizeFrontmatter(parsed, options);
92
94
  }
93
- /** The metadata bytes shared by document serialization and parsed-object stores. */
95
+ /** Whether an error is the engine running out of stack, as each JavaScript engine reports it. */
96
+ export function isStackExhaustion(error) {
97
+ if (error instanceof RangeError)
98
+ return /call stack/i.test(error.message);
99
+ return error?.name === "InternalError" && /recursion/i.test(error.message);
100
+ }
101
+ /**
102
+ * The metadata bytes shared by document serialization and parsed-object stores. Every document
103
+ * write serializes its frontmatter here, and this refuses with {@link FrontmatterRefusedError} any
104
+ * bytes the frontmatter reader would refuse. Reserved files are stored as given, so each backend
105
+ * checks them with `assertStorableReservedWrite` instead.
106
+ */
94
107
  export function stringifyFrontmatter(data) {
95
- return yaml.safeDump(data).trim();
108
+ let dumped;
109
+ try {
110
+ dumped = yaml.safeDump(data).trim();
111
+ }
112
+ catch (error) {
113
+ // The dumper recurses, so a value nested far past the limit exhausts the stack before the check below.
114
+ if (isStackExhaustion(error))
115
+ throw new FrontmatterRefusedError("FRONTMATTER_TOO_DEEP", `YAML nesting is deeper than ${FRONTMATTER_LIMITS.depth} levels`);
116
+ throw error;
117
+ }
118
+ try {
119
+ // Check the exact text a reader will see between the fences, including the framing newline.
120
+ yamlEngine.parse(`${dumped}\n`);
121
+ }
122
+ catch (error) {
123
+ if (error instanceof FrontmatterLimitError)
124
+ throw new FrontmatterRefusedError(error.code, error.message);
125
+ const detail = (error instanceof Error ? error.message : String(error)).split("\n")[0] ?? "";
126
+ throw new FrontmatterRefusedError("FRONTMATTER_MALFORMED", detail);
127
+ }
128
+ return dumped;
96
129
  }
97
130
  /** Match the exact body shape emitted by the document serializer. */
98
131
  export function normalizeDocumentBodyForStorage(body) {
@@ -106,8 +139,11 @@ export function stringifyWithData(data, body) {
106
139
  export function stringifyWithSerializedFrontmatter(dumped, body) {
107
140
  const content = body ?? "";
108
141
  const newline = (value) => (value.endsWith("\n") ? value : `${value}\n`);
109
- if (dumped === "{}")
110
- return normalizeDocumentBodyForStorage(content);
142
+ if (dumped === "{}") {
143
+ // Like gray-matter, empty metadata writes a bare body, unless the reader would misread that body.
144
+ const stored = normalizeDocumentBodyForStorage(content);
145
+ return `${startsWithFrontmatterSyntax(stored) ? "---\n---\n" : ""}${stored}`;
146
+ }
111
147
  return `---\n${newline(dumped)}---\n${normalizeDocumentBodyForStorage(content)}`;
112
148
  }
113
149
  /** Serialize a concept document's frontmatter + body to OKF-conformant markdown. */