canopycms 0.0.57 → 0.0.59

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 (250) 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/branch-workspace.d.ts.map +1 -1
  85. package/dist/branch-workspace.js +1 -0
  86. package/dist/branch-workspace.js.map +1 -1
  87. package/dist/cli/cli.d.ts +20 -0
  88. package/dist/cli/cli.d.ts.map +1 -1
  89. package/dist/cli/cli.js +9561 -246
  90. package/dist/cli/cli.js.map +1 -1
  91. package/dist/cli/generate-ai-content.js +175 -16
  92. package/dist/cli/init.d.ts.map +1 -1
  93. package/dist/cli/init.js +29 -5
  94. package/dist/cli/init.js.map +1 -1
  95. package/dist/cli/template-files/Dockerfile.cms.template +33 -1
  96. package/dist/cli/template-files/deploy-cms.yml.template +9 -1
  97. package/dist/cli/template-files/dockerignore.template +13 -0
  98. package/dist/cli/template-files/middleware-clerk.ts.template +12 -5
  99. package/dist/cli/template-files/middleware.ts.template +10 -5
  100. package/dist/cli/templates.d.ts +1 -0
  101. package/dist/cli/templates.d.ts.map +1 -1
  102. package/dist/cli/templates.js +3 -0
  103. package/dist/cli/templates.js.map +1 -1
  104. package/dist/config/helpers.d.ts.map +1 -1
  105. package/dist/config/helpers.js +2 -1
  106. package/dist/config/helpers.js.map +1 -1
  107. package/dist/config/index.d.ts +2 -2
  108. package/dist/config/index.d.ts.map +1 -1
  109. package/dist/config/index.js +1 -1
  110. package/dist/config/index.js.map +1 -1
  111. package/dist/config/schemas/config.d.ts +23 -1
  112. package/dist/config/schemas/config.d.ts.map +1 -1
  113. package/dist/config/schemas/config.js +14 -1
  114. package/dist/config/schemas/config.js.map +1 -1
  115. package/dist/config/schemas/field.d.ts +38 -3
  116. package/dist/config/schemas/field.d.ts.map +1 -1
  117. package/dist/config/schemas/field.js +18 -0
  118. package/dist/config/schemas/field.js.map +1 -1
  119. package/dist/config/schemas/media.d.ts +8 -0
  120. package/dist/config/schemas/media.d.ts.map +1 -1
  121. package/dist/config/schemas/media.js +9 -0
  122. package/dist/config/schemas/media.js.map +1 -1
  123. package/dist/config/types.d.ts +63 -3
  124. package/dist/config/types.d.ts.map +1 -1
  125. package/dist/config/types.js +4 -1
  126. package/dist/config/types.js.map +1 -1
  127. package/dist/editor/CanopyEditor.d.ts.map +1 -1
  128. package/dist/editor/CanopyEditor.js +1 -1
  129. package/dist/editor/CanopyEditor.js.map +1 -1
  130. package/dist/editor/Editor.d.ts +2 -0
  131. package/dist/editor/Editor.d.ts.map +1 -1
  132. package/dist/editor/Editor.js +82 -80
  133. package/dist/editor/Editor.js.map +1 -1
  134. package/dist/editor/FormRenderer.d.ts.map +1 -1
  135. package/dist/editor/FormRenderer.js +9 -0
  136. package/dist/editor/FormRenderer.js.map +1 -1
  137. package/dist/editor/components/EditorSidebar.d.ts +6 -1
  138. package/dist/editor/components/EditorSidebar.d.ts.map +1 -1
  139. package/dist/editor/components/EditorSidebar.js +4 -3
  140. package/dist/editor/components/EditorSidebar.js.map +1 -1
  141. package/dist/editor/context/AssetContext.d.ts +25 -0
  142. package/dist/editor/context/AssetContext.d.ts.map +1 -0
  143. package/dist/editor/context/AssetContext.js +26 -0
  144. package/dist/editor/context/AssetContext.js.map +1 -0
  145. package/dist/editor/context/index.d.ts +1 -0
  146. package/dist/editor/context/index.d.ts.map +1 -1
  147. package/dist/editor/context/index.js +1 -0
  148. package/dist/editor/context/index.js.map +1 -1
  149. package/dist/editor/fields/ImageField.d.ts +22 -0
  150. package/dist/editor/fields/ImageField.d.ts.map +1 -0
  151. package/dist/editor/fields/ImageField.js +100 -0
  152. package/dist/editor/fields/ImageField.js.map +1 -0
  153. package/dist/editor/fields/MarkdownField.d.ts.map +1 -1
  154. package/dist/editor/fields/MarkdownField.js +30 -4
  155. package/dist/editor/fields/MarkdownField.js.map +1 -1
  156. package/dist/editor/fields/MdxImageDialog.d.ts +16 -0
  157. package/dist/editor/fields/MdxImageDialog.d.ts.map +1 -0
  158. package/dist/editor/fields/MdxImageDialog.js +73 -0
  159. package/dist/editor/fields/MdxImageDialog.js.map +1 -0
  160. package/dist/editor/media/AssetCard.d.ts +21 -0
  161. package/dist/editor/media/AssetCard.d.ts.map +1 -0
  162. package/dist/editor/media/AssetCard.js +41 -0
  163. package/dist/editor/media/AssetCard.js.map +1 -0
  164. package/dist/editor/media/CropStep.d.ts +26 -0
  165. package/dist/editor/media/CropStep.d.ts.map +1 -0
  166. package/dist/editor/media/CropStep.js +38 -0
  167. package/dist/editor/media/CropStep.js.map +1 -0
  168. package/dist/editor/media/MediaLibrary.d.ts +22 -0
  169. package/dist/editor/media/MediaLibrary.d.ts.map +1 -0
  170. package/dist/editor/media/MediaLibrary.js +17 -0
  171. package/dist/editor/media/MediaLibrary.js.map +1 -0
  172. package/dist/editor/media/MediaLibraryBody.d.ts +17 -0
  173. package/dist/editor/media/MediaLibraryBody.d.ts.map +1 -0
  174. package/dist/editor/media/MediaLibraryBody.js +133 -0
  175. package/dist/editor/media/MediaLibraryBody.js.map +1 -0
  176. package/dist/editor/media/crop-math.d.ts +37 -0
  177. package/dist/editor/media/crop-math.d.ts.map +1 -0
  178. package/dist/editor/media/crop-math.js +62 -0
  179. package/dist/editor/media/crop-math.js.map +1 -0
  180. package/dist/editor/media/upload-asset.d.ts +31 -0
  181. package/dist/editor/media/upload-asset.d.ts.map +1 -0
  182. package/dist/editor/media/upload-asset.js +56 -0
  183. package/dist/editor/media/upload-asset.js.map +1 -0
  184. package/dist/editor/media/upload-constants.d.ts +27 -0
  185. package/dist/editor/media/upload-constants.d.ts.map +1 -0
  186. package/dist/editor/media/upload-constants.js +40 -0
  187. package/dist/editor/media/upload-constants.js.map +1 -0
  188. package/dist/editor/media/useAssetUpload.d.ts +19 -0
  189. package/dist/editor/media/useAssetUpload.d.ts.map +1 -0
  190. package/dist/editor/media/useAssetUpload.js +53 -0
  191. package/dist/editor/media/useAssetUpload.js.map +1 -0
  192. package/dist/editor/media/xhr-upload.d.ts +20 -0
  193. package/dist/editor/media/xhr-upload.d.ts.map +1 -0
  194. package/dist/editor/media/xhr-upload.js +42 -0
  195. package/dist/editor/media/xhr-upload.js.map +1 -0
  196. package/dist/editor/theme.d.ts +2 -1
  197. package/dist/editor/theme.d.ts.map +1 -1
  198. package/dist/editor/theme.js +1 -0
  199. package/dist/editor/theme.js.map +1 -1
  200. package/dist/entry-schema.d.ts +19 -0
  201. package/dist/entry-schema.d.ts.map +1 -1
  202. package/dist/entry-schema.js.map +1 -1
  203. package/dist/git-manager.d.ts +39 -0
  204. package/dist/git-manager.d.ts.map +1 -1
  205. package/dist/git-manager.js +98 -8
  206. package/dist/git-manager.js.map +1 -1
  207. package/dist/http/handler.d.ts +5 -2
  208. package/dist/http/handler.d.ts.map +1 -1
  209. package/dist/http/handler.js +13 -4
  210. package/dist/http/handler.js.map +1 -1
  211. package/dist/http/index.d.ts +2 -2
  212. package/dist/http/index.d.ts.map +1 -1
  213. package/dist/http/index.js +1 -1
  214. package/dist/http/index.js.map +1 -1
  215. package/dist/http/router.d.ts +14 -1
  216. package/dist/http/router.d.ts.map +1 -1
  217. package/dist/http/router.js +4 -1
  218. package/dist/http/router.js.map +1 -1
  219. package/dist/http/types.d.ts +40 -0
  220. package/dist/http/types.d.ts.map +1 -1
  221. package/dist/http/types.js +9 -0
  222. package/dist/http/types.js.map +1 -1
  223. package/dist/index.d.ts +3 -0
  224. package/dist/index.d.ts.map +1 -1
  225. package/dist/index.js +4 -0
  226. package/dist/index.js.map +1 -1
  227. package/dist/schema/schema-store.d.ts +2 -2
  228. package/dist/server.d.ts +45 -0
  229. package/dist/server.d.ts.map +1 -1
  230. package/dist/server.js +41 -0
  231. package/dist/server.js.map +1 -1
  232. package/dist/settings-workspace.d.ts.map +1 -1
  233. package/dist/settings-workspace.js +1 -0
  234. package/dist/settings-workspace.js.map +1 -1
  235. package/dist/utils/git.d.ts +19 -0
  236. package/dist/utils/git.d.ts.map +1 -1
  237. package/dist/utils/git.js +47 -0
  238. package/dist/utils/git.js.map +1 -1
  239. package/dist/validation/entry-validator.d.ts.map +1 -1
  240. package/dist/validation/entry-validator.js +56 -1
  241. package/dist/validation/entry-validator.js.map +1 -1
  242. package/dist/worker/cms-worker.d.ts +28 -0
  243. package/dist/worker/cms-worker.d.ts.map +1 -1
  244. package/dist/worker/cms-worker.js +100 -20
  245. package/dist/worker/cms-worker.js.map +1 -1
  246. package/package.json +13 -1
  247. package/dist/asset-store.d.ts +0 -32
  248. package/dist/asset-store.d.ts.map +0 -1
  249. package/dist/asset-store.js +0 -85
  250. package/dist/asset-store.js.map +0 -1
@@ -61,8 +61,8 @@ export declare const listEntries: import("./route-builder").RouteDefinition<z.Zo
61
61
  branch: string & {
62
62
  readonly __brand: "BranchName";
63
63
  };
64
- recursive?: boolean | undefined;
65
64
  collection?: LogicalPath | undefined;
65
+ recursive?: boolean | undefined;
66
66
  q?: string | undefined;
67
67
  cursor?: string | undefined;
68
68
  limit?: number | undefined;
@@ -70,8 +70,8 @@ export declare const listEntries: import("./route-builder").RouteDefinition<z.Zo
70
70
  branch: string & {
71
71
  readonly __brand: "BranchName";
72
72
  };
73
- recursive?: boolean | "true" | "false" | undefined;
74
73
  collection?: LogicalPath | undefined;
74
+ recursive?: boolean | "true" | "false" | undefined;
75
75
  q?: string | undefined;
76
76
  cursor?: string | undefined;
77
77
  limit?: number | undefined;
@@ -119,8 +119,8 @@ export declare const ENTRY_ROUTES: {
119
119
  branch: string & {
120
120
  readonly __brand: "BranchName";
121
121
  };
122
- recursive?: boolean | undefined;
123
122
  collection?: LogicalPath | undefined;
123
+ recursive?: boolean | undefined;
124
124
  q?: string | undefined;
125
125
  cursor?: string | undefined;
126
126
  limit?: number | undefined;
@@ -128,8 +128,8 @@ export declare const ENTRY_ROUTES: {
128
128
  branch: string & {
129
129
  readonly __brand: "BranchName";
130
130
  };
131
- recursive?: boolean | "true" | "false" | undefined;
132
131
  collection?: LogicalPath | undefined;
132
+ recursive?: boolean | "true" | "false" | undefined;
133
133
  q?: string | undefined;
134
134
  cursor?: string | undefined;
135
135
  limit?: number | undefined;
@@ -5,7 +5,7 @@ export type { CommentsResponse, AddCommentResponse, ResolveCommentResponse, List
5
5
  export type { EntriesResponse, ListEntriesResponse, CollectionItem, ListEntriesParams, DeleteEntryResponse, } from './entries';
6
6
  export type { PermissionsResponse, UpdatePermissionsBody, SearchUsersParams, GetUserMetadataResponse, GetUserMetadataParams, } from './permissions';
7
7
  export type { UserInfoResponse } from './user';
8
- export type { AssetsListResponse, AssetUploadResponse, UploadAssetBody, DeleteAssetBody, ListAssetsParams, } from './assets';
8
+ export type { AssetRecord, AssetsListResponse, PresignAssetResponse, PresignAssetBody, FinalizeAssetResponse, FinalizeAssetBody, AssetDeleteResponse, ListAssetsParams, DeleteAssetParams, } from './assets';
9
9
  export type { InternalGroupsResponse, ExternalGroupsResponse, UpdateInternalGroupsBody, SearchExternalGroupsParams, ExternalGroup, } from './groups';
10
10
  export type { ReferenceOptionsResponse } from './reference-options';
11
11
  export type { ResolveReferencesResponse } from './resolve-references';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAClE,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,UAAU,CAAA;AACjB,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACzD,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,YAAY,CAAA;AACnB,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,WAAW,CAAA;AAClB,YAAY,EACV,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,eAAe,CAAA;AACtB,YAAY,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAA;AAC9C,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,gBAAgB,GACjB,MAAM,UAAU,CAAA;AACjB,YAAY,EACV,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,0BAA0B,EAC1B,aAAa,GACd,MAAM,UAAU,CAAA;AACjB,YAAY,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AACnE,YAAY,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AACrE,YAAY,EACV,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,EAC3B,uBAAuB,EACvB,0BAA0B,EAC1B,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,UAAU,CAAA;AACjB,YAAY,EACV,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,8BAA8B,CAAA;AACrC,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAIjD,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAKpC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC3D,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAClE,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,UAAU,CAAA;AACjB,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACzD,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,YAAY,CAAA;AACnB,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,WAAW,CAAA;AAClB,YAAY,EACV,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,eAAe,CAAA;AACtB,YAAY,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAA;AAC9C,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,UAAU,CAAA;AACjB,YAAY,EACV,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,0BAA0B,EAC1B,aAAa,GACd,MAAM,UAAU,CAAA;AACjB,YAAY,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AACnE,YAAY,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AACrE,YAAY,EACV,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,EAC3B,uBAAuB,EACvB,0BAA0B,EAC1B,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,UAAU,CAAA;AACjB,YAAY,EACV,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,8BAA8B,CAAA;AACrC,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAIjD,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAKpC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC3D,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AA6EA,mFAAmF;AAEnF,2BAA2B;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AACpC,4FAA4F;AAC5F,sEAAsE;AAEtE,gBAAgB;AAChB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAiFA,mFAAmF;AAEnF,2BAA2B;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AACpC,4FAA4F;AAC5F,sEAAsE;AAEtE,gBAAgB;AAChB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA"}
@@ -54,6 +54,13 @@ export interface RouteDefinition<TParams extends z.ZodType | undefined = undefin
54
54
  body?: TBody;
55
55
  response: TResponse;
56
56
  handler: RouteHandler<TParams, TBody, TResponse>;
57
+ /**
58
+ * Opt out of the core handler's default eager `req.json()` body parsing.
59
+ * See http/router.ts's `RouteDefinition.bodyFormat` for the full rationale
60
+ * - set this on routes that read a non-JSON body themselves (e.g. the
61
+ * proxied multipart asset upload).
62
+ */
63
+ bodyFormat?: 'multipart';
57
64
  buildPath: TParams extends z.ZodType ? (params: z.infer<TParams>) => string : () => string;
58
65
  validate: (extracted: {
59
66
  params?: Record<string, string>;
@@ -95,6 +102,8 @@ interface EndpointConfigBase<TParams extends z.ZodType | undefined, TBody extend
95
102
  response: unknown;
96
103
  defaultMockData?: unknown;
97
104
  mockDataCasts?: MockDataCasts;
105
+ /** See `RouteDefinition['bodyFormat']` above. */
106
+ bodyFormat?: 'multipart';
98
107
  }
99
108
  /** Config for an endpoint without guards */
100
109
  interface UnguardedEndpointConfig<TParams extends z.ZodType | undefined, TBody extends z.ZodType | undefined, TResponse> extends EndpointConfigBase<TParams, TBody> {
@@ -1 +1 @@
1
- {"version":3,"file":"route-builder.d.ts","sourceRoot":"","sources":["../../src/api/route-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route-builder.d.ts","sourceRoot":"","sources":["../../src/api/route-builder.ts"],"names":[],"mappings":"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"}
@@ -92,6 +92,7 @@ export function defineEndpoint(config) {
92
92
  pattern,
93
93
  params: config.params,
94
94
  body: config.body,
95
+ bodyFormat: config.bodyFormat,
95
96
  response: config.response,
96
97
  handler,
97
98
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -1 +1 @@
1
- {"version":3,"file":"route-builder.js","sourceRoot":"","sources":["../../src/api/route-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route-builder.js","sourceRoot":"","sources":["../../src/api/route-builder.ts"],"names":[],"mappings":"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"}
@@ -357,14 +357,14 @@ export declare const updateEntryType: import("./route-builder").RouteDefinition<
357
357
  maxItems: z.ZodOptional<z.ZodNumber>;
358
358
  }, "strip", z.ZodTypeAny, {
359
359
  default?: boolean | undefined;
360
- label?: string | undefined;
361
360
  format?: "mdx" | "md" | "json" | "yaml" | undefined;
361
+ label?: string | undefined;
362
362
  schema?: string | undefined;
363
363
  maxItems?: number | undefined;
364
364
  }, {
365
365
  default?: boolean | undefined;
366
- label?: string | undefined;
367
366
  format?: "mdx" | "md" | "json" | "yaml" | undefined;
367
+ label?: string | undefined;
368
368
  schema?: string | undefined;
369
369
  maxItems?: number | undefined;
370
370
  }>, UpdateEntryTypeApiResponse>;
@@ -646,14 +646,14 @@ export declare const SCHEMA_ROUTES: {
646
646
  maxItems: z.ZodOptional<z.ZodNumber>;
647
647
  }, "strip", z.ZodTypeAny, {
648
648
  default?: boolean | undefined;
649
- label?: string | undefined;
650
649
  format?: "mdx" | "md" | "json" | "yaml" | undefined;
650
+ label?: string | undefined;
651
651
  schema?: string | undefined;
652
652
  maxItems?: number | undefined;
653
653
  }, {
654
654
  default?: boolean | undefined;
655
- label?: string | undefined;
656
655
  format?: "mdx" | "md" | "json" | "yaml" | undefined;
656
+ label?: string | undefined;
657
657
  schema?: string | undefined;
658
658
  maxItems?: number | undefined;
659
659
  }>, UpdateEntryTypeApiResponse>;
@@ -2,7 +2,8 @@ import type { BranchContext } from '../types';
2
2
  import type { AuthPlugin } from '../auth/plugin';
3
3
  import type { CanopyServices } from '../services';
4
4
  import type { CanopyUser } from '../user';
5
- import type { AssetStore } from '../asset-store';
5
+ import type { AssetStore } from '../assets/types';
6
+ import type { CanopyRequest } from '../http/types';
6
7
  export interface ApiContext {
7
8
  services: CanopyServices;
8
9
  assetStore?: AssetStore;
@@ -27,6 +28,15 @@ export interface ApiRequest<TBody = unknown> {
27
28
  body?: TBody;
28
29
  query?: Record<string, string | string[] | undefined>;
29
30
  user: CanopyUser;
31
+ /**
32
+ * The underlying framework-agnostic request, for handlers that must bypass
33
+ * the default JSON body parsing (e.g. multipart/form-data uploads - see
34
+ * `bodyFormat: 'multipart'` in route-builder.ts and `rawRequest.formData()`
35
+ * / `rawRequest.rawBody()`). Always populated by the core handler; optional
36
+ * only so hand-built `ApiRequest` test fixtures that don't need it keep
37
+ * compiling.
38
+ */
39
+ rawRequest?: CanopyRequest;
30
40
  }
31
41
  export interface ApiResponse<TData = unknown> {
32
42
  ok: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEhD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,cAAc,CAAA;IACxB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB;;;;;;;OAOG;IACH,gBAAgB,EAAE,CAChB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,KAC/B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAA;IAClC;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,CAAA;CACxB;AAED,MAAM,WAAW,UAAU,CAAC,KAAK,GAAG,OAAO;IACzC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,KAAK,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAA;IACrD,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,WAAW,WAAW,CAAC,KAAK,GAAG,OAAO;IAC1C,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,KAAK,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;OAKG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC5D"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAElD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,cAAc,CAAA;IACxB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB;;;;;;;OAOG;IACH,gBAAgB,EAAE,CAChB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,KAC/B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAA;IAClC;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,CAAA;CACxB;AAED,MAAM,WAAW,UAAU,CAAC,KAAK,GAAG,OAAO;IACzC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,KAAK,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAA;IACrD,IAAI,EAAE,UAAU,CAAA;IAChB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,aAAa,CAAA;CAC3B;AAED,MAAM,WAAW,WAAW,CAAC,KAAK,GAAG,OAAO;IAC1C,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,KAAK,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;OAKG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC5D"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * The five S3/local bucket-prefix strings (see keys.ts's module doc for the
3
+ * full layout: asset-originals/, asset-staging/, asset-meta/, assets/t/,
4
+ * assets/).
5
+ *
6
+ * Split into its own dependency-free file so client-safe, isomorphic modules
7
+ * (transform-directives.ts, asset-url.ts) can import the prefix strings
8
+ * directly without pulling keys.ts's `node:crypto` import (used only by
9
+ * `hashBytes`) into a browser bundle. keys.ts re-exports `ASSET_PREFIXES`
10
+ * from here so existing imports of it from './keys' keep working unchanged.
11
+ */
12
+ export declare const ASSET_PREFIXES: {
13
+ readonly originals: "asset-originals";
14
+ readonly staging: "asset-staging";
15
+ readonly meta: "asset-meta";
16
+ readonly public: "assets";
17
+ /** Transform-output prefix; directive-aware key building lives in transform-directives.ts. */
18
+ readonly transform: "assets/t";
19
+ };
20
+ /**
21
+ * Widened to plain `string` fields (not `typeof ASSET_PREFIXES`'s literal
22
+ * types) so overriding stores can supply their own prefix strings.
23
+ */
24
+ export interface AssetPrefixes {
25
+ originals: string;
26
+ staging: string;
27
+ meta: string;
28
+ public: string;
29
+ transform: string;
30
+ }
31
+ //# sourceMappingURL=asset-prefixes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-prefixes.d.ts","sourceRoot":"","sources":["../../src/assets/asset-prefixes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,eAAO,MAAM,cAAc;;;;;IAKzB,8FAA8F;;CAEtF,CAAA;AAEV;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CAClB"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * The five S3/local bucket-prefix strings (see keys.ts's module doc for the
3
+ * full layout: asset-originals/, asset-staging/, asset-meta/, assets/t/,
4
+ * assets/).
5
+ *
6
+ * Split into its own dependency-free file so client-safe, isomorphic modules
7
+ * (transform-directives.ts, asset-url.ts) can import the prefix strings
8
+ * directly without pulling keys.ts's `node:crypto` import (used only by
9
+ * `hashBytes`) into a browser bundle. keys.ts re-exports `ASSET_PREFIXES`
10
+ * from here so existing imports of it from './keys.js' keep working unchanged.
11
+ */
12
+ export const ASSET_PREFIXES = {
13
+ originals: 'asset-originals',
14
+ staging: 'asset-staging',
15
+ meta: 'asset-meta',
16
+ public: 'assets',
17
+ /** Transform-output prefix; directive-aware key building lives in transform-directives.ts. */
18
+ transform: 'assets/t',
19
+ };
20
+ //# sourceMappingURL=asset-prefixes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-prefixes.js","sourceRoot":"","sources":["../../src/assets/asset-prefixes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,SAAS,EAAE,iBAAiB;IAC5B,OAAO,EAAE,eAAe;IACxB,IAAI,EAAE,YAAY;IAClB,MAAM,EAAE,QAAQ;IAChB,8FAA8F;IAC9F,SAAS,EAAE,UAAU;CACb,CAAA"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Compute the root-relative public URL for an asset's meta. Shared helper -
3
+ * both the API layer (list/finalize responses) and later PRs (structured
4
+ * image field, MediaLibrary, `assetUrl()`) build URLs through this so the
5
+ * URL shape is defined in exactly one place.
6
+ *
7
+ * svg/pdf: served statically from the public object finalize wrote
8
+ * (`assets/{hash32}/{slug}.{ext}`, via keys.ts's `publicKey`).
9
+ *
10
+ * raster: served through the transform layer using the `orig` (identity)
11
+ * directive. The transform engine itself is PR 4's job, but the URL shape is
12
+ * decided now (rather than switching every raster URL over once transforms
13
+ * ship) so content written by this PR stays valid without a migration.
14
+ *
15
+ * Always root-relative - `media.publicBaseUrl` is editor-display-only (PR 6's
16
+ * concern) and must never be baked into stored/served content URLs.
17
+ */
18
+ import { IDENTITY_TRANSFORM_DIRECTIVE } from './transform-directives';
19
+ import type { AssetMeta } from './types';
20
+ /** Re-exported for existing importers (assets/index.ts barrel) - the value now lives in transform-directives.ts, PR 4's pure directive module, so it's reachable without pulling keys.ts's node:crypto import into client bundles. */
21
+ export { IDENTITY_TRANSFORM_DIRECTIVE };
22
+ export declare function assetSrc(meta: Pick<AssetMeta, 'hash32' | 'slug' | 'ext' | 'kind'>): string;
23
+ //# sourceMappingURL=asset-src.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-src.d.ts","sourceRoot":"","sources":["../../src/assets/asset-src.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAA;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,sOAAsO;AACtO,OAAO,EAAE,4BAA4B,EAAE,CAAA;AAEvC,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAK1F"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Compute the root-relative public URL for an asset's meta. Shared helper -
3
+ * both the API layer (list/finalize responses) and later PRs (structured
4
+ * image field, MediaLibrary, `assetUrl()`) build URLs through this so the
5
+ * URL shape is defined in exactly one place.
6
+ *
7
+ * svg/pdf: served statically from the public object finalize wrote
8
+ * (`assets/{hash32}/{slug}.{ext}`, via keys.ts's `publicKey`).
9
+ *
10
+ * raster: served through the transform layer using the `orig` (identity)
11
+ * directive. The transform engine itself is PR 4's job, but the URL shape is
12
+ * decided now (rather than switching every raster URL over once transforms
13
+ * ship) so content written by this PR stays valid without a migration.
14
+ *
15
+ * Always root-relative - `media.publicBaseUrl` is editor-display-only (PR 6's
16
+ * concern) and must never be baked into stored/served content URLs.
17
+ */
18
+ import { ASSET_PREFIXES } from './asset-prefixes.js';
19
+ import { IDENTITY_TRANSFORM_DIRECTIVE } from './transform-directives.js';
20
+ /** Re-exported for existing importers (assets/index.ts barrel) - the value now lives in transform-directives.ts, PR 4's pure directive module, so it's reachable without pulling keys.ts's node:crypto import into client bundles. */
21
+ export { IDENTITY_TRANSFORM_DIRECTIVE };
22
+ export function assetSrc(meta) {
23
+ if (meta.kind === 'svg' || meta.kind === 'pdf') {
24
+ return `/${ASSET_PREFIXES.public}/${meta.hash32}/${meta.slug}.${meta.ext}`;
25
+ }
26
+ return `/${ASSET_PREFIXES.transform}/${IDENTITY_TRANSFORM_DIRECTIVE}/${meta.hash32}/${meta.slug}.${meta.ext}`;
27
+ }
28
+ //# sourceMappingURL=asset-src.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-src.js","sourceRoot":"","sources":["../../src/assets/asset-src.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAA;AAGrE,sOAAsO;AACtO,OAAO,EAAE,4BAA4B,EAAE,CAAA;AAEvC,MAAM,UAAU,QAAQ,CAAC,IAAyD;IAChF,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC/C,OAAO,IAAI,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAA;IAC5E,CAAC;IACD,OAAO,IAAI,cAAc,CAAC,SAAS,IAAI,4BAA4B,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAA;AAC/G,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Build/adjust transform URLs for `<img>`/srcset without pulling in the
3
+ * server-only transform engine. Isomorphic - only depends on
4
+ * transform-directives.ts and the plain `ASSET_PREFIXES` constant, neither
5
+ * of which import node builtins, so this is safe to import from client
6
+ * (editor) code as well as during static builds.
7
+ */
8
+ import { type CropRect, type OutputFormat } from './transform-directives';
9
+ /** The minimal shape `assetUrl`/`assetSrcSet` need from a stored asset reference. */
10
+ export interface AssetRef {
11
+ src: string;
12
+ }
13
+ export interface AssetUrlOptions {
14
+ width?: number;
15
+ format?: OutputFormat;
16
+ quality?: number;
17
+ crop?: CropRect;
18
+ /** Prefixed onto the result, e.g. `media.publicBaseUrl` when the editor is served from a different origin than the site. */
19
+ baseUrl?: string;
20
+ }
21
+ /**
22
+ * Build a transform URL, merging `opts` over the directives already present
23
+ * in `ref.src` (opts win). For static srcs (svg/pdf under `/assets/{hash}/...`,
24
+ * or any src that isn't one of our own transform URLs) the src is returned
25
+ * unchanged and `opts` are ignored - there is nothing to transform.
26
+ */
27
+ export declare function assetUrl(ref: AssetRef, opts?: AssetUrlOptions): string;
28
+ /**
29
+ * Build a comma-joined `url w` srcset descriptor list. `widths` must all be
30
+ * on the transform width allowlist (multiples of 160 in [160, 4096]) - this
31
+ * is developer-facing (a host app's own responsive-image markup), so an
32
+ * invalid width throws rather than silently dropping it.
33
+ */
34
+ export declare function assetSrcSet(ref: AssetRef, widths: readonly number[], opts?: Omit<AssetUrlOptions, 'width'>): string;
35
+ //# sourceMappingURL=asset-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-url.d.ts","sourceRoot":"","sources":["../../src/assets/asset-url.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAIL,KAAK,QAAQ,EACb,KAAK,YAAY,EAElB,MAAM,wBAAwB,CAAA;AAE/B,qFAAqF;AACrF,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,4HAA4H;IAC5H,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AA+BD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,GAAE,eAAoB,GAAG,MAAM,CAuB1E;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,IAAI,GAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAM,GACxC,MAAM,CAWR"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Build/adjust transform URLs for `<img>`/srcset without pulling in the
3
+ * server-only transform engine. Isomorphic - only depends on
4
+ * transform-directives.ts and the plain `ASSET_PREFIXES` constant, neither
5
+ * of which import node builtins, so this is safe to import from client
6
+ * (editor) code as well as during static builds.
7
+ */
8
+ import { ASSET_PREFIXES } from './asset-prefixes.js';
9
+ import { formatDirectives, isAllowedTransformWidth, parseTransformPath, } from './transform-directives.js';
10
+ const TRANSFORM_URL_PREFIX = `/${ASSET_PREFIXES.transform}/`;
11
+ function joinBaseUrl(baseUrl, urlPath) {
12
+ if (!baseUrl)
13
+ return urlPath;
14
+ const trimmedBase = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;
15
+ const trimmedPath = urlPath.startsWith('/') ? urlPath : `/${urlPath}`;
16
+ return `${trimmedBase}${trimmedPath}`;
17
+ }
18
+ /**
19
+ * Merge `opts` over an already-parsed directive set - opts win when given,
20
+ * otherwise the existing value (if any) carries over. Returns `undefined`
21
+ * fields as "unset" (there is no way to explicitly clear a directive via
22
+ * opts - only to override it).
23
+ */
24
+ function mergeDirectives(current, opts) {
25
+ const existing = current.identity ? undefined : current;
26
+ const width = opts.width ?? existing?.width;
27
+ const format = opts.format ?? existing?.format;
28
+ const quality = opts.quality ?? existing?.quality;
29
+ const crop = opts.crop ?? existing?.crop;
30
+ if (width === undefined && format === undefined && quality === undefined && crop === undefined) {
31
+ return { identity: true };
32
+ }
33
+ return { identity: false, width, format, quality, crop };
34
+ }
35
+ /**
36
+ * Build a transform URL, merging `opts` over the directives already present
37
+ * in `ref.src` (opts win). For static srcs (svg/pdf under `/assets/{hash}/...`,
38
+ * or any src that isn't one of our own transform URLs) the src is returned
39
+ * unchanged and `opts` are ignored - there is nothing to transform.
40
+ */
41
+ export function assetUrl(ref, opts = {}) {
42
+ const { src } = ref;
43
+ if (!src.startsWith(TRANSFORM_URL_PREFIX)) {
44
+ return joinBaseUrl(opts.baseUrl, src);
45
+ }
46
+ const rest = src.slice(TRANSFORM_URL_PREFIX.length);
47
+ const parsed = parseTransformPath(rest.split('/'));
48
+ if (!parsed.ok) {
49
+ // Malformed src (shouldn't happen for a src canopycms itself wrote) -
50
+ // nothing sensible to merge onto, so return it unchanged rather than throw.
51
+ return joinBaseUrl(opts.baseUrl, src);
52
+ }
53
+ const merged = mergeDirectives(parsed.directives, opts);
54
+ // Ext follows the format: an explicit format (new or carried over) always
55
+ // wins; with no format at all, the ext must keep preserving the source's
56
+ // real extension, which is exactly what `parsed.ext` already is here.
57
+ const ext = !merged.identity && merged.format !== undefined ? merged.format : parsed.ext;
58
+ const newSrc = `${TRANSFORM_URL_PREFIX}${formatDirectives(merged)}/${parsed.hash32}/${parsed.slug}.${ext}`;
59
+ return joinBaseUrl(opts.baseUrl, newSrc);
60
+ }
61
+ /**
62
+ * Build a comma-joined `url w` srcset descriptor list. `widths` must all be
63
+ * on the transform width allowlist (multiples of 160 in [160, 4096]) - this
64
+ * is developer-facing (a host app's own responsive-image markup), so an
65
+ * invalid width throws rather than silently dropping it.
66
+ */
67
+ export function assetSrcSet(ref, widths, opts = {}) {
68
+ return widths
69
+ .map((width) => {
70
+ if (!isAllowedTransformWidth(width)) {
71
+ throw new Error(`assetSrcSet: width ${width} is not allowed (must be a multiple of 160 between 160 and 4096)`);
72
+ }
73
+ return `${assetUrl(ref, { ...opts, width })} ${width}w`;
74
+ })
75
+ .join(', ');
76
+ }
77
+ //# sourceMappingURL=asset-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-url.js","sourceRoot":"","sources":["../../src/assets/asset-url.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,GAInB,MAAM,wBAAwB,CAAA;AAgB/B,MAAM,oBAAoB,GAAG,IAAI,cAAc,CAAC,SAAS,GAAG,CAAA;AAE5D,SAAS,WAAW,CAAC,OAA2B,EAAE,OAAe;IAC/D,IAAI,CAAC,OAAO;QAAE,OAAO,OAAO,CAAA;IAC5B,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IAC1E,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAA;IACrE,OAAO,GAAG,WAAW,GAAG,WAAW,EAAE,CAAA;AACvC,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CAAC,OAA4B,EAAE,IAAqB;IAC1E,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAA;IAEvD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,QAAQ,EAAE,KAAK,CAAA;IAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,EAAE,MAAM,CAAA;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,QAAQ,EAAE,OAAO,CAAA;IACjD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,QAAQ,EAAE,IAAI,CAAA;IAExC,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/F,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IAC3B,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC1D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAa,EAAE,OAAwB,EAAE;IAChE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,CAAA;IAEnB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC1C,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;IACnD,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;IAClD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,sEAAsE;QACtE,4EAA4E;QAC5E,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IACvD,0EAA0E;IAC1E,yEAAyE;IACzE,sEAAsE;IACtE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAA;IAExF,MAAM,MAAM,GAAG,GAAG,oBAAoB,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE,CAAA;IAC1G,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;AAC1C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CACzB,GAAa,EACb,MAAyB,EACzB,OAAuC,EAAE;IAEzC,OAAO,MAAM;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CACb,sBAAsB,KAAK,kEAAkE,CAC9F,CAAA;QACH,CAAC;QACD,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,GAAG,CAAA;IACzD,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Instantiate the configured AssetStore from a site's `media` config.
3
+ *
4
+ * This is the one place that turns the (currently-unconsumed) `media` config
5
+ * into a real store — see .claude/future-tasks/assets-media-system.md for why
6
+ * this was previously dead configuration.
7
+ */
8
+ import type { MediaConfig } from '../config/types';
9
+ import type { AssetStore } from './types';
10
+ /**
11
+ * @param media - The site's `media` config (`config.media`), or undefined if unset.
12
+ * @param opts.devAssetsDir - Root directory for the implicit local fallback store used
13
+ * when `media` is undefined, or when `adapter: 'local'` omits `directory`.
14
+ */
15
+ export declare function createAssetStore(media: MediaConfig | undefined, opts?: {
16
+ devAssetsDir?: string;
17
+ }): AssetStore | undefined;
18
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/assets/factory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAGlD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,GAAG,SAAS,EAC9B,IAAI,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GACnC,UAAU,GAAG,SAAS,CA2BxB"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Instantiate the configured AssetStore from a site's `media` config.
3
+ *
4
+ * This is the one place that turns the (currently-unconsumed) `media` config
5
+ * into a real store — see .claude/future-tasks/assets-media-system.md for why
6
+ * this was previously dead configuration.
7
+ */
8
+ import { LocalAssetStore } from './store-local.js';
9
+ import { S3AssetStore } from './store-s3.js';
10
+ /**
11
+ * @param media - The site's `media` config (`config.media`), or undefined if unset.
12
+ * @param opts.devAssetsDir - Root directory for the implicit local fallback store used
13
+ * when `media` is undefined, or when `adapter: 'local'` omits `directory`.
14
+ */
15
+ export function createAssetStore(media, opts = {}) {
16
+ if (!media) {
17
+ return opts.devAssetsDir ? new LocalAssetStore({ root: opts.devAssetsDir }) : undefined;
18
+ }
19
+ switch (media.adapter) {
20
+ case 's3':
21
+ return new S3AssetStore({
22
+ bucket: media.bucket,
23
+ region: media.region,
24
+ publicBaseUrl: media.publicBaseUrl,
25
+ maxUploadBytes: media.maxUploadBytes,
26
+ });
27
+ case 'local': {
28
+ const root = media.directory ?? opts.devAssetsDir;
29
+ return root ? new LocalAssetStore({ root }) : undefined;
30
+ }
31
+ case 'lfs':
32
+ // Config literal kept for forward compatibility; no lfs adapter is
33
+ // implemented yet (see BACKLOG.md "Asset adapters").
34
+ return undefined;
35
+ default:
36
+ // Defensive: mediaSchema is a closed discriminated union, so this is
37
+ // unreachable via validated config, but guards against an unrecognized
38
+ // adapter string reaching here some other way.
39
+ return undefined;
40
+ }
41
+ }
42
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/assets/factory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAGzC;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAA8B,EAC9B,OAAkC,EAAE;IAEpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACzF,CAAC;IAED,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;QACtB,KAAK,IAAI;YACP,OAAO,IAAI,YAAY,CAAC;gBACtB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,cAAc,EAAE,KAAK,CAAC,cAAc;aACrC,CAAC,CAAA;QACJ,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,CAAA;YACjD,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACzD,CAAC;QACD,KAAK,KAAK;YACR,mEAAmE;YACnE,qDAAqD;YACrD,OAAO,SAAS,CAAA;QAClB;YACE,qEAAqE;YACrE,uEAAuE;YACvE,+CAA+C;YAC/C,OAAO,SAAS,CAAA;IACpB,CAAC;AACH,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Store orchestration around the (pure) finalize pipeline: dedup, write, and
3
+ * best-effort staging cleanup. Split from pipeline.ts so the pipeline itself
4
+ * stays store-agnostic and trivially unit-testable with plain byte fixtures.
5
+ */
6
+ import { type FinalizeInput, type FinalizeRejection } from './pipeline';
7
+ import type { AssetMeta, AssetStore } from './types';
8
+ export declare function isValidStagingKey(key: string): boolean;
9
+ export type FinalizeAssetResult = {
10
+ ok: true;
11
+ meta: AssetMeta;
12
+ } | FinalizeRejection;
13
+ /**
14
+ * Run the finalize pipeline over raw bytes and persist the result.
15
+ *
16
+ * Order matters here too: dedup FIRST (after hashing, inside the pipeline) -
17
+ * if an identical blob already exists, return the existing meta and skip all
18
+ * writes entirely (first-name-wins). Otherwise write the original, then the
19
+ * optional public object, then `putMetaIfAbsent` LAST: meta is the commit
20
+ * point for an asset's existence, so a crash between `putOriginal` and here
21
+ * leaves only orphaned (harmless, content-addressed) blobs, never a meta
22
+ * record pointing at a missing blob.
23
+ */
24
+ export declare function finalizeAsset(store: AssetStore, input: FinalizeInput): Promise<FinalizeAssetResult>;
25
+ /**
26
+ * Finalize a previously-staged upload: read the staged bytes, run
27
+ * `finalizeAsset`, and best-effort delete the staging object regardless of
28
+ * outcome (success OR pipeline rejection - a rejected upload's staged bytes
29
+ * are just as much litter as an accepted one's).
30
+ */
31
+ export declare function finalizeStagedUpload(store: AssetStore, stagingKey: string, filename: string, uploadedBy?: string): Promise<FinalizeAssetResult | {
32
+ ok: false;
33
+ status: 400 | 404;
34
+ error: string;
35
+ }>;
36
+ //# sourceMappingURL=finalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finalize.d.ts","sourceRoot":"","sources":["../../src/assets/finalize.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAuB,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE5F,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAYpD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGtD;AAED,MAAM,MAAM,mBAAmB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG,iBAAiB,CAAA;AAEnF;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,mBAAmB,CAAC,CAuB9B;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,UAAU,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,mBAAmB,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAYhF"}