@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,7 @@
1
+ import type { ComponentManifest } from '@elytracms/core/component-registry';
2
+ /** Base primitives the kit graphs use (mirrors `@elytracms/core/runtime-renderer` shapes). */
3
+ export declare const BASE_MANIFESTS: ComponentManifest[];
4
+ /** Seeded project components (EC-116) — same ids/props the Studio registry implements. */
5
+ export declare const PROJECT_MANIFESTS: ComponentManifest[];
6
+ /** All manifests a kit may reference. */
7
+ export declare const KIT_MANIFESTS: ComponentManifest[];
@@ -0,0 +1,111 @@
1
+ import { SPACING_TOKEN_NAMES, GRID_MIN_COLUMNS, GRID_MAX_COLUMNS } from '@elytracms/core/project-graph';
2
+ import { defineComponent } from '@elytracms/core/component-registry';
3
+ /**
4
+ * Component manifests a starter kit validates against (EC-116). Base primitives plus the seeded
5
+ * `project.*` components — declared to match the Studio registry's implementations (same ids and
6
+ * prop names), so a kit's graph both validates here and renders in the Builder. Kept React-free:
7
+ * these are manifests (shape), not implementations.
8
+ *
9
+ * EC-190 "props as fields": a prop is a `@elytracms/core/cms-core` field-def minus its `name` (the record
10
+ * key is the name). Every prop carries `context: 'prop'`; label/default live on `form`/`default`.
11
+ * These mirror the canonical `@elytracms/core/runtime-renderer` primitive manifests.
12
+ */
13
+ // --- Field-def prop helpers -------------------------------------------------
14
+ /** A plain-text prop. */
15
+ const text = (label, defaultValue) => ({
16
+ type: 'text',
17
+ context: 'prop',
18
+ ...(defaultValue !== undefined ? { default: defaultValue } : {}),
19
+ form: { label },
20
+ });
21
+ /** A required (min length 1) text prop. */
22
+ const textReq = (label, defaultValue) => ({
23
+ type: 'text',
24
+ context: 'prop',
25
+ ...(defaultValue !== undefined ? { default: defaultValue } : {}),
26
+ validation: { required: true, min: 1 },
27
+ form: { label },
28
+ });
29
+ /** A bounded numeric prop. */
30
+ const number = (label, defaultValue, validation) => ({
31
+ type: 'number',
32
+ context: 'prop',
33
+ default: defaultValue,
34
+ ...(validation ? { validation } : {}),
35
+ form: { label },
36
+ });
37
+ /** A boolean prop. */
38
+ const boolean = (label, defaultValue) => ({
39
+ type: 'boolean',
40
+ context: 'prop',
41
+ default: defaultValue,
42
+ form: { label },
43
+ });
44
+ /** A select prop over a fixed set of string options. */
45
+ const select = (label, values, defaultValue) => ({
46
+ type: 'select',
47
+ context: 'prop',
48
+ default: defaultValue,
49
+ options: values.map((value) => ({ value, label: value })),
50
+ form: { label },
51
+ });
52
+ /** A gap prop: a `select` over the canonical design-token spacing step names (EC-161). */
53
+ const gap = (defaultValue) => select('Gap', SPACING_TOKEN_NAMES, defaultValue);
54
+ /** Base primitives the kit graphs use (mirrors `@elytracms/core/runtime-renderer` shapes). */
55
+ export const BASE_MANIFESTS = [
56
+ defineComponent({ id: 'base.primitives.Container', namespace: 'base.primitives', title: 'Container', props: {}, slots: [{ name: 'children' }, { name: 'outlet' }] }),
57
+ defineComponent({ id: 'base.primitives.Stack', namespace: 'base.primitives', title: 'Stack', props: { gap: gap('4') }, slots: [{ name: 'children' }] }),
58
+ defineComponent({ id: 'base.primitives.Grid', namespace: 'base.primitives', title: 'Grid', props: { columns: number('Columns', 3, { min: GRID_MIN_COLUMNS, max: GRID_MAX_COLUMNS }), gap: gap('4') }, slots: [{ name: 'children' }] }),
59
+ defineComponent({ id: 'base.primitives.Heading', namespace: 'base.primitives', title: 'Heading', props: { text: text('Text', ''), level: number('Level', 2, { min: 1, max: 6 }) }, slots: [] }),
60
+ defineComponent({ id: 'base.primitives.Text', namespace: 'base.primitives', title: 'Text', props: { value: text('Text', '') }, slots: [] }),
61
+ defineComponent({ id: 'base.primitives.Button', namespace: 'base.primitives', title: 'Button', props: { label: text('Label', 'Button'), href: text('Href', '#') }, slots: [] }),
62
+ defineComponent({ id: 'base.primitives.Image', namespace: 'base.primitives', title: 'Image', props: { src: text('Source', ''), alt: text('Alt', '') }, slots: [] }),
63
+ // EC-190 DD7: a Repeater's `items` is a binding/iteration construct (an array) with no static
64
+ // field-def type; it rides node.props undeclared. No editable static prop — keep iterate + slots.
65
+ defineComponent({ id: 'base.primitives.Repeater', namespace: 'base.primitives', title: 'Repeater', props: {}, slots: [{ name: 'item', required: true }], iterate: { itemsProp: 'items', itemSlot: 'item' } }),
66
+ ];
67
+ /** Seeded project components (EC-116) — same ids/props the Studio registry implements. */
68
+ export const PROJECT_MANIFESTS = [
69
+ defineComponent({
70
+ id: 'project.MarketingHero',
71
+ namespace: 'project',
72
+ title: 'Marketing Hero',
73
+ category: 'marketing',
74
+ props: {
75
+ eyebrow: text('Eyebrow', 'New'),
76
+ heading: textReq('Heading', 'Build code-first websites'),
77
+ subheading: text('Subheading', 'One canonical graph.'),
78
+ ctaLabel: text('CTA label', 'Get started'),
79
+ align: select('Alignment', ['left', 'center'], 'left'),
80
+ },
81
+ slots: [],
82
+ }),
83
+ defineComponent({
84
+ id: 'project.FeatureCard',
85
+ namespace: 'project',
86
+ title: 'Feature Card',
87
+ category: 'content',
88
+ props: {
89
+ title: textReq('Title', 'Validation first'),
90
+ body: text('Body', 'Broken states are explicit.'),
91
+ tone: select('Tone', ['default', 'accent'], 'default'),
92
+ },
93
+ slots: [],
94
+ }),
95
+ defineComponent({
96
+ id: 'project.PricingCallout',
97
+ namespace: 'project',
98
+ title: 'Pricing Callout',
99
+ category: 'commerce',
100
+ props: {
101
+ plan: textReq('Plan', 'Pro'),
102
+ price: text('Price', '$29'),
103
+ period: text('Period', 'mo'),
104
+ featured: boolean('Featured', false),
105
+ },
106
+ slots: [],
107
+ }),
108
+ ];
109
+ /** All manifests a kit may reference. */
110
+ export const KIT_MANIFESTS = [...BASE_MANIFESTS, ...PROJECT_MANIFESTS];
111
+ //# sourceMappingURL=manifests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifests.js","sourceRoot":"","sources":["../../src/starter-kits/manifests.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { StarterKit } from './kit';
2
+ /**
3
+ * Template upgrade strategy (EC-120). Kits are semver-versioned. A project records the kit id +
4
+ * version it was instantiated from; when a newer kit version ships, an ordered list of
5
+ * {@link KitMigration}s describes how to move a project forward, one version at a time. Migrations
6
+ * are pure and inspectable — they transform a payload and report what changed — so an upgrade is
7
+ * reviewable and reversible, never a silent overwrite of the user's content.
8
+ */
9
+ /** A reference to the kit + version a project was instantiated from. */
10
+ export interface KitProvenance {
11
+ kitId: string;
12
+ version: string;
13
+ }
14
+ /** A single forward migration between two adjacent kit versions. */
15
+ export interface KitMigration<T = unknown> {
16
+ from: string;
17
+ to: string;
18
+ description: string;
19
+ /** Pure transform of the project payload; also returns a human changelog of what it did. */
20
+ apply: (payload: T) => {
21
+ payload: T;
22
+ changes: string[];
23
+ };
24
+ }
25
+ export type CompareResult = 'behind' | 'current' | 'ahead' | 'unknown';
26
+ /** Compare a project's kit version to the latest available kit version. */
27
+ export declare function compareVersion(projectVersion: string, latestVersion: string): CompareResult;
28
+ /** Whether a project instantiated from `provenance` can upgrade to `latest`. */
29
+ export declare function canUpgrade(provenance: KitProvenance, latest: StarterKit): boolean;
30
+ /**
31
+ * Build the ordered chain of migrations from `fromVersion` to `toVersion`. Migrations must form a
32
+ * contiguous from→to chain; a gap returns `undefined` so the host can surface "no upgrade path".
33
+ */
34
+ export declare function migrationPath<T>(migrations: readonly KitMigration<T>[], fromVersion: string, toVersion: string): KitMigration<T>[] | undefined;
35
+ /** Run a migration chain over a payload, accumulating the changelog. Pure. */
36
+ export declare function runMigrations<T>(path: readonly KitMigration<T>[], payload: T): {
37
+ payload: T;
38
+ changes: string[];
39
+ };
@@ -0,0 +1,54 @@
1
+ function parse(version) {
2
+ const m = /^(\d+)\.(\d+)\.(\d+)$/.exec(version);
3
+ return m ? [Number(m[1]), Number(m[2]), Number(m[3])] : null;
4
+ }
5
+ /** Compare a project's kit version to the latest available kit version. */
6
+ export function compareVersion(projectVersion, latestVersion) {
7
+ const a = parse(projectVersion);
8
+ const b = parse(latestVersion);
9
+ if (!a || !b)
10
+ return 'unknown';
11
+ for (let i = 0; i < 3; i++) {
12
+ if (a[i] < b[i])
13
+ return 'behind';
14
+ if (a[i] > b[i])
15
+ return 'ahead';
16
+ }
17
+ return 'current';
18
+ }
19
+ /** Whether a project instantiated from `provenance` can upgrade to `latest`. */
20
+ export function canUpgrade(provenance, latest) {
21
+ return provenance.kitId === latest.id && compareVersion(provenance.version, latest.version) === 'behind';
22
+ }
23
+ /**
24
+ * Build the ordered chain of migrations from `fromVersion` to `toVersion`. Migrations must form a
25
+ * contiguous from→to chain; a gap returns `undefined` so the host can surface "no upgrade path".
26
+ */
27
+ export function migrationPath(migrations, fromVersion, toVersion) {
28
+ const byFrom = new Map(migrations.map((m) => [m.from, m]));
29
+ const path = [];
30
+ let current = fromVersion;
31
+ const guard = migrations.length + 1;
32
+ for (let i = 0; i <= guard; i++) {
33
+ if (current === toVersion)
34
+ return path;
35
+ const next = byFrom.get(current);
36
+ if (!next)
37
+ return undefined;
38
+ path.push(next);
39
+ current = next.to;
40
+ }
41
+ return undefined;
42
+ }
43
+ /** Run a migration chain over a payload, accumulating the changelog. Pure. */
44
+ export function runMigrations(path, payload) {
45
+ let current = payload;
46
+ const changes = [];
47
+ for (const migration of path) {
48
+ const result = migration.apply(current);
49
+ current = result.payload;
50
+ changes.push(`${migration.from} → ${migration.to}: ${result.changes.join('; ') || migration.description}`);
51
+ }
52
+ return { payload: current, changes };
53
+ }
54
+ //# sourceMappingURL=upgrade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/starter-kits/upgrade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { StarterKit } from './kit';
2
+ /**
3
+ * Validate a starter kit before import (EC-119, EC-116, EC-118). Reuses the canonical validators:
4
+ * the envelope (meta), the component manifests (registry), the page graph (against those
5
+ * manifests), the CMS schemas (collection registry), and the seed documents (against the
6
+ * schemas). Returns structured issues; never throws. A kit with any `error` must not be imported.
7
+ */
8
+ export interface KitIssue {
9
+ code: 'meta' | 'manifest' | 'graph' | 'schema' | 'content' | 'token';
10
+ severity: 'error' | 'warning';
11
+ message: string;
12
+ ref?: string;
13
+ }
14
+ export declare function validateKit(kit: StarterKit): KitIssue[];
15
+ /** True when a kit has no error-severity issues and is safe to import. */
16
+ export declare function isKitValid(issues: KitIssue[]): boolean;
@@ -0,0 +1,77 @@
1
+ import { ComponentRegistry } from '@elytracms/core/component-registry';
2
+ import { createCollectionRegistry, createDocumentStore, validateDocuments } from '@elytracms/core/cms-core';
3
+ import { colorTokens } from '@elytracms/core/design-tokens';
4
+ import { validateProjectGraph } from '@elytracms/core/project-graph';
5
+ import { kitMetaSchema } from './kit';
6
+ const TOKEN_NAMES = new Set(colorTokens.map((t) => t.name));
7
+ export function validateKit(kit) {
8
+ const issues = [];
9
+ // 1. Envelope.
10
+ const meta = kitMetaSchema.safeParse(kit);
11
+ if (!meta.success) {
12
+ for (const issue of meta.error.issues) {
13
+ issues.push({ code: 'meta', severity: 'error', message: `${issue.path.join('.')}: ${issue.message}` });
14
+ }
15
+ }
16
+ // 2. Component manifests (duplicate / non-namespaced ids).
17
+ const registry = new ComponentRegistry(kit.manifests);
18
+ for (const issue of registry.issues) {
19
+ issues.push({ code: 'manifest', severity: 'error', message: issue.message, ...(issue.componentId ? { ref: issue.componentId } : {}) });
20
+ }
21
+ // 3. Page graph (missing components, invalid props, missing slots).
22
+ for (const issue of validateProjectGraph(kit.graph, { components: registry.lookup })) {
23
+ issues.push({ code: 'graph', severity: issue.severity, message: issue.message, ...(issue.nodeId ? { ref: issue.nodeId } : {}) });
24
+ }
25
+ // 4. CMS schemas.
26
+ const collections = createCollectionRegistry(kit.collections);
27
+ for (const issue of collections.issues) {
28
+ issues.push({ code: 'schema', severity: issue.severity === 'error' ? 'error' : 'warning', message: issue.message });
29
+ }
30
+ // 5. Seed content against the schemas (EC-118 "seed content fits the schemas"). A store over the
31
+ // kit's own documents lets relation/asset references between seeds resolve.
32
+ const store = createDocumentStore(kit.documents);
33
+ for (const issue of validateDocuments(collections, kit.documents, { store, localeConfig: kit.localeConfig })) {
34
+ issues.push({
35
+ code: 'content',
36
+ severity: issue.severity === 'error' ? 'error' : 'warning',
37
+ message: issue.message,
38
+ ...(typeof issue.meta?.documentId === 'string' ? { ref: issue.meta.documentId } : {}),
39
+ });
40
+ }
41
+ // 6. Cross-document field uniqueness (the per-document validator can't see siblings). A field
42
+ // declared `unique` must not repeat a (non-localized) value across the collection's seeds.
43
+ for (const collection of kit.collections) {
44
+ const uniqueFields = collection.fields.filter((f) => f.validation?.unique);
45
+ const docs = kit.documents.filter((d) => d.collection === collection.id);
46
+ for (const field of uniqueFields) {
47
+ const seen = new Map();
48
+ for (const doc of docs) {
49
+ const value = doc.values[field.name];
50
+ if (value === undefined || value === null)
51
+ continue;
52
+ const key = JSON.stringify(value);
53
+ seen.set(key, (seen.get(key) ?? 0) + 1);
54
+ }
55
+ for (const [key, count] of seen) {
56
+ if (count > 1) {
57
+ issues.push({ code: 'content', severity: 'error', message: `Field "${collection.id}.${field.name}" must be unique, but ${count} seed documents share the value ${key}.` });
58
+ }
59
+ }
60
+ }
61
+ }
62
+ // 7. Brand token overrides (EC-117) — keys must be real token names; flag typos + half-overrides.
63
+ for (const [name, override] of Object.entries(kit.tokenOverrides)) {
64
+ if (!TOKEN_NAMES.has(name)) {
65
+ issues.push({ code: 'token', severity: 'warning', message: `Token override "${name}" is not a known design token and has no effect.`, ref: name });
66
+ }
67
+ else if (!override.light || !override.dark) {
68
+ issues.push({ code: 'token', severity: 'warning', message: `Token override "${name}" sets only ${override.light ? 'light' : 'dark'}; the other mode keeps the canonical value.`, ref: name });
69
+ }
70
+ }
71
+ return issues;
72
+ }
73
+ /** True when a kit has no error-severity issues and is safe to import. */
74
+ export function isKitValid(issues) {
75
+ return !issues.some((i) => i.severity === 'error');
76
+ }
77
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/starter-kits/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { z } from 'zod';
2
+ import type { ProjectId } from './ids';
3
+ /** Maximum number of recent projects retained (most-recent-first). */
4
+ export declare const MAX_RECENT_PROJECTS = 8;
5
+ /**
6
+ * The active-project context the Studio shell preserves across section
7
+ * navigation (brief §4.3, §8.1). Pure data — reducers below derive new values
8
+ * without mutating.
9
+ */
10
+ export declare const activeProjectContextSchema: z.ZodObject<{
11
+ activeProjectId: z.ZodNullable<z.ZodString>;
12
+ recentProjectIds: z.ZodArray<z.ZodString>;
13
+ }, z.core.$strip>;
14
+ export type ActiveProjectContext = z.infer<typeof activeProjectContextSchema>;
15
+ export declare function emptyContext(): ActiveProjectContext;
16
+ /**
17
+ * Mark a project active and move it to the front of the recents list (MRU),
18
+ * de-duplicating and capping length. Pure.
19
+ */
20
+ export declare function activateProject(context: ActiveProjectContext, projectId: ProjectId): ActiveProjectContext;
21
+ /**
22
+ * Forget a project entirely (e.g. after delete): drop it from recents and clear
23
+ * the active pointer if it was active. Pure.
24
+ */
25
+ export declare function forgetProject(context: ActiveProjectContext, projectId: ProjectId): ActiveProjectContext;
26
+ /** The active id if it still resolves against the known set, else null. */
27
+ export declare function resolveActiveProjectId(context: ActiveProjectContext, knownIds: ReadonlySet<ProjectId>): ProjectId | null;
@@ -0,0 +1,44 @@
1
+ import { z } from 'zod';
2
+ import { projectIdSchema } from './ids';
3
+ /** Maximum number of recent projects retained (most-recent-first). */
4
+ export const MAX_RECENT_PROJECTS = 8;
5
+ /**
6
+ * The active-project context the Studio shell preserves across section
7
+ * navigation (brief §4.3, §8.1). Pure data — reducers below derive new values
8
+ * without mutating.
9
+ */
10
+ export const activeProjectContextSchema = z.object({
11
+ activeProjectId: projectIdSchema.nullable(),
12
+ recentProjectIds: z.array(projectIdSchema),
13
+ });
14
+ export function emptyContext() {
15
+ return { activeProjectId: null, recentProjectIds: [] };
16
+ }
17
+ /**
18
+ * Mark a project active and move it to the front of the recents list (MRU),
19
+ * de-duplicating and capping length. Pure.
20
+ */
21
+ export function activateProject(context, projectId) {
22
+ const recentProjectIds = [
23
+ projectId,
24
+ ...context.recentProjectIds.filter((id) => id !== projectId),
25
+ ].slice(0, MAX_RECENT_PROJECTS);
26
+ return { activeProjectId: projectId, recentProjectIds };
27
+ }
28
+ /**
29
+ * Forget a project entirely (e.g. after delete): drop it from recents and clear
30
+ * the active pointer if it was active. Pure.
31
+ */
32
+ export function forgetProject(context, projectId) {
33
+ return {
34
+ activeProjectId: context.activeProjectId === projectId ? null : context.activeProjectId,
35
+ recentProjectIds: context.recentProjectIds.filter((id) => id !== projectId),
36
+ };
37
+ }
38
+ /** The active id if it still resolves against the known set, else null. */
39
+ export function resolveActiveProjectId(context, knownIds) {
40
+ return context.activeProjectId && knownIds.has(context.activeProjectId)
41
+ ? context.activeProjectId
42
+ : null;
43
+ }
44
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/studio-core/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AAGvC,sEAAsE;AACtE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAEpC;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,eAAe,EAAE,eAAe,CAAC,QAAQ,EAAE;IAC3C,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;CAC3C,CAAC,CAAA;AAGF,MAAM,UAAU,YAAY;IAC1B,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAA;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,OAA6B,EAC7B,SAAoB;IAEpB,MAAM,gBAAgB,GAAG;QACvB,SAAS;QACT,GAAG,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC;KAC7D,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAA;IAC/B,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;AACzD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,OAA6B,EAC7B,SAAoB;IAEpB,OAAO;QACL,eAAe,EAAE,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe;QACvF,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC;KAC5E,CAAA;AACH,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,sBAAsB,CACpC,OAA6B,EAC7B,QAAgC;IAEhC,OAAO,OAAO,CAAC,eAAe,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC;QACrE,CAAC,CAAC,OAAO,CAAC,eAAe;QACzB,CAAC,CAAC,IAAI,CAAA;AACV,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { z } from 'zod';
2
+ import type { StudioIssue } from './issues';
3
+ /**
4
+ * Distinct, testable repository error categories (brief §7.7). Every failure
5
+ * mode is a distinct class with a stable `code`, so callers can branch on the
6
+ * category without string-matching messages. Provider-neutral: the Convex
7
+ * adapter (Phase 3) maps its failures onto these same types.
8
+ */
9
+ export declare const repositoryErrorCodeSchema: z.ZodEnum<{
10
+ unknown: "unknown";
11
+ validation: "validation";
12
+ "not-found": "not-found";
13
+ conflict: "conflict";
14
+ "backend-unavailable": "backend-unavailable";
15
+ }>;
16
+ export type RepositoryErrorCode = z.infer<typeof repositoryErrorCodeSchema>;
17
+ /** Base class for all project-repository errors. */
18
+ export declare abstract class ProjectRepositoryError extends Error {
19
+ abstract readonly code: RepositoryErrorCode;
20
+ constructor(message: string, options?: {
21
+ cause?: unknown;
22
+ });
23
+ }
24
+ /** Settings/identity validation failed; carries the structured issues. */
25
+ export declare class ProjectValidationError extends ProjectRepositoryError {
26
+ readonly issues: readonly StudioIssue[];
27
+ readonly code: "validation";
28
+ constructor(message: string, issues: readonly StudioIssue[]);
29
+ }
30
+ /** No project exists for the given id. */
31
+ export declare class ProjectNotFoundError extends ProjectRepositoryError {
32
+ readonly projectId: string;
33
+ readonly code: "not-found";
34
+ constructor(projectId: string);
35
+ }
36
+ /** A slug or identity collides with an existing project. */
37
+ export declare class ProjectConflictError extends ProjectRepositoryError {
38
+ readonly conflictingSlug: string;
39
+ readonly code: "conflict";
40
+ constructor(message: string, conflictingSlug: string);
41
+ }
42
+ /** The backing store is unreachable or returned a transport-level failure. */
43
+ export declare class BackendUnavailableError extends ProjectRepositoryError {
44
+ readonly code: "backend-unavailable";
45
+ constructor(message?: string, options?: {
46
+ cause?: unknown;
47
+ });
48
+ }
49
+ /** Any failure that does not map onto a more specific category. */
50
+ export declare class UnknownRepositoryError extends ProjectRepositoryError {
51
+ readonly code: "unknown";
52
+ constructor(message?: string, options?: {
53
+ cause?: unknown;
54
+ });
55
+ }
56
+ export declare function isProjectRepositoryError(value: unknown): value is ProjectRepositoryError;
57
+ /** Map any thrown value onto the repository error taxonomy. */
58
+ export declare function asRepositoryError(value: unknown): ProjectRepositoryError;
@@ -0,0 +1,74 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Distinct, testable repository error categories (brief §7.7). Every failure
4
+ * mode is a distinct class with a stable `code`, so callers can branch on the
5
+ * category without string-matching messages. Provider-neutral: the Convex
6
+ * adapter (Phase 3) maps its failures onto these same types.
7
+ */
8
+ export const repositoryErrorCodeSchema = z.enum([
9
+ 'validation',
10
+ 'not-found',
11
+ 'conflict',
12
+ 'backend-unavailable',
13
+ 'unknown',
14
+ ]);
15
+ /** Base class for all project-repository errors. */
16
+ export class ProjectRepositoryError extends Error {
17
+ constructor(message, options) {
18
+ super(message, options);
19
+ this.name = new.target.name;
20
+ }
21
+ }
22
+ /** Settings/identity validation failed; carries the structured issues. */
23
+ export class ProjectValidationError extends ProjectRepositoryError {
24
+ issues;
25
+ code = 'validation';
26
+ constructor(message, issues) {
27
+ super(message);
28
+ this.issues = issues;
29
+ }
30
+ }
31
+ /** No project exists for the given id. */
32
+ export class ProjectNotFoundError extends ProjectRepositoryError {
33
+ projectId;
34
+ code = 'not-found';
35
+ constructor(projectId) {
36
+ super(`No project found with id “${projectId}”.`);
37
+ this.projectId = projectId;
38
+ }
39
+ }
40
+ /** A slug or identity collides with an existing project. */
41
+ export class ProjectConflictError extends ProjectRepositoryError {
42
+ conflictingSlug;
43
+ code = 'conflict';
44
+ constructor(message, conflictingSlug) {
45
+ super(message);
46
+ this.conflictingSlug = conflictingSlug;
47
+ }
48
+ }
49
+ /** The backing store is unreachable or returned a transport-level failure. */
50
+ export class BackendUnavailableError extends ProjectRepositoryError {
51
+ code = 'backend-unavailable';
52
+ constructor(message = 'The project backend is currently unavailable.', options) {
53
+ super(message, options);
54
+ }
55
+ }
56
+ /** Any failure that does not map onto a more specific category. */
57
+ export class UnknownRepositoryError extends ProjectRepositoryError {
58
+ code = 'unknown';
59
+ constructor(message = 'An unknown repository error occurred.', options) {
60
+ super(message, options);
61
+ }
62
+ }
63
+ export function isProjectRepositoryError(value) {
64
+ return value instanceof ProjectRepositoryError;
65
+ }
66
+ /** Map any thrown value onto the repository error taxonomy. */
67
+ export function asRepositoryError(value) {
68
+ if (isProjectRepositoryError(value))
69
+ return value;
70
+ if (value instanceof Error)
71
+ return new UnknownRepositoryError(value.message, { cause: value });
72
+ return new UnknownRepositoryError(String(value));
73
+ }
74
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/studio-core/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC9C,YAAY;IACZ,WAAW;IACX,UAAU;IACV,qBAAqB;IACrB,SAAS;CACV,CAAC,CAAA;AAGF,oDAAoD;AACpD,MAAM,OAAgB,sBAAuB,SAAQ,KAAK;IAExD,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAA;IAC7B,CAAC;CACF;AAED,0EAA0E;AAC1E,MAAM,OAAO,sBAAuB,SAAQ,sBAAsB;IAIrD;IAHF,IAAI,GAAG,YAAqB,CAAA;IACrC,YACE,OAAe,EACN,MAA8B;QAEvC,KAAK,CAAC,OAAO,CAAC,CAAA;QAFL,WAAM,GAAN,MAAM,CAAwB;IAGzC,CAAC;CACF;AAED,0CAA0C;AAC1C,MAAM,OAAO,oBAAqB,SAAQ,sBAAsB;IAEzC;IADZ,IAAI,GAAG,WAAoB,CAAA;IACpC,YAAqB,SAAiB;QACpC,KAAK,CAAC,6BAA6B,SAAS,IAAI,CAAC,CAAA;QAD9B,cAAS,GAAT,SAAS,CAAQ;IAEtC,CAAC;CACF;AAED,4DAA4D;AAC5D,MAAM,OAAO,oBAAqB,SAAQ,sBAAsB;IAInD;IAHF,IAAI,GAAG,UAAmB,CAAA;IACnC,YACE,OAAe,EACN,eAAuB;QAEhC,KAAK,CAAC,OAAO,CAAC,CAAA;QAFL,oBAAe,GAAf,eAAe,CAAQ;IAGlC,CAAC;CACF;AAED,8EAA8E;AAC9E,MAAM,OAAO,uBAAwB,SAAQ,sBAAsB;IACxD,IAAI,GAAG,qBAA8B,CAAA;IAC9C,YAAY,OAAO,GAAG,+CAA+C,EAAE,OAA6B;QAClG,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACzB,CAAC;CACF;AAED,mEAAmE;AACnE,MAAM,OAAO,sBAAuB,SAAQ,sBAAsB;IACvD,IAAI,GAAG,SAAkB,CAAA;IAClC,YAAY,OAAO,GAAG,uCAAuC,EAAE,OAA6B;QAC1F,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACzB,CAAC;CACF;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,OAAO,KAAK,YAAY,sBAAsB,CAAA;AAChD,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,wBAAwB,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACjD,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,IAAI,sBAAsB,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IAC9F,OAAO,IAAI,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;AAClD,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { Project } from './metadata';
2
+ import { InMemoryProjectRepository } from './repository';
3
+ /** Fully-provisioned, multi-locale marketing site — the "happy path" project. */
4
+ export declare const auroraMarketing: Project;
5
+ /** Single-locale docs site where the assets surface is still planned. */
6
+ export declare const northwindDocs: Project;
7
+ /** Regional storefront with two locales and a components surface still planned. */
8
+ export declare const lumenStore: Project;
9
+ /** All sample projects in a stable order. */
10
+ export declare const sampleProjects: readonly Project[];
11
+ /** Lookup by id for tests and shell bootstrapping. */
12
+ export declare const sampleProjectsById: Readonly<Record<string, Project>>;
13
+ /**
14
+ * Build an in-memory repository seeded with the sample projects. The clock and
15
+ * id factory continue deterministically *after* the seeded ids/timestamps, so
16
+ * subsequent create/update operations are reproducible across runs.
17
+ */
18
+ export declare function createFixtureRepository(): InMemoryProjectRepository;