@elytracms/core 0.0.6

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 (521) hide show
  1. package/LICENSE +21 -0
  2. package/dist/clipboard/build.d.ts +77 -0
  3. package/dist/clipboard/build.js +128 -0
  4. package/dist/clipboard/build.js.map +1 -0
  5. package/dist/clipboard/clipboard.d.ts +33 -0
  6. package/dist/clipboard/clipboard.js +45 -0
  7. package/dist/clipboard/clipboard.js.map +1 -0
  8. package/dist/clipboard/fragment.d.ts +112 -0
  9. package/dist/clipboard/fragment.js +79 -0
  10. package/dist/clipboard/fragment.js.map +1 -0
  11. package/dist/clipboard/html.d.ts +26 -0
  12. package/dist/clipboard/html.js +82 -0
  13. package/dist/clipboard/html.js.map +1 -0
  14. package/dist/clipboard/index.d.ts +15 -0
  15. package/dist/clipboard/index.js +16 -0
  16. package/dist/clipboard/index.js.map +1 -0
  17. package/dist/clipboard/references.d.ts +50 -0
  18. package/dist/clipboard/references.js +0 -0
  19. package/dist/clipboard/references.js.map +1 -0
  20. package/dist/clipboard/serialize.d.ts +69 -0
  21. package/dist/clipboard/serialize.js +130 -0
  22. package/dist/clipboard/serialize.js.map +1 -0
  23. package/dist/cms-core/collections.d.ts +82 -0
  24. package/dist/cms-core/collections.js +187 -0
  25. package/dist/cms-core/collections.js.map +1 -0
  26. package/dist/cms-core/documents.d.ts +71 -0
  27. package/dist/cms-core/documents.js +67 -0
  28. package/dist/cms-core/documents.js.map +1 -0
  29. package/dist/cms-core/envelopes.d.ts +80 -0
  30. package/dist/cms-core/envelopes.js +124 -0
  31. package/dist/cms-core/envelopes.js.map +1 -0
  32. package/dist/cms-core/fields.d.ts +220 -0
  33. package/dist/cms-core/fields.js +250 -0
  34. package/dist/cms-core/fields.js.map +1 -0
  35. package/dist/cms-core/fixtures.d.ts +92 -0
  36. package/dist/cms-core/fixtures.js +357 -0
  37. package/dist/cms-core/fixtures.js.map +1 -0
  38. package/dist/cms-core/hierarchy.d.ts +113 -0
  39. package/dist/cms-core/hierarchy.js +223 -0
  40. package/dist/cms-core/hierarchy.js.map +1 -0
  41. package/dist/cms-core/index.d.ts +25 -0
  42. package/dist/cms-core/index.js +26 -0
  43. package/dist/cms-core/index.js.map +1 -0
  44. package/dist/cms-core/infer.d.ts +103 -0
  45. package/dist/cms-core/infer.js +57 -0
  46. package/dist/cms-core/infer.js.map +1 -0
  47. package/dist/cms-core/issues.d.ts +92 -0
  48. package/dist/cms-core/issues.js +74 -0
  49. package/dist/cms-core/issues.js.map +1 -0
  50. package/dist/cms-core/json-schema.d.ts +25 -0
  51. package/dist/cms-core/json-schema.js +110 -0
  52. package/dist/cms-core/json-schema.js.map +1 -0
  53. package/dist/cms-core/localization.d.ts +51 -0
  54. package/dist/cms-core/localization.js +89 -0
  55. package/dist/cms-core/localization.js.map +1 -0
  56. package/dist/cms-core/routes.d.ts +76 -0
  57. package/dist/cms-core/routes.js +220 -0
  58. package/dist/cms-core/routes.js.map +1 -0
  59. package/dist/cms-core/self-type.d.ts +41 -0
  60. package/dist/cms-core/self-type.js +191 -0
  61. package/dist/cms-core/self-type.js.map +1 -0
  62. package/dist/cms-core/url-for-document.d.ts +39 -0
  63. package/dist/cms-core/url-for-document.js +138 -0
  64. package/dist/cms-core/url-for-document.js.map +1 -0
  65. package/dist/cms-core/validate-document.d.ts +121 -0
  66. package/dist/cms-core/validate-document.js +871 -0
  67. package/dist/cms-core/validate-document.js.map +1 -0
  68. package/dist/cms-core/versions.d.ts +75 -0
  69. package/dist/cms-core/versions.js +97 -0
  70. package/dist/cms-core/versions.js.map +1 -0
  71. package/dist/collaboration/approval.d.ts +68 -0
  72. package/dist/collaboration/approval.js +104 -0
  73. package/dist/collaboration/approval.js.map +1 -0
  74. package/dist/collaboration/collaboration.d.ts +49 -0
  75. package/dist/collaboration/collaboration.js +56 -0
  76. package/dist/collaboration/collaboration.js.map +1 -0
  77. package/dist/collaboration/comments.d.ts +72 -0
  78. package/dist/collaboration/comments.js +118 -0
  79. package/dist/collaboration/comments.js.map +1 -0
  80. package/dist/collaboration/core.d.ts +25 -0
  81. package/dist/collaboration/core.js +26 -0
  82. package/dist/collaboration/core.js.map +1 -0
  83. package/dist/collaboration/index.d.ts +14 -0
  84. package/dist/collaboration/index.js +15 -0
  85. package/dist/collaboration/index.js.map +1 -0
  86. package/dist/collaboration/presence.d.ts +62 -0
  87. package/dist/collaboration/presence.js +85 -0
  88. package/dist/collaboration/presence.js.map +1 -0
  89. package/dist/collaboration/publishing.d.ts +60 -0
  90. package/dist/collaboration/publishing.js +93 -0
  91. package/dist/collaboration/publishing.js.map +1 -0
  92. package/dist/collaboration/versions.d.ts +52 -0
  93. package/dist/collaboration/versions.js +81 -0
  94. package/dist/collaboration/versions.js.map +1 -0
  95. package/dist/component-registry/index.d.ts +3 -0
  96. package/dist/component-registry/index.js +4 -0
  97. package/dist/component-registry/index.js.map +1 -0
  98. package/dist/component-registry/issues.d.ts +6 -0
  99. package/dist/component-registry/issues.js +2 -0
  100. package/dist/component-registry/issues.js.map +1 -0
  101. package/dist/component-registry/manifest.d.ts +164 -0
  102. package/dist/component-registry/manifest.js +129 -0
  103. package/dist/component-registry/manifest.js.map +1 -0
  104. package/dist/component-registry/registry.d.ts +33 -0
  105. package/dist/component-registry/registry.js +90 -0
  106. package/dist/component-registry/registry.js.map +1 -0
  107. package/dist/content/__fixtures__/filterable-collections.d.ts +14 -0
  108. package/dist/content/__fixtures__/filterable-collections.js +15 -0
  109. package/dist/content/__fixtures__/filterable-collections.js.map +1 -0
  110. package/dist/content/__fixtures__/sample-accessor-types.d.ts +56 -0
  111. package/dist/content/__fixtures__/sample-accessor-types.js +5 -0
  112. package/dist/content/__fixtures__/sample-accessor-types.js.map +1 -0
  113. package/dist/content/__fixtures__/sample-delivery-types.d.ts +122 -0
  114. package/dist/content/__fixtures__/sample-delivery-types.js +5 -0
  115. package/dist/content/__fixtures__/sample-delivery-types.js.map +1 -0
  116. package/dist/content/assets.d.ts +53 -0
  117. package/dist/content/assets.js +38 -0
  118. package/dist/content/assets.js.map +1 -0
  119. package/dist/content/binding-sources.d.ts +53 -0
  120. package/dist/content/binding-sources.js +73 -0
  121. package/dist/content/binding-sources.js.map +1 -0
  122. package/dist/content/client.d.ts +90 -0
  123. package/dist/content/client.js +383 -0
  124. package/dist/content/client.js.map +1 -0
  125. package/dist/content/codegen.d.ts +54 -0
  126. package/dist/content/codegen.js +305 -0
  127. package/dist/content/codegen.js.map +1 -0
  128. package/dist/content/context.d.ts +38 -0
  129. package/dist/content/context.js +21 -0
  130. package/dist/content/context.js.map +1 -0
  131. package/dist/content/cursor.d.ts +33 -0
  132. package/dist/content/cursor.js +104 -0
  133. package/dist/content/cursor.js.map +1 -0
  134. package/dist/content/index.d.ts +28 -0
  135. package/dist/content/index.js +29 -0
  136. package/dist/content/index.js.map +1 -0
  137. package/dist/content/locale.d.ts +30 -0
  138. package/dist/content/locale.js +26 -0
  139. package/dist/content/locale.js.map +1 -0
  140. package/dist/content/perspective.d.ts +29 -0
  141. package/dist/content/perspective.js +31 -0
  142. package/dist/content/perspective.js.map +1 -0
  143. package/dist/content/populate.d.ts +25 -0
  144. package/dist/content/populate.js +22 -0
  145. package/dist/content/populate.js.map +1 -0
  146. package/dist/content/query.d.ts +122 -0
  147. package/dist/content/query.js +257 -0
  148. package/dist/content/query.js.map +1 -0
  149. package/dist/content/raw.d.ts +13 -0
  150. package/dist/content/raw.js +14 -0
  151. package/dist/content/raw.js.map +1 -0
  152. package/dist/content/resolve.d.ts +97 -0
  153. package/dist/content/resolve.js +261 -0
  154. package/dist/content/resolve.js.map +1 -0
  155. package/dist/content/serialize.d.ts +30 -0
  156. package/dist/content/serialize.js +57 -0
  157. package/dist/content/serialize.js.map +1 -0
  158. package/dist/content/tags.d.ts +54 -0
  159. package/dist/content/tags.js +40 -0
  160. package/dist/content/tags.js.map +1 -0
  161. package/dist/data-binding/fixtures.d.ts +20 -0
  162. package/dist/data-binding/fixtures.js +47 -0
  163. package/dist/data-binding/fixtures.js.map +1 -0
  164. package/dist/data-binding/index.d.ts +14 -0
  165. package/dist/data-binding/index.js +15 -0
  166. package/dist/data-binding/index.js.map +1 -0
  167. package/dist/data-binding/issues.d.ts +45 -0
  168. package/dist/data-binding/issues.js +46 -0
  169. package/dist/data-binding/issues.js.map +1 -0
  170. package/dist/data-binding/resolve.d.ts +87 -0
  171. package/dist/data-binding/resolve.js +204 -0
  172. package/dist/data-binding/resolve.js.map +1 -0
  173. package/dist/data-binding/sample.d.ts +21 -0
  174. package/dist/data-binding/sample.js +23 -0
  175. package/dist/data-binding/sample.js.map +1 -0
  176. package/dist/data-binding/sources.d.ts +225 -0
  177. package/dist/data-binding/sources.js +154 -0
  178. package/dist/data-binding/sources.js.map +1 -0
  179. package/dist/data-binding/tokens.d.ts +62 -0
  180. package/dist/data-binding/tokens.js +150 -0
  181. package/dist/data-binding/tokens.js.map +1 -0
  182. package/dist/design-tokens/css.d.ts +34 -0
  183. package/dist/design-tokens/css.js +51 -0
  184. package/dist/design-tokens/css.js.map +1 -0
  185. package/dist/design-tokens/index.d.ts +10 -0
  186. package/dist/design-tokens/index.js +11 -0
  187. package/dist/design-tokens/index.js.map +1 -0
  188. package/dist/design-tokens/style-guide.d.ts +30 -0
  189. package/dist/design-tokens/style-guide.js +31 -0
  190. package/dist/design-tokens/style-guide.js.map +1 -0
  191. package/dist/design-tokens/tokens.d.ts +89 -0
  192. package/dist/design-tokens/tokens.js +112 -0
  193. package/dist/design-tokens/tokens.js.map +1 -0
  194. package/dist/export-sync/builder-source.d.ts +85 -0
  195. package/dist/export-sync/builder-source.js +124 -0
  196. package/dist/export-sync/builder-source.js.map +1 -0
  197. package/dist/export-sync/check.d.ts +61 -0
  198. package/dist/export-sync/check.js +126 -0
  199. package/dist/export-sync/check.js.map +1 -0
  200. package/dist/export-sync/cli.d.ts +89 -0
  201. package/dist/export-sync/cli.js +323 -0
  202. package/dist/export-sync/cli.js.map +1 -0
  203. package/dist/export-sync/core.d.ts +58 -0
  204. package/dist/export-sync/core.js +41 -0
  205. package/dist/export-sync/core.js.map +1 -0
  206. package/dist/export-sync/eject.d.ts +28 -0
  207. package/dist/export-sync/eject.js +21 -0
  208. package/dist/export-sync/eject.js.map +1 -0
  209. package/dist/export-sync/fixtures.d.ts +25 -0
  210. package/dist/export-sync/fixtures.js +87 -0
  211. package/dist/export-sync/fixtures.js.map +1 -0
  212. package/dist/export-sync/generate.d.ts +7 -0
  213. package/dist/export-sync/generate.js +505 -0
  214. package/dist/export-sync/generate.js.map +1 -0
  215. package/dist/export-sync/index.d.ts +37 -0
  216. package/dist/export-sync/index.js +39 -0
  217. package/dist/export-sync/index.js.map +1 -0
  218. package/dist/export-sync/init.d.ts +123 -0
  219. package/dist/export-sync/init.js +234 -0
  220. package/dist/export-sync/init.js.map +1 -0
  221. package/dist/export-sync/manifest-host.d.ts +48 -0
  222. package/dist/export-sync/manifest-host.js +73 -0
  223. package/dist/export-sync/manifest-host.js.map +1 -0
  224. package/dist/export-sync/node.d.ts +20 -0
  225. package/dist/export-sync/node.js +101 -0
  226. package/dist/export-sync/node.js.map +1 -0
  227. package/dist/export-sync/push.d.ts +76 -0
  228. package/dist/export-sync/push.js +197 -0
  229. package/dist/export-sync/push.js.map +1 -0
  230. package/dist/export-sync/registry-sync-client.d.ts +59 -0
  231. package/dist/export-sync/registry-sync-client.js +97 -0
  232. package/dist/export-sync/registry-sync-client.js.map +1 -0
  233. package/dist/export-sync/sync.d.ts +47 -0
  234. package/dist/export-sync/sync.js +47 -0
  235. package/dist/export-sync/sync.js.map +1 -0
  236. package/dist/export-sync/typegen.d.ts +40 -0
  237. package/dist/export-sync/typegen.js +45 -0
  238. package/dist/export-sync/typegen.js.map +1 -0
  239. package/dist/export-sync/validate.d.ts +19 -0
  240. package/dist/export-sync/validate.js +102 -0
  241. package/dist/export-sync/validate.js.map +1 -0
  242. package/dist/export-sync/watch.d.ts +66 -0
  243. package/dist/export-sync/watch.js +70 -0
  244. package/dist/export-sync/watch.js.map +1 -0
  245. package/dist/operations/assets.d.ts +198 -0
  246. package/dist/operations/assets.js +75 -0
  247. package/dist/operations/assets.js.map +1 -0
  248. package/dist/operations/authorization.d.ts +49 -0
  249. package/dist/operations/authorization.js +128 -0
  250. package/dist/operations/authorization.js.map +1 -0
  251. package/dist/operations/changesets.d.ts +160 -0
  252. package/dist/operations/changesets.js +442 -0
  253. package/dist/operations/changesets.js.map +1 -0
  254. package/dist/operations/client.d.ts +49 -0
  255. package/dist/operations/client.js +57 -0
  256. package/dist/operations/client.js.map +1 -0
  257. package/dist/operations/core.d.ts +238 -0
  258. package/dist/operations/core.js +269 -0
  259. package/dist/operations/core.js.map +1 -0
  260. package/dist/operations/documents.d.ts +432 -0
  261. package/dist/operations/documents.js +344 -0
  262. package/dist/operations/documents.js.map +1 -0
  263. package/dist/operations/graph.d.ts +138 -0
  264. package/dist/operations/graph.js +78 -0
  265. package/dist/operations/graph.js.map +1 -0
  266. package/dist/operations/index.d.ts +19 -0
  267. package/dist/operations/index.js +20 -0
  268. package/dist/operations/index.js.map +1 -0
  269. package/dist/operations/members.d.ts +87 -0
  270. package/dist/operations/members.js +56 -0
  271. package/dist/operations/members.js.map +1 -0
  272. package/dist/operations/publishing.d.ts +89 -0
  273. package/dist/operations/publishing.js +57 -0
  274. package/dist/operations/publishing.js.map +1 -0
  275. package/dist/operations/references.d.ts +222 -0
  276. package/dist/operations/references.js +177 -0
  277. package/dist/operations/references.js.map +1 -0
  278. package/dist/operations/schema.d.ts +413 -0
  279. package/dist/operations/schema.js +138 -0
  280. package/dist/operations/schema.js.map +1 -0
  281. package/dist/operations/tokens.d.ts +79 -0
  282. package/dist/operations/tokens.js +102 -0
  283. package/dist/operations/tokens.js.map +1 -0
  284. package/dist/persistence/adapter.d.ts +79 -0
  285. package/dist/persistence/adapter.js +55 -0
  286. package/dist/persistence/adapter.js.map +1 -0
  287. package/dist/persistence/assets.d.ts +120 -0
  288. package/dist/persistence/assets.js +141 -0
  289. package/dist/persistence/assets.js.map +1 -0
  290. package/dist/persistence/backend-validation.d.ts +43 -0
  291. package/dist/persistence/backend-validation.js +57 -0
  292. package/dist/persistence/backend-validation.js.map +1 -0
  293. package/dist/persistence/cli-tokens.d.ts +50 -0
  294. package/dist/persistence/cli-tokens.js +66 -0
  295. package/dist/persistence/cli-tokens.js.map +1 -0
  296. package/dist/persistence/cms.d.ts +148 -0
  297. package/dist/persistence/cms.js +232 -0
  298. package/dist/persistence/cms.js.map +1 -0
  299. package/dist/persistence/contract-scenarios.d.ts +73 -0
  300. package/dist/persistence/contract-scenarios.js +496 -0
  301. package/dist/persistence/contract-scenarios.js.map +1 -0
  302. package/dist/persistence/core.d.ts +96 -0
  303. package/dist/persistence/core.js +110 -0
  304. package/dist/persistence/core.js.map +1 -0
  305. package/dist/persistence/graph.d.ts +61 -0
  306. package/dist/persistence/graph.js +98 -0
  307. package/dist/persistence/graph.js.map +1 -0
  308. package/dist/persistence/index.d.ts +22 -0
  309. package/dist/persistence/index.js +23 -0
  310. package/dist/persistence/index.js.map +1 -0
  311. package/dist/persistence/members.d.ts +70 -0
  312. package/dist/persistence/members.js +0 -0
  313. package/dist/persistence/members.js.map +1 -0
  314. package/dist/persistence/publishing.d.ts +59 -0
  315. package/dist/persistence/publishing.js +95 -0
  316. package/dist/persistence/publishing.js.map +1 -0
  317. package/dist/persistence/reference-extraction.d.ts +44 -0
  318. package/dist/persistence/reference-extraction.js +204 -0
  319. package/dist/persistence/reference-extraction.js.map +1 -0
  320. package/dist/persistence/reference-indexing.d.ts +68 -0
  321. package/dist/persistence/reference-indexing.js +112 -0
  322. package/dist/persistence/reference-indexing.js.map +1 -0
  323. package/dist/persistence/references.d.ts +257 -0
  324. package/dist/persistence/references.js +0 -0
  325. package/dist/persistence/references.js.map +1 -0
  326. package/dist/persistence/seed.d.ts +55 -0
  327. package/dist/persistence/seed.js +102 -0
  328. package/dist/persistence/seed.js.map +1 -0
  329. package/dist/persistence/self-maintaining-adapter.d.ts +41 -0
  330. package/dist/persistence/self-maintaining-adapter.js +79 -0
  331. package/dist/persistence/self-maintaining-adapter.js.map +1 -0
  332. package/dist/plugins/asset-storage.d.ts +76 -0
  333. package/dist/plugins/asset-storage.js +104 -0
  334. package/dist/plugins/asset-storage.js.map +1 -0
  335. package/dist/plugins/component-package.d.ts +54 -0
  336. package/dist/plugins/component-package.js +92 -0
  337. package/dist/plugins/component-package.js.map +1 -0
  338. package/dist/plugins/data-sources.d.ts +78 -0
  339. package/dist/plugins/data-sources.js +99 -0
  340. package/dist/plugins/data-sources.js.map +1 -0
  341. package/dist/plugins/examples.d.ts +47 -0
  342. package/dist/plugins/examples.js +205 -0
  343. package/dist/plugins/examples.js.map +1 -0
  344. package/dist/plugins/export-targets.d.ts +47 -0
  345. package/dist/plugins/export-targets.js +78 -0
  346. package/dist/plugins/export-targets.js.map +1 -0
  347. package/dist/plugins/field-types.d.ts +86 -0
  348. package/dist/plugins/field-types.js +93 -0
  349. package/dist/plugins/field-types.js.map +1 -0
  350. package/dist/plugins/hooks.d.ts +60 -0
  351. package/dist/plugins/hooks.js +94 -0
  352. package/dist/plugins/hooks.js.map +1 -0
  353. package/dist/plugins/index.d.ts +27 -0
  354. package/dist/plugins/index.js +28 -0
  355. package/dist/plugins/index.js.map +1 -0
  356. package/dist/plugins/marketplace.d.ts +90 -0
  357. package/dist/plugins/marketplace.js +110 -0
  358. package/dist/plugins/marketplace.js.map +1 -0
  359. package/dist/plugins/plugin.d.ts +107 -0
  360. package/dist/plugins/plugin.js +122 -0
  361. package/dist/plugins/plugin.js.map +1 -0
  362. package/dist/plugins/templates.d.ts +66 -0
  363. package/dist/plugins/templates.js +74 -0
  364. package/dist/plugins/templates.js.map +1 -0
  365. package/dist/project-graph/binding.d.ts +68 -0
  366. package/dist/project-graph/binding.js +39 -0
  367. package/dist/project-graph/binding.js.map +1 -0
  368. package/dist/project-graph/container.d.ts +126 -0
  369. package/dist/project-graph/container.js +221 -0
  370. package/dist/project-graph/container.js.map +1 -0
  371. package/dist/project-graph/edit.d.ts +66 -0
  372. package/dist/project-graph/edit.js +201 -0
  373. package/dist/project-graph/edit.js.map +1 -0
  374. package/dist/project-graph/fixtures.d.ts +51 -0
  375. package/dist/project-graph/fixtures.js +224 -0
  376. package/dist/project-graph/fixtures.js.map +1 -0
  377. package/dist/project-graph/ids.d.ts +17 -0
  378. package/dist/project-graph/ids.js +19 -0
  379. package/dist/project-graph/ids.js.map +1 -0
  380. package/dist/project-graph/index.d.ts +12 -0
  381. package/dist/project-graph/index.js +13 -0
  382. package/dist/project-graph/index.js.map +1 -0
  383. package/dist/project-graph/issues.d.ts +61 -0
  384. package/dist/project-graph/issues.js +44 -0
  385. package/dist/project-graph/issues.js.map +1 -0
  386. package/dist/project-graph/json.d.ts +6 -0
  387. package/dist/project-graph/json.js +10 -0
  388. package/dist/project-graph/json.js.map +1 -0
  389. package/dist/project-graph/node.d.ts +48 -0
  390. package/dist/project-graph/node.js +42 -0
  391. package/dist/project-graph/node.js.map +1 -0
  392. package/dist/project-graph/normalize.d.ts +17 -0
  393. package/dist/project-graph/normalize.js +110 -0
  394. package/dist/project-graph/normalize.js.map +1 -0
  395. package/dist/project-graph/serialize.d.ts +36 -0
  396. package/dist/project-graph/serialize.js +51 -0
  397. package/dist/project-graph/serialize.js.map +1 -0
  398. package/dist/project-graph/structure.d.ts +40 -0
  399. package/dist/project-graph/structure.js +36 -0
  400. package/dist/project-graph/structure.js.map +1 -0
  401. package/dist/project-graph/validate.d.ts +84 -0
  402. package/dist/project-graph/validate.js +158 -0
  403. package/dist/project-graph/validate.js.map +1 -0
  404. package/dist/rich-text/adapter.d.ts +43 -0
  405. package/dist/rich-text/adapter.js +24 -0
  406. package/dist/rich-text/adapter.js.map +1 -0
  407. package/dist/rich-text/dom-editor.d.ts +101 -0
  408. package/dist/rich-text/dom-editor.js +482 -0
  409. package/dist/rich-text/dom-editor.js.map +1 -0
  410. package/dist/rich-text/embed.d.ts +70 -0
  411. package/dist/rich-text/embed.js +70 -0
  412. package/dist/rich-text/embed.js.map +1 -0
  413. package/dist/rich-text/fixtures.d.ts +25 -0
  414. package/dist/rich-text/fixtures.js +115 -0
  415. package/dist/rich-text/fixtures.js.map +1 -0
  416. package/dist/rich-text/html.d.ts +5 -0
  417. package/dist/rich-text/html.js +309 -0
  418. package/dist/rich-text/html.js.map +1 -0
  419. package/dist/rich-text/index.d.ts +19 -0
  420. package/dist/rich-text/index.js +20 -0
  421. package/dist/rich-text/index.js.map +1 -0
  422. package/dist/rich-text/markdown.d.ts +7 -0
  423. package/dist/rich-text/markdown.js +235 -0
  424. package/dist/rich-text/markdown.js.map +1 -0
  425. package/dist/rich-text/portable-text.d.ts +50 -0
  426. package/dist/rich-text/portable-text.js +223 -0
  427. package/dist/rich-text/portable-text.js.map +1 -0
  428. package/dist/rich-text/registry.d.ts +48 -0
  429. package/dist/rich-text/registry.js +16 -0
  430. package/dist/rich-text/registry.js.map +1 -0
  431. package/dist/rich-text/render.d.ts +69 -0
  432. package/dist/rich-text/render.js +205 -0
  433. package/dist/rich-text/render.js.map +1 -0
  434. package/dist/rich-text/schema.d.ts +86 -0
  435. package/dist/rich-text/schema.js +80 -0
  436. package/dist/rich-text/schema.js.map +1 -0
  437. package/dist/rich-text/test-support.d.ts +7 -0
  438. package/dist/rich-text/test-support.js +8 -0
  439. package/dist/rich-text/test-support.js.map +1 -0
  440. package/dist/runtime-renderer/client.d.ts +14 -0
  441. package/dist/runtime-renderer/client.js +15 -0
  442. package/dist/runtime-renderer/client.js.map +1 -0
  443. package/dist/runtime-renderer/condition.d.ts +8 -0
  444. package/dist/runtime-renderer/condition.js +48 -0
  445. package/dist/runtime-renderer/condition.js.map +1 -0
  446. package/dist/runtime-renderer/content-client.d.ts +62 -0
  447. package/dist/runtime-renderer/content-client.js +37 -0
  448. package/dist/runtime-renderer/content-client.js.map +1 -0
  449. package/dist/runtime-renderer/context.d.ts +185 -0
  450. package/dist/runtime-renderer/context.js +7 -0
  451. package/dist/runtime-renderer/context.js.map +1 -0
  452. package/dist/runtime-renderer/fallback.d.ts +39 -0
  453. package/dist/runtime-renderer/fallback.js +45 -0
  454. package/dist/runtime-renderer/fallback.js.map +1 -0
  455. package/dist/runtime-renderer/index.d.ts +13 -0
  456. package/dist/runtime-renderer/index.js +13 -0
  457. package/dist/runtime-renderer/index.js.map +1 -0
  458. package/dist/runtime-renderer/primitives.d.ts +85 -0
  459. package/dist/runtime-renderer/primitives.js +442 -0
  460. package/dist/runtime-renderer/primitives.js.map +1 -0
  461. package/dist/runtime-renderer/render.d.ts +138 -0
  462. package/dist/runtime-renderer/render.js +825 -0
  463. package/dist/runtime-renderer/render.js.map +1 -0
  464. package/dist/runtime-renderer/rich-text.d.ts +26 -0
  465. package/dist/runtime-renderer/rich-text.js +113 -0
  466. package/dist/runtime-renderer/rich-text.js.map +1 -0
  467. package/dist/starter-kits/index.d.ts +13 -0
  468. package/dist/starter-kits/index.js +14 -0
  469. package/dist/starter-kits/index.js.map +1 -0
  470. package/dist/starter-kits/instantiate.d.ts +29 -0
  471. package/dist/starter-kits/instantiate.js +24 -0
  472. package/dist/starter-kits/instantiate.js.map +1 -0
  473. package/dist/starter-kits/kit.d.ts +61 -0
  474. package/dist/starter-kits/kit.js +37 -0
  475. package/dist/starter-kits/kit.js.map +1 -0
  476. package/dist/starter-kits/kits.d.ts +7 -0
  477. package/dist/starter-kits/kits.js +201 -0
  478. package/dist/starter-kits/kits.js.map +1 -0
  479. package/dist/starter-kits/manifests.d.ts +7 -0
  480. package/dist/starter-kits/manifests.js +111 -0
  481. package/dist/starter-kits/manifests.js.map +1 -0
  482. package/dist/starter-kits/upgrade.d.ts +39 -0
  483. package/dist/starter-kits/upgrade.js +54 -0
  484. package/dist/starter-kits/upgrade.js.map +1 -0
  485. package/dist/starter-kits/validate.d.ts +16 -0
  486. package/dist/starter-kits/validate.js +77 -0
  487. package/dist/starter-kits/validate.js.map +1 -0
  488. package/dist/studio-core/context.d.ts +27 -0
  489. package/dist/studio-core/context.js +44 -0
  490. package/dist/studio-core/context.js.map +1 -0
  491. package/dist/studio-core/errors.d.ts +58 -0
  492. package/dist/studio-core/errors.js +74 -0
  493. package/dist/studio-core/errors.js.map +1 -0
  494. package/dist/studio-core/fixtures.d.ts +18 -0
  495. package/dist/studio-core/fixtures.js +83 -0
  496. package/dist/studio-core/fixtures.js.map +1 -0
  497. package/dist/studio-core/ids.d.ts +22 -0
  498. package/dist/studio-core/ids.js +33 -0
  499. package/dist/studio-core/ids.js.map +1 -0
  500. package/dist/studio-core/index.d.ts +11 -0
  501. package/dist/studio-core/index.js +12 -0
  502. package/dist/studio-core/index.js.map +1 -0
  503. package/dist/studio-core/issues.d.ts +50 -0
  504. package/dist/studio-core/issues.js +33 -0
  505. package/dist/studio-core/issues.js.map +1 -0
  506. package/dist/studio-core/metadata.d.ts +109 -0
  507. package/dist/studio-core/metadata.js +74 -0
  508. package/dist/studio-core/metadata.js.map +1 -0
  509. package/dist/studio-core/repository.d.ts +73 -0
  510. package/dist/studio-core/repository.js +202 -0
  511. package/dist/studio-core/repository.js.map +1 -0
  512. package/dist/studio-core/sections.d.ts +73 -0
  513. package/dist/studio-core/sections.js +68 -0
  514. package/dist/studio-core/sections.js.map +1 -0
  515. package/dist/studio-core/validate.d.ts +15 -0
  516. package/dist/studio-core/validate.js +119 -0
  517. package/dist/studio-core/validate.js.map +1 -0
  518. package/dist/studio-core/workspace-config.d.ts +587 -0
  519. package/dist/studio-core/workspace-config.js +434 -0
  520. package/dist/studio-core/workspace-config.js.map +1 -0
  521. package/package.json +104 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/export-sync/sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { CollectionDef } from '@elytracms/core/cms-core';
2
+ import type { ExportMode } from './core';
3
+ import type { ExportSource, FileIO } from './sync';
4
+ /**
5
+ * `builder typegen` (EC-148, vision AD-4): emit the per-collection delivery-shape types
6
+ * (EC-142) and accessor typings (EC-143) into the host repo as ONE committed, reviewable
7
+ * TypeScript module — `article.author.name` just typechecks in the user's own app.
8
+ *
9
+ * Output convention: a single file, by default {@link DEFAULT_TYPEGEN_PATH} at the repo
10
+ * root (override with `--out <path>`). One file keeps the commit/review/drift story
11
+ * trivial — `builder check` byte-compares it against an in-memory regeneration, so the
12
+ * file must be deterministic: the `@elytracms/core/content` codegen is used verbatim (sorted
13
+ * collections, no timestamps), and the banner depends only on the output path.
14
+ */
15
+ /** Default output path for `builder typegen`, relative to the host repo root. */
16
+ export declare const DEFAULT_TYPEGEN_PATH = "elytra-types.generated.ts";
17
+ /** The namespaced banner the generated types module carries (cf. `generatedBanner` for eject). */
18
+ export declare function typegenBanner(path: string): string;
19
+ /**
20
+ * The full contents of the generated types module: banner + EC-142 delivery types +
21
+ * EC-143 accessor types, verbatim from the `@elytracms/core/content` codegen. Deterministic:
22
+ * byte-identical output for identical collection schemas and output path.
23
+ */
24
+ export declare function generateTypesFile(collections: readonly CollectionDef[], path?: string): string;
25
+ export interface TypegenOptions {
26
+ /** Which content state's schemas to generate from (default flows from the CLI: published). */
27
+ mode: ExportMode;
28
+ /** Output path for the generated module (default: {@link DEFAULT_TYPEGEN_PATH}). */
29
+ out?: string;
30
+ }
31
+ export interface TypegenResult {
32
+ mode: ExportMode;
33
+ out: string;
34
+ contents: string;
35
+ /** False when the file on disk was already byte-identical (nothing to commit). */
36
+ changed: boolean;
37
+ ok: boolean;
38
+ }
39
+ /** Run a typegen. Loads the collection schemas from the source and writes the module. */
40
+ export declare function runTypegen(source: ExportSource, io: FileIO, options: TypegenOptions): Promise<TypegenResult>;
@@ -0,0 +1,45 @@
1
+ import { generateAccessorTypes, generateDeliveryTypes } from '@elytracms/core/content';
2
+ /**
3
+ * `builder typegen` (EC-148, vision AD-4): emit the per-collection delivery-shape types
4
+ * (EC-142) and accessor typings (EC-143) into the host repo as ONE committed, reviewable
5
+ * TypeScript module — `article.author.name` just typechecks in the user's own app.
6
+ *
7
+ * Output convention: a single file, by default {@link DEFAULT_TYPEGEN_PATH} at the repo
8
+ * root (override with `--out <path>`). One file keeps the commit/review/drift story
9
+ * trivial — `builder check` byte-compares it against an in-memory regeneration, so the
10
+ * file must be deterministic: the `@elytracms/core/content` codegen is used verbatim (sorted
11
+ * collections, no timestamps), and the banner depends only on the output path.
12
+ */
13
+ /** Default output path for `builder typegen`, relative to the host repo root. */
14
+ export const DEFAULT_TYPEGEN_PATH = 'elytra-types.generated.ts';
15
+ /** The namespaced banner the generated types module carries (cf. `generatedBanner` for eject). */
16
+ export function typegenBanner(path) {
17
+ return `/* Generated by \`builder typegen\` (@elytracms/export-sync) — ${path}.
18
+ * Delivery-shape + accessor types for this project's collections (vision AD-4).
19
+ * Do not edit by hand — re-run \`builder typegen\` after schema changes;
20
+ * \`builder check\` fails CI while this file is stale. */`;
21
+ }
22
+ /**
23
+ * The full contents of the generated types module: banner + EC-142 delivery types +
24
+ * EC-143 accessor types, verbatim from the `@elytracms/core/content` codegen. Deterministic:
25
+ * byte-identical output for identical collection schemas and output path.
26
+ */
27
+ export function generateTypesFile(collections, path = DEFAULT_TYPEGEN_PATH) {
28
+ const sections = [
29
+ typegenBanner(path),
30
+ generateDeliveryTypes(collections).trimEnd(),
31
+ generateAccessorTypes(collections).trimEnd(),
32
+ ];
33
+ return `${sections.join('\n\n')}\n`;
34
+ }
35
+ /** Run a typegen. Loads the collection schemas from the source and writes the module. */
36
+ export async function runTypegen(source, io, options) {
37
+ const out = options.out ?? DEFAULT_TYPEGEN_PATH;
38
+ const input = await source.loadInput(options.mode);
39
+ const contents = generateTypesFile(input.collections, out);
40
+ const changed = io.read(out) !== contents;
41
+ io.write(out, contents);
42
+ io.log(`Typegen (${options.mode}): wrote ${out} — ${input.collections.length} collection(s)${changed ? '' : ', unchanged'}.`);
43
+ return { mode: options.mode, out, contents, changed, ok: true };
44
+ }
45
+ //# sourceMappingURL=typegen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typegen.js","sourceRoot":"","sources":["../../src/export-sync/typegen.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAItF;;;;;;;;;;GAUG;AAEH,iFAAiF;AACjF,MAAM,CAAC,MAAM,oBAAoB,GAAG,2BAA2B,CAAA;AAE/D,kGAAkG;AAClG,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,kEAAkE,IAAI;;;2DAGpB,CAAA;AAC3D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,WAAqC,EACrC,OAAe,oBAAoB;IAEnC,MAAM,QAAQ,GAAG;QACf,aAAa,CAAC,IAAI,CAAC;QACnB,qBAAqB,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE;QAC5C,qBAAqB,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE;KAC7C,CAAA;IACD,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA;AACrC,CAAC;AAkBD,yFAAyF;AACzF,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAoB,EACpB,EAAU,EACV,OAAuB;IAEvB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,oBAAoB,CAAA;IAC/C,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;IAC1D,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAA;IACzC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IACvB,EAAE,CAAC,GAAG,CACJ,YAAY,OAAO,CAAC,IAAI,YAAY,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,MAAM,iBAAiB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,GAAG,CACtH,CAAA;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;AACjE,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { ExportInput } from './core';
2
+ /**
3
+ * Pre-build / pre-export validation (EC-111). Reuses the SAME canonical validators that guard
4
+ * authoring — graph validation (missing components, invalid props, broken bindings, missing
5
+ * slots), route conflicts, redirect loops — plus export-specific checks (schema version, unknown
6
+ * locales). Returns structured issues; never throws. CI fails the build when any `error` exists.
7
+ */
8
+ export type ExportIssueCode = 'schema-version' | 'graph' | 'route' | 'redirect' | 'locale' | 'source';
9
+ export interface ExportIssue {
10
+ code: ExportIssueCode;
11
+ severity: 'error' | 'warning';
12
+ message: string;
13
+ /** Optional locator (node id, route id, etc.). */
14
+ ref?: string;
15
+ }
16
+ /** Validate an {@link ExportInput} prior to generation. */
17
+ export declare function validateExport(input: ExportInput): ExportIssue[];
18
+ /** True when an export is safe to build (no error-severity issues). */
19
+ export declare function isExportable(issues: ExportIssue[]): boolean;
@@ -0,0 +1,102 @@
1
+ import { ComponentRegistry } from '@elytracms/core/component-registry';
2
+ import { createRouter, isKnownLocale } from '@elytracms/core/cms-core';
3
+ import { parseDataSource } from '@elytracms/core/data-binding';
4
+ import { PROJECT_GRAPH_SCHEMA_VERSION, validateProjectGraph } from '@elytracms/core/project-graph';
5
+ /** Validate an {@link ExportInput} prior to generation. */
6
+ export function validateExport(input) {
7
+ const issues = [];
8
+ // 1. Schema version compatibility (EC-111 "incompatible schema versions").
9
+ if (input.graph.schemaVersion !== PROJECT_GRAPH_SCHEMA_VERSION) {
10
+ issues.push({
11
+ code: 'schema-version',
12
+ severity: 'error',
13
+ message: `Graph schema version ${input.graph.schemaVersion} is incompatible with the export toolchain (expects ${PROJECT_GRAPH_SCHEMA_VERSION}). Upgrade the project before exporting.`,
14
+ });
15
+ }
16
+ // 2. Manifest registry issues — duplicate or non-namespaced component ids (EC-111 "invalid manifests").
17
+ const registry = new ComponentRegistry(input.manifests);
18
+ for (const issue of registry.issues) {
19
+ issues.push({
20
+ code: 'graph',
21
+ severity: 'error',
22
+ message: issue.message,
23
+ ...(issue.componentId ? { ref: issue.componentId } : {}),
24
+ });
25
+ }
26
+ // 3. Graph validation — missing components, invalid props, broken bindings, missing slots.
27
+ // Build known-source ids defensively: a malformed source is a structured issue, never a throw.
28
+ const knownSourceIds = new Set();
29
+ for (const source of input.sources) {
30
+ const parsed = parseDataSource(source);
31
+ if (parsed.success) {
32
+ knownSourceIds.add(parsed.data.id);
33
+ }
34
+ else {
35
+ issues.push({
36
+ code: 'source',
37
+ severity: 'error',
38
+ message: `Data source is invalid and cannot be exported: ${parsed.error.issues[0]?.message ?? 'unknown error'}.`,
39
+ });
40
+ }
41
+ }
42
+ for (const issue of validateProjectGraph(input.graph, { components: registry.lookup, knownSourceIds })) {
43
+ issues.push({
44
+ code: 'graph',
45
+ severity: issue.severity,
46
+ message: issue.message,
47
+ ...(issue.nodeId ? { ref: issue.nodeId } : {}),
48
+ });
49
+ }
50
+ // 3. Route conflicts + redirect loops (the router surfaces both as structured issues).
51
+ const router = createRouter(input.routes, input.redirects, { defaultLocale: input.localeConfig.default });
52
+ for (const issue of router.issues) {
53
+ issues.push({
54
+ code: issue.code === 'redirect-loop' ? 'redirect' : 'route',
55
+ severity: issue.severity === 'error' ? 'error' : 'warning',
56
+ message: issue.message,
57
+ });
58
+ }
59
+ // 4. Unknown locales on routes (EC-111 "unsupported locales").
60
+ for (const route of input.routes) {
61
+ if (route.locale && !isKnownLocale(input.localeConfig, route.locale)) {
62
+ issues.push({
63
+ code: 'locale',
64
+ severity: 'error',
65
+ message: `Route "${route.id}" targets locale "${route.locale}" which is not in the project's locale config.`,
66
+ ref: route.id,
67
+ });
68
+ }
69
+ }
70
+ // 5. Every route must resolve to a RENDERABLE target (EC-101/105/111, reshaped
71
+ // by EC-187). A route now maps a URL → a `document` ref (a `page`-collection
72
+ // document rendered as a composition, or a content-collection document
73
+ // rendered by a dev route component). A route with no `document`, or one
74
+ // targeting an unknown collection, is flagged so a broken export fails CI
75
+ // instead of 404ing silently.
76
+ const collectionIds = new Set(input.collections.map((c) => c.id));
77
+ for (const route of input.routes) {
78
+ if (!route.document) {
79
+ issues.push({
80
+ code: 'route',
81
+ severity: 'error',
82
+ message: `Route "${route.id}" has no render target (a document ref).`,
83
+ ref: route.id,
84
+ });
85
+ continue;
86
+ }
87
+ if (!collectionIds.has(route.document.collection)) {
88
+ issues.push({
89
+ code: 'route',
90
+ severity: 'error',
91
+ message: `Route "${route.id}" targets unknown collection "${route.document.collection}".`,
92
+ ref: route.id,
93
+ });
94
+ }
95
+ }
96
+ return issues;
97
+ }
98
+ /** True when an export is safe to build (no error-severity issues). */
99
+ export function isExportable(issues) {
100
+ return !issues.some((i) => i.severity === 'error');
101
+ }
102
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/export-sync/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import type { ManifestHost } from './manifest-host';
2
+ import type { PushResult } from './push';
3
+ import type { FileIO } from './sync';
4
+ /**
5
+ * Watch mode for the manifest validation pass (EC-147): manifest edits in the host
6
+ * repo are re-validated within seconds. Built on `node:fs` `watch` — no external
7
+ * watcher dependency. The loop is factored into {@link createManifestWatcher}
8
+ * (debounce, driven by injected events and an injected {@link Scheduler}) so tests
9
+ * exercise it with fake events and a manual clock; `createFsWatchDriver` in
10
+ * `@elytracms/core/export-sync/node` is the thin real-fs shell (node-only, kept out of the
11
+ * browser-safe package root).
12
+ *
13
+ * Component manifests are code-owned, so each debounced flush re-runs a full
14
+ * discovery + validation pass; there is no remote to sync to.
15
+ */
16
+ /** A raw filesystem event (path relative to the watch root). */
17
+ export interface WatchEvent {
18
+ path: string;
19
+ }
20
+ /** Injectable debounce clock; the default uses real timers. */
21
+ export interface Scheduler {
22
+ /** Schedule `fn` after `delayMs`; returns a cancel function. */
23
+ schedule(fn: () => void, delayMs: number): () => void;
24
+ }
25
+ export declare const timeoutScheduler: Scheduler;
26
+ export interface ManifestWatcher {
27
+ /** Feed a filesystem event; non-manifest paths are ignored, manifest paths debounce a pass. */
28
+ handleEvent(event: WatchEvent): void;
29
+ /** Cancel any pending debounce and run a validation pass now (also the initial pass). */
30
+ flush(): Promise<PushResult | undefined>;
31
+ /** True while a debounced pass is scheduled. */
32
+ readonly pending: boolean;
33
+ close(): void;
34
+ }
35
+ export interface ManifestWatcherDeps {
36
+ host: ManifestHost;
37
+ io: Pick<FileIO, 'log'>;
38
+ options: {
39
+ root: string;
40
+ };
41
+ /** Debounce window for bursts of fs events (default 150 ms). */
42
+ debounceMs?: number;
43
+ scheduler?: Scheduler;
44
+ /** Observe each completed pass (tests, logging, studio toasts). */
45
+ onPush?: (result: PushResult) => void;
46
+ }
47
+ /** The testable watch loop: debounce, re-validate. */
48
+ export declare function createManifestWatcher(deps: ManifestWatcherDeps): ManifestWatcher;
49
+ /** How watch mode receives fs events; `done` resolves when the watch ends. */
50
+ export interface WatchDriver {
51
+ watch(root: string, onEvent: (event: WatchEvent) => void): {
52
+ close(): void;
53
+ done: Promise<void>;
54
+ };
55
+ }
56
+ export interface RunWatchOptions {
57
+ root: string;
58
+ debounceMs?: number;
59
+ scheduler?: Scheduler;
60
+ onPush?: (result: PushResult) => void;
61
+ }
62
+ /**
63
+ * Run watch mode: an initial full validation pass, then debounced incremental
64
+ * passes until the driver's watch ends. Resolves when the watch is closed.
65
+ */
66
+ export declare function runWatch(host: ManifestHost, io: Pick<FileIO, 'log'>, driver: WatchDriver, options: RunWatchOptions): Promise<void>;
@@ -0,0 +1,70 @@
1
+ import { isManifestFile } from './manifest-host';
2
+ import { runPush } from './push';
3
+ export const timeoutScheduler = {
4
+ schedule(fn, delayMs) {
5
+ const timer = setTimeout(fn, delayMs);
6
+ return () => clearTimeout(timer);
7
+ },
8
+ };
9
+ /** The testable watch loop: debounce, re-validate. */
10
+ export function createManifestWatcher(deps) {
11
+ const scheduler = deps.scheduler ?? timeoutScheduler;
12
+ const debounceMs = deps.debounceMs ?? 150;
13
+ let cancel;
14
+ let closed = false;
15
+ /** Passes are serialized: a flush during an in-flight pass chains after it. */
16
+ let inFlight = Promise.resolve(undefined);
17
+ const runOnce = async () => {
18
+ const result = await runPush(deps.host, deps.io, { root: deps.options.root });
19
+ deps.onPush?.(result);
20
+ return result;
21
+ };
22
+ const flush = () => {
23
+ cancel?.();
24
+ cancel = undefined;
25
+ if (closed)
26
+ return inFlight;
27
+ inFlight = inFlight.then(() => runOnce());
28
+ return inFlight;
29
+ };
30
+ return {
31
+ handleEvent(event) {
32
+ if (closed || !isManifestFile(event.path))
33
+ return;
34
+ cancel?.();
35
+ cancel = scheduler.schedule(() => {
36
+ cancel = undefined;
37
+ void flush();
38
+ }, debounceMs);
39
+ },
40
+ flush,
41
+ get pending() {
42
+ return cancel !== undefined;
43
+ },
44
+ close() {
45
+ closed = true;
46
+ cancel?.();
47
+ cancel = undefined;
48
+ },
49
+ };
50
+ }
51
+ /**
52
+ * Run watch mode: an initial full validation pass, then debounced incremental
53
+ * passes until the driver's watch ends. Resolves when the watch is closed.
54
+ */
55
+ export async function runWatch(host, io, driver, options) {
56
+ const watcher = createManifestWatcher({
57
+ host,
58
+ io,
59
+ options: { root: options.root },
60
+ ...(options.debounceMs !== undefined ? { debounceMs: options.debounceMs } : {}),
61
+ ...(options.scheduler ? { scheduler: options.scheduler } : {}),
62
+ ...(options.onPush ? { onPush: options.onPush } : {}),
63
+ });
64
+ await watcher.flush();
65
+ const handle = driver.watch(options.root, (event) => watcher.handleEvent(event));
66
+ io.log(`Watching ${options.root} for manifest changes (Ctrl+C to stop).`);
67
+ await handle.done;
68
+ watcher.close();
69
+ }
70
+ //# sourceMappingURL=watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/export-sync/watch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,198 @@
1
+ import { z } from 'zod';
2
+ import type { OperationsRuntime } from './core';
3
+ /**
4
+ * Asset metadata operations (EC-139). Metadata only — asset *bytes* live behind
5
+ * the `BlobStorageAdapter`; a typed upload command joins when the studio grows
6
+ * a real upload flow (Milestone B).
7
+ */
8
+ export declare const upsertAssetInputSchema: z.ZodObject<{
9
+ projectId: z.ZodString;
10
+ asset: z.ZodObject<{
11
+ id: z.ZodOptional<z.ZodString>;
12
+ filename: z.ZodString;
13
+ contentType: z.ZodString;
14
+ byteSize: z.ZodNumber;
15
+ width: z.ZodOptional<z.ZodNumber>;
16
+ height: z.ZodOptional<z.ZodNumber>;
17
+ alt: z.ZodOptional<z.ZodString>;
18
+ title: z.ZodOptional<z.ZodString>;
19
+ storageKey: z.ZodOptional<z.ZodString>;
20
+ url: z.ZodOptional<z.ZodString>;
21
+ }, z.core.$strip>;
22
+ }, z.core.$strip>;
23
+ export declare const assetRefInputSchema: z.ZodObject<{
24
+ projectId: z.ZodString;
25
+ assetId: z.ZodString;
26
+ }, z.core.$strip>;
27
+ export declare const listAssetsInputSchema: z.ZodObject<{
28
+ projectId: z.ZodString;
29
+ }, z.core.$strip>;
30
+ export declare const assetOperationDefinitions: {
31
+ readonly upsert: import("./core").OperationDefinition<z.ZodObject<{
32
+ projectId: z.ZodString;
33
+ asset: z.ZodObject<{
34
+ id: z.ZodOptional<z.ZodString>;
35
+ filename: z.ZodString;
36
+ contentType: z.ZodString;
37
+ byteSize: z.ZodNumber;
38
+ width: z.ZodOptional<z.ZodNumber>;
39
+ height: z.ZodOptional<z.ZodNumber>;
40
+ alt: z.ZodOptional<z.ZodString>;
41
+ title: z.ZodOptional<z.ZodString>;
42
+ storageKey: z.ZodOptional<z.ZodString>;
43
+ url: z.ZodOptional<z.ZodString>;
44
+ }, z.core.$strip>;
45
+ }, z.core.$strip>, {
46
+ createdAt: string;
47
+ updatedAt: string;
48
+ id: string;
49
+ projectId: string;
50
+ filename: string;
51
+ contentType: string;
52
+ byteSize: number;
53
+ storageKey: string;
54
+ width?: number | undefined;
55
+ height?: number | undefined;
56
+ alt?: string | undefined;
57
+ title?: string | undefined;
58
+ url?: string | undefined;
59
+ focalPoint?: {
60
+ x: number;
61
+ y: number;
62
+ } | undefined;
63
+ }>;
64
+ readonly remove: import("./core").OperationDefinition<z.ZodObject<{
65
+ projectId: z.ZodString;
66
+ assetId: z.ZodString;
67
+ }, z.core.$strip>, {
68
+ assetId: string;
69
+ }>;
70
+ readonly get: import("./core").OperationDefinition<z.ZodObject<{
71
+ projectId: z.ZodString;
72
+ assetId: z.ZodString;
73
+ }, z.core.$strip>, {
74
+ createdAt: string;
75
+ updatedAt: string;
76
+ id: string;
77
+ projectId: string;
78
+ filename: string;
79
+ contentType: string;
80
+ byteSize: number;
81
+ storageKey: string;
82
+ width?: number | undefined;
83
+ height?: number | undefined;
84
+ alt?: string | undefined;
85
+ title?: string | undefined;
86
+ url?: string | undefined;
87
+ focalPoint?: {
88
+ x: number;
89
+ y: number;
90
+ } | undefined;
91
+ }>;
92
+ readonly list: import("./core").OperationDefinition<z.ZodObject<{
93
+ projectId: z.ZodString;
94
+ }, z.core.$strip>, {
95
+ createdAt: string;
96
+ updatedAt: string;
97
+ id: string;
98
+ projectId: string;
99
+ filename: string;
100
+ contentType: string;
101
+ byteSize: number;
102
+ storageKey: string;
103
+ width?: number | undefined;
104
+ height?: number | undefined;
105
+ alt?: string | undefined;
106
+ title?: string | undefined;
107
+ url?: string | undefined;
108
+ focalPoint?: {
109
+ x: number;
110
+ y: number;
111
+ } | undefined;
112
+ }[]>;
113
+ };
114
+ export declare function createAssetOperations(runtime: OperationsRuntime): {
115
+ upsert: (input: {
116
+ projectId: string;
117
+ asset: {
118
+ filename: string;
119
+ contentType: string;
120
+ byteSize: number;
121
+ id?: string | undefined;
122
+ width?: number | undefined;
123
+ height?: number | undefined;
124
+ alt?: string | undefined;
125
+ title?: string | undefined;
126
+ storageKey?: string | undefined;
127
+ url?: string | undefined;
128
+ };
129
+ }) => Promise<import("./core").OperationResult<{
130
+ createdAt: string;
131
+ updatedAt: string;
132
+ id: string;
133
+ projectId: string;
134
+ filename: string;
135
+ contentType: string;
136
+ byteSize: number;
137
+ storageKey: string;
138
+ width?: number | undefined;
139
+ height?: number | undefined;
140
+ alt?: string | undefined;
141
+ title?: string | undefined;
142
+ url?: string | undefined;
143
+ focalPoint?: {
144
+ x: number;
145
+ y: number;
146
+ } | undefined;
147
+ }>>;
148
+ remove: (input: {
149
+ projectId: string;
150
+ assetId: string;
151
+ }) => Promise<import("./core").OperationResult<{
152
+ assetId: string;
153
+ }>>;
154
+ get: (input: {
155
+ projectId: string;
156
+ assetId: string;
157
+ }) => Promise<import("./core").OperationResult<{
158
+ createdAt: string;
159
+ updatedAt: string;
160
+ id: string;
161
+ projectId: string;
162
+ filename: string;
163
+ contentType: string;
164
+ byteSize: number;
165
+ storageKey: string;
166
+ width?: number | undefined;
167
+ height?: number | undefined;
168
+ alt?: string | undefined;
169
+ title?: string | undefined;
170
+ url?: string | undefined;
171
+ focalPoint?: {
172
+ x: number;
173
+ y: number;
174
+ } | undefined;
175
+ }>>;
176
+ list: (input: {
177
+ projectId: string;
178
+ }) => Promise<import("./core").OperationResult<{
179
+ createdAt: string;
180
+ updatedAt: string;
181
+ id: string;
182
+ projectId: string;
183
+ filename: string;
184
+ contentType: string;
185
+ byteSize: number;
186
+ storageKey: string;
187
+ width?: number | undefined;
188
+ height?: number | undefined;
189
+ alt?: string | undefined;
190
+ title?: string | undefined;
191
+ url?: string | undefined;
192
+ focalPoint?: {
193
+ x: number;
194
+ y: number;
195
+ } | undefined;
196
+ }[]>>;
197
+ };
198
+ export type AssetOperations = ReturnType<typeof createAssetOperations>;
@@ -0,0 +1,75 @@
1
+ import { z } from 'zod';
2
+ import { projectIdSchema } from '@elytracms/core/studio-core';
3
+ import { bindOperation, defineCommand, defineQuery } from './core';
4
+ /**
5
+ * Asset metadata operations (EC-139). Metadata only — asset *bytes* live behind
6
+ * the `BlobStorageAdapter`; a typed upload command joins when the studio grows
7
+ * a real upload flow (Milestone B).
8
+ */
9
+ export const upsertAssetInputSchema = z.object({
10
+ projectId: projectIdSchema,
11
+ asset: z.object({
12
+ id: z.string().min(1).optional(),
13
+ filename: z.string().min(1),
14
+ contentType: z.string().min(1),
15
+ byteSize: z.number().int().nonnegative(),
16
+ width: z.number().int().positive().optional(),
17
+ height: z.number().int().positive().optional(),
18
+ alt: z.string().optional(),
19
+ /** Editable display title (EC-152 asset library metadata). */
20
+ title: z.string().optional(),
21
+ /** Defaults to a key derived from the asset id. */
22
+ storageKey: z.string().min(1).optional(),
23
+ /** Resolvable serve URL for the stored bytes (EC-151 upload confirm). */
24
+ url: z.string().min(1).optional(),
25
+ }),
26
+ });
27
+ export const assetRefInputSchema = z.object({
28
+ projectId: projectIdSchema,
29
+ assetId: z.string().min(1),
30
+ });
31
+ export const listAssetsInputSchema = z.object({
32
+ projectId: projectIdSchema,
33
+ });
34
+ export const assetOperationDefinitions = {
35
+ upsert: defineCommand({
36
+ name: 'assets.upsert',
37
+ domain: 'assets',
38
+ description: 'Insert or update asset metadata (bytes live in blob storage).',
39
+ input: upsertAssetInputSchema,
40
+ execute: (context, input) => context.adapter.assets.upsertAsset(input.projectId, input.asset),
41
+ }),
42
+ remove: defineCommand({
43
+ name: 'assets.remove',
44
+ domain: 'assets',
45
+ description: 'Remove an asset metadata record.',
46
+ input: assetRefInputSchema,
47
+ execute: async (context, input) => {
48
+ await context.adapter.assets.removeAsset(input.projectId, input.assetId);
49
+ return { assetId: input.assetId };
50
+ },
51
+ }),
52
+ get: defineQuery({
53
+ name: 'assets.get',
54
+ domain: 'assets',
55
+ description: 'Load one asset metadata record.',
56
+ input: assetRefInputSchema,
57
+ execute: (context, input) => context.adapter.assets.getAsset(input.projectId, input.assetId),
58
+ }),
59
+ list: defineQuery({
60
+ name: 'assets.list',
61
+ domain: 'assets',
62
+ description: 'List asset metadata records for a project.',
63
+ input: listAssetsInputSchema,
64
+ execute: (context, input) => context.adapter.assets.listAssets(input.projectId),
65
+ }),
66
+ };
67
+ export function createAssetOperations(runtime) {
68
+ return {
69
+ upsert: bindOperation(runtime, assetOperationDefinitions.upsert),
70
+ remove: bindOperation(runtime, assetOperationDefinitions.remove),
71
+ get: bindOperation(runtime, assetOperationDefinitions.get),
72
+ list: bindOperation(runtime, assetOperationDefinitions.list),
73
+ };
74
+ }
75
+ //# sourceMappingURL=assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/operations/assets.ts"],"names":[],"mappings":"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"}