@voltro/cms 0.86.0 → 0.88.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) hide show
  1. package/CHANGELOG.md +5484 -0
  2. package/README.md +138 -0
  3. package/THIRD-PARTY-NOTICES.md +1511 -276
  4. package/dist/ContentForm.js +1 -2
  5. package/dist/RichDocumentEditor.js +1 -2
  6. package/dist/RichDocumentView.js +82 -38
  7. package/dist/RichTextSurface.js +1 -2
  8. package/dist/aiCandidates.js +4 -5
  9. package/dist/aiOperations.js +1 -2
  10. package/dist/applicationBuildSnapshotService.js +100 -0
  11. package/dist/assetRenditions.js +101 -0
  12. package/dist/assetRevision.js +45 -0
  13. package/dist/assetUseRights.js +71 -0
  14. package/dist/audiences.js +1 -2
  15. package/dist/availability.js +20 -18
  16. package/dist/blueprint.js +76 -77
  17. package/dist/build.d.ts +3063 -0
  18. package/dist/build.js +37 -0
  19. package/dist/buildApplicationAdmission.js +15 -0
  20. package/dist/buildApplicationCatalog.js +135 -0
  21. package/dist/buildApplicationCatalogTable.js +23 -0
  22. package/dist/buildApplicationRest.js +98 -0
  23. package/dist/buildApplicationUpload.js +110 -0
  24. package/dist/buildSnapshot.js +400 -0
  25. package/dist/buildSnapshotApplicationPin.js +31 -0
  26. package/dist/buildSnapshotRest.js +209 -0
  27. package/dist/buildSnapshotService.js +264 -0
  28. package/dist/buildSnapshotTables.js +24 -0
  29. package/dist/bulk.js +72 -72
  30. package/dist/cacheIdentity.js +1 -2
  31. package/dist/changes.js +280 -64
  32. package/dist/cmsContext.js +1 -2
  33. package/dist/collections.js +1 -2
  34. package/dist/consent.js +6 -7
  35. package/dist/contentLocations.js +52 -0
  36. package/dist/contentProjection.js +82 -0
  37. package/dist/contentRouteIdentity.js +12 -0
  38. package/dist/contentRouteMaterializer.js +96 -0
  39. package/dist/contentRouteTypes.js +38 -0
  40. package/dist/contentSeo.js +188 -0
  41. package/dist/contentTreePath.js +59 -0
  42. package/dist/contentType.js +121 -105
  43. package/dist/contentValues.js +17 -0
  44. package/dist/contentfulImport.js +1 -2
  45. package/dist/copies.js +4 -5
  46. package/dist/cutover.js +1 -2
  47. package/dist/deliveryChecks.js +1 -2
  48. package/dist/domainHost.js +6 -0
  49. package/dist/domains.js +82 -89
  50. package/dist/draftTexts.js +38 -39
  51. package/dist/duplicates.js +24 -25
  52. package/dist/edgePurge.js +1 -2
  53. package/dist/editHistory.js +1 -2
  54. package/dist/effectForm.js +1 -2
  55. package/dist/environmentAliases.js +137 -0
  56. package/dist/environments.js +108 -71
  57. package/dist/errors.js +55 -16
  58. package/dist/experiments.js +8 -9
  59. package/dist/exposure.js +1 -2
  60. package/dist/extensionManifest.js +2 -3
  61. package/dist/extensions.js +1 -2
  62. package/dist/fieldSchema.js +1 -2
  63. package/dist/formStrings.js +1 -2
  64. package/dist/frontendBindings.js +98 -0
  65. package/dist/frontendMedia.js +17 -0
  66. package/dist/glossary.js +1 -2
  67. package/dist/history.js +1 -2
  68. package/dist/htmlImport.js +1 -2
  69. package/dist/index.d.ts +760 -47
  70. package/dist/index.js +89 -73
  71. package/dist/initializePublicRoutes.js +27 -0
  72. package/dist/liveContentRouteView.js +75 -0
  73. package/dist/media.js +1 -2
  74. package/dist/metrics.js +1 -2
  75. package/dist/migration.js +1 -2
  76. package/dist/migrationStages.js +1 -2
  77. package/dist/nativeOutputDeploymentService.js +204 -0
  78. package/dist/outputActivation.js +233 -0
  79. package/dist/outputActivationOrigin.js +50 -0
  80. package/dist/outputActivationStore.js +410 -0
  81. package/dist/outputActivationTables.js +10 -0
  82. package/dist/outputActivationTarget.js +80 -0
  83. package/dist/outputActivationTargetTable.js +24 -0
  84. package/dist/outputDeployment.js +173 -0
  85. package/dist/outputDeploymentRest.js +167 -0
  86. package/dist/outputDeploymentService.js +240 -0
  87. package/dist/outputRouteGraph.js +176 -0
  88. package/dist/outputSafetyArtifact.js +146 -0
  89. package/dist/outputTargetRest.js +61 -0
  90. package/dist/pathSegmentEncoding.js +3 -0
  91. package/dist/presenceAnchors.js +1 -2
  92. package/dist/preview.js +1 -2
  93. package/dist/privateCmsTransport.js +75 -0
  94. package/dist/privateNativeRouteReservation.js +9 -0
  95. package/dist/promotion.js +69 -61
  96. package/dist/publicBuild.js +89 -0
  97. package/dist/publicBuildRest.js +97 -0
  98. package/dist/publicBuildService.js +62 -0
  99. package/dist/publicOutputHttp.js +128 -0
  100. package/dist/publicOutputService.js +286 -0
  101. package/dist/publicPresentation.js +16 -0
  102. package/dist/publicRouteDispositionAdmission.js +37 -0
  103. package/dist/publicRouteHistoryStore.js +11 -0
  104. package/dist/publicRouteHistoryView.js +33 -0
  105. package/dist/publicRouteIntegrity.js +4 -0
  106. package/dist/publicRouteMutation.js +5 -0
  107. package/dist/publicRouteNamespace.js +133 -0
  108. package/dist/publicRoutePublication.js +35 -0
  109. package/dist/publicRouteRegistry.js +16 -0
  110. package/dist/publicRouteRegistryBinding.js +193 -0
  111. package/dist/publicRouteRegistryDefinition.js +75 -0
  112. package/dist/publicRouteSitePublication.js +39 -0
  113. package/dist/publicRouteTables.js +12 -0
  114. package/dist/publicRouteUrl.js +17 -0
  115. package/dist/publicationSeo.js +51 -0
  116. package/dist/publicationState.js +295 -0
  117. package/dist/quality.js +9 -10
  118. package/dist/reconfigurePublicRoutes.js +40 -0
  119. package/dist/recurrence.js +1 -2
  120. package/dist/redirects.js +105 -75
  121. package/dist/referenceGraph.js +16 -16
  122. package/dist/references.js +3 -4
  123. package/dist/release.js +178 -143
  124. package/dist/renderReadAuthority.js +42 -0
  125. package/dist/renderReadGrant.js +136 -0
  126. package/dist/rest.js +1 -2
  127. package/dist/review.js +29 -30
  128. package/dist/richDocument.js +56 -27
  129. package/dist/richInline.js +1 -2
  130. package/dist/routeDispositionGraph.js +43 -0
  131. package/dist/routeDispositionRest.js +50 -0
  132. package/dist/routeDispositionService.js +72 -0
  133. package/dist/routeDispositionStore.js +288 -0
  134. package/dist/routeDispositionTables.js +4 -0
  135. package/dist/routeDispositions.js +90 -0
  136. package/dist/routeHistoryStorage.js +319 -0
  137. package/dist/routeHistoryStore.js +11 -0
  138. package/dist/schedule.js +37 -38
  139. package/dist/search.js +1 -2
  140. package/dist/selectionIntent.js +1 -2
  141. package/dist/seo.js +2 -3
  142. package/dist/series.js +12 -13
  143. package/dist/share.js +14 -15
  144. package/dist/siteBindings.js +158 -0
  145. package/dist/siteBuildCandidate.js +103 -0
  146. package/dist/siteDelivery.js +114 -0
  147. package/dist/siteState.js +46 -0
  148. package/dist/snapshotAddressGraph.js +54 -0
  149. package/dist/snapshotAddressRead.js +72 -0
  150. package/dist/snapshotAppConsumer.js +70 -0
  151. package/dist/snapshotAppExecution.js +101 -0
  152. package/dist/snapshotApplication.js +74 -0
  153. package/dist/snapshotApprovedRouteDispositions.js +43 -0
  154. package/dist/snapshotAssetAssembly.js +69 -0
  155. package/dist/snapshotAssetAssemblyRest.js +49 -0
  156. package/dist/snapshotBindingRead.js +60 -0
  157. package/dist/snapshotCodeSeo.js +28 -0
  158. package/dist/snapshotComponent.js +33 -0
  159. package/dist/snapshotComponentSource.js +23 -0
  160. package/dist/snapshotConsumer.js +86 -0
  161. package/dist/snapshotContentIdentity.js +9 -0
  162. package/dist/snapshotDefinitions.js +263 -0
  163. package/dist/snapshotDocumentAssembly.js +192 -0
  164. package/dist/snapshotDocumentAssemblyRest.js +83 -0
  165. package/dist/snapshotDocumentProjection.js +201 -0
  166. package/dist/snapshotDocumentTransfer.js +34 -0
  167. package/dist/snapshotDocumentTransferRest.js +79 -0
  168. package/dist/snapshotDomains.js +55 -0
  169. package/dist/snapshotEnvironment.js +30 -0
  170. package/dist/snapshotFieldPlan.js +84 -0
  171. package/dist/snapshotFrontend.js +102 -0
  172. package/dist/snapshotLink.js +7 -0
  173. package/dist/snapshotMedia.js +110 -0
  174. package/dist/snapshotMediaCapture.js +245 -0
  175. package/dist/snapshotMediaFields.js +224 -0
  176. package/dist/snapshotMediaRead.js +184 -0
  177. package/dist/snapshotMediaReader.js +12 -0
  178. package/dist/snapshotObservation.js +15 -0
  179. package/dist/snapshotObservedRouteHistory.js +33 -0
  180. package/dist/snapshotOutputTransfer.js +77 -0
  181. package/dist/snapshotPageLoader.js +6 -0
  182. package/dist/snapshotPageSeo.js +58 -0
  183. package/dist/snapshotPathLocale.js +14 -0
  184. package/dist/snapshotPresentation.js +85 -0
  185. package/dist/snapshotPresentationPolicy.js +11 -0
  186. package/dist/snapshotProjection.js +118 -0
  187. package/dist/snapshotPublicAccess.js +160 -0
  188. package/dist/snapshotPublicRouteHistory.js +39 -0
  189. package/dist/snapshotReadAdmission.js +37 -0
  190. package/dist/snapshotRedirectOutput.js +150 -0
  191. package/dist/snapshotRedirectTargets.js +23 -0
  192. package/dist/snapshotRedirects.js +131 -0
  193. package/dist/snapshotReference.js +7 -0
  194. package/dist/snapshotReferenceAddress.js +9 -0
  195. package/dist/snapshotReferenceGraph.js +78 -0
  196. package/dist/snapshotReferenceRead.js +64 -0
  197. package/dist/snapshotRelease.js +98 -0
  198. package/dist/snapshotRender.js +360 -0
  199. package/dist/snapshotRenderDependencies.js +177 -0
  200. package/dist/snapshotRenditions.js +87 -0
  201. package/dist/snapshotRichDocument.js +61 -0
  202. package/dist/snapshotRoleTransfer.js +105 -0
  203. package/dist/snapshotRoleTransferRest.js +98 -0
  204. package/dist/snapshotRouteAdmission.js +70 -0
  205. package/dist/snapshotRouteDispatch.js +110 -0
  206. package/dist/snapshotRouteDispositionPlan.js +72 -0
  207. package/dist/snapshotRouteRead.js +42 -0
  208. package/dist/snapshotRoutes.js +78 -0
  209. package/dist/snapshotRouting.js +112 -0
  210. package/dist/snapshotSeo.js +178 -0
  211. package/dist/snapshotSeoControls.js +100 -0
  212. package/dist/snapshotSeoDocumentInventory.js +114 -0
  213. package/dist/snapshotSeoDocuments.js +128 -0
  214. package/dist/snapshotSeoMerge.js +84 -0
  215. package/dist/snapshotSeoMetadata.js +136 -0
  216. package/dist/snapshotSeoOutput.js +172 -0
  217. package/dist/snapshotSeoPathSets.js +104 -0
  218. package/dist/snapshotSeoRead.js +87 -0
  219. package/dist/snapshotSite.js +127 -0
  220. package/dist/snapshotSitemapFiles.js +35 -0
  221. package/dist/snapshotTreeDependencies.js +57 -0
  222. package/dist/snapshotTreeLoader.js +9 -0
  223. package/dist/snapshotTreeRead.js +157 -0
  224. package/dist/staticPathSet.js +176 -0
  225. package/dist/staticPathSetRest.js +128 -0
  226. package/dist/staticPathSetService.js +248 -0
  227. package/dist/staticPathSetStore.js +337 -0
  228. package/dist/stewardship.js +2 -3
  229. package/dist/taxonomy.js +1 -2
  230. package/dist/team.js +1 -2
  231. package/dist/templates.js +2 -3
  232. package/dist/trackChanges.js +1 -2
  233. package/dist/translation.js +1 -2
  234. package/dist/tree.js +10 -11
  235. package/dist/usage.js +1 -2
  236. package/dist/validation.js +54 -55
  237. package/dist/visualEditing.js +1 -2
  238. package/dist/web.d.ts +709 -7
  239. package/dist/web.js +50 -33
  240. package/dist/workflow.js +9 -10
  241. package/dist/write.js +251 -227
  242. package/dist/xliff.js +1 -2
  243. package/package.json +21 -7
@@ -0,0 +1,248 @@
1
+ import { defineSiteDelivery as e } from "./siteDelivery.js";
2
+ import { normalizeHost as t } from "./domainHost.js";
3
+ import { verifyPublicationState as n } from "./publicationState.js";
4
+ import { findVerifiedSnapshotResources as r, pageSnapshotResources as i } from "./buildSnapshot.js";
5
+ import { nativeSnapshotRouteId as a, readSnapshotRouting as o, snapshotCmsPage as s, snapshotRouteDispatch as c, verifySnapshotRouteOwnership as l } from "./snapshotRouting.js";
6
+ import { StaticPathSetConflict as u, StaticPathSetUnavailable as d, copyStaticPathContext as f, copyStaticPathOwners as p, staticPathHash as m, staticPathUrl as h } from "./staticPathSet.js";
7
+ import { readSnapshotAppExecution as g, verifySnapshotAppExecution as _ } from "./snapshotAppExecution.js";
8
+ import { readSnapshotRouteAdmission as v, verifySnapshotContentRoute as y } from "./snapshotRouteAdmission.js";
9
+ import { readAdmittedSnapshotContentRoute as b } from "./snapshotRouteRead.js";
10
+ import { snapshotPathLocale as x } from "./snapshotPathLocale.js";
11
+ import { appendStaticPathStage as S, beginStaticPathSet as C, pageStaticPathSet as w, readStaticPathSet as T, sealStaticPathSet as E } from "./staticPathSetStore.js";
12
+ import { Effect as D } from "effect";
13
+ import { canonicalJson as O } from "@voltro/runtime";
14
+ // src/staticPathSetService.ts
15
+ var k = (e) => {
16
+ throw new d({ reason: e });
17
+ }, A = (e) => typeof e != "object" || !e || Array.isArray(e) ? k("integrity") : e, j = (e) => D.tryPromise({
18
+ try: e,
19
+ catch: (e) => e instanceof d || e instanceof u ? e : new d({ reason: "state" })
20
+ }), M = (e) => ({
21
+ id: e.id,
22
+ revision: e.progress.revision,
23
+ phase: e.progress.phase,
24
+ enumerated: e.progress.inputCount,
25
+ set: e.sealed
26
+ }), N = (e) => ({
27
+ snapshot: {
28
+ id: e.snapshot.id,
29
+ digest: e.snapshot.digest
30
+ },
31
+ token: e.token,
32
+ consumerId: e.consumerId,
33
+ buildId: e.buildId,
34
+ host: e.host,
35
+ ...e.localeIds === void 0 ? {} : { localeIds: [...e.localeIds] },
36
+ ...e.owners === void 0 ? {} : { owners: [...e.owners] }
37
+ }), P = async (r, i, a, s) => {
38
+ let c = await v(r, i, a.snapshot, {
39
+ ...a,
40
+ path: "/"
41
+ }, {
42
+ keys: s.keys,
43
+ now: s.now
44
+ }), l = await n(r, i, c.snapshot.manifest.publication, c.now), u = await g(r, i, c.snapshot), d = o(c.configuration), m = e(c.configuration.site), h = m.locales.filter((e) => e.enabled).map((e) => e.id).sort(), _ = a.localeIds === void 0 ? h : [...a.localeIds].sort();
45
+ if (_.length === 0 || _.some((e, t) => !h.includes(e) || t > 0 && _[t - 1] === e)) return k("input");
46
+ let y = p(a.owners ?? ["cms", "code"]), b = t(a.host);
47
+ if (b === null) return k("input");
48
+ let x = (e) => c.snapshot.manifest.parts.find((t) => t.part === e)?.digest ?? k("integrity"), S = f({
49
+ ...i,
50
+ snapshotId: c.snapshot.id,
51
+ snapshotDigest: c.snapshot.digest,
52
+ releaseId: c.snapshot.manifest.publication.releaseId,
53
+ consumerId: a.consumerId,
54
+ buildId: a.buildId,
55
+ inputsId: u.inputsId,
56
+ executionId: u.executionId,
57
+ routesDigest: x("routes"),
58
+ domainsDigest: x("domains"),
59
+ localesDigest: x("locales"),
60
+ policyDigest: x("policies"),
61
+ projectionDigest: x("projection"),
62
+ host: b,
63
+ localeIds: _,
64
+ owners: y
65
+ }), C = d.discovery === null ? [] : d.discovery.pages;
66
+ if (!Array.isArray(C)) return k("integrity");
67
+ let w = C.map(A).sort((e, t) => String(e.file) < String(t.file) ? -1 : +(String(e.file) > String(t.file)));
68
+ return {
69
+ admission: c,
70
+ partitions: l,
71
+ app: u,
72
+ routing: d,
73
+ site: m,
74
+ context: S,
75
+ nativePages: w,
76
+ codePages: y.includes("code") ? w.filter((e) => {
77
+ let t = d.definition?.claims[String(e.file)];
78
+ return t?.kind !== "cms" && (u.web === void 0 || t?.kind === "code" && t.public === !0);
79
+ }) : []
80
+ };
81
+ }, F = (e) => {
82
+ let { store: t, execution: n } = e, o = {
83
+ tenantId: e.scope.tenantId,
84
+ site: e.scope.site,
85
+ environment: e.scope.environment
86
+ }, u = e.now ?? Date.now, d = {
87
+ id: e.key.id,
88
+ material: new Uint8Array(e.key.material)
89
+ }, f = [d, ...(e.verificationKeys ?? []).map((e) => ({
90
+ id: e.id,
91
+ material: new Uint8Array(e.material)
92
+ }))], p = (e, t) => P(e, o, t, {
93
+ keys: f,
94
+ now: u()
95
+ }), g = (e, t, n) => {
96
+ if (t === null) return {};
97
+ let r = e.nativePages.find((e) => e.file === t);
98
+ if (r === void 0) return k("integrity");
99
+ let i = A(r.matcher), a = i.paramNames;
100
+ if (typeof i.source != "string" || i.flags !== "" || !Array.isArray(a) || a.some((e) => typeof e != "string") || new Set(a).size !== a.length) return k("integrity");
101
+ let o = new RegExp(i.source, "").exec(n);
102
+ if (o === null) return k("integrity");
103
+ try {
104
+ return Object.fromEntries(a.map((e, t) => [e, decodeURIComponent(o[t + 1] ?? "")]));
105
+ } catch {
106
+ return k("integrity");
107
+ }
108
+ }, v = (e, t) => {
109
+ if (O(e) !== O(t)) return k("changed");
110
+ };
111
+ return {
112
+ begin: (e) => j(async () => {
113
+ let n = N(e);
114
+ return t.transactional(async (e) => {
115
+ let t = await p(e, n), r = await C(e, t.context, f);
116
+ return await p(e, n), M(r);
117
+ });
118
+ }),
119
+ advance: (e) => j(async () => {
120
+ let u = N(e), C = e.id, w = e.revision;
121
+ if (!Number.isSafeInteger(w) || w < 0) return k("input");
122
+ let D = await t.transactional(async (e) => {
123
+ let t = await p(e, u), n = await T(e, t.context, C, f);
124
+ return {
125
+ ...t,
126
+ set: n
127
+ };
128
+ });
129
+ if (w > D.set.progress.revision) return k("changed");
130
+ if (w < D.set.progress.revision || D.set.sealed !== null) return M(D.set);
131
+ if (D.set.progress.phase === "cms") return t.transactional(async (e) => {
132
+ let t = await p(e, u);
133
+ v(t.context, D.context);
134
+ let n = await i(e, o, t.admission.snapshot.id, "routes", {
135
+ now: t.admission.now,
136
+ limit: 200,
137
+ ...D.set.progress.after === null ? {} : { after: D.set.progress.after }
138
+ }), r = [];
139
+ for (let i of n.items) {
140
+ if (!i.key.startsWith("path:")) continue;
141
+ let n = i.value, a = n.path;
142
+ if (typeof a != "string" || i.key !== "path:" + m(a)) return k("integrity");
143
+ if (y(o, a, n), l(t.admission.configuration, n).owner !== "cms" || !t.context.owners.includes("cms") || !t.context.localeIds.includes(String(n.localeId))) continue;
144
+ let c = await b(e, {
145
+ ...t.admission,
146
+ input: {
147
+ ...t.admission.input,
148
+ path: a
149
+ },
150
+ route: n
151
+ }, t.partitions);
152
+ if (c === null) continue;
153
+ if (x(t.site, a).id !== c.output.localeId) return k("integrity");
154
+ let u = t.app.nativePages ? s(t.routing, a) : null;
155
+ r.push({
156
+ host: t.context.host,
157
+ path: a,
158
+ localeId: c.output.localeId,
159
+ routeId: c.output.routeId,
160
+ owner: "cms",
161
+ file: u?.file ?? null,
162
+ sourceDigest: u?.sourceDigest ?? null,
163
+ parameters: g(t, u?.file ?? null, a)
164
+ });
165
+ }
166
+ let a = await S(e, D.set, {
167
+ source: "cms:" + D.set.progress.revision,
168
+ receiptDigest: m({
169
+ routesDigest: t.context.routesDigest,
170
+ items: n.items
171
+ }),
172
+ entries: r,
173
+ next: {
174
+ phase: n.next === null ? t.codePages.length === 0 ? "seal" : "code" : "cms",
175
+ after: n.next,
176
+ codeIndex: 0
177
+ }
178
+ }, d, f);
179
+ return await p(e, u), M(a);
180
+ });
181
+ if (D.set.progress.phase === "code") {
182
+ let e = D.codePages[D.set.progress.codeIndex];
183
+ if (e === void 0 || typeof e.file != "string" || typeof e.pattern != "string" || !D.app.nativePages) return k("state");
184
+ let i = {
185
+ version: 1,
186
+ file: e.file
187
+ }, s = await n.run({
188
+ inputsId: D.app.inputsId,
189
+ executionId: D.app.executionId,
190
+ exportName: "__voltro_staticPaths",
191
+ inputJson: O(i)
192
+ });
193
+ _(D.app, "__voltro_staticPaths", i, s);
194
+ let b = A(s.value);
195
+ return Object.keys(b).sort().join(",") !== "file,paths,pattern,version" || b.version !== 1 || b.file !== e.file || b.pattern !== e.pattern || !Array.isArray(b.paths) || b.paths.length > 1e4 ? k("integrity") : t.transactional(async (t) => {
196
+ let n = await p(t, u);
197
+ v(n.context, D.context);
198
+ let i = [], _ = b.paths.map((e) => typeof e == "string" ? (h(n.context.host, e), e) : k("integrity"));
199
+ for (let s = 0; s < _.length; s += 200) {
200
+ let u = _.slice(s, s + 200), d = await r(t, o, n.admission.snapshot, "routes", u.map((e) => "path:" + m(e)));
201
+ for (let t of u) {
202
+ let r = d.get("path:" + m(t))?.value;
203
+ r !== void 0 && y(o, t, r);
204
+ let s = r === void 0 ? c(n.routing, t, !1) : l(n.admission.configuration, r);
205
+ if (s?.owner !== "code" || s.code === null || s.code.file !== e.file) continue;
206
+ let u = x(n.site, t);
207
+ n.context.localeIds.includes(u.id) && i.push({
208
+ host: n.context.host,
209
+ path: t,
210
+ localeId: u.id,
211
+ routeId: a(o, u.id, s.code.file, t),
212
+ owner: "code",
213
+ file: s.code.file,
214
+ sourceDigest: s.code.sourceDigest,
215
+ parameters: g(n, s.code.file, t)
216
+ });
217
+ }
218
+ }
219
+ let C = D.set.progress.codeIndex + 1, w = await S(t, D.set, {
220
+ source: "code:" + e.file,
221
+ receiptDigest: m(s),
222
+ entries: i,
223
+ next: {
224
+ phase: C === n.codePages.length ? "seal" : "code",
225
+ after: null,
226
+ codeIndex: C
227
+ }
228
+ }, d, f);
229
+ return await p(t, u), M(w);
230
+ });
231
+ }
232
+ return t.transactional(async (e) => {
233
+ let t = await p(e, u);
234
+ v(t.context, D.context);
235
+ let n = await E(e, D.set, d, f);
236
+ return await p(e, u), M(n);
237
+ });
238
+ }),
239
+ page: (e) => j(async () => {
240
+ let n = N(e), r = e.id, i = e.index, a = e.digest;
241
+ return t.transactional(async (e) => {
242
+ let t = await p(e, n), o = await w(e, t.context, r, i, f);
243
+ return o.set.id === a ? (await p(e, n), o) : k("changed");
244
+ });
245
+ })
246
+ };
247
+ };
248
+ export { F as createCmsStaticPathSets, P as readSnapshotStaticPathAdmission };
@@ -0,0 +1,337 @@
1
+ import { StaticPathSetConflict as e, StaticPathSetUnavailable as t, copyStaticPathContext as n, copyStaticPathEntry as r, signStaticPathSet as i, staticPathHash as a, staticPathUrl as o, verifyStaticPathPage as s, verifyStaticPathSet as c } from "./staticPathSet.js";
2
+ import { and as l, eq as u, generateId as d, id as f, integer as p, json as m, table as h, text as g } from "@voltro/database";
3
+ import { tenant as _ } from "@voltro/plugin-multitenancy/mixin";
4
+ import { createHash as v, createHmac as y, timingSafeEqual as b } from "node:crypto";
5
+ import { canonicalJson as x } from "@voltro/runtime";
6
+ // src/staticPathSetStore.ts
7
+ var S = "_voltro_cms_static_path_sets", C = "_voltro_cms_static_path_pages", w = h(S, {
8
+ id: f({ prefix: "cpaths" }),
9
+ site: g().maxLength(64),
10
+ environment: g().maxLength(64),
11
+ contextDigest: g().maxLength(64),
12
+ context: m(),
13
+ progress: m(),
14
+ sealed: m().nullable()
15
+ }).with(_()).unique("cms_static_path_set_context", [
16
+ "tenantId",
17
+ "site",
18
+ "environment",
19
+ "contextDigest"
20
+ ]), T = h(C, {
21
+ id: f({ prefix: "cpathpg" }),
22
+ site: g().maxLength(64),
23
+ environment: g().maxLength(64),
24
+ setId: g().maxLength(64),
25
+ kind: g().oneOf([
26
+ "input",
27
+ "stage",
28
+ "output"
29
+ ]),
30
+ ordinal: p(),
31
+ value: m(),
32
+ digest: g().maxLength(64)
33
+ }).with(_()).unique("cms_static_path_page", [
34
+ "tenantId",
35
+ "setId",
36
+ "kind",
37
+ "ordinal"
38
+ ]), E = Object.freeze([w, T]), D = (e) => {
39
+ throw new t({ reason: e });
40
+ }, O = (e) => typeof e == "string" && /^[A-Za-z0-9_-]{1,64}$/.test(e), k = (e) => typeof e == "string" && /^[a-f0-9]{64}$/.test(e), A = (e) => typeof e != "object" || !e || Array.isArray(e) ? D("state") : e, j = (e) => l(u("tenantId", e.tenantId), u("site", e.site), u("environment", e.environment)), M = (e) => {
41
+ let t = A(e);
42
+ return Object.keys(t).sort().join(",") !== "after,chain,codeIndex,inputBytes,inputCount,inputPages,phase,revision,version" || t.version !== 1 || ![
43
+ "cms",
44
+ "code",
45
+ "seal",
46
+ "ready"
47
+ ].includes(String(t.phase)) || !(t.after === null || O(t.after)) || !k(t.chain) || ![
48
+ "codeIndex",
49
+ "inputBytes",
50
+ "inputCount",
51
+ "inputPages",
52
+ "revision"
53
+ ].every((e) => Number.isSafeInteger(t[e]) && Number(t[e]) >= 0) || Number(t.codeIndex) > 4096 || Number(t.inputCount) > 1e5 || Number(t.inputPages) > 1e5 || Number(t.inputBytes) > 67108864 || Number(t.revision) > 1e5 ? D("state") : { ...t };
54
+ }, N = (e, t, n) => {
55
+ if (!O(e.id) || e.contextDigest !== a(t) || x(e.context) !== x(t)) return D("changed");
56
+ let r = M(e.progress), i = e.sealed === null ? null : c(e.sealed, n);
57
+ return i !== null != (r.phase === "ready") || i !== null && x(i.manifest.context) !== x(t) ? D("state") : {
58
+ id: e.id,
59
+ context: t,
60
+ progress: r,
61
+ sealed: i
62
+ };
63
+ }, P = async (e, t, r, i, a = !1) => {
64
+ let o = n(t);
65
+ if (!O(r)) return D("input");
66
+ let [s] = await e.query({
67
+ table: S,
68
+ predicate: l(j(o), u("id", r)),
69
+ ...a ? { lock: "update" } : {},
70
+ order: [],
71
+ take: 1,
72
+ skip: void 0,
73
+ projection: void 0
74
+ });
75
+ if (s === void 0) return D("state");
76
+ let c = N(s, o, i);
77
+ return await L(e, c, i), c;
78
+ }, F = async (e, t, r) => {
79
+ let i = n(t), o = a(i), s = d({
80
+ kind: "typeid",
81
+ prefix: "cpaths"
82
+ }, S);
83
+ if (s === null) return D("state");
84
+ let c = {
85
+ version: 1,
86
+ phase: "cms",
87
+ after: null,
88
+ codeIndex: 0,
89
+ revision: 0,
90
+ inputPages: 0,
91
+ inputCount: 0,
92
+ inputBytes: 0,
93
+ chain: a({ context: i })
94
+ };
95
+ await e.insertIgnore(S, {
96
+ id: s,
97
+ tenantId: i.tenantId,
98
+ site: i.site,
99
+ environment: i.environment,
100
+ contextDigest: o,
101
+ context: i,
102
+ progress: c,
103
+ sealed: null
104
+ }, { conflictColumns: [
105
+ "tenantId",
106
+ "site",
107
+ "environment",
108
+ "contextDigest"
109
+ ] });
110
+ let [f] = await e.query({
111
+ table: S,
112
+ predicate: l(j(i), u("contextDigest", o)),
113
+ lock: "update",
114
+ order: [],
115
+ take: 1,
116
+ skip: void 0,
117
+ projection: void 0
118
+ });
119
+ if (f === void 0) return D("state");
120
+ let p = N(f, i, r);
121
+ return await L(e, p, r), p;
122
+ }, I = (e, t) => !O(t.id) || !(t.material instanceof Uint8Array) || t.material.byteLength < 32 ? D("key") : y("sha256", t.material).update(x({
123
+ purpose: "voltro.cms.static-path-stage/v1",
124
+ value: e,
125
+ keyId: t.id
126
+ })).digest("hex"), L = async (e, t, n) => {
127
+ if (t.progress.revision === 0) {
128
+ let e = {
129
+ version: 1,
130
+ phase: "cms",
131
+ after: null,
132
+ codeIndex: 0,
133
+ revision: 0,
134
+ inputPages: 0,
135
+ inputCount: 0,
136
+ inputBytes: 0,
137
+ chain: a({ context: t.context })
138
+ };
139
+ return x(t.progress) !== x(e) || t.sealed !== null ? D("integrity") : void 0;
140
+ }
141
+ let r = A(await R(e, t, "stage", t.progress.revision)), i = A(r.body), o = n.find((e) => e.id === r.keyId), s = {
142
+ ...t.progress,
143
+ chain: "",
144
+ ...t.sealed === null ? {} : { phase: "seal" }
145
+ };
146
+ if (o === void 0 || !k(r.signature) || i.setId !== t.id || i.contextDigest !== a(t.context) || a(i) !== t.progress.chain || x(i.next) !== x(s) || !b(Buffer.from(I(i, o), "hex"), Buffer.from(r.signature, "hex"))) return D("integrity");
147
+ }, R = async (e, t, n, r) => {
148
+ let [i] = await e.query({
149
+ table: C,
150
+ predicate: l(j(t.context), u("setId", t.id), u("kind", n), u("ordinal", r)),
151
+ order: [],
152
+ take: 1,
153
+ skip: void 0,
154
+ projection: void 0
155
+ });
156
+ return i === void 0 || i.digest !== a(i.value) ? D("integrity") : i.value;
157
+ }, z = (e, t, n, r, i) => e.insert(C, {
158
+ tenantId: t.context.tenantId,
159
+ site: t.context.site,
160
+ environment: t.context.environment,
161
+ setId: t.id,
162
+ kind: n,
163
+ ordinal: r,
164
+ value: i,
165
+ digest: a(i)
166
+ }), B = async (e, t, n, i, o) => {
167
+ if (t.sealed !== null || !k(n.receiptDigest) || n.source.length === 0 || n.source.length > 2048 || n.entries.length > 1e4) return D("input");
168
+ if (t.progress.phase === "seal" || t.progress.phase === "ready" || n.next.phase === "ready" || t.progress.phase === "cms" && (n.next.codeIndex !== 0 || n.next.phase === "cms" && (n.next.after === null || n.next.after === t.progress.after) || n.next.phase !== "cms" && n.next.after !== null) || t.progress.phase === "code" && (n.next.phase === "cms" || n.next.after !== null || n.next.codeIndex !== t.progress.codeIndex + 1)) return D("state");
169
+ let s = n.entries.map(r), c = t.progress.revision + 1;
170
+ if (s.some((e) => e.host !== t.context.host || !t.context.localeIds.includes(e.localeId) || !t.context.owners.includes(e.owner))) return D("input");
171
+ let l = Buffer.byteLength(x(s)), u = M({
172
+ ...t.progress,
173
+ ...n.next,
174
+ revision: c,
175
+ inputPages: t.progress.inputPages + Math.ceil(s.length / 200),
176
+ inputCount: t.progress.inputCount + s.length,
177
+ inputBytes: t.progress.inputBytes + l
178
+ }), d = {
179
+ contextDigest: a(t.context),
180
+ setId: t.id,
181
+ revision: c,
182
+ source: n.source,
183
+ receiptDigest: n.receiptDigest,
184
+ previous: t.progress.chain,
185
+ pages: Array.from({ length: Math.ceil(s.length / 200) }, (e, t) => a(s.slice(t * 200, (t + 1) * 200))),
186
+ next: {
187
+ ...u,
188
+ chain: ""
189
+ }
190
+ }, f = a(d), p = {
191
+ ...u,
192
+ chain: f
193
+ }, m = await P(e, t.context, t.id, o, !0);
194
+ if (m.progress.revision >= c) {
195
+ let t = A(await R(e, m, "stage", c));
196
+ return a(t.body) === f ? m : D("changed");
197
+ }
198
+ if (x(m.progress) !== x(t.progress)) return D("changed");
199
+ for (let n = 0; n < d.pages.length; n++) await z(e, m, "input", t.progress.inputPages + n + 1, s.slice(n * 200, (n + 1) * 200));
200
+ return await z(e, m, "stage", c, {
201
+ body: d,
202
+ keyId: i.id,
203
+ signature: I(d, i)
204
+ }), await e.update(S, t.id, { progress: p }), {
205
+ ...m,
206
+ progress: p
207
+ };
208
+ }, V = async (t, n, s, c) => {
209
+ let l = await P(t, n.context, n.id, c, !0);
210
+ if (l.sealed !== null) return l;
211
+ if (l.progress.phase !== "seal" || x(l.progress) !== x(n.progress)) return D("changed");
212
+ let u = [], d = v("sha256"), f = a({ context: l.context }), p = 0, m = 0;
213
+ for (let e = 1; e <= l.progress.revision; e++) {
214
+ let n = A(await R(t, l, "stage", e)), i = A(n.body), o = c.find((e) => e.id === n.keyId);
215
+ if (o === void 0 || !k(n.signature) || !b(Buffer.from(I(i, o), "hex"), Buffer.from(n.signature, "hex")) || i.contextDigest !== a(l.context) || i.setId !== l.id || i.revision !== e || i.previous !== f || !Array.isArray(i.pages) || i.pages.length > 50 || i.pages.some((e) => !k(e))) return D("integrity");
216
+ f = a(i), d.update(x({
217
+ source: i.source,
218
+ receiptDigest: i.receiptDigest,
219
+ pages: i.pages
220
+ }) + "\n");
221
+ let s = [];
222
+ for (let e of i.pages) {
223
+ let n = await R(t, l, "input", ++p);
224
+ if (!Array.isArray(n) || n.length < 1 || n.length > 200 || a(n) !== e) return D("integrity");
225
+ s.push(...n.map(r));
226
+ }
227
+ if (m += Buffer.byteLength(x(s)), u.length + s.length > 1e5 || m > 67108864) return D("bounds");
228
+ u.push(...s);
229
+ }
230
+ if (f !== l.progress.chain || p !== l.progress.inputPages || u.length !== l.progress.inputCount || m !== l.progress.inputBytes) return D("integrity");
231
+ let h = u.map((e) => ({
232
+ entry: e,
233
+ url: o(e.host, e.path)
234
+ })).sort((e, t) => e.url < t.url ? -1 : +(e.url > t.url));
235
+ for (let t = 0; t < h.length; t++) {
236
+ let n = h[t];
237
+ if (n.entry.host !== l.context.host || !l.context.localeIds.includes(n.entry.localeId) || !l.context.owners.includes(n.entry.owner)) return D("integrity");
238
+ if (t > 0 && h[t - 1].url === n.url) throw new e({
239
+ url: n.url,
240
+ owners: [h[t - 1].entry, n.entry].map((e) => `${e.owner}:${e.file ?? e.routeId}`),
241
+ repair: "Change the captured location or native path enumeration and capture a new build snapshot."
242
+ });
243
+ }
244
+ let g = [];
245
+ for (let e = 0; e < h.length; e += 200) {
246
+ let n = h.slice(e, e + 200), r = n.map((e) => e.entry);
247
+ g.push({
248
+ count: r.length,
249
+ digest: a(r),
250
+ first: n[0].url,
251
+ last: n[n.length - 1].url
252
+ }), await z(t, l, "output", g.length, r);
253
+ }
254
+ let _ = i({
255
+ version: 1,
256
+ context: l.context,
257
+ sort: "host-nfc-path/v1",
258
+ pageSize: 200,
259
+ count: h.length,
260
+ sources: {
261
+ count: l.progress.revision,
262
+ digest: d.digest("hex")
263
+ },
264
+ pages: g
265
+ }, s), y = {
266
+ ...l.progress,
267
+ phase: "ready"
268
+ };
269
+ return await t.update(S, l.id, {
270
+ progress: y,
271
+ sealed: _
272
+ }), {
273
+ ...l,
274
+ progress: y,
275
+ sealed: _
276
+ };
277
+ }, H = async (e, t, n, r, i) => {
278
+ let a = await P(e, t, n, i);
279
+ if (a.sealed === null || !Number.isSafeInteger(r) || r < 0 || r > a.sealed.manifest.pages.length) return D("state");
280
+ if (a.sealed.manifest.count > 0 && r >= a.sealed.manifest.pages.length) return D("bounds");
281
+ if (a.sealed.manifest.count === 0 && r === 0) return {
282
+ set: a.sealed,
283
+ index: r,
284
+ entries: [],
285
+ next: null
286
+ };
287
+ let o = s(a.sealed, r, await R(e, a, "output", r + 1));
288
+ return {
289
+ set: a.sealed,
290
+ index: r,
291
+ entries: o,
292
+ next: r + 1 < a.sealed.manifest.pages.length ? r + 1 : null
293
+ };
294
+ }, U = async (e, t, r, i) => {
295
+ if (typeof t != "object" || !t || Array.isArray(t) || !O(t.tenantId) || !O(t.site) || !O(t.environment) || !O(r?.id) || !k(r?.digest)) return D("input");
296
+ let a = {
297
+ tenantId: t.tenantId,
298
+ site: t.site,
299
+ environment: t.environment
300
+ }, [o] = await e.query({
301
+ table: S,
302
+ predicate: l(j(a), u("id", r.id)),
303
+ order: [],
304
+ take: 1,
305
+ skip: void 0,
306
+ projection: void 0
307
+ });
308
+ if (o === void 0) return D("state");
309
+ let c = n(o.context);
310
+ if (c.tenantId !== a.tenantId || c.site !== a.site || c.environment !== a.environment) return D("changed");
311
+ let d = await P(e, c, r.id, i), f = d.sealed;
312
+ if (f === null) return D("state");
313
+ if (f.id !== r.digest) return D("changed");
314
+ let p = await e.query({
315
+ table: C,
316
+ predicate: l(j(a), u("setId", r.id), u("kind", "output")),
317
+ order: [{
318
+ column: "ordinal",
319
+ direction: "asc"
320
+ }],
321
+ take: f.manifest.pages.length + 1,
322
+ skip: void 0,
323
+ projection: ["ordinal"]
324
+ });
325
+ if (p.length !== f.manifest.pages.length || p.some((e, t) => e.ordinal !== t + 1)) return D("integrity");
326
+ let m = [], h = 0, g = Buffer.byteLength(x(f));
327
+ for (let t = 0; t < f.manifest.pages.length; t++) {
328
+ let n = s(f, t, await R(e, d, "output", t + 1));
329
+ if (g += Buffer.byteLength(x(n)), h += n.length, g > 67108864 || h > 1e5) return D("bounds");
330
+ m.push([...n]);
331
+ }
332
+ return h === f.manifest.count ? {
333
+ set: f,
334
+ pages: m
335
+ } : D("integrity");
336
+ };
337
+ export { C as STATIC_PATH_PAGES_TABLE, S as STATIC_PATH_SETS_TABLE, B as appendStaticPathStage, F as beginStaticPathSet, H as pageStaticPathSet, P as readStaticPathSet, U as readStaticPathSetEvidence, V as sealStaticPathSet, T as staticPathPagesTable, E as staticPathSetTables, w as staticPathSetsTable };
@@ -3,7 +3,7 @@ import { CMS_REFERENCES_TABLE as t } from "./references.js";
3
3
  import { translationStatuses as n } from "./translation.js";
4
4
  import { and as r, eq as i, id as a, neq as o, table as s, text as c, timestamp as l } from "@voltro/database";
5
5
  import { tenant as u } from "@voltro/plugin-multitenancy/mixin";
6
- //#region src/stewardship.ts
6
+ // src/stewardship.ts
7
7
  var d = "cms_stewardship", f = s(d, {
8
8
  id: a({ prefix: "cstw" }),
9
9
  contentType: c().maxLength(64),
@@ -82,7 +82,7 @@ var d = "cms_stewardship", f = s(d, {
82
82
  let e = String(i.documentId), r = String(i.locale);
83
83
  n.set(e, (n.get(e) ?? /* @__PURE__ */ new Set()).add(r));
84
84
  let a = g(i.title) ?? g(i.name) ?? g(i.slug) ?? e;
85
- (r === c.sourceLocale || !h.has(`${t.name}:${e}`)) && h.set(`${t.name}:${e}`, a);
85
+ r !== c.sourceLocale && h.has(`${t.name}:${e}`) || h.set(`${t.name}:${e}`, a);
86
86
  }
87
87
  p.set(t.name, n);
88
88
  }
@@ -142,5 +142,4 @@ var d = "cms_stewardship", f = s(d, {
142
142
  });
143
143
  return f;
144
144
  }, E = (...t) => e(() => T(...t)), D = (...t) => e(() => w(...t)), O = (...t) => e(() => C(...t)), k = (...t) => e(() => x(...t)), A = (...t) => e(() => S(...t));
145
- //#endregion
146
145
  export { d as CMS_STEWARDSHIP_TABLE, f as cmsStewardshipTable, T as contentHealth, E as contentHealthEffect, w as recertify, D as recertifyEffect, C as setOwner, O as setOwnerEffect, x as startStewardship, k as startStewardshipEffect, S as stewardshipOf, A as stewardshipOfEffect };
package/dist/taxonomy.js CHANGED
@@ -1,4 +1,4 @@
1
- //#region src/taxonomy.ts
1
+ // src/taxonomy.ts
2
2
  var e = (e) => e.normalize("NFKC").trim().replace(/\s+/g, " ").toLowerCase(), t = (t, n) => {
3
3
  let r = /* @__PURE__ */ new Map();
4
4
  for (let n of t.terms) {
@@ -32,5 +32,4 @@ var e = (e) => e.normalize("NFKC").trim().replace(/\s+/g, " ").toLowerCase(), t
32
32
  }
33
33
  return null;
34
34
  };
35
- //#endregion
36
35
  export { t as normalizeTerms, r as taxonomyProblem, n as taxonomyValue };
package/dist/team.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { asTyped as e } from "./effectForm.js";
2
2
  import { and as t, eq as n, id as r, json as i, table as a, text as o } from "@voltro/database";
3
3
  import { tenant as s } from "@voltro/plugin-multitenancy/mixin";
4
- //#region src/team.ts
4
+ // src/team.ts
5
5
  var c = "cms_team", l = "cms_team_invitations", u = a(c, {
6
6
  id: r({ prefix: "ctm" }),
7
7
  defaultRole: o().nullable(),
@@ -99,5 +99,4 @@ var c = "cms_team", l = "cms_team_invitations", u = a(c, {
99
99
  let [a] = await h(e, l, t(n("tenantId", r), n("email", i.trim().toLowerCase())));
100
100
  return a !== void 0 && (await e.delete(l, String(a.id)), !0);
101
101
  }, k = (...t) => e(() => C(...t)), A = (...t) => e(() => T(...t)), j = (...t) => e(() => D(...t)), M = (...t) => e(() => S(...t)), N = (...t) => e(() => w(...t)), P = (...t) => e(() => E(...t)), F = (...t) => e(() => x(...t)), I = (...t) => e(() => O(...t)), L = (...t) => e(() => b(...t));
102
- //#endregion
103
102
  export { l as CMS_TEAM_INVITATIONS_TABLE, c as CMS_TEAM_TABLE, C as applyBlueprintTeam, k as applyBlueprintTeamEffect, d as cmsTeamInvitationsTable, u as cmsTeamTable, D as inviteToTeam, j as inviteToTeamEffect, T as invitedRole, A as invitedRoleEffect, S as planBlueprintTeam, M as planBlueprintTeamEffect, x as setReviewRequired, F as setReviewRequiredEffect, w as teamDefaultRole, N as teamDefaultRoleEffect, E as teamInvitations, P as teamInvitationsEffect, m as teamProblems, O as withdrawInvitation, I as withdrawInvitationEffect, b as workspaceReviewTypes, L as workspaceReviewTypesEffect };
package/dist/templates.js CHANGED
@@ -1,4 +1,4 @@
1
- //#region src/templates.ts
1
+ // src/templates.ts
2
2
  var e = (e) => Array.isArray(e) ? e.map((e) => typeof e == "object" && e ? String(e.componentId ?? "") : "") : [], t = (e, t) => {
3
3
  let n = e.templates, r = n === void 0 ? void 0 : t[n.field];
4
4
  if (n !== void 0 && typeof r == "string" && r !== "") return n.list.find((e) => e.id === r) ?? null;
@@ -80,7 +80,7 @@ var e = (e) => Array.isArray(e) ? e.map((e) => typeof e == "object" && e ? Strin
80
80
  let r = (t) => {
81
81
  throw Error(`defineContentType('${e}'): templates ${t}`);
82
82
  }, i = t[n.field];
83
- (i === void 0 || i.kind !== "string" || !i.isOptional) && r(`field '${n.field}' must be a declared optional string field.`);
83
+ i !== void 0 && i.kind === "string" && i.isOptional || r(`field '${n.field}' must be a declared optional string field.`);
84
84
  let a = t[n.components];
85
85
  (a === void 0 || a.kind !== "components") && r(`components '${n.components}' must be a declared Schema.Components field.`);
86
86
  let o = new Set((a?.components ?? []).map((e) => e.id)), s = /* @__PURE__ */ new Set();
@@ -102,5 +102,4 @@ var e = (e) => Array.isArray(e) ? e.map((e) => typeof e == "object" && e ? Strin
102
102
  e.maxDepth !== void 0 && (!Number.isInteger(e.maxDepth) || e.maxDepth < 1) && r(`'${e.id}' maxDepth must be a whole number from 1.`);
103
103
  }
104
104
  };
105
- //#endregion
106
105
  export { a as checkTemplates, t as templateOf, i as templateValues, n as templateViolations };
@@ -1,6 +1,6 @@
1
1
  import { newBlockId as e } from "./richDocument.js";
2
2
  import { inlineText as t, mergeInline as n, sliceInline as r } from "./richInline.js";
3
- //#region src/trackChanges.ts
3
+ // src/trackChanges.ts
4
4
  var i = (e, t) => e.map((e) => ({
5
5
  ...e,
6
6
  change: t
@@ -193,5 +193,4 @@ var i = (e, t) => e.map((e) => ({
193
193
  }
194
194
  return [...n.values()];
195
195
  };
196
- //#endregion
197
196
  export { o as blockHasChanges, s as documentHasChanges, y as pendingChanges, v as resolveChanges, p as trackChanges, l as trackInline };