@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,87 @@
1
+ import { defineComponent } from '@elytracms/core/component-registry';
2
+ import { sampleCollections, sampleLocaleConfig } from '@elytracms/core/cms-core';
3
+ import { sampleSources } from '@elytracms/core/data-binding';
4
+ import { emitTokensCss } from '@elytracms/core/design-tokens';
5
+ import { validSampleGraph } from '@elytracms/core/project-graph';
6
+ /**
7
+ * A deterministic reference export input (EC-113), assembled from the canonical sample fixtures.
8
+ * Used to test generation determinism and as a worked example — NOT a production seed.
9
+ *
10
+ * The component manifests are defined inline (rather than imported from the React renderer) so
11
+ * this logic package stays free of UI/React deps; they mirror the base primitives the sample
12
+ * graph uses, with prop/slot shapes the graph validator checks against. Props are field-defs
13
+ * (EC-190 "props as fields"): the record key is the prop name; each value is a `FieldDef` minus
14
+ * `name`, with `context: 'prop'`.
15
+ */
16
+ /** The base primitives the reference graph (validSampleGraph) actually uses. */
17
+ export const referenceManifests = [
18
+ defineComponent({
19
+ id: 'base.primitives.Container',
20
+ namespace: 'base.primitives',
21
+ title: 'Container',
22
+ props: {},
23
+ slots: [{ name: 'children' }, { name: 'outlet' }],
24
+ }),
25
+ defineComponent({
26
+ id: 'base.primitives.Stack',
27
+ namespace: 'base.primitives',
28
+ title: 'Stack',
29
+ props: { gap: { type: 'number', context: 'prop', default: 4, form: { label: 'Gap' } } },
30
+ slots: [{ name: 'children' }],
31
+ }),
32
+ defineComponent({
33
+ id: 'base.primitives.Heading',
34
+ namespace: 'base.primitives',
35
+ title: 'Heading',
36
+ props: {
37
+ text: { type: 'text', context: 'prop', default: '', form: { label: 'Text' } },
38
+ level: { type: 'number', context: 'prop', default: 2, form: { label: 'Level' } },
39
+ },
40
+ slots: [],
41
+ }),
42
+ defineComponent({
43
+ id: 'base.primitives.Text',
44
+ namespace: 'base.primitives',
45
+ title: 'Text',
46
+ props: { value: { type: 'text', context: 'prop', default: '', form: { label: 'Text' } } },
47
+ slots: [],
48
+ }),
49
+ defineComponent({
50
+ id: 'base.primitives.Repeater',
51
+ namespace: 'base.primitives',
52
+ title: 'Repeater',
53
+ // EC-190 DD7: the iterated `items` value (an array) has no static field-def type;
54
+ // it rides node.props undeclared. No editable static prop is exposed — keep `iterate`.
55
+ props: {},
56
+ slots: [{ name: 'item', required: true }],
57
+ iterate: { itemsProp: 'items', itemSlot: 'item' },
58
+ }),
59
+ ];
60
+ /**
61
+ * Routes that all bind to a renderable document (EC-187): `/` → the `page/home`
62
+ * document (composition), `/blog/:slug` → a `post` document by slug. So the
63
+ * export validates and every route renders. `r-post` carries a dynamic `:slug`
64
+ * param to exercise param routing.
65
+ */
66
+ export const referenceRoutes = [
67
+ { id: 'r-home', pattern: '/', locale: 'en', document: { collection: 'page', id: 'home' } },
68
+ { id: 'r-home-de', pattern: '/', locale: 'de', document: { collection: 'page', id: 'home' } },
69
+ { id: 'r-post', pattern: '/blog/:slug', locale: 'en', document: { collection: 'post', id: ':slug' } },
70
+ ];
71
+ export const referenceRedirects = [
72
+ { id: 'rd-old-home', from: '/home', to: '/', permanent: true },
73
+ ];
74
+ /** The full reference export input — deterministic. */
75
+ export const referenceInput = {
76
+ projectName: 'Sample Project',
77
+ slug: 'sample-project',
78
+ graph: validSampleGraph,
79
+ routes: referenceRoutes,
80
+ redirects: referenceRedirects,
81
+ collections: [...sampleCollections],
82
+ manifests: referenceManifests,
83
+ sources: sampleSources,
84
+ localeConfig: sampleLocaleConfig,
85
+ tokensCss: emitTokensCss(),
86
+ };
87
+ //# sourceMappingURL=fixtures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../src/export-sync/fixtures.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { ExportInput, GeneratedFile } from './core';
2
+ /**
3
+ * Generate the full standalone Next.js App Router app for a project (EC-101–109, eject shape
4
+ * per EC-149). Deterministic: the same input always yields the same sorted file set. No
5
+ * component stubs are generated — project components are imported from the host repo.
6
+ */
7
+ export declare function generateExport(input: ExportInput): GeneratedFile[];
@@ -0,0 +1,505 @@
1
+ import { namespaceOf } from '@elytracms/core/component-registry';
2
+ import { serializeProjectGraph } from '@elytracms/core/project-graph';
3
+ import { DEFAULT_COMPONENTS_IMPORT, generatedBanner, sortFiles, stableJson } from './core';
4
+ /** Canonical graph JSON (validated by the serializer), pretty-printed for review. */
5
+ function graphJson(graph) {
6
+ return JSON.stringify(JSON.parse(serializeProjectGraph(graph)), null, 2);
7
+ }
8
+ /**
9
+ * Next.js App Router code generation (EC-101–109, ejected shape per EC-149). Each function emits
10
+ * one readable file. The output is a standalone app that depends only on the published
11
+ * `@elytracms/*` runtime packages (never builder-only code), reads its content from the JSON
12
+ * snapshot generated alongside it (zero runtime dependency on the builder backend), and renders
13
+ * the canonical graph through the runtime renderer. Project components are NOT generated — they
14
+ * are real code in the host repo (vision AD-2) that the generated registry imports.
15
+ */
16
+ // ---------------------------------------------------------------------------
17
+ // Content data (EC-101/104) — the canonical model serialized as JSON the app reads.
18
+ // ---------------------------------------------------------------------------
19
+ function contentFiles(input) {
20
+ return [
21
+ { path: 'content/graph.json', contents: graphJson(input.graph) },
22
+ { path: 'content/routes.json', contents: stableJson(input.routes) },
23
+ { path: 'content/redirects.json', contents: stableJson(input.redirects) },
24
+ { path: 'content/collections.json', contents: stableJson(input.collections) },
25
+ { path: 'content/sources.json', contents: stableJson(input.sources) },
26
+ { path: 'content/locales.json', contents: stableJson(input.localeConfig) },
27
+ ];
28
+ }
29
+ // ---------------------------------------------------------------------------
30
+ // Registry (EC-102/149) — wire component ids → implementations, namespace-correct.
31
+ // Project components are real code in the host repo (vision AD-2): the registry IMPORTS them
32
+ // from the configured components module instead of generating stubs.
33
+ // ---------------------------------------------------------------------------
34
+ function registryFile(input) {
35
+ const projectIds = input.manifests
36
+ .map((m) => m.id)
37
+ .filter((id) => namespaceOf(id) !== 'base.primitives')
38
+ .sort();
39
+ const componentsImport = input.componentsImport ?? DEFAULT_COMPONENTS_IMPORT;
40
+ const contents = projectIds.length === 0
41
+ ? `${generatedBanner('lib/registry.ts')}
42
+ import { ComponentRegistry } from '@elytracms/core/component-registry'
43
+ import { basePrimitives } from '@elytracms/core/runtime-renderer'
44
+ import type { ComponentImplementations } from '@elytracms/core/runtime-renderer'
45
+
46
+ // Platform primitives (base.primitives.*) ship with the runtime renderer.
47
+ // This project uses only base primitives — no host components module is imported.
48
+ const base = basePrimitives()
49
+
50
+ /** The ejected app's component registry. */
51
+ export const registry = new ComponentRegistry(base.manifests)
52
+
53
+ export const implementations: ComponentImplementations = base.implementations
54
+ `
55
+ : `${generatedBanner('lib/registry.ts')}
56
+ import { ComponentRegistry } from '@elytracms/core/component-registry'
57
+ import { basePrimitives } from '@elytracms/core/runtime-renderer'
58
+ import type { ComponentImplementations } from '@elytracms/core/runtime-renderer'
59
+ // Your REAL components, from the host repo (configure with \`builder eject --components <specifier>\`).
60
+ // The module must export \`projectManifests\` (ComponentManifest[]) and
61
+ // \`projectImplementations\` (ComponentImplementations) — see README.md.
62
+ import { projectManifests, projectImplementations } from ${JSON.stringify(componentsImport)}
63
+
64
+ // Platform primitives (base.primitives.*) ship with the runtime renderer.
65
+ const base = basePrimitives()
66
+
67
+ /** The ejected app's component registry — base primitives + this project's components. */
68
+ export const registry = new ComponentRegistry([...base.manifests, ...projectManifests])
69
+
70
+ export const implementations: ComponentImplementations = {
71
+ ...base.implementations,
72
+ ...projectImplementations,
73
+ }
74
+
75
+ // Project components this graph references (expected from ${JSON.stringify(componentsImport)}):
76
+ ${projectIds.map((id) => `// - ${id}`).join('\n')}
77
+ `;
78
+ return { path: 'lib/registry.ts', contents };
79
+ }
80
+ // ---------------------------------------------------------------------------
81
+ // Renderer (EC-103) — server-safe re-export, no builder-only deps.
82
+ // ---------------------------------------------------------------------------
83
+ function rendererFile() {
84
+ const contents = `${generatedBanner('lib/renderer.ts')}
85
+ import { renderCompositionInLayout } from '@elytracms/core/runtime-renderer'
86
+ import type { ProjectGraph } from '@elytracms/core/project-graph'
87
+ import type { ReactNode } from 'react'
88
+ import { registry, implementations } from './registry'
89
+ import { resolveBinding } from './cms-client'
90
+ import type { RepeaterItem } from './cms-client'
91
+
92
+ /**
93
+ * Render a page-collection document's \`body\` composition into its \`layoutId\`
94
+ * layout (EC-187), server-side. Bindings resolve through the CMS client
95
+ * (published or draft, per request). No builder-only code is imported.
96
+ */
97
+ export function renderPage(
98
+ graph: ProjectGraph,
99
+ body: unknown,
100
+ layoutId: string | undefined,
101
+ payloads: Record<string, unknown>,
102
+ ): ReactNode {
103
+ return renderCompositionInLayout(graph, layoutId, body, {
104
+ registry,
105
+ implementations,
106
+ resolveBinding: (ref, item?: RepeaterItem) => resolveBinding(payloads, ref, item),
107
+ })
108
+ }
109
+ `;
110
+ return { path: 'lib/renderer.ts', contents };
111
+ }
112
+ // ---------------------------------------------------------------------------
113
+ // CMS adapter client (EC-104) — provider-neutral content + binding resolution.
114
+ // ---------------------------------------------------------------------------
115
+ function cmsClientFile() {
116
+ const contents = `${generatedBanner('lib/cms-client.ts')}
117
+ import { resolveBinding as resolve } from '@elytracms/core/data-binding'
118
+ import type { BindingReference, JsonValue } from '@elytracms/core/project-graph'
119
+ import { SourceRegistry } from '@elytracms/core/data-binding'
120
+ import sources from '../content/sources.json'
121
+
122
+ export interface RepeaterItem {
123
+ item: unknown
124
+ index: number
125
+ }
126
+
127
+ /**
128
+ * The content/data adapter for the ejected app. Provider-neutral: by default it reads the
129
+ * payloads snapshotted into content/sources.json at eject time (no builder backend needed),
130
+ * but you can swap \`fetchPayloads\` to hit your live backend (Convex / REST / CMS) and choose
131
+ * published vs draft via \`mode\`.
132
+ */
133
+ export type ContentMode = 'published' | 'draft'
134
+
135
+ const registry = SourceRegistry.from(sources as never)
136
+
137
+ /** Build the payload store for a request. Replace with live fetching as needed. */
138
+ export async function fetchPayloads(_mode: ContentMode = 'published'): Promise<Record<string, JsonValue>> {
139
+ const payloads: Record<string, JsonValue> = {}
140
+ for (const source of registry.list()) {
141
+ if (source.sample !== undefined) payloads[source.id] = source.sample
142
+ }
143
+ return payloads
144
+ }
145
+
146
+ /**
147
+ * The shape of a routed page-collection document (EC-187): \`body\` is the canvas
148
+ * composition, \`layoutId\` selects the wrapping layout. Content collections that
149
+ * are not pages are rendered by your own route components.
150
+ */
151
+ export interface PageDocument {
152
+ body: unknown
153
+ layoutId?: string
154
+ }
155
+
156
+ /**
157
+ * Fetch the routed \`page\`-collection document. STUB: wire this to your content
158
+ * backend (Convex / REST / CMS) — return the page document for the resolved
159
+ * route ref + params, or \`null\` for a 404. The CLI export ships the route table
160
+ * and the layout graph; the page documents live in your CMS.
161
+ */
162
+ export async function fetchPageDocument(
163
+ _ref: { collection: string; id: string },
164
+ _params: Record<string, string>,
165
+ ): Promise<PageDocument | null> {
166
+ return null
167
+ }
168
+
169
+ /** Resolve a single binding against the request's payloads (used by the renderer). */
170
+ export function resolveBinding(
171
+ payloads: Record<string, unknown>,
172
+ ref: BindingReference,
173
+ item?: RepeaterItem,
174
+ ): unknown {
175
+ const resolution = resolve(ref, { payloads: payloads as Record<string, JsonValue>, registry }, item as never)
176
+ switch (resolution.kind) {
177
+ case 'value':
178
+ return resolution.value
179
+ case 'props':
180
+ return resolution.props
181
+ case 'condition':
182
+ return resolution.pass
183
+ default:
184
+ return undefined
185
+ }
186
+ }
187
+ `;
188
+ return { path: 'lib/cms-client.ts', contents };
189
+ }
190
+ // ---------------------------------------------------------------------------
191
+ // Route resolver integration (EC-105) — App Router wiring with redirects/fallbacks/locale.
192
+ // ---------------------------------------------------------------------------
193
+ function routesFile() {
194
+ const contents = `${generatedBanner('lib/routes.ts')}
195
+ import { createRouter } from '@elytracms/core/cms-core'
196
+ import type { ResolveResult } from '@elytracms/core/cms-core'
197
+ import routes from '../content/routes.json'
198
+ import redirects from '../content/redirects.json'
199
+ import locales from '../content/locales.json'
200
+
201
+ const config = locales as { default: string; locales: string[] }
202
+ const router = createRouter(routes as never, redirects as never, { defaultLocale: config.default })
203
+
204
+ /**
205
+ * Derive the request locale from a leading URL segment (the \`/de/about\` strategy) and return the
206
+ * remaining path. Falls back to the default locale when no locale prefix is present (EC-105).
207
+ */
208
+ export function splitLocale(url: string): { locale: string; path: string } {
209
+ const segments = url.split('/').filter((s) => s.length > 0)
210
+ const first = segments[0]
211
+ if (first && first !== config.default && config.locales.includes(first)) {
212
+ return { locale: first, path: '/' + segments.slice(1).join('/') }
213
+ }
214
+ return { locale: config.default, path: url }
215
+ }
216
+
217
+ /** Resolve a request URL to a page + params, honoring redirects, fallbacks and locale (EC-105). */
218
+ export function resolveRoute(url: string, locale?: string): ResolveResult {
219
+ return router.resolveUrl(url, locale)
220
+ }
221
+
222
+ /** Follow a redirect chain to its terminus. */
223
+ export function resolveRedirect(from: string) {
224
+ return router.followRedirects(from)
225
+ }
226
+ `;
227
+ return { path: 'lib/routes.ts', contents };
228
+ }
229
+ // ---------------------------------------------------------------------------
230
+ // Image & asset adapter (EC-106).
231
+ // ---------------------------------------------------------------------------
232
+ function assetsFile() {
233
+ const contents = `${generatedBanner('lib/assets.ts')}
234
+ /**
235
+ * Asset URL resolution + image optimization hook points (EC-106). Storage-adapter neutral:
236
+ * point \`ASSET_BASE_URL\` at your CDN/storage, or replace \`assetUrl\` entirely.
237
+ */
238
+ const ASSET_BASE_URL = process.env.NEXT_PUBLIC_ASSET_BASE_URL ?? ''
239
+
240
+ /** Resolve an asset id/path to a fully-qualified URL. */
241
+ export function assetUrl(idOrPath: string): string {
242
+ if (/^https?:\\/\\//.test(idOrPath)) return idOrPath
243
+ const base = ASSET_BASE_URL.replace(/\\/$/, '')
244
+ const path = idOrPath.replace(/^\\//, '')
245
+ return base ? \`\${base}/\${path}\` : \`/\${path}\`
246
+ }
247
+
248
+ /** A next/image loader hook — wire your provider's transform params here. */
249
+ export function imageLoader({ src, width, quality }: { src: string; width: number; quality?: number }): string {
250
+ const url = assetUrl(src)
251
+ const sep = url.includes('?') ? '&' : '?'
252
+ return \`\${url}\${sep}w=\${width}&q=\${quality ?? 75}\`
253
+ }
254
+ `;
255
+ return { path: 'lib/assets.ts', contents };
256
+ }
257
+ // ---------------------------------------------------------------------------
258
+ // App Router pages (EC-101/105).
259
+ // ---------------------------------------------------------------------------
260
+ function appFiles(input) {
261
+ const layout = {
262
+ path: 'app/layout.tsx',
263
+ contents: `${generatedBanner('app/layout.tsx')}
264
+ import type { ReactNode } from 'react'
265
+ import './globals.css'
266
+
267
+ export const metadata = { title: ${JSON.stringify(input.projectName)} }
268
+
269
+ export default function RootLayout({ children }: { children: ReactNode }) {
270
+ return (
271
+ <html lang={${JSON.stringify(input.localeConfig.default)}} className="dark">
272
+ <body>{children}</body>
273
+ </html>
274
+ )
275
+ }
276
+ `,
277
+ };
278
+ const catchAll = {
279
+ path: 'app/[[...slug]]/page.tsx',
280
+ contents: `${generatedBanner('app/[[...slug]]/page.tsx')}
281
+ import { notFound, redirect } from 'next/navigation'
282
+ import type { ProjectGraph } from '@elytracms/core/project-graph'
283
+ import graphData from '../../content/graph.json'
284
+ import { resolveRoute, splitLocale } from '../../lib/routes'
285
+ import { renderPage } from '../../lib/renderer'
286
+ import { fetchPayloads, fetchPageDocument } from '../../lib/cms-client'
287
+
288
+ const graph = graphData as unknown as ProjectGraph
289
+
290
+ /**
291
+ * The single catch-all route (EC-101/105, EC-187): derive the locale, resolve the URL through the
292
+ * canonical route resolver (honoring redirects, fallbacks and locale) to a document ref, fetch the
293
+ * matched \`page\`-collection document, and render its \`body\` composition into its \`layoutId\`
294
+ * layout with the route's dynamic params available to bindings. A miss is a real 404.
295
+ */
296
+ export default async function Page({ params }: { params: Promise<{ slug?: string[] }> }) {
297
+ const { slug } = await params
298
+ const url = '/' + (slug ?? []).join('/')
299
+ const { locale, path } = splitLocale(url)
300
+
301
+ const result = resolveRoute(path, locale)
302
+ if (result.status === 'redirect' && result.redirectTarget) {
303
+ redirect(result.redirectTarget)
304
+ }
305
+ if (result.status !== 'ok' || !result.documentRef) {
306
+ notFound()
307
+ }
308
+
309
+ // Fetch the routed page document (its \`body\` is the composition, \`layoutId\` the layout).
310
+ const doc = await fetchPageDocument(result.documentRef, result.dynamicParams)
311
+ if (!doc) {
312
+ notFound()
313
+ }
314
+
315
+ // Route params are exposed to bindings under the reserved \`params\` source (e.g. /params/slug).
316
+ const payloads = { ...(await fetchPayloads('published')), params: result.dynamicParams }
317
+ const layoutId = typeof doc.layoutId === 'string' ? doc.layoutId : undefined
318
+ return <>{renderPage(graph, doc.body, layoutId, payloads)}</>
319
+ }
320
+ `,
321
+ };
322
+ const notFoundFile = {
323
+ path: 'app/not-found.tsx',
324
+ contents: `${generatedBanner('app/not-found.tsx')}
325
+ export default function NotFound() {
326
+ return (
327
+ <main style={{ padding: '4rem', fontFamily: 'system-ui' }}>
328
+ <h1>404 — Not found</h1>
329
+ <p>No route matched this URL.</p>
330
+ </main>
331
+ )
332
+ }
333
+ `,
334
+ };
335
+ return [layout, catchAll, notFoundFile];
336
+ }
337
+ function globalsCss(input) {
338
+ return {
339
+ path: 'app/globals.css',
340
+ contents: `/* Generated design tokens — from @elytracms/design-tokens. Edit tokens in the builder. */
341
+ ${input.tokensCss}
342
+ :root { color-scheme: dark; }
343
+ body { margin: 0; background: var(--background); color: var(--foreground); }
344
+ `,
345
+ };
346
+ }
347
+ // ---------------------------------------------------------------------------
348
+ // Scaffold (EC-107/108/109, eject shape per EC-149) — package.json, tsconfig, next.config,
349
+ // vercel, env, README. The ejected app builds from its committed content snapshot: no pull
350
+ // step, no builder credentials, zero runtime dependency on the builder backend.
351
+ // ---------------------------------------------------------------------------
352
+ function scaffoldFiles(input) {
353
+ const componentsImport = input.componentsImport ?? DEFAULT_COMPONENTS_IMPORT;
354
+ const hasProjectComponents = input.manifests.some((m) => namespaceOf(m.id) !== 'base.primitives');
355
+ const pkg = {
356
+ name: input.slug,
357
+ version: '0.0.0',
358
+ private: true,
359
+ type: 'module',
360
+ scripts: {
361
+ // The app builds from its committed content snapshot — no builder access needed (EC-149).
362
+ dev: 'next dev',
363
+ build: 'next build',
364
+ start: 'next start',
365
+ },
366
+ dependencies: {
367
+ // EC-265: the renderer closure is one package now (subpath imports in the
368
+ // generated code resolve through @elytracms/core's exports map).
369
+ '@elytracms/core': 'workspace:*',
370
+ next: '^15.0.0',
371
+ react: '^19.0.0',
372
+ 'react-dom': '^19.0.0',
373
+ },
374
+ };
375
+ const envExample = `# Environment for ${input.projectName} (EC-107/149)
376
+ # The ejected app has NO builder backend dependency: content is snapshotted into content/*.json.
377
+ # Only configure what your own infrastructure needs.
378
+
379
+ # Asset storage (EC-106) — base URL for asset/image resolution
380
+ NEXT_PUBLIC_ASSET_BASE_URL=
381
+ `;
382
+ const vercel = {
383
+ $schema: 'https://openapi.vercel.sh/vercel.json',
384
+ framework: 'nextjs',
385
+ installCommand: 'pnpm install',
386
+ };
387
+ const nextConfig = `${generatedBanner('next.config.mjs')}
388
+ /** @type {import('next').NextConfig} */
389
+ const nextConfig = {
390
+ // Allow the components module to live outside the app directory (e.g. elsewhere in your repo).
391
+ experimental: { externalDir: true },
392
+ }
393
+ export default nextConfig
394
+ `;
395
+ const tsconfig = {
396
+ compilerOptions: {
397
+ target: 'ES2022',
398
+ lib: ['dom', 'dom.iterable', 'ES2022'],
399
+ module: 'ESNext',
400
+ moduleResolution: 'Bundler',
401
+ jsx: 'preserve',
402
+ strict: true,
403
+ esModuleInterop: true,
404
+ resolveJsonModule: true,
405
+ noEmit: true,
406
+ plugins: [{ name: 'next' }],
407
+ },
408
+ include: ['app', 'lib', 'content', 'next-env.d.ts'],
409
+ };
410
+ const componentsSection = hasProjectComponents
411
+ ? `## Your components (the one thing eject does not generate)
412
+
413
+ Project components are **real code in your repo** — they were never builder-generated. The
414
+ generated \`lib/registry.ts\` imports them from:
415
+
416
+ \`\`\`ts
417
+ import { projectManifests, projectImplementations } from ${JSON.stringify(componentsImport)}
418
+ \`\`\`
419
+
420
+ That module is yours and must export:
421
+
422
+ - \`projectManifests: ComponentManifest[]\` — the same manifests you push with \`builder push\`
423
+ - \`projectImplementations: ComponentImplementations\` — component id → React implementation
424
+
425
+ Relative specifiers resolve from \`lib/registry.ts\` (the default, \`${DEFAULT_COMPONENTS_IMPORT}\`,
426
+ is a \`components/\` module at the app root); a bare specifier must be a dependency of this app.
427
+ Re-run \`builder eject --components <specifier>\` to point the registry somewhere else.
428
+ \`next.config.mjs\` sets \`experimental.externalDir\` so the module may live outside the app
429
+ directory.
430
+ `
431
+ : `## Your components
432
+
433
+ This project uses only platform primitives (\`base.primitives.*\`), which ship with
434
+ \`@elytracms/runtime-renderer\` — no host components module is imported. If you add project
435
+ components later, re-run \`builder eject --components <specifier>\` to wire in the module that
436
+ exports \`projectManifests\` and \`projectImplementations\`.
437
+ `;
438
+ const readme = `# ${input.projectName}
439
+
440
+ Ejected from **Elytra** (\`builder eject\`, \`@elytracms/export-sync\`). A standalone
441
+ Next.js App Router app that renders the project's canonical graph — the exit guarantee: you can
442
+ leave the platform anytime with a working app.
443
+
444
+ **Zero builder dependency:** the canonical model (graph, routes, redirects, collections, sources,
445
+ locales) is snapshotted into \`content/*.json\` at eject time. Building and serving this app needs
446
+ no builder backend and no network access to Elytra.
447
+
448
+ ## Structure (EC-109/149)
449
+
450
+ | Path | What it is |
451
+ | --- | --- |
452
+ | \`app/\` | App Router: a single catch-all that resolves URLs via the route resolver |
453
+ | \`app/globals.css\` | Design tokens (generated from \`@elytracms/design-tokens\`) |
454
+ | \`lib/registry.ts\` | Component registry — base primitives + your components, imported from your repo |
455
+ | \`lib/renderer.ts\` | Server-safe page renderer |
456
+ | \`lib/cms-client.ts\` | Content/data adapter (reads the embedded snapshot by default) |
457
+ | \`lib/routes.ts\` | Route resolver (redirects, fallbacks, locale) |
458
+ | \`lib/assets.ts\` | Asset URL + image optimization hooks |
459
+ | \`content/*.json\` | The snapshotted canonical model (graph, routes, schemas, sources) |
460
+
461
+ No builder-only runtime code is included. Every file is readable and yours to edit.
462
+
463
+ ${componentsSection}
464
+ ## Develop & deploy
465
+
466
+ \`\`\`bash
467
+ pnpm install
468
+ pnpm dev # or: pnpm build && pnpm start
469
+ \`\`\`
470
+
471
+ To refresh the snapshot from the builder before you leave for good, re-run \`builder eject\`:
472
+ it validates first and refuses to write a broken app (missing components, broken bindings,
473
+ route conflicts, redirect loops all fail the eject).
474
+
475
+ To serve live content instead of the snapshot, replace \`fetchPayloads\` in \`lib/cms-client.ts\`
476
+ with your own backend fetch — the renderer and routing are backend-agnostic.
477
+ `;
478
+ return [
479
+ { path: 'package.json', contents: stableJson(pkg) + '\n' },
480
+ { path: '.env.example', contents: envExample },
481
+ { path: 'vercel.json', contents: stableJson(vercel) + '\n' },
482
+ { path: 'next.config.mjs', contents: nextConfig },
483
+ { path: 'tsconfig.json', contents: stableJson(tsconfig) + '\n' },
484
+ { path: 'README.md', contents: readme },
485
+ ];
486
+ }
487
+ /**
488
+ * Generate the full standalone Next.js App Router app for a project (EC-101–109, eject shape
489
+ * per EC-149). Deterministic: the same input always yields the same sorted file set. No
490
+ * component stubs are generated — project components are imported from the host repo.
491
+ */
492
+ export function generateExport(input) {
493
+ return sortFiles([
494
+ ...appFiles(input),
495
+ globalsCss(input),
496
+ registryFile(input),
497
+ rendererFile(),
498
+ cmsClientFile(),
499
+ routesFile(),
500
+ assetsFile(),
501
+ ...contentFiles(input),
502
+ ...scaffoldFiles(input),
503
+ ]);
504
+ }
505
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/export-sync/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAErE,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAE1F,qFAAqF;AACrF,SAAS,SAAS,CAAC,KAA2B;IAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AAC1E,CAAC;AAED;;;;;;;GAOG;AAEH,8EAA8E;AAC9E,oFAAoF;AACpF,8EAA8E;AAE9E,SAAS,YAAY,CAAC,KAAkB;IACtC,OAAO;QACL,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QAChE,EAAE,IAAI,EAAE,qBAAqB,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QACnE,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;QACzE,EAAE,IAAI,EAAE,0BAA0B,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;QAC7E,EAAE,IAAI,EAAE,sBAAsB,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QACrE,EAAE,IAAI,EAAE,sBAAsB,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;KAC3E,CAAA;AACH,CAAC;AAED,8EAA8E;AAC9E,mFAAmF;AACnF,6FAA6F;AAC7F,qEAAqE;AACrE,8EAA8E;AAE9E,SAAS,YAAY,CAAC,KAAkB;IACtC,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS;SAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,iBAAiB,CAAC;SACrD,IAAI,EAAE,CAAA;IACT,MAAM,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,IAAI,yBAAyB,CAAA;IAE5E,MAAM,QAAQ,GACZ,UAAU,CAAC,MAAM,KAAK,CAAC;QACrB,CAAC,CAAC,GAAG,eAAe,CAAC,iBAAiB,CAAC;;;;;;;;;;;;;CAa5C;QACK,CAAC,CAAC,GAAG,eAAe,CAAC,iBAAiB,CAAC;;;;;;;2DAOc,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;;;;;;;;;;;;;6DAa9B,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;EAC3F,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;CAClD,CAAA;IACC,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAA;AAC9C,CAAC;AAED,8EAA8E;AAC9E,mEAAmE;AACnE,8EAA8E;AAE9E,SAAS,YAAY;IACnB,MAAM,QAAQ,GAAG,GAAG,eAAe,CAAC,iBAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;CAyBvD,CAAA;IACC,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAA;AAC9C,CAAC;AAED,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAE9E,SAAS,aAAa;IACpB,MAAM,QAAQ,GAAG,GAAG,eAAe,CAAC,mBAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuEzD,CAAA;IACC,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAA;AAChD,CAAC;AAED,8EAA8E;AAC9E,2FAA2F;AAC3F,8EAA8E;AAE9E,SAAS,UAAU;IACjB,MAAM,QAAQ,GAAG,GAAG,eAAe,CAAC,eAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCrD,CAAA;IACC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAA;AAC5C,CAAC;AAED,8EAA8E;AAC9E,kCAAkC;AAClC,8EAA8E;AAE9E,SAAS,UAAU;IACjB,MAAM,QAAQ,GAAG,GAAG,eAAe,CAAC,eAAe,CAAC;;;;;;;;;;;;;;;;;;;;;CAqBrD,CAAA;IACC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAA;AAC5C,CAAC;AAED,8EAA8E;AAC9E,iCAAiC;AACjC,8EAA8E;AAE9E,SAAS,QAAQ,CAAC,KAAkB;IAClC,MAAM,MAAM,GAAkB;QAC5B,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,GAAG,eAAe,CAAC,gBAAgB,CAAC;;;;mCAIf,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC;;;;kBAIlD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC;;;;;CAK3D;KACE,CAAA;IAED,MAAM,QAAQ,GAAkB;QAC9B,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,GAAG,eAAe,CAAC,0BAA0B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwC3D;KACE,CAAA;IAED,MAAM,YAAY,GAAkB;QAClC,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,GAAG,eAAe,CAAC,mBAAmB,CAAC;;;;;;;;;CASpD;KACE,CAAA;IAED,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAA;AACzC,CAAC;AAED,SAAS,UAAU,CAAC,KAAkB;IACpC,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE;EACZ,KAAK,CAAC,SAAS;;;CAGhB;KACE,CAAA;AACH,CAAC;AAED,8EAA8E;AAC9E,2FAA2F;AAC3F,2FAA2F;AAC3F,gFAAgF;AAChF,8EAA8E;AAE9E,SAAS,aAAa,CAAC,KAAkB;IACvC,MAAM,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,IAAI,yBAAyB,CAAA;IAC5E,MAAM,oBAAoB,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,iBAAiB,CAAC,CAAA;IAEjG,MAAM,GAAG,GAAG;QACV,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE;YACP,0FAA0F;YAC1F,GAAG,EAAE,UAAU;YACf,KAAK,EAAE,YAAY;YACnB,KAAK,EAAE,YAAY;SACpB;QACD,YAAY,EAAE;YACZ,0EAA0E;YAC1E,iEAAiE;YACjE,iBAAiB,EAAE,aAAa;YAChC,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,SAAS;SACvB;KACF,CAAA;IAED,MAAM,UAAU,GAAG,qBAAqB,KAAK,CAAC,WAAW;;;;;;CAM1D,CAAA;IAEC,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,uCAAuC;QAChD,SAAS,EAAE,QAAQ;QACnB,cAAc,EAAE,cAAc;KAC/B,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,eAAe,CAAC,iBAAiB,CAAC;;;;;;;CAOzD,CAAA;IAEC,MAAM,QAAQ,GAAG;QACf,eAAe,EAAE;YACf,MAAM,EAAE,QAAQ;YAChB,GAAG,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC;YACtC,MAAM,EAAE,QAAQ;YAChB,gBAAgB,EAAE,SAAS;YAC3B,GAAG,EAAE,UAAU;YACf,MAAM,EAAE,IAAI;YACZ,eAAe,EAAE,IAAI;YACrB,iBAAiB,EAAE,IAAI;YACvB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;SAC5B;QACD,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,CAAC;KACpD,CAAA;IAED,MAAM,iBAAiB,GAAG,oBAAoB;QAC5C,CAAC,CAAC;;;;;;2DAMqD,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;;;;;;;;uEAQpB,yBAAyB;;;;;CAK/F;QACG,CAAC,CAAC;;;;;;CAML,CAAA;IAEC,MAAM,MAAM,GAAG,KAAK,KAAK,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;EAyBrC,iBAAiB;;;;;;;;;;;;;;CAclB,CAAA;IAEC,OAAO;QACL,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE;QAC1D,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE;QAC9C,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE;QAC5D,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,UAAU,EAAE;QACjD,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE;QAChE,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE;KACxC,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,KAAkB;IAC/C,OAAO,SAAS,CAAC;QACf,GAAG,QAAQ,CAAC,KAAK,CAAC;QAClB,UAAU,CAAC,KAAK,CAAC;QACjB,YAAY,CAAC,KAAK,CAAC;QACnB,YAAY,EAAE;QACd,aAAa,EAAE;QACf,UAAU,EAAE;QACZ,UAAU,EAAE;QACZ,GAAG,YAAY,CAAC,KAAK,CAAC;QACtB,GAAG,aAAa,CAAC,KAAK,CAAC;KACxB,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @elytracms/export-sync — the `builder` CLI surfaces around the canonical project model.
3
+ *
4
+ * EC-147 (vision AD-2): `builder push` discovers component manifests in the host repo,
5
+ * validates them, and syncs them up into builder registry persistence — with watch mode for
6
+ * local dev and an all-or-nothing CI mode. This is the day-to-day workflow: the embedded
7
+ * runtime renders the graph in the user's own app.
8
+ *
9
+ * EC-148 (vision AD-2/AD-4): `builder typegen` emits the per-collection delivery-shape +
10
+ * accessor types (EC-142/EC-143 codegen) into the host repo as a committed, deterministic
11
+ * module; `builder check` is the CI gate that verifies code and builder state agree —
12
+ * manifest drift both ways, graph↔code component coverage, type drift, and the canonical
13
+ * validation (route conflicts, broken bindings) surfaced through the CLI.
14
+ *
15
+ * EC-149 (vision AD-1): `builder eject` is the exit guarantee — a pure, deterministic
16
+ * generation (brief §4.9, EC-101–113) of a standalone Next.js App Router app with the model
17
+ * snapshotted in and the host repo's real components imported (never stubbed). The export-era
18
+ * `pull`/`validate` surface remains for validation and drift checks; `pull` is deprecated.
19
+ */
20
+ export declare const PACKAGE = "@elytracms/core/export-sync";
21
+ export * from './core';
22
+ export * from './validate';
23
+ export * from './generate';
24
+ export * from './sync';
25
+ export * from './eject';
26
+ export * from './cli';
27
+ export * from './fixtures';
28
+ export * from './manifest-host';
29
+ export * from './registry-sync-client';
30
+ export * from './builder-source';
31
+ export * from './push';
32
+ export * from './watch';
33
+ export * from './typegen';
34
+ export * from './check';
35
+ export * from './init';
36
+ export { defineElytraConfig, elytraConfigInputSchema, extractWorkspaceConfigExport, resolveWorkspaceConfig, toProjectSettings, WORKSPACE_CONFIG_FILE, WORKSPACE_CONFIG_FILES, } from '@elytracms/core/studio-core';
37
+ export type { ElytraConfigInput, ResolvedWorkspaceProject, WorkspaceConfigIssue, WorkspaceConfigIssueCode, WorkspaceConfigResult, } from '@elytracms/core/studio-core';