@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,202 @@
1
+ import { slugify } from './ids';
2
+ import { BackendUnavailableError, ProjectConflictError, ProjectNotFoundError, ProjectValidationError, } from './errors';
3
+ import { defaultEnvironments, projectSchema, toSummary, } from './metadata';
4
+ import { allSectionsAvailable } from './sections';
5
+ import { validateProjectIdentity, validateProjectSettings } from './validate';
6
+ /**
7
+ * Deterministic clock for fixtures/tests: starts at `startISO` and advances a
8
+ * fixed step on each call, so repeated runs produce identical timestamps.
9
+ */
10
+ export function createSequentialClock(startISO = '2026-01-01T00:00:00.000Z', stepMs = 1000) {
11
+ let current = Date.parse(startISO);
12
+ return () => {
13
+ const iso = new Date(current).toISOString();
14
+ current += stepMs;
15
+ return iso;
16
+ };
17
+ }
18
+ export function createSequentialIdFactory(prefix = 'prj') {
19
+ let n = 0;
20
+ return () => {
21
+ n += 1;
22
+ return `${prefix}_${String(n).padStart(6, '0')}`;
23
+ };
24
+ }
25
+ function defaultSettings() {
26
+ return {
27
+ locales: ['en'],
28
+ defaultLocale: 'en',
29
+ environments: defaultEnvironments(),
30
+ exportTarget: 'next-app-router',
31
+ sectionAvailability: allSectionsAvailable(),
32
+ };
33
+ }
34
+ function mergeSettings(base, patch) {
35
+ if (!patch)
36
+ return base;
37
+ return { ...base, ...patch };
38
+ }
39
+ /** Deep-ish clone so stored records never share mutable references with callers. */
40
+ function cloneProject(project) {
41
+ return {
42
+ ...project,
43
+ settings: {
44
+ ...project.settings,
45
+ locales: [...project.settings.locales],
46
+ environments: project.settings.environments.map((e) => ({ ...e })),
47
+ sectionAvailability: { ...project.settings.sectionAvailability },
48
+ },
49
+ };
50
+ }
51
+ /**
52
+ * In-memory `ProjectRepository` (brief §10). Backs fixtures, tests, and browser
53
+ * inspection before Convex exists. Validates identity + settings on every write
54
+ * and enforces slug uniqueness across non-deleted projects.
55
+ */
56
+ export class InMemoryProjectRepository {
57
+ projects = new Map();
58
+ order = [];
59
+ clock;
60
+ nextId;
61
+ constructor(options = {}) {
62
+ this.clock = options.clock ?? createSequentialClock();
63
+ this.nextId = options.idFactory ?? createSequentialIdFactory();
64
+ for (const project of options.seed ?? []) {
65
+ const parsed = projectSchemaSafeParse(project);
66
+ this.projects.set(parsed.id, cloneProject(parsed));
67
+ this.order.push(parsed.id);
68
+ }
69
+ }
70
+ async list() {
71
+ return this.order
72
+ .map((id) => this.projects.get(id))
73
+ .sort((a, b) => {
74
+ const av = a.updatedAt ?? '';
75
+ const bv = b.updatedAt ?? '';
76
+ return av < bv ? 1 : av > bv ? -1 : 0;
77
+ })
78
+ .map(toSummary);
79
+ }
80
+ async get(id) {
81
+ const project = this.projects.get(id);
82
+ if (!project)
83
+ throw new ProjectNotFoundError(id);
84
+ return cloneProject(project);
85
+ }
86
+ async create(input) {
87
+ const slug = (input.slug ?? slugify(input.name));
88
+ this.assertIdentity(input.name, slug);
89
+ this.assertSlugAvailable(slug, null);
90
+ const settings = mergeSettings(defaultSettings(), input.settings);
91
+ this.assertSettings(settings);
92
+ const now = this.clock();
93
+ const project = {
94
+ id: this.nextId(),
95
+ name: input.name.trim(),
96
+ slug,
97
+ createdAt: now,
98
+ updatedAt: now,
99
+ settings,
100
+ };
101
+ this.projects.set(project.id, cloneProject(project));
102
+ this.order.push(project.id);
103
+ return cloneProject(project);
104
+ }
105
+ async update(id, input) {
106
+ const existing = this.projects.get(id);
107
+ if (!existing)
108
+ throw new ProjectNotFoundError(id);
109
+ const name = input.name ?? existing.name;
110
+ const slug = (input.slug ?? existing.slug);
111
+ this.assertIdentity(name, slug);
112
+ if (slug !== existing.slug)
113
+ this.assertSlugAvailable(slug, id);
114
+ const settings = mergeSettings(existing.settings, input.settings);
115
+ this.assertSettings(settings);
116
+ const updated = {
117
+ ...existing,
118
+ name: name.trim(),
119
+ slug,
120
+ settings,
121
+ updatedAt: this.clock(),
122
+ };
123
+ this.projects.set(id, cloneProject(updated));
124
+ return cloneProject(updated);
125
+ }
126
+ async duplicate(id, input = {}) {
127
+ const source = this.projects.get(id);
128
+ if (!source)
129
+ throw new ProjectNotFoundError(id);
130
+ const name = input.name ?? `${source.name} copy`;
131
+ const slug = (input.slug ?? this.deriveUniqueSlug(slugify(name) || `${source.slug}-copy`));
132
+ this.assertIdentity(name, slug);
133
+ this.assertSlugAvailable(slug, null);
134
+ const now = this.clock();
135
+ const copy = {
136
+ ...cloneProject(source),
137
+ id: this.nextId(),
138
+ name: name.trim(),
139
+ slug,
140
+ createdAt: now,
141
+ updatedAt: now,
142
+ };
143
+ this.projects.set(copy.id, cloneProject(copy));
144
+ this.order.push(copy.id);
145
+ return cloneProject(copy);
146
+ }
147
+ async delete(id) {
148
+ if (!this.projects.has(id))
149
+ throw new ProjectNotFoundError(id);
150
+ this.projects.delete(id);
151
+ const index = this.order.indexOf(id);
152
+ if (index >= 0)
153
+ this.order.splice(index, 1);
154
+ }
155
+ // --- internals -----------------------------------------------------------
156
+ assertIdentity(name, slug) {
157
+ const issues = validateProjectIdentity({ name, slug });
158
+ if (issues.length > 0) {
159
+ throw new ProjectValidationError('Project identity is invalid.', issues);
160
+ }
161
+ }
162
+ assertSettings(settings) {
163
+ const issues = validateProjectSettings(settings);
164
+ if (issues.some((i) => i.severity === 'error')) {
165
+ throw new ProjectValidationError('Project settings are invalid.', issues);
166
+ }
167
+ }
168
+ assertSlugAvailable(slug, ignoreId) {
169
+ for (const project of this.projects.values()) {
170
+ if (project.id !== ignoreId && project.slug === slug) {
171
+ throw new ProjectConflictError(`A project with slug “${slug}” already exists.`, slug);
172
+ }
173
+ }
174
+ }
175
+ deriveUniqueSlug(base) {
176
+ const taken = new Set([...this.projects.values()].map((p) => p.slug));
177
+ if (!taken.has(base))
178
+ return base;
179
+ let n = 2;
180
+ while (taken.has(`${base}-${n}`))
181
+ n += 1;
182
+ return `${base}-${n}`;
183
+ }
184
+ }
185
+ /** Parse-and-throw helper that surfaces a typed validation error for bad seeds. */
186
+ function projectSchemaSafeParse(project) {
187
+ const result = projectSchema.safeParse(project);
188
+ if (!result.success) {
189
+ throw new ProjectValidationError('Seed project failed schema validation.', result.error.issues.map((i) => ({
190
+ code: 'invalid-name',
191
+ severity: 'error',
192
+ message: i.message,
193
+ path: i.path.map((p) => (typeof p === 'symbol' ? String(p) : p)),
194
+ })));
195
+ }
196
+ return result.data;
197
+ }
198
+ /** Convenience guard used by callers that prefer a boolean to a thrown error. */
199
+ export function isBackendUnavailable(error) {
200
+ return error instanceof BackendUnavailableError;
201
+ }
202
+ //# sourceMappingURL=repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/studio-core/repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * The top-level Studio surfaces (brief §8.1). The Studio shell preserves the
4
+ * active project while the user moves between these.
5
+ *
6
+ * The former `data` section was retired (EC-167, vision AD-9): external data is
7
+ * a developer concern expressed as typed providers registered in code, surfaced
8
+ * to editors through the CMS Canvas tab — there is no standalone no-code data
9
+ * surface.
10
+ *
11
+ * The former `builder` section was retired (EC-210, vision AD-12): the canvas is
12
+ * no longer a standalone place but a composition-field surface inside the CMS
13
+ * detail editor. The `/builder` route survives only as a redirect.
14
+ */
15
+ export declare const sectionIdSchema: z.ZodEnum<{
16
+ components: "components";
17
+ assets: "assets";
18
+ cms: "cms";
19
+ extensions: "extensions";
20
+ settings: "settings";
21
+ }>;
22
+ export type SectionId = z.infer<typeof sectionIdSchema>;
23
+ /** Canonical order in which sections appear in navigation. */
24
+ export declare const SECTION_IDS: ("components" | "assets" | "cms" | "extensions" | "settings")[];
25
+ export interface SectionDescriptor {
26
+ readonly id: SectionId;
27
+ readonly label: string;
28
+ /** Short description used in tooltips / empty states. */
29
+ readonly description: string;
30
+ }
31
+ export declare const SECTIONS: Readonly<Record<SectionId, SectionDescriptor>>;
32
+ /**
33
+ * Whether a section is usable for a given project. `available` renders the live
34
+ * surface; `planned` is reachable but shows a deterministic placeholder; the
35
+ * section is simply hidden/disabled when `unavailable`.
36
+ */
37
+ export declare const sectionAvailabilitySchema: z.ZodEnum<{
38
+ available: "available";
39
+ planned: "planned";
40
+ unavailable: "unavailable";
41
+ }>;
42
+ export type SectionAvailability = z.infer<typeof sectionAvailabilitySchema>;
43
+ /** Availability per section for a project. */
44
+ export declare const sectionAvailabilityMapSchema: z.ZodRecord<z.ZodEnum<{
45
+ components: "components";
46
+ assets: "assets";
47
+ cms: "cms";
48
+ extensions: "extensions";
49
+ settings: "settings";
50
+ }>, z.ZodEnum<{
51
+ available: "available";
52
+ planned: "planned";
53
+ unavailable: "unavailable";
54
+ }>>;
55
+ export type SectionAvailabilityMap = z.infer<typeof sectionAvailabilityMapSchema>;
56
+ /**
57
+ * Deterministic runtime states a section surface can be in (brief §8.1, §11).
58
+ * Distinct from availability: an `available` section may still be `loading` or
59
+ * `error` at runtime.
60
+ */
61
+ export declare const sectionStateSchema: z.ZodEnum<{
62
+ error: "error";
63
+ planned: "planned";
64
+ unavailable: "unavailable";
65
+ empty: "empty";
66
+ loading: "loading";
67
+ working: "working";
68
+ }>;
69
+ export type SectionState = z.infer<typeof sectionStateSchema>;
70
+ /** Every section available — the default for a fully-provisioned project. */
71
+ export declare function allSectionsAvailable(): SectionAvailabilityMap;
72
+ /** Resolve availability for a section, treating an absent entry as `unavailable`. */
73
+ export declare function availabilityOf(map: SectionAvailabilityMap, id: SectionId): SectionAvailability;
@@ -0,0 +1,68 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * The top-level Studio surfaces (brief §8.1). The Studio shell preserves the
4
+ * active project while the user moves between these.
5
+ *
6
+ * The former `data` section was retired (EC-167, vision AD-9): external data is
7
+ * a developer concern expressed as typed providers registered in code, surfaced
8
+ * to editors through the CMS Canvas tab — there is no standalone no-code data
9
+ * surface.
10
+ *
11
+ * The former `builder` section was retired (EC-210, vision AD-12): the canvas is
12
+ * no longer a standalone place but a composition-field surface inside the CMS
13
+ * detail editor. The `/builder` route survives only as a redirect.
14
+ */
15
+ export const sectionIdSchema = z.enum([
16
+ 'components',
17
+ 'cms',
18
+ 'assets',
19
+ 'extensions',
20
+ 'settings',
21
+ ]);
22
+ /** Canonical order in which sections appear in navigation. */
23
+ export const SECTION_IDS = sectionIdSchema.options;
24
+ export const SECTIONS = {
25
+ components: {
26
+ id: 'components',
27
+ label: 'Components',
28
+ description: 'Browse the registry of primitives and project components.',
29
+ },
30
+ cms: { id: 'cms', label: 'CMS', description: 'Model collections, fields, and documents.' },
31
+ assets: { id: 'assets', label: 'Assets', description: 'Manage uploaded media and metadata.' },
32
+ extensions: {
33
+ id: 'extensions',
34
+ label: 'Extensions',
35
+ description: 'Install components, field types, adapters, and templates from the marketplace.',
36
+ },
37
+ settings: { id: 'settings', label: 'Settings', description: 'Configure project metadata and locales.' },
38
+ };
39
+ /**
40
+ * Whether a section is usable for a given project. `available` renders the live
41
+ * surface; `planned` is reachable but shows a deterministic placeholder; the
42
+ * section is simply hidden/disabled when `unavailable`.
43
+ */
44
+ export const sectionAvailabilitySchema = z.enum(['available', 'planned', 'unavailable']);
45
+ /** Availability per section for a project. */
46
+ export const sectionAvailabilityMapSchema = z.record(sectionIdSchema, sectionAvailabilitySchema);
47
+ /**
48
+ * Deterministic runtime states a section surface can be in (brief §8.1, §11).
49
+ * Distinct from availability: an `available` section may still be `loading` or
50
+ * `error` at runtime.
51
+ */
52
+ export const sectionStateSchema = z.enum([
53
+ 'empty',
54
+ 'loading',
55
+ 'error',
56
+ 'unavailable',
57
+ 'planned',
58
+ 'working',
59
+ ]);
60
+ /** Every section available — the default for a fully-provisioned project. */
61
+ export function allSectionsAvailable() {
62
+ return Object.fromEntries(SECTION_IDS.map((id) => [id, 'available']));
63
+ }
64
+ /** Resolve availability for a section, treating an absent entry as `unavailable`. */
65
+ export function availabilityOf(map, id) {
66
+ return map[id] ?? 'unavailable';
67
+ }
68
+ //# sourceMappingURL=sections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sections.js","sourceRoot":"","sources":["../../src/studio-core/sections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC;IACpC,YAAY;IACZ,KAAK;IACL,QAAQ;IACR,YAAY;IACZ,UAAU;CACX,CAAC,CAAA;AAGF,8DAA8D;AAC9D,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAA;AASlD,MAAM,CAAC,MAAM,QAAQ,GAAmD;IACtE,UAAU,EAAE;QACV,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,2DAA2D;KACzE;IACD,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,2CAA2C,EAAE;IAC1F,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,qCAAqC,EAAE;IAC7F,UAAU,EAAE;QACV,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,gFAAgF;KAC9F;IACD,QAAQ,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,yCAAyC,EAAE;CACxG,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAA;AAGxF,8CAA8C;AAC9C,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAA;AAGhG;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC;IACvC,OAAO;IACP,SAAS;IACT,OAAO;IACP,aAAa;IACb,SAAS;IACT,SAAS;CACV,CAAC,CAAA;AAGF,6EAA6E;AAC7E,MAAM,UAAU,oBAAoB;IAClC,OAAO,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAA2B,CAAA;AACjG,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,cAAc,CAC5B,GAA2B,EAC3B,EAAa;IAEb,OAAO,GAAG,CAAC,EAAE,CAAC,IAAI,aAAa,CAAA;AACjC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { ProjectSettings } from './metadata';
2
+ import type { StudioIssue } from './issues';
3
+ /**
4
+ * Semantic validation of project settings (brief §7.7, §8.7). Never throws —
5
+ * returns structured issues so the Settings surface can show dirty/invalid
6
+ * states while the user edits. Field *shapes* are checked by
7
+ * `projectSettingsSchema`; this layer checks cross-field and content rules.
8
+ */
9
+ export declare function validateProjectSettings(settings: ProjectSettings): StudioIssue[];
10
+ export interface ProjectIdentity {
11
+ name: string;
12
+ slug: string;
13
+ }
14
+ /** Validate the identity fields (name + slug) of a project (brief §7.7). */
15
+ export declare function validateProjectIdentity(identity: ProjectIdentity): StudioIssue[];
@@ -0,0 +1,119 @@
1
+ import { isValidLocale, isValidSlug } from './ids';
2
+ import { SECTION_IDS } from './sections';
3
+ /**
4
+ * Semantic validation of project settings (brief §7.7, §8.7). Never throws —
5
+ * returns structured issues so the Settings surface can show dirty/invalid
6
+ * states while the user edits. Field *shapes* are checked by
7
+ * `projectSettingsSchema`; this layer checks cross-field and content rules.
8
+ */
9
+ export function validateProjectSettings(settings) {
10
+ const issues = [];
11
+ // Locales -----------------------------------------------------------------
12
+ if (settings.locales.length === 0) {
13
+ issues.push({
14
+ code: 'empty-locales',
15
+ severity: 'error',
16
+ message: 'At least one locale is required.',
17
+ path: ['locales'],
18
+ });
19
+ }
20
+ const seenLocales = new Set();
21
+ settings.locales.forEach((locale, index) => {
22
+ if (!isValidLocale(locale)) {
23
+ issues.push({
24
+ code: 'invalid-locale',
25
+ severity: 'error',
26
+ message: `“${locale}” is not a valid locale tag.`,
27
+ path: ['locales', index],
28
+ });
29
+ }
30
+ if (seenLocales.has(locale)) {
31
+ issues.push({
32
+ code: 'duplicate-locale',
33
+ severity: 'error',
34
+ message: `Locale “${locale}” is listed more than once.`,
35
+ path: ['locales', index],
36
+ });
37
+ }
38
+ seenLocales.add(locale);
39
+ });
40
+ // Default locale ----------------------------------------------------------
41
+ if (!settings.locales.includes(settings.defaultLocale)) {
42
+ issues.push({
43
+ code: 'default-locale-not-in-locales',
44
+ severity: 'error',
45
+ message: `Default locale “${settings.defaultLocale}” must be one of the configured locales.`,
46
+ path: ['defaultLocale'],
47
+ });
48
+ }
49
+ // Environments ------------------------------------------------------------
50
+ if (settings.environments.length === 0) {
51
+ issues.push({
52
+ code: 'no-environments',
53
+ severity: 'error',
54
+ message: 'At least one environment is required.',
55
+ path: ['environments'],
56
+ });
57
+ }
58
+ const seenEnvKeys = new Set();
59
+ settings.environments.forEach((env, index) => {
60
+ if (!isValidSlug(env.key)) {
61
+ issues.push({
62
+ code: 'invalid-environment',
63
+ severity: 'error',
64
+ message: `Environment key “${env.key}” must be a valid slug.`,
65
+ path: ['environments', index, 'key'],
66
+ });
67
+ }
68
+ if (env.label.trim().length === 0) {
69
+ issues.push({
70
+ code: 'invalid-environment',
71
+ severity: 'error',
72
+ message: 'Environment label cannot be empty.',
73
+ path: ['environments', index, 'label'],
74
+ });
75
+ }
76
+ if (seenEnvKeys.has(env.key)) {
77
+ issues.push({
78
+ code: 'duplicate-environment',
79
+ severity: 'error',
80
+ message: `Environment key “${env.key}” is used more than once.`,
81
+ path: ['environments', index, 'key'],
82
+ });
83
+ }
84
+ seenEnvKeys.add(env.key);
85
+ });
86
+ // Section availability ----------------------------------------------------
87
+ const missing = SECTION_IDS.filter((id) => settings.sectionAvailability[id] === undefined);
88
+ if (missing.length > 0) {
89
+ issues.push({
90
+ code: 'incomplete-section-availability',
91
+ severity: 'warning',
92
+ message: `Section availability is unspecified for: ${missing.join(', ')}.`,
93
+ path: ['sectionAvailability'],
94
+ });
95
+ }
96
+ return issues;
97
+ }
98
+ /** Validate the identity fields (name + slug) of a project (brief §7.7). */
99
+ export function validateProjectIdentity(identity) {
100
+ const issues = [];
101
+ if (identity.name.trim().length === 0) {
102
+ issues.push({
103
+ code: 'invalid-name',
104
+ severity: 'error',
105
+ message: 'Project name cannot be empty.',
106
+ path: ['name'],
107
+ });
108
+ }
109
+ if (!isValidSlug(identity.slug)) {
110
+ issues.push({
111
+ code: 'invalid-slug',
112
+ severity: 'error',
113
+ message: `“${identity.slug}” is not a valid slug (lowercase, hyphen-separated).`,
114
+ path: ['slug'],
115
+ });
116
+ }
117
+ return issues;
118
+ }
119
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/studio-core/validate.ts"],"names":[],"mappings":"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"}