canopycms 0.0.57 → 0.0.58

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 (215) hide show
  1. package/dist/ai/json-to-markdown.js +74 -3
  2. package/dist/ai/json-to-markdown.js.map +1 -1
  3. package/dist/api/__test__/mock-client.d.ts +9 -5
  4. package/dist/api/__test__/mock-client.d.ts.map +1 -1
  5. package/dist/api/__test__/mock-client.js +15 -7
  6. package/dist/api/__test__/mock-client.js.map +1 -1
  7. package/dist/api/assets.d.ts +100 -36
  8. package/dist/api/assets.d.ts.map +1 -1
  9. package/dist/api/assets.js +338 -51
  10. package/dist/api/assets.js.map +1 -1
  11. package/dist/api/client.d.ts +16 -5
  12. package/dist/api/client.d.ts.map +1 -1
  13. package/dist/api/client.js +24 -6
  14. package/dist/api/client.js.map +1 -1
  15. package/dist/api/entries.d.ts +4 -4
  16. package/dist/api/index.d.ts +1 -1
  17. package/dist/api/index.d.ts.map +1 -1
  18. package/dist/api/index.js.map +1 -1
  19. package/dist/api/route-builder.d.ts +9 -0
  20. package/dist/api/route-builder.d.ts.map +1 -1
  21. package/dist/api/route-builder.js +1 -0
  22. package/dist/api/route-builder.js.map +1 -1
  23. package/dist/api/schema.d.ts +4 -4
  24. package/dist/api/types.d.ts +11 -1
  25. package/dist/api/types.d.ts.map +1 -1
  26. package/dist/assets/asset-prefixes.d.ts +31 -0
  27. package/dist/assets/asset-prefixes.d.ts.map +1 -0
  28. package/dist/assets/asset-prefixes.js +20 -0
  29. package/dist/assets/asset-prefixes.js.map +1 -0
  30. package/dist/assets/asset-src.d.ts +23 -0
  31. package/dist/assets/asset-src.d.ts.map +1 -0
  32. package/dist/assets/asset-src.js +28 -0
  33. package/dist/assets/asset-src.js.map +1 -0
  34. package/dist/assets/asset-url.d.ts +35 -0
  35. package/dist/assets/asset-url.d.ts.map +1 -0
  36. package/dist/assets/asset-url.js +77 -0
  37. package/dist/assets/asset-url.js.map +1 -0
  38. package/dist/assets/factory.d.ts +18 -0
  39. package/dist/assets/factory.d.ts.map +1 -0
  40. package/dist/assets/factory.js +42 -0
  41. package/dist/assets/factory.js.map +1 -0
  42. package/dist/assets/finalize.d.ts +36 -0
  43. package/dist/assets/finalize.d.ts.map +1 -0
  44. package/dist/assets/finalize.js +72 -0
  45. package/dist/assets/finalize.js.map +1 -0
  46. package/dist/assets/index.d.ts +20 -0
  47. package/dist/assets/index.d.ts.map +1 -0
  48. package/dist/assets/index.js +19 -0
  49. package/dist/assets/index.js.map +1 -0
  50. package/dist/assets/keys.d.ts +56 -0
  51. package/dist/assets/keys.d.ts.map +1 -0
  52. package/dist/assets/keys.js +88 -0
  53. package/dist/assets/keys.js.map +1 -0
  54. package/dist/assets/pipeline.d.ts +50 -0
  55. package/dist/assets/pipeline.d.ts.map +1 -0
  56. package/dist/assets/pipeline.js +202 -0
  57. package/dist/assets/pipeline.js.map +1 -0
  58. package/dist/assets/store-local.d.ts +84 -0
  59. package/dist/assets/store-local.d.ts.map +1 -0
  60. package/dist/assets/store-local.js +254 -0
  61. package/dist/assets/store-local.js.map +1 -0
  62. package/dist/assets/store-s3.d.ts +71 -0
  63. package/dist/assets/store-s3.d.ts.map +1 -0
  64. package/dist/assets/store-s3.js +183 -0
  65. package/dist/assets/store-s3.js.map +1 -0
  66. package/dist/assets/svg-sanitizer.d.ts +37 -0
  67. package/dist/assets/svg-sanitizer.d.ts.map +1 -0
  68. package/dist/assets/svg-sanitizer.js +222 -0
  69. package/dist/assets/svg-sanitizer.js.map +1 -0
  70. package/dist/assets/transform-directives.d.ts +97 -0
  71. package/dist/assets/transform-directives.d.ts.map +1 -0
  72. package/dist/assets/transform-directives.js +267 -0
  73. package/dist/assets/transform-directives.js.map +1 -0
  74. package/dist/assets/transform.d.ts +51 -0
  75. package/dist/assets/transform.d.ts.map +1 -0
  76. package/dist/assets/transform.js +190 -0
  77. package/dist/assets/transform.js.map +1 -0
  78. package/dist/assets/types.d.ts +82 -0
  79. package/dist/assets/types.d.ts.map +1 -0
  80. package/dist/assets/types.js +10 -0
  81. package/dist/assets/types.js.map +1 -0
  82. package/dist/authorization/groups/schema.d.ts +2 -2
  83. package/dist/authorization/permissions/schema.d.ts +2 -2
  84. package/dist/cli/generate-ai-content.js +92 -7
  85. package/dist/cli/init.js +16 -4
  86. package/dist/config/helpers.d.ts.map +1 -1
  87. package/dist/config/helpers.js +2 -1
  88. package/dist/config/helpers.js.map +1 -1
  89. package/dist/config/index.d.ts +2 -2
  90. package/dist/config/index.d.ts.map +1 -1
  91. package/dist/config/index.js +1 -1
  92. package/dist/config/index.js.map +1 -1
  93. package/dist/config/schemas/config.d.ts +10 -0
  94. package/dist/config/schemas/config.d.ts.map +1 -1
  95. package/dist/config/schemas/field.d.ts +38 -3
  96. package/dist/config/schemas/field.d.ts.map +1 -1
  97. package/dist/config/schemas/field.js +18 -0
  98. package/dist/config/schemas/field.js.map +1 -1
  99. package/dist/config/schemas/media.d.ts +8 -0
  100. package/dist/config/schemas/media.d.ts.map +1 -1
  101. package/dist/config/schemas/media.js +9 -0
  102. package/dist/config/schemas/media.js.map +1 -1
  103. package/dist/config/types.d.ts +43 -3
  104. package/dist/config/types.d.ts.map +1 -1
  105. package/dist/config/types.js +4 -1
  106. package/dist/config/types.js.map +1 -1
  107. package/dist/editor/CanopyEditor.d.ts.map +1 -1
  108. package/dist/editor/CanopyEditor.js +1 -1
  109. package/dist/editor/CanopyEditor.js.map +1 -1
  110. package/dist/editor/Editor.d.ts +2 -0
  111. package/dist/editor/Editor.d.ts.map +1 -1
  112. package/dist/editor/Editor.js +82 -80
  113. package/dist/editor/Editor.js.map +1 -1
  114. package/dist/editor/FormRenderer.d.ts.map +1 -1
  115. package/dist/editor/FormRenderer.js +9 -0
  116. package/dist/editor/FormRenderer.js.map +1 -1
  117. package/dist/editor/components/EditorSidebar.d.ts +6 -1
  118. package/dist/editor/components/EditorSidebar.d.ts.map +1 -1
  119. package/dist/editor/components/EditorSidebar.js +4 -3
  120. package/dist/editor/components/EditorSidebar.js.map +1 -1
  121. package/dist/editor/context/AssetContext.d.ts +25 -0
  122. package/dist/editor/context/AssetContext.d.ts.map +1 -0
  123. package/dist/editor/context/AssetContext.js +26 -0
  124. package/dist/editor/context/AssetContext.js.map +1 -0
  125. package/dist/editor/context/index.d.ts +1 -0
  126. package/dist/editor/context/index.d.ts.map +1 -1
  127. package/dist/editor/context/index.js +1 -0
  128. package/dist/editor/context/index.js.map +1 -1
  129. package/dist/editor/fields/ImageField.d.ts +22 -0
  130. package/dist/editor/fields/ImageField.d.ts.map +1 -0
  131. package/dist/editor/fields/ImageField.js +100 -0
  132. package/dist/editor/fields/ImageField.js.map +1 -0
  133. package/dist/editor/fields/MarkdownField.d.ts.map +1 -1
  134. package/dist/editor/fields/MarkdownField.js +30 -4
  135. package/dist/editor/fields/MarkdownField.js.map +1 -1
  136. package/dist/editor/fields/MdxImageDialog.d.ts +16 -0
  137. package/dist/editor/fields/MdxImageDialog.d.ts.map +1 -0
  138. package/dist/editor/fields/MdxImageDialog.js +73 -0
  139. package/dist/editor/fields/MdxImageDialog.js.map +1 -0
  140. package/dist/editor/media/AssetCard.d.ts +21 -0
  141. package/dist/editor/media/AssetCard.d.ts.map +1 -0
  142. package/dist/editor/media/AssetCard.js +41 -0
  143. package/dist/editor/media/AssetCard.js.map +1 -0
  144. package/dist/editor/media/CropStep.d.ts +26 -0
  145. package/dist/editor/media/CropStep.d.ts.map +1 -0
  146. package/dist/editor/media/CropStep.js +38 -0
  147. package/dist/editor/media/CropStep.js.map +1 -0
  148. package/dist/editor/media/MediaLibrary.d.ts +22 -0
  149. package/dist/editor/media/MediaLibrary.d.ts.map +1 -0
  150. package/dist/editor/media/MediaLibrary.js +17 -0
  151. package/dist/editor/media/MediaLibrary.js.map +1 -0
  152. package/dist/editor/media/MediaLibraryBody.d.ts +17 -0
  153. package/dist/editor/media/MediaLibraryBody.d.ts.map +1 -0
  154. package/dist/editor/media/MediaLibraryBody.js +133 -0
  155. package/dist/editor/media/MediaLibraryBody.js.map +1 -0
  156. package/dist/editor/media/crop-math.d.ts +37 -0
  157. package/dist/editor/media/crop-math.d.ts.map +1 -0
  158. package/dist/editor/media/crop-math.js +62 -0
  159. package/dist/editor/media/crop-math.js.map +1 -0
  160. package/dist/editor/media/upload-asset.d.ts +31 -0
  161. package/dist/editor/media/upload-asset.d.ts.map +1 -0
  162. package/dist/editor/media/upload-asset.js +56 -0
  163. package/dist/editor/media/upload-asset.js.map +1 -0
  164. package/dist/editor/media/upload-constants.d.ts +27 -0
  165. package/dist/editor/media/upload-constants.d.ts.map +1 -0
  166. package/dist/editor/media/upload-constants.js +40 -0
  167. package/dist/editor/media/upload-constants.js.map +1 -0
  168. package/dist/editor/media/useAssetUpload.d.ts +19 -0
  169. package/dist/editor/media/useAssetUpload.d.ts.map +1 -0
  170. package/dist/editor/media/useAssetUpload.js +53 -0
  171. package/dist/editor/media/useAssetUpload.js.map +1 -0
  172. package/dist/editor/media/xhr-upload.d.ts +20 -0
  173. package/dist/editor/media/xhr-upload.d.ts.map +1 -0
  174. package/dist/editor/media/xhr-upload.js +42 -0
  175. package/dist/editor/media/xhr-upload.js.map +1 -0
  176. package/dist/editor/theme.d.ts +2 -1
  177. package/dist/editor/theme.d.ts.map +1 -1
  178. package/dist/editor/theme.js +1 -0
  179. package/dist/editor/theme.js.map +1 -1
  180. package/dist/entry-schema.d.ts +19 -0
  181. package/dist/entry-schema.d.ts.map +1 -1
  182. package/dist/entry-schema.js.map +1 -1
  183. package/dist/http/handler.d.ts +5 -2
  184. package/dist/http/handler.d.ts.map +1 -1
  185. package/dist/http/handler.js +13 -4
  186. package/dist/http/handler.js.map +1 -1
  187. package/dist/http/index.d.ts +2 -2
  188. package/dist/http/index.d.ts.map +1 -1
  189. package/dist/http/index.js +1 -1
  190. package/dist/http/index.js.map +1 -1
  191. package/dist/http/router.d.ts +14 -1
  192. package/dist/http/router.d.ts.map +1 -1
  193. package/dist/http/router.js +4 -1
  194. package/dist/http/router.js.map +1 -1
  195. package/dist/http/types.d.ts +40 -0
  196. package/dist/http/types.d.ts.map +1 -1
  197. package/dist/http/types.js +9 -0
  198. package/dist/http/types.js.map +1 -1
  199. package/dist/index.d.ts +3 -0
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +4 -0
  202. package/dist/index.js.map +1 -1
  203. package/dist/schema/schema-store.d.ts +2 -2
  204. package/dist/server.d.ts +45 -0
  205. package/dist/server.d.ts.map +1 -1
  206. package/dist/server.js +41 -0
  207. package/dist/server.js.map +1 -1
  208. package/dist/validation/entry-validator.d.ts.map +1 -1
  209. package/dist/validation/entry-validator.js +56 -1
  210. package/dist/validation/entry-validator.js.map +1 -1
  211. package/package.json +13 -1
  212. package/dist/asset-store.d.ts +0 -32
  213. package/dist/asset-store.d.ts.map +0 -1
  214. package/dist/asset-store.js +0 -85
  215. package/dist/asset-store.js.map +0 -1
package/dist/server.js CHANGED
@@ -63,4 +63,45 @@ export { collectStaticPaths } from './static/index.js';
63
63
  * working tree and the resolved branch clone. Dev mode only.
64
64
  */
65
65
  export { startDevContentWatcher } from './dev-content-watcher.js';
66
+ /**
67
+ * Instantiate the AssetStore configured by a site's `media` config
68
+ * (`config.media`). Returns undefined when no store applies: `media` is
69
+ * unset and no `devAssetsDir` fallback was given, `adapter: 'local'` omits
70
+ * `directory` with no fallback, or `adapter: 'lfs'` (config literal kept,
71
+ * not yet implemented).
72
+ */
73
+ export { createAssetStore } from './assets/factory.js';
74
+ /**
75
+ * The five S3/local bucket-prefix strings (`asset-originals/`, `asset-staging/`,
76
+ * `asset-meta/`, `assets/`, `assets/t/`). Re-exported so server-only consumers
77
+ * outside this package - notably the prod transform Lambda
78
+ * (`packages/canopycms-cdk/lambda/asset-transform`) - can build/parse asset
79
+ * keys through the same constants `S3AssetStore` uses, rather than
80
+ * duplicating the literal prefix strings.
81
+ */
82
+ export { ASSET_PREFIXES } from './assets/keys.js';
83
+ /**
84
+ * Parse the three path segments after `assets/t/` (`{directives}/{hash32}/{slug}.{ext}`)
85
+ * into a validated `TransformDirectives` set, or a structured parse error.
86
+ * Reused unchanged by the dev-mode lazy `/assets/t/*` emulation (`api/assets.ts`)
87
+ * and the prod transform Lambda (`packages/canopycms-cdk/lambda/asset-transform`)
88
+ * so the URL grammar is defined in exactly one place.
89
+ */
90
+ export { parseTransformPath } from './assets/transform-directives.js';
91
+ /**
92
+ * Canonical string form of a `TransformDirectives` set - the cache key every
93
+ * transform output is stored under (`assets/t/{formatDirectives(...)}/{hash32}/{slug}.{ext}`).
94
+ * Equivalent directive sets (different key order/float formatting) always
95
+ * format to the same string. Reused by the prod transform Lambda so its
96
+ * canonical writes agree with the dev-mode emulation and `assetUrl()`.
97
+ */
98
+ export { formatDirectives } from './assets/transform-directives.js';
99
+ /**
100
+ * Apply a parsed `TransformDirectives` set to source image bytes with sharp:
101
+ * resize/format/quality/crop, with EXIF stripped on every re-encode (even
102
+ * identity). Server-only (sharp) - reused unchanged by the dev-mode lazy
103
+ * `/assets/t/*` emulation and the prod transform Lambda
104
+ * (`packages/canopycms-cdk/lambda/asset-transform`).
105
+ */
106
+ export { applyTransform } from './assets/transform.js';
66
107
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,6EAA6E;AAC7E,6EAA6E;AAC7E,6EAA6E;AAC7E,wCAAwC;AAExC,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,wBAAwB,EACxB,aAAa,GACd,MAAM,UAAU,CAAA;AAGjB;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AAEnE;;;;GAIG;AACH,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAA;AAUrE,+DAA+D;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAEjC,yEAAyE;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAEhC;;;;;;;;;GASG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAUjD,gDAAgD;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAI/C;;;;GAIG;AACH,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,uBAAuB,CAAA;AAI9B,4EAA4E;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,0EAA0E;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAI7C;;;GAGG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,6EAA6E;AAC7E,6EAA6E;AAC7E,6EAA6E;AAC7E,wCAAwC;AAExC,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,wBAAwB,EACxB,aAAa,GACd,MAAM,UAAU,CAAA;AAGjB;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AAEnE;;;;GAIG;AACH,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAA;AAUrE,+DAA+D;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAEjC,yEAAyE;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAEhC;;;;;;;;;GASG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAUjD,gDAAgD;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAI/C;;;;GAIG;AACH,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,uBAAuB,CAAA;AAI9B,4EAA4E;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,0EAA0E;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAI7C;;;GAGG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAI9D;;;;;;GAMG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAEnD;;;;;;;GAOG;AACH,OAAO,EAAE,cAAc,EAAsB,MAAM,eAAe,CAAA;AAKlE;;;;;;GAMG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAIlE;;;;;;GAMG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAEhE;;;;;;GAMG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"entry-validator.d.ts","sourceRoot":"","sources":["../../src/validation/entry-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAEV,aAAa,EACb,WAAW,EAMZ,MAAM,WAAW,CAAA;AAMlB;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB;AAWD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAInE;AAKD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGzB;AAyDD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,SAAK,GACd,eAAe,EAAE,CAiGnB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,aAAa,GAAG,SAAS,EACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,eAAe,EAAE,CASnB;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqDzB"}
1
+ {"version":3,"file":"entry-validator.d.ts","sourceRoot":"","sources":["../../src/validation/entry-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAEV,aAAa,EACb,WAAW,EAOZ,MAAM,WAAW,CAAA;AAOlB;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB;AA6ED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAInE;AAKD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGzB;AA2DD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,SAAK,GACd,eAAe,EAAE,CAiGnB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,aAAa,GAAG,SAAS,EACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,eAAe,EAAE,CASnB;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqDzB"}
@@ -22,15 +22,68 @@
22
22
  * `ReferenceValidator` at the write boundary.
23
23
  */
24
24
  import { fieldTypes } from '../config/index.js';
25
+ import { isValidCropRect } from '../assets/transform-directives.js';
25
26
  import { resolveBlockItem } from './field-traversal.js';
26
27
  import { findBodyFieldName } from '../utils/body-field.js';
27
28
  import { isDataOnlyFormat } from '../utils/format.js';
28
29
  const KNOWN_FIELD_TYPES = new Set(fieldTypes);
29
30
  /** Field types whose value is a plain string. */
30
- const STRING_FIELD_TYPES = new Set(['string', 'rich-text', 'markdown', 'mdx', 'image', 'code']);
31
+ const STRING_FIELD_TYPES = new Set(['string', 'rich-text', 'markdown', 'mdx', 'code']);
31
32
  function isPlainRecord(value) {
32
33
  return typeof value === 'object' && value !== null && !Array.isArray(value);
33
34
  }
35
+ function isPositiveInt(value) {
36
+ return typeof value === 'number' && Number.isInteger(value) && value > 0;
37
+ }
38
+ /** True when `value` is a well-formed `{ x, y, w, h }` normalized crop rect. */
39
+ function isValidImageCropValue(value) {
40
+ if (!isPlainRecord(value))
41
+ return false;
42
+ const { x, y, w, h } = value;
43
+ if (typeof x !== 'number' ||
44
+ typeof y !== 'number' ||
45
+ typeof w !== 'number' ||
46
+ typeof h !== 'number') {
47
+ return false;
48
+ }
49
+ return isValidCropRect(x, y, w, h);
50
+ }
51
+ /**
52
+ * Validate a structured `image` field value: `{ src, alt, width?, height?, crop? }`
53
+ * (see `ImageFieldValue` in config/types.ts). `src` and `alt` are required
54
+ * whenever a value is present; `alt` may be an empty string only when the
55
+ * field config sets `altOptional: true`. `width`/`height` must be positive
56
+ * integers when present; `crop` must satisfy the same normalized-rect
57
+ * constraints as the transform directive parser (assets/transform-directives.ts).
58
+ */
59
+ function validateImageValue(field, value, path) {
60
+ if (!isPlainRecord(value)) {
61
+ return [{ fieldPath: path, message: 'Expected an image object with { src, alt }' }];
62
+ }
63
+ const errors = [];
64
+ if (typeof value.src !== 'string' || value.src.trim() === '') {
65
+ errors.push({ fieldPath: `${path}.src`, message: 'Image src is required' });
66
+ }
67
+ if (typeof value.alt !== 'string') {
68
+ errors.push({ fieldPath: `${path}.alt`, message: 'Image alt text is required' });
69
+ }
70
+ else if (value.alt.trim() === '' && field.altOptional !== true) {
71
+ errors.push({ fieldPath: `${path}.alt`, message: 'Image alt text is required' });
72
+ }
73
+ if (value.width !== undefined && !isPositiveInt(value.width)) {
74
+ errors.push({ fieldPath: `${path}.width`, message: 'Image width must be a positive integer' });
75
+ }
76
+ if (value.height !== undefined && !isPositiveInt(value.height)) {
77
+ errors.push({
78
+ fieldPath: `${path}.height`,
79
+ message: 'Image height must be a positive integer',
80
+ });
81
+ }
82
+ if (value.crop !== undefined && !isValidImageCropValue(value.crop)) {
83
+ errors.push({ fieldPath: `${path}.crop`, message: 'Invalid image crop rect' });
84
+ }
85
+ return errors;
86
+ }
34
87
  /**
35
88
  * Extract the id from a reference value. The editor holds references either
36
89
  * as an id string or as a resolved object `{ id, slug, collection, ... }`
@@ -88,6 +141,8 @@ function validateScalar(field, value, path) {
88
141
  return [{ fieldPath: path, message: 'Expected a reference id' }];
89
142
  }
90
143
  return [];
144
+ case 'image':
145
+ return validateImageValue(field, value, path);
91
146
  default:
92
147
  if (STRING_FIELD_TYPES.has(field.type)) {
93
148
  if (typeof value !== 'string') {
@@ -1 +1 @@
1
- {"version":3,"file":"entry-validator.js","sourceRoot":"","sources":["../../src/validation/entry-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entry-validator.js","sourceRoot":"","sources":["../../src/validation/entry-validator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "//": "@codemirror/language, @lezer/highlight: workaround — @mdxeditor/editor uses cm6-theme-basic-light which peer-requires these but mdxeditor doesn't declare them as dependencies",
3
3
  "name": "canopycms",
4
- "version": "0.0.57",
4
+ "version": "0.0.58",
5
5
  "description": "CanopyCMS core package: schema-driven content, branch-aware editing, and editor UI for Next.js.",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -77,6 +77,8 @@
77
77
  "node": ">=18"
78
78
  },
79
79
  "dependencies": {
80
+ "@aws-sdk/client-s3": "^3.600.0",
81
+ "@aws-sdk/s3-presigned-post": "^3.600.0",
80
82
  "@clack/prompts": "^1.1.0",
81
83
  "@codemirror/language": "^6.0.0",
82
84
  "@dnd-kit/core": "^6.3.1",
@@ -86,6 +88,7 @@
86
88
  "@lezer/highlight": "^1.0.0",
87
89
  "@mantine/colors-generator": "^7.14.2",
88
90
  "@mantine/core": "^7.14.2",
91
+ "@mantine/dropzone": "7.17.8",
89
92
  "@mantine/hooks": "^7.14.2",
90
93
  "@mantine/modals": "^7.14.2",
91
94
  "@mantine/notifications": "^7.14.2",
@@ -95,13 +98,19 @@
95
98
  "@tabler/icons-react": "^3.36.0",
96
99
  "chokidar": "^4.0.3",
97
100
  "chroma-js": "^3.2.0",
101
+ "content-disposition": "^2.0.1",
102
+ "file-type": "^20.4.1",
98
103
  "gray-matter": "^4.0.3",
104
+ "image-size": "^2.0.2",
99
105
  "jiti": "^2.6.1",
100
106
  "minimatch": "^9.0.7",
101
107
  "minimist": "^1.2.8",
102
108
  "pathe": "^1.1.2",
103
109
  "proper-lockfile": "^4.1.2",
110
+ "react-easy-crop": "^6.2.2",
104
111
  "react-split-pane": "^0.1.92",
112
+ "sanitize-html": "^2.17.5",
113
+ "sharp": "^0.35.3",
105
114
  "short-uuid": "^6.0.3",
106
115
  "simple-git": "^3.36.0",
107
116
  "yaml": "^2.8.3",
@@ -112,6 +121,7 @@
112
121
  "react-dom": "^18.0.0 || ^19.0.0"
113
122
  },
114
123
  "devDependencies": {
124
+ "@smithy/util-stream": "^3.0.0 || ^4.0.0",
115
125
  "@playwright/test": "^1.57.0",
116
126
  "@storybook/addon-essentials": "^8.1.11",
117
127
  "@storybook/react": "^8.1.11",
@@ -124,6 +134,8 @@
124
134
  "@types/proper-lockfile": "^4.1.4",
125
135
  "@types/react": "^18.3.12",
126
136
  "@types/react-dom": "^18.3.1",
137
+ "@types/sanitize-html": "^2.16.1",
138
+ "aws-sdk-client-mock": "^4.0.0",
127
139
  "@vitejs/plugin-react": "^5.1.0",
128
140
  "autoprefixer": "^10.4.20",
129
141
  "esbuild": "^0.25.0",
@@ -1,32 +0,0 @@
1
- export interface AssetItem {
2
- key: string;
3
- url?: string;
4
- size?: number;
5
- contentType?: string;
6
- updatedAt?: string;
7
- }
8
- export interface AssetStore {
9
- list(prefix?: string): Promise<AssetItem[]>;
10
- upload(key: string, data: Buffer | Uint8Array, contentType?: string): Promise<AssetItem>;
11
- delete(key: string): Promise<void>;
12
- getSignedUrl?(key: string, expiresInSeconds?: number): Promise<string>;
13
- }
14
- export interface LocalAssetStoreOptions {
15
- root: string;
16
- publicBaseUrl?: string;
17
- }
18
- /**
19
- * Local filesystem asset store for dev and tests. In production, swap with S3 adapter.
20
- */
21
- export declare class LocalAssetStore implements AssetStore {
22
- private readonly root;
23
- private readonly publicBaseUrl?;
24
- constructor(options: LocalAssetStoreOptions);
25
- private resolvePath;
26
- private toUrl;
27
- list(prefix?: string): Promise<AssetItem[]>;
28
- upload(key: string, data: Buffer | Uint8Array, contentType?: string): Promise<AssetItem>;
29
- delete(key: string): Promise<void>;
30
- getSignedUrl(key: string): Promise<string>;
31
- }
32
- //# sourceMappingURL=asset-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"asset-store.d.ts","sourceRoot":"","sources":["../src/asset-store.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;IAC3C,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IACxF,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,YAAY,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACvE;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAID;;GAEG;AACH,qBAAa,eAAgB,YAAW,UAAU;IAChD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAQ;gBAE3B,OAAO,EAAE,sBAAsB;IAK3C,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,KAAK;IAKP,IAAI,CAAC,MAAM,SAAK,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAwBvC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAaxF,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUlC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAOjD"}
@@ -1,85 +0,0 @@
1
- import fs from 'node:fs/promises';
2
- import path from 'node:path';
3
- import { isNotFoundError } from './utils/error.js';
4
- import { atomicWriteFile } from './utils/atomic-write.js';
5
- const normalizeKey = (key) => key.replace(/^\/+/, '');
6
- /**
7
- * Local filesystem asset store for dev and tests. In production, swap with S3 adapter.
8
- */
9
- export class LocalAssetStore {
10
- constructor(options) {
11
- this.root = path.resolve(options.root);
12
- this.publicBaseUrl = options.publicBaseUrl?.replace(/\/+$/, '');
13
- }
14
- resolvePath(key) {
15
- const clean = normalizeKey(key);
16
- const resolved = path.resolve(this.root, clean);
17
- const rootWithSep = this.root.endsWith(path.sep) ? this.root : this.root + path.sep;
18
- if (resolved !== this.root && !resolved.startsWith(rootWithSep)) {
19
- throw new Error('Path traversal detected');
20
- }
21
- return resolved;
22
- }
23
- toUrl(key) {
24
- if (!this.publicBaseUrl)
25
- return undefined;
26
- return `${this.publicBaseUrl}/${normalizeKey(key)}`;
27
- }
28
- async list(prefix = '') {
29
- const dir = this.resolvePath(prefix);
30
- let entries;
31
- try {
32
- entries = await fs.readdir(dir, { withFileTypes: true });
33
- }
34
- catch (err) {
35
- if (isNotFoundError(err))
36
- return [];
37
- throw err;
38
- }
39
- const items = [];
40
- for (const entry of entries) {
41
- if (entry.isDirectory())
42
- continue;
43
- const key = path.join(prefix, entry.name).split(path.sep).join('/');
44
- const stat = await fs.stat(path.join(dir, entry.name));
45
- items.push({
46
- key,
47
- size: stat.size,
48
- updatedAt: stat.mtime.toISOString(),
49
- url: this.toUrl(key),
50
- });
51
- }
52
- return items;
53
- }
54
- async upload(key, data, contentType) {
55
- const filePath = this.resolvePath(key);
56
- await atomicWriteFile(filePath, data);
57
- const stat = await fs.stat(filePath);
58
- return {
59
- key: normalizeKey(key),
60
- size: stat.size,
61
- updatedAt: stat.mtime.toISOString(),
62
- url: this.toUrl(key),
63
- contentType,
64
- };
65
- }
66
- async delete(key) {
67
- const filePath = this.resolvePath(key);
68
- try {
69
- await fs.unlink(filePath);
70
- }
71
- catch (err) {
72
- if (isNotFoundError(err))
73
- return;
74
- throw err;
75
- }
76
- }
77
- async getSignedUrl(key) {
78
- const url = this.toUrl(key);
79
- if (!url) {
80
- throw new Error('Public base URL not configured');
81
- }
82
- return url;
83
- }
84
- }
85
- //# sourceMappingURL=asset-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"asset-store.js","sourceRoot":"","sources":["../src/asset-store.ts"],"names":[],"mappings":"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"}