@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,89 @@
1
+ import { z } from 'zod';
2
+ export declare const tokenValueSchema: z.ZodUnion<readonly [z.ZodObject<{
3
+ value: z.ZodString;
4
+ }, z.core.$strip>, z.ZodObject<{
5
+ ref: z.ZodString;
6
+ }, z.core.$strip>]>;
7
+ export type TokenValue = z.infer<typeof tokenValueSchema>;
8
+ /** A semantic colour role with its light and dark resolutions. */
9
+ export declare const colorTokenSchema: z.ZodObject<{
10
+ name: z.ZodString;
11
+ role: z.ZodString;
12
+ light: z.ZodUnion<readonly [z.ZodObject<{
13
+ value: z.ZodString;
14
+ }, z.core.$strip>, z.ZodObject<{
15
+ ref: z.ZodString;
16
+ }, z.core.$strip>]>;
17
+ dark: z.ZodUnion<readonly [z.ZodObject<{
18
+ value: z.ZodString;
19
+ }, z.core.$strip>, z.ZodObject<{
20
+ ref: z.ZodString;
21
+ }, z.core.$strip>]>;
22
+ }, z.core.$strip>;
23
+ export type ColorToken = z.infer<typeof colorTokenSchema>;
24
+ /**
25
+ * The semantic colour roles. Order is meaningful: it drives the emitted CSS-variable order and
26
+ * the style-guide swatch order. Cool-slate neutrals + a confident cobalt primary; monospace and
27
+ * status colours (success/warning/destructive/info) are first-class.
28
+ */
29
+ export declare const colorTokens: readonly ColorToken[];
30
+ /** A scale step (radius, font size, spacing) — a name mapped to a CSS length. */
31
+ export declare const scaleStepSchema: z.ZodObject<{
32
+ name: z.ZodString;
33
+ value: z.ZodString;
34
+ note: z.ZodOptional<z.ZodString>;
35
+ }, z.core.$strip>;
36
+ export type ScaleStep = z.infer<typeof scaleStepSchema>;
37
+ /** Base radius; the Tailwind theme derives sm/md/lg/xl from it. */
38
+ export declare const radiusBase = "0.5rem";
39
+ /** The type scale (Tailwind's default rem steps), documented for the style guide. */
40
+ export declare const typeScale: readonly ScaleStep[];
41
+ /** The spacing scale used by the named layout primitives (Stack/Row/Grid `gap`). */
42
+ export declare const spacingScale: readonly ScaleStep[];
43
+ /** The radius scale derived from {@link radiusBase}. */
44
+ export declare const radiusScale: readonly ScaleStep[];
45
+ /** The fonts the system standardises on. */
46
+ export declare const fonts: {
47
+ readonly sans: "'Hanken Grotesk Variable', ui-sans-serif, system-ui, sans-serif";
48
+ readonly mono: "'JetBrains Mono Variable', ui-monospace, 'SF Mono', monospace";
49
+ };
50
+ /** The full token set — the single source of truth. */
51
+ export declare const designTokens: {
52
+ readonly colors: readonly {
53
+ name: string;
54
+ role: string;
55
+ light: {
56
+ ref: string;
57
+ } | {
58
+ value: string;
59
+ };
60
+ dark: {
61
+ ref: string;
62
+ } | {
63
+ value: string;
64
+ };
65
+ }[];
66
+ readonly radiusBase: "0.5rem";
67
+ readonly typeScale: readonly {
68
+ name: string;
69
+ value: string;
70
+ note?: string | undefined;
71
+ }[];
72
+ readonly spacingScale: readonly {
73
+ name: string;
74
+ value: string;
75
+ note?: string | undefined;
76
+ }[];
77
+ readonly radiusScale: readonly {
78
+ name: string;
79
+ value: string;
80
+ note?: string | undefined;
81
+ }[];
82
+ readonly fonts: {
83
+ readonly sans: "'Hanken Grotesk Variable', ui-sans-serif, system-ui, sans-serif";
84
+ readonly mono: "'JetBrains Mono Variable', ui-monospace, 'SF Mono', monospace";
85
+ };
86
+ };
87
+ export type DesignTokens = typeof designTokens;
88
+ /** A colour mode. */
89
+ export type ColorMode = 'light' | 'dark';
@@ -0,0 +1,112 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Canonical design tokens (brief §8, EC-091/092). One typed source of truth for the visual
4
+ * system: semantic color roles with light/dark values, plus radius, type scale and spacing
5
+ * scale. The Studio's Tailwind theme, the generated CSS-variable export (EC-093) and the visual
6
+ * style guide (EC-094) all derive from these — so there is no drift between them.
7
+ *
8
+ * Colours are OKLCH (perceptually uniform; predictable light/dark pairs). A token value is
9
+ * either a literal colour or a reference to another token (so `*-foreground` roles can track
10
+ * `foreground` without duplicating its value).
11
+ */
12
+ const colorRefSchema = z.object({ ref: z.string().min(1) });
13
+ const colorLiteralSchema = z.object({ value: z.string().min(1) });
14
+ export const tokenValueSchema = z.union([colorLiteralSchema, colorRefSchema]);
15
+ /** A semantic colour role with its light and dark resolutions. */
16
+ export const colorTokenSchema = z.object({
17
+ name: z.string().min(1),
18
+ /** Human description of the role — surfaced in the style guide. */
19
+ role: z.string(),
20
+ light: tokenValueSchema,
21
+ dark: tokenValueSchema,
22
+ });
23
+ const lit = (value) => ({ value });
24
+ const ref = (name) => ({ ref: name });
25
+ /**
26
+ * The semantic colour roles. Order is meaningful: it drives the emitted CSS-variable order and
27
+ * the style-guide swatch order. Cool-slate neutrals + a confident cobalt primary; monospace and
28
+ * status colours (success/warning/destructive/info) are first-class.
29
+ */
30
+ export const colorTokens = [
31
+ { name: 'background', role: 'App canvas background', light: lit('oklch(0.985 0.002 250)'), dark: lit('oklch(0.176 0.012 264)') },
32
+ { name: 'foreground', role: 'Primary text', light: lit('oklch(0.21 0.02 264)'), dark: lit('oklch(0.95 0.005 250)') },
33
+ { name: 'card', role: 'Card surface', light: lit('oklch(1 0 0)'), dark: lit('oklch(0.205 0.013 264)') },
34
+ { name: 'card-foreground', role: 'Text on cards', light: ref('foreground'), dark: ref('foreground') },
35
+ { name: 'panel', role: 'Inspector / rail surface', light: lit('oklch(0.974 0.003 255)'), dark: lit('oklch(0.196 0.013 264)') },
36
+ { name: 'panel-foreground', role: 'Text on panels', light: ref('foreground'), dark: ref('foreground') },
37
+ { name: 'popover', role: 'Floating surface', light: lit('oklch(1 0 0)'), dark: lit('oklch(0.214 0.013 264)') },
38
+ { name: 'popover-foreground', role: 'Text on popovers', light: ref('foreground'), dark: ref('foreground') },
39
+ { name: 'muted', role: 'Subtle fill', light: lit('oklch(0.955 0.004 255)'), dark: lit('oklch(0.256 0.013 264)') },
40
+ { name: 'muted-foreground', role: 'Secondary text', light: lit('oklch(0.5 0.018 260)'), dark: lit('oklch(0.66 0.02 258)') },
41
+ { name: 'border', role: 'Hairline borders', light: lit('oklch(0.908 0.005 260)'), dark: lit('oklch(0.278 0.013 264)') },
42
+ { name: 'input', role: 'Form control borders', light: lit('oklch(0.908 0.005 260)'), dark: lit('oklch(0.3 0.013 264)') },
43
+ { name: 'ring', role: 'Focus ring', light: lit('oklch(0.55 0.17 256)'), dark: lit('oklch(0.66 0.16 256)') },
44
+ { name: 'primary', role: 'Primary action (cobalt)', light: lit('oklch(0.55 0.17 256)'), dark: lit('oklch(0.66 0.16 256)') },
45
+ { name: 'primary-foreground', role: 'Text on primary', light: lit('oklch(0.99 0.005 250)'), dark: lit('oklch(0.16 0.02 264)') },
46
+ { name: 'secondary', role: 'Secondary action', light: lit('oklch(0.955 0.004 255)'), dark: lit('oklch(0.256 0.013 264)') },
47
+ { name: 'secondary-foreground', role: 'Text on secondary', light: lit('oklch(0.3 0.02 264)'), dark: lit('oklch(0.92 0.005 250)') },
48
+ { name: 'accent', role: 'Selected / emphasis fill', light: lit('oklch(0.95 0.022 256)'), dark: lit('oklch(0.288 0.03 256)') },
49
+ { name: 'accent-foreground', role: 'Text on accent', light: lit('oklch(0.36 0.07 256)'), dark: lit('oklch(0.88 0.03 256)') },
50
+ { name: 'success', role: 'Success / valid', light: lit('oklch(0.58 0.13 150)'), dark: lit('oklch(0.7 0.14 150)') },
51
+ { name: 'success-foreground', role: 'Text on success', light: lit('oklch(0.99 0.01 150)'), dark: lit('oklch(0.16 0.03 150)') },
52
+ { name: 'warning', role: 'Warning', light: lit('oklch(0.68 0.14 70)'), dark: lit('oklch(0.79 0.14 75)') },
53
+ { name: 'warning-foreground', role: 'Text on warning', light: lit('oklch(0.24 0.04 70)'), dark: lit('oklch(0.2 0.04 75)') },
54
+ { name: 'destructive', role: 'Error / destructive', light: lit('oklch(0.57 0.2 27)'), dark: lit('oklch(0.67 0.18 25)') },
55
+ { name: 'destructive-foreground', role: 'Text on destructive', light: lit('oklch(0.99 0.01 27)'), dark: lit('oklch(0.16 0.03 25)') },
56
+ { name: 'info', role: 'Informational / bound', light: lit('oklch(0.56 0.12 248)'), dark: lit('oklch(0.7 0.13 245)') },
57
+ { name: 'info-foreground', role: 'Text on info', light: lit('oklch(0.99 0.01 248)'), dark: lit('oklch(0.16 0.03 245)') },
58
+ { name: 'grid-line', role: 'Canvas grid lines', light: lit('oklch(0.8 0.01 260 / 0.5)'), dark: lit('oklch(0.5 0.012 264 / 0.32)') },
59
+ ];
60
+ /** A scale step (radius, font size, spacing) — a name mapped to a CSS length. */
61
+ export const scaleStepSchema = z.object({
62
+ name: z.string(),
63
+ value: z.string(),
64
+ /** Optional note shown in the style guide. */
65
+ note: z.string().optional(),
66
+ });
67
+ /** Base radius; the Tailwind theme derives sm/md/lg/xl from it. */
68
+ export const radiusBase = '0.5rem';
69
+ /** The type scale (Tailwind's default rem steps), documented for the style guide. */
70
+ export const typeScale = [
71
+ { name: 'xs', value: '0.75rem', note: 'Captions, code chips' },
72
+ { name: 'sm', value: '0.875rem', note: 'Body small, labels' },
73
+ { name: 'base', value: '1rem', note: 'Body' },
74
+ { name: 'lg', value: '1.125rem', note: 'Lead' },
75
+ { name: 'xl', value: '1.25rem', note: 'H4' },
76
+ { name: '2xl', value: '1.5rem', note: 'H3' },
77
+ { name: '3xl', value: '1.875rem', note: 'H2' },
78
+ { name: '4xl', value: '2.25rem', note: 'H1' },
79
+ { name: '5xl', value: '3rem', note: 'Display' },
80
+ ];
81
+ /** The spacing scale used by the named layout primitives (Stack/Row/Grid `gap`). */
82
+ export const spacingScale = [
83
+ { name: 'px', value: '1px' },
84
+ { name: '1', value: '0.25rem' },
85
+ { name: '2', value: '0.5rem' },
86
+ { name: '3', value: '0.75rem' },
87
+ { name: '4', value: '1rem' },
88
+ { name: '6', value: '1.5rem' },
89
+ { name: '8', value: '2rem' },
90
+ ];
91
+ /** The radius scale derived from {@link radiusBase}. */
92
+ export const radiusScale = [
93
+ { name: 'sm', value: 'calc(0.5rem - 4px)' },
94
+ { name: 'md', value: 'calc(0.5rem - 2px)' },
95
+ { name: 'lg', value: '0.5rem' },
96
+ { name: 'xl', value: 'calc(0.5rem + 4px)' },
97
+ ];
98
+ /** The fonts the system standardises on. */
99
+ export const fonts = {
100
+ sans: "'Hanken Grotesk Variable', ui-sans-serif, system-ui, sans-serif",
101
+ mono: "'JetBrains Mono Variable', ui-monospace, 'SF Mono', monospace",
102
+ };
103
+ /** The full token set — the single source of truth. */
104
+ export const designTokens = {
105
+ colors: colorTokens,
106
+ radiusBase,
107
+ typeScale,
108
+ spacingScale,
109
+ radiusScale,
110
+ fonts,
111
+ };
112
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/design-tokens/tokens.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import { z } from 'zod';
2
+ import type { ComponentManifest } from '@elytracms/core/component-registry';
3
+ import type { RedirectRecord, RouteRecord } from '@elytracms/core/cms-core';
4
+ import type { DataSource } from '@elytracms/core/data-binding';
5
+ import type { ExportMode } from './core';
6
+ import type { ExportSource } from './sync';
7
+ /**
8
+ * Wire shape of `GET …/registry-sync/snapshot` (served by the builder's Convex
9
+ * deployment). EC-207: routes/redirects are config-sourced (authored in
10
+ * `elytra.config.ts`), so the snapshot no longer carries them — the schema omits
11
+ * them entirely and the source reads routes/redirects from the resolved config.
12
+ */
13
+ export declare const builderSnapshotSchema: z.ZodObject<{
14
+ projectId: z.ZodString;
15
+ mode: z.ZodEnum<{
16
+ draft: "draft";
17
+ published: "published";
18
+ }>;
19
+ environment: z.ZodString;
20
+ project: z.ZodNullable<z.ZodObject<{
21
+ name: z.ZodString;
22
+ slug: z.ZodString;
23
+ }, z.core.$strip>>;
24
+ localeConfig: z.ZodObject<{
25
+ default: z.ZodString;
26
+ locales: z.ZodArray<z.ZodString>;
27
+ }, z.core.$strip>;
28
+ collections: z.ZodArray<z.ZodObject<{
29
+ id: z.ZodString;
30
+ kind: z.ZodDefault<z.ZodEnum<{
31
+ asset: "asset";
32
+ document: "document";
33
+ }>>;
34
+ fields: z.ZodDefault<z.ZodArray<z.ZodType<import("@elytracms/core/cms-core").FieldDef, unknown, z.core.$ZodTypeInternals<import("@elytracms/core/cms-core").FieldDef, unknown>>>>;
35
+ form: z.ZodOptional<z.ZodObject<{
36
+ label: z.ZodOptional<z.ZodString>;
37
+ labelSingular: z.ZodOptional<z.ZodString>;
38
+ description: z.ZodOptional<z.ZodString>;
39
+ groups: z.ZodOptional<z.ZodArray<z.ZodString>>;
40
+ tabs: z.ZodOptional<z.ZodArray<z.ZodString>>;
41
+ }, z.core.$strip>>;
42
+ localized: z.ZodOptional<z.ZodBoolean>;
43
+ titleField: z.ZodOptional<z.ZodString>;
44
+ singleton: z.ZodOptional<z.ZodBoolean>;
45
+ }, z.core.$strip>>;
46
+ graph: z.ZodNullable<z.ZodObject<{
47
+ revision: z.ZodNumber;
48
+ serializedGraph: z.ZodString;
49
+ }, z.core.$strip>>;
50
+ }, z.core.$strip>;
51
+ export type BuilderSnapshot = z.infer<typeof builderSnapshotSchema>;
52
+ export interface HttpBuilderSourceConfig {
53
+ /** Builder deployment origin serving the HTTP actions, e.g. `https://<name>.convex.site`. */
54
+ baseUrl: string;
55
+ projectId: string;
56
+ /** Bearer CLI token (EC-150) — same token the registry sync client uses. */
57
+ token?: string;
58
+ /** Publishing environment whose pinned revision serves `published` mode (default: `production`). */
59
+ environment?: string;
60
+ /** Code-owned component manifests (primitives + project manifests) with their real schemas. */
61
+ manifests?: readonly ComponentManifest[];
62
+ /** Host-declared data sources (not persisted builder-side in v1). */
63
+ sources?: readonly DataSource[];
64
+ /**
65
+ * Config-sourced route table (EC-207): the resolved `elytra.config.ts`
66
+ * `routes` array. Authoritative when non-empty; when omitted/empty the source
67
+ * synthesizes the `/` → `page/home` fallback per locale.
68
+ */
69
+ routes?: readonly RouteRecord[];
70
+ /** Config-sourced redirects (EC-207): the resolved config's `redirects` array. */
71
+ redirects?: readonly RedirectRecord[];
72
+ /** Import specifier for the host repo's components module (eject wiring). */
73
+ componentsImport?: string;
74
+ /** Injected for tests; defaults to global `fetch`. */
75
+ fetchImpl?: typeof fetch;
76
+ }
77
+ /** Fetch + validate one snapshot. Exposed for hosts that want the raw payload. */
78
+ export declare function fetchBuilderSnapshot(config: Pick<HttpBuilderSourceConfig, 'baseUrl' | 'projectId' | 'token' | 'environment' | 'fetchImpl'>, mode: ExportMode): Promise<BuilderSnapshot>;
79
+ /**
80
+ * Create the HTTP-backed {@link ExportSource}. `loadInput` throws a
81
+ * {@link RegistrySyncTransportError} with a structured message on transport/auth
82
+ * failures, a malformed snapshot, or a mode with no graph revision to serve —
83
+ * everything else is data the canonical validators report on.
84
+ */
85
+ export declare function createHttpBuilderSource(config: HttpBuilderSourceConfig): ExportSource;
@@ -0,0 +1,124 @@
1
+ import { z } from 'zod';
2
+ import { collectionDefSchema, localeConfigSchema } from '@elytracms/core/cms-core';
3
+ import { emitTokensCss } from '@elytracms/core/design-tokens';
4
+ import { parseProjectGraph } from '@elytracms/core/project-graph';
5
+ import { registrySyncEndpoints, registrySyncRequest, RegistrySyncTransportError, } from './registry-sync-client';
6
+ /**
7
+ * The live builder {@link ExportSource} (EC-157): `builder typegen` and `builder check`
8
+ * read the canonical model from the builder deployment's snapshot endpoint
9
+ * (`GET …/registry-sync/snapshot`, Bearer CLI token) instead of a fixture. The
10
+ * snapshot carries only what the builder persists as data: the graph revision for the
11
+ * requested mode (published = the publishing-state-pinned revision per environment,
12
+ * draft = latest), plus locale config as a placeholder.
13
+ *
14
+ * Several inputs are config-sourced / host-supplied, NOT carried by the snapshot
15
+ * (mirroring `@elytracms/next`'s live content wiring — the backend does not persist
16
+ * them):
17
+ *
18
+ * - `routes` / `redirects` — authored in `elytra.config.ts` and resolved by
19
+ * studio-core (EC-207). They are config, never backend data: the bin feeds the
20
+ * resolved config's `routes`/`redirects` arrays here. The snapshot no longer
21
+ * carries a route table (its `routes`/`redirects` fields are optional/ignored).
22
+ * - `sources` — data-source declarations bindings resolve against. Without them
23
+ * every graph binding reports `unresolved-binding`, so a host whose graph binds
24
+ * data MUST declare its sources.
25
+ * - `manifests` — the component manifests are code-owned (defined in TS next to the
26
+ * components), not persisted builder-side, so the host supplies the full set
27
+ * (`basePrimitives().manifests` plus the project's own manifests) with their REAL
28
+ * prop schemas. The builder snapshot no longer carries manifest records.
29
+ *
30
+ * Route fallback: when no config routes are supplied the source maps `/` to the
31
+ * conventional home page document (`page/home`) for every configured locale — the
32
+ * same convention as the example host's live content source (EC-187: pages are
33
+ * documents). Config routes, when present, are authoritative and replace the fallback.
34
+ */
35
+ const graphRevisionPayloadSchema = z.object({
36
+ revision: z.number(),
37
+ serializedGraph: z.string(),
38
+ });
39
+ /**
40
+ * Wire shape of `GET …/registry-sync/snapshot` (served by the builder's Convex
41
+ * deployment). EC-207: routes/redirects are config-sourced (authored in
42
+ * `elytra.config.ts`), so the snapshot no longer carries them — the schema omits
43
+ * them entirely and the source reads routes/redirects from the resolved config.
44
+ */
45
+ export const builderSnapshotSchema = z.object({
46
+ projectId: z.string().min(1),
47
+ mode: z.enum(['published', 'draft']),
48
+ environment: z.string().min(1),
49
+ project: z.object({ name: z.string(), slug: z.string() }).nullable(),
50
+ localeConfig: localeConfigSchema,
51
+ collections: z.array(collectionDefSchema),
52
+ /** `null` when the requested mode/environment has no graph revision to serve. */
53
+ graph: graphRevisionPayloadSchema.nullable(),
54
+ });
55
+ /** Default-route fallback when the config supplies no route records (see module doc). */
56
+ function fallbackRoutes(snapshot) {
57
+ return snapshot.localeConfig.locales.map((locale) => ({
58
+ id: `route-home-${locale}`,
59
+ pattern: '/',
60
+ locale,
61
+ document: { collection: 'page', id: 'home' },
62
+ }));
63
+ }
64
+ /** Fetch + validate one snapshot. Exposed for hosts that want the raw payload. */
65
+ export async function fetchBuilderSnapshot(config, mode) {
66
+ const endpoints = registrySyncEndpoints(config.baseUrl, config.projectId);
67
+ const environment = config.environment ?? 'production';
68
+ const url = `${endpoints.snapshot}?mode=${mode}&environment=${encodeURIComponent(environment)}`;
69
+ const payload = await registrySyncRequest(config.fetchImpl ?? fetch, url, 'GET', config.token);
70
+ const parsed = builderSnapshotSchema.safeParse(payload);
71
+ if (!parsed.success) {
72
+ throw new RegistrySyncTransportError(`Builder snapshot from ${url} is malformed: ${parsed.error.issues[0]?.message ?? 'unknown error'}.`);
73
+ }
74
+ return parsed.data;
75
+ }
76
+ /**
77
+ * Create the HTTP-backed {@link ExportSource}. `loadInput` throws a
78
+ * {@link RegistrySyncTransportError} with a structured message on transport/auth
79
+ * failures, a malformed snapshot, or a mode with no graph revision to serve —
80
+ * everything else is data the canonical validators report on.
81
+ */
82
+ export function createHttpBuilderSource(config) {
83
+ return {
84
+ async loadInput(mode) {
85
+ const snapshot = await fetchBuilderSnapshot(config, mode);
86
+ if (snapshot.graph === null) {
87
+ throw new RegistrySyncTransportError(mode === 'published'
88
+ ? `Project "${snapshot.projectId}" has no published revision pinned for environment "${snapshot.environment}" — publish first, or run with --mode draft.`
89
+ : `Project "${snapshot.projectId}" has no graph revisions yet.`);
90
+ }
91
+ const parsedGraph = parseProjectGraph(snapshot.graph.serializedGraph);
92
+ if (!parsedGraph.ok) {
93
+ throw new RegistrySyncTransportError(`Builder graph revision ${snapshot.graph.revision} failed to parse: ${parsedGraph.error.issues[0]?.message ?? 'unknown error'}.`);
94
+ }
95
+ // Component manifests are code-owned and host-supplied (primitives + project).
96
+ const manifestsById = new Map();
97
+ for (const manifest of config.manifests ?? []) {
98
+ manifestsById.set(manifest.id, manifest);
99
+ }
100
+ const graph = parsedGraph.graph;
101
+ // EC-207: routes/redirects come from the resolved config, not the snapshot.
102
+ // Config routes are authoritative; the `/` → page/home fallback fills only
103
+ // when the config supplies none.
104
+ const configRoutes = config.routes ?? [];
105
+ const routes = configRoutes.length > 0 ? [...configRoutes] : fallbackRoutes(snapshot);
106
+ return {
107
+ projectName: snapshot.project?.name ?? snapshot.projectId,
108
+ slug: snapshot.project?.slug ?? snapshot.projectId,
109
+ graph,
110
+ routes,
111
+ redirects: [...(config.redirects ?? [])],
112
+ collections: snapshot.collections,
113
+ manifests: [...manifestsById.values()],
114
+ sources: [...(config.sources ?? [])],
115
+ localeConfig: snapshot.localeConfig,
116
+ tokensCss: emitTokensCss(),
117
+ ...(config.componentsImport !== undefined
118
+ ? { componentsImport: config.componentsImport }
119
+ : {}),
120
+ };
121
+ },
122
+ };
123
+ }
124
+ //# sourceMappingURL=builder-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder-source.js","sourceRoot":"","sources":["../../src/export-sync/builder-source.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import type { ProjectGraph } from '@elytracms/core/project-graph';
2
+ import type { ExportMode } from './core';
3
+ import type { ManifestHost } from './manifest-host';
4
+ import type { PushIssueCode } from './push';
5
+ import type { ExportSource, FileIO } from './sync';
6
+ import type { ExportIssueCode } from './validate';
7
+ /**
8
+ * `builder check` (EC-148): the CI gate that verifies code and builder state agree
9
+ * before anything ships. Four checks, each individually reportable:
10
+ *
11
+ * 1. `manifest-discovery` — local manifest validation (the EC-147 discovery pass):
12
+ * fs/load problems, structural problems, and EC-011 invalid/duplicate ids.
13
+ * 2. `graph-components` — components the published graph references that have no
14
+ * manifest in code (`graph-component-missing`): the page would render the
15
+ * missing-component fallback in the embedded runtime. Component manifests are
16
+ * code-owned, so this is a direct code↔graph check (no DB registry to diff).
17
+ * 3. `types` — the committed `builder typegen` output is stale vs. the current
18
+ * collection schemas (`type-drift`): regenerated in memory and byte-compared.
19
+ * 4. `validation` — the EC-047/EC-111 canonical validators surfaced through the CLI:
20
+ * route conflicts, redirect loops, broken bindings, invalid props, missing slots.
21
+ *
22
+ * Failure semantics mirror push: every problem is a structured {@link CheckIssue},
23
+ * never a throw; output is machine-parseable issue lines (the push line format) plus
24
+ * a readable per-check summary; any error-severity issue fails the run (exit 1).
25
+ * Check is inherently non-interactive — there is no separate CI mode.
26
+ */
27
+ /** Which of the four checks an issue belongs to. */
28
+ export type CheckSection = 'manifest-discovery' | 'graph-components' | 'types' | 'validation';
29
+ export type CheckIssueCode = PushIssueCode | 'graph-component-missing' | 'type-drift' | ExportIssueCode;
30
+ export interface CheckIssue {
31
+ section: CheckSection;
32
+ code: CheckIssueCode;
33
+ severity: 'error' | 'warning';
34
+ message: string;
35
+ /** Locator: manifest module path, component id, route id, output path, … */
36
+ ref?: string;
37
+ }
38
+ export interface CheckOptions {
39
+ /** Host-repo scan root for `*.manifest.ts(x)` modules. */
40
+ root: string;
41
+ /** Content state to check (default flows from the CLI: published). */
42
+ mode: ExportMode;
43
+ /** The committed typegen output path to drift-check (default: {@link DEFAULT_TYPEGEN_PATH}). */
44
+ out?: string;
45
+ }
46
+ export interface CheckResult {
47
+ mode: ExportMode;
48
+ issues: CheckIssue[];
49
+ /** True when no error-severity issue exists (warnings never fail the gate). */
50
+ ok: boolean;
51
+ }
52
+ /** The machine-parseable issue line (same shape as the EC-147 push issue lines). */
53
+ export declare function formatCheckIssue(issue: CheckIssue): string;
54
+ /**
55
+ * All component ids referenced in the graph's layouts, deduped (EC-187: the
56
+ * graph is layouts-only; page composition component usage lives in `page`
57
+ * collection documents, walked separately by the reference index).
58
+ */
59
+ export declare function collectGraphComponentIds(graph: ProjectGraph): Set<string>;
60
+ /** Run a check. Returns a structured result and never throws; issues are data. */
61
+ export declare function runCheck(source: ExportSource, host: ManifestHost, io: FileIO, options: CheckOptions): Promise<CheckResult>;
@@ -0,0 +1,126 @@
1
+ import { isPrimitive } from '@elytracms/core/component-registry';
2
+ import { discoverManifests } from './push';
3
+ import { DEFAULT_TYPEGEN_PATH, generateTypesFile } from './typegen';
4
+ import { validateExport } from './validate';
5
+ /** The machine-parseable issue line (same shape as the EC-147 push issue lines). */
6
+ export function formatCheckIssue(issue) {
7
+ return ` ${issue.severity} [${issue.code}]${issue.ref ? ` ${issue.ref}` : ''} — ${issue.message}`;
8
+ }
9
+ function walkComponentIds(node, out) {
10
+ out.add(node.componentId);
11
+ for (const children of Object.values(node.slots ?? {})) {
12
+ for (const child of children)
13
+ walkComponentIds(child, out);
14
+ }
15
+ }
16
+ /**
17
+ * All component ids referenced in the graph's layouts, deduped (EC-187: the
18
+ * graph is layouts-only; page composition component usage lives in `page`
19
+ * collection documents, walked separately by the reference index).
20
+ */
21
+ export function collectGraphComponentIds(graph) {
22
+ const ids = new Set();
23
+ for (const layout of graph.layouts)
24
+ walkComponentIds(layout.root, ids);
25
+ return ids;
26
+ }
27
+ const SECTIONS = [
28
+ 'manifest-discovery',
29
+ 'graph-components',
30
+ 'types',
31
+ 'validation',
32
+ ];
33
+ /** Run a check. Returns a structured result and never throws; issues are data. */
34
+ export async function runCheck(source, host, io, options) {
35
+ const out = options.out ?? DEFAULT_TYPEGEN_PATH;
36
+ const issues = [];
37
+ const notes = {};
38
+ // --- 1. manifest-discovery: local manifest validation ------------------------
39
+ const local = await discoverManifests(host, options.root);
40
+ for (const issue of local.issues) {
41
+ issues.push({
42
+ section: 'manifest-discovery',
43
+ code: issue.code,
44
+ severity: issue.severity,
45
+ message: issue.message,
46
+ ...((issue.file ?? issue.componentId)
47
+ ? { ref: [issue.file, issue.componentId].filter(Boolean).join(' ') }
48
+ : {}),
49
+ });
50
+ }
51
+ /** Complete local view — graph↔code conclusions are only safe when nothing failed to load. */
52
+ const localComplete = local.issues.length === 0;
53
+ // --- 2.–4. share one canonical-model load ------------------------------------
54
+ const input = await source.loadInput(options.mode);
55
+ // 2. graph-components: graph references with no manifest in code. Component
56
+ // manifests are code-owned, so this is a direct code↔graph check. Primitives
57
+ // are platform-owned (they ship with the runtime), so only project components count.
58
+ if (localComplete) {
59
+ for (const id of [...collectGraphComponentIds(input.graph)].sort()) {
60
+ if (!isPrimitive(id) && !local.manifests.has(id)) {
61
+ issues.push({
62
+ section: 'graph-components',
63
+ code: 'graph-component-missing',
64
+ severity: 'error',
65
+ ref: id,
66
+ message: `The graph references component "${id}" but no manifest for it exists in code under ${options.root} — the page renders the missing-component fallback.`,
67
+ });
68
+ }
69
+ }
70
+ }
71
+ else {
72
+ notes['graph-components'] =
73
+ ' note: local manifests failed to load — graph↔code coverage was not evaluated.';
74
+ }
75
+ // 3. types: regenerate in memory and byte-compare against the committed file.
76
+ const expected = generateTypesFile(input.collections, out);
77
+ const actual = io.read(out);
78
+ if (actual === undefined) {
79
+ issues.push({
80
+ section: 'types',
81
+ code: 'type-drift',
82
+ severity: 'error',
83
+ ref: out,
84
+ message: `Generated types file ${out} is missing — run \`builder typegen\` and commit it.`,
85
+ });
86
+ }
87
+ else if (actual !== expected) {
88
+ issues.push({
89
+ section: 'types',
90
+ code: 'type-drift',
91
+ severity: 'error',
92
+ ref: out,
93
+ message: `Generated types file ${out} is stale relative to the collection schemas — re-run \`builder typegen\` and commit the result.`,
94
+ });
95
+ }
96
+ // 4. validation: the EC-047/EC-111 canonical validators, surfaced through the CLI.
97
+ for (const issue of validateExport(input)) {
98
+ issues.push({
99
+ section: 'validation',
100
+ code: issue.code,
101
+ severity: issue.severity,
102
+ message: issue.message,
103
+ ...(issue.ref ? { ref: issue.ref } : {}),
104
+ });
105
+ }
106
+ // --- Report: per-check summary + machine-parseable lines ----------------------
107
+ io.log(`Check (${options.mode}): ${options.root} against the builder state.`);
108
+ for (const section of SECTIONS) {
109
+ const sectionIssues = issues.filter((i) => i.section === section);
110
+ const errors = sectionIssues.filter((i) => i.severity === 'error').length;
111
+ const warnings = sectionIssues.length - errors;
112
+ io.log(`check ${section}: ${sectionIssues.length === 0 ? 'ok' : `${errors} error(s), ${warnings} warning(s)`}`);
113
+ for (const issue of sectionIssues)
114
+ io.log(formatCheckIssue(issue));
115
+ const note = notes[section];
116
+ if (note)
117
+ io.log(note);
118
+ }
119
+ const errorCount = issues.filter((i) => i.severity === 'error').length;
120
+ const ok = errorCount === 0;
121
+ io.log(ok
122
+ ? `Check passed (${SECTIONS.length} checks).`
123
+ : `Check failed: ${errorCount} error(s) across ${SECTIONS.length} checks.`);
124
+ return { mode: options.mode, issues, ok };
125
+ }
126
+ //# sourceMappingURL=check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/export-sync/check.ts"],"names":[],"mappings":"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"}