@anvilkit/plugin-asset-manager 0.1.9 → 0.1.10

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 (235) hide show
  1. package/README.md +96 -3
  2. package/dist/adapters/data-url.d.cts +1 -0
  3. package/dist/adapters/data-url.d.cts.map +1 -1
  4. package/dist/adapters/data-url.d.ts +1 -0
  5. package/dist/adapters/data-url.d.ts.map +1 -1
  6. package/dist/adapters/s3-multipart.cjs +425 -0
  7. package/dist/adapters/s3-multipart.d.cts +43 -0
  8. package/dist/adapters/s3-multipart.d.cts.map +1 -0
  9. package/dist/adapters/s3-multipart.d.ts +43 -0
  10. package/dist/adapters/s3-multipart.d.ts.map +1 -0
  11. package/dist/adapters/s3-multipart.js +387 -0
  12. package/dist/adapters/s3-presigned.d.cts +2 -0
  13. package/dist/adapters/s3-presigned.d.cts.map +1 -1
  14. package/dist/adapters/s3-presigned.d.ts +2 -0
  15. package/dist/adapters/s3-presigned.d.ts.map +1 -1
  16. package/dist/i18n/provider.d.cts +1 -0
  17. package/dist/i18n/provider.d.cts.map +1 -1
  18. package/dist/i18n/provider.d.ts +1 -0
  19. package/dist/i18n/provider.d.ts.map +1 -1
  20. package/dist/index.cjs +14 -0
  21. package/dist/index.d.cts +9 -3
  22. package/dist/index.d.cts.map +1 -1
  23. package/dist/index.d.ts +9 -3
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +3 -1
  26. package/dist/plugin.cjs +152 -12
  27. package/dist/plugin.d.cts +49 -1
  28. package/dist/plugin.d.cts.map +1 -1
  29. package/dist/plugin.d.ts +49 -1
  30. package/dist/plugin.d.ts.map +1 -1
  31. package/dist/plugin.js +147 -13
  32. package/dist/sources/composite-source.cjs +3 -0
  33. package/dist/sources/composite-source.d.cts.map +1 -1
  34. package/dist/sources/composite-source.d.ts.map +1 -1
  35. package/dist/sources/composite-source.js +3 -0
  36. package/dist/sources/federated-search.cjs +45 -7
  37. package/dist/sources/federated-search.d.cts.map +1 -1
  38. package/dist/sources/federated-search.d.ts.map +1 -1
  39. package/dist/sources/federated-search.js +45 -7
  40. package/dist/sources/provider.d.cts +5 -0
  41. package/dist/sources/provider.d.cts.map +1 -1
  42. package/dist/sources/provider.d.ts +5 -0
  43. package/dist/sources/provider.d.ts.map +1 -1
  44. package/dist/sources/unsplash/index.d.cts +1 -0
  45. package/dist/sources/unsplash/index.d.cts.map +1 -1
  46. package/dist/sources/unsplash/index.d.ts +1 -0
  47. package/dist/sources/unsplash/index.d.ts.map +1 -1
  48. package/dist/testing/index.d.cts +4 -0
  49. package/dist/testing/index.d.cts.map +1 -1
  50. package/dist/testing/index.d.ts +4 -0
  51. package/dist/testing/index.d.ts.map +1 -1
  52. package/dist/types/categories.d.cts +3 -0
  53. package/dist/types/categories.d.cts.map +1 -1
  54. package/dist/types/categories.d.ts +3 -0
  55. package/dist/types/categories.d.ts.map +1 -1
  56. package/dist/types/data-source.d.cts +9 -0
  57. package/dist/types/data-source.d.cts.map +1 -1
  58. package/dist/types/data-source.d.ts +9 -0
  59. package/dist/types/data-source.d.ts.map +1 -1
  60. package/dist/types/filter.d.cts +11 -0
  61. package/dist/types/filter.d.cts.map +1 -1
  62. package/dist/types/filter.d.ts +11 -0
  63. package/dist/types/filter.d.ts.map +1 -1
  64. package/dist/types/folders.d.cts +2 -0
  65. package/dist/types/folders.d.cts.map +1 -1
  66. package/dist/types/folders.d.ts +2 -0
  67. package/dist/types/folders.d.ts.map +1 -1
  68. package/dist/types/options.d.cts +57 -1
  69. package/dist/types/options.d.cts.map +1 -1
  70. package/dist/types/options.d.ts +57 -1
  71. package/dist/types/options.d.ts.map +1 -1
  72. package/dist/types/resumable.cjs +42 -0
  73. package/dist/types/resumable.d.cts +204 -0
  74. package/dist/types/resumable.d.cts.map +1 -0
  75. package/dist/types/resumable.d.ts +204 -0
  76. package/dist/types/resumable.d.ts.map +1 -0
  77. package/dist/types/resumable.js +4 -0
  78. package/dist/types/transform.cjs +18 -0
  79. package/dist/types/transform.d.cts +45 -0
  80. package/dist/types/transform.d.cts.map +1 -0
  81. package/dist/types/transform.d.ts +45 -0
  82. package/dist/types/transform.d.ts.map +1 -0
  83. package/dist/types/transform.js +1 -0
  84. package/dist/types/types.d.cts +17 -0
  85. package/dist/types/types.d.cts.map +1 -1
  86. package/dist/types/types.d.ts +17 -0
  87. package/dist/types/types.d.ts.map +1 -1
  88. package/dist/types/unsplash.d.cts +2 -0
  89. package/dist/types/unsplash.d.cts.map +1 -1
  90. package/dist/types/unsplash.d.ts +2 -0
  91. package/dist/types/unsplash.d.ts.map +1 -1
  92. package/dist/ui/AssetBrowser.d.cts +3 -1
  93. package/dist/ui/AssetBrowser.d.cts.map +1 -1
  94. package/dist/ui/AssetBrowser.d.ts +3 -1
  95. package/dist/ui/AssetBrowser.d.ts.map +1 -1
  96. package/dist/ui/AssetCommandPalette.d.cts +4 -1
  97. package/dist/ui/AssetCommandPalette.d.cts.map +1 -1
  98. package/dist/ui/AssetCommandPalette.d.ts +4 -1
  99. package/dist/ui/AssetCommandPalette.d.ts.map +1 -1
  100. package/dist/ui/AssetManagerUI.cjs +3 -1
  101. package/dist/ui/AssetManagerUI.d.cts +11 -2
  102. package/dist/ui/AssetManagerUI.d.cts.map +1 -1
  103. package/dist/ui/AssetManagerUI.d.ts +11 -2
  104. package/dist/ui/AssetManagerUI.d.ts.map +1 -1
  105. package/dist/ui/AssetManagerUI.js +3 -1
  106. package/dist/ui/DeleteAssetDialog.d.cts +4 -1
  107. package/dist/ui/DeleteAssetDialog.d.cts.map +1 -1
  108. package/dist/ui/DeleteAssetDialog.d.ts +4 -1
  109. package/dist/ui/DeleteAssetDialog.d.ts.map +1 -1
  110. package/dist/ui/DeleteFolderDialog.d.cts +4 -1
  111. package/dist/ui/DeleteFolderDialog.d.cts.map +1 -1
  112. package/dist/ui/DeleteFolderDialog.d.ts +4 -1
  113. package/dist/ui/DeleteFolderDialog.d.ts.map +1 -1
  114. package/dist/ui/EmptyFolderState.d.cts +4 -1
  115. package/dist/ui/EmptyFolderState.d.cts.map +1 -1
  116. package/dist/ui/EmptyFolderState.d.ts +4 -1
  117. package/dist/ui/EmptyFolderState.d.ts.map +1 -1
  118. package/dist/ui/FolderBreadcrumb.d.cts +4 -1
  119. package/dist/ui/FolderBreadcrumb.d.cts.map +1 -1
  120. package/dist/ui/FolderBreadcrumb.d.ts +4 -1
  121. package/dist/ui/FolderBreadcrumb.d.ts.map +1 -1
  122. package/dist/ui/FolderNameDialog.d.cts +3 -1
  123. package/dist/ui/FolderNameDialog.d.cts.map +1 -1
  124. package/dist/ui/FolderNameDialog.d.ts +3 -1
  125. package/dist/ui/FolderNameDialog.d.ts.map +1 -1
  126. package/dist/ui/FolderTree.d.cts +4 -1
  127. package/dist/ui/FolderTree.d.cts.map +1 -1
  128. package/dist/ui/FolderTree.d.ts +4 -1
  129. package/dist/ui/FolderTree.d.ts.map +1 -1
  130. package/dist/ui/MetadataPanel.d.cts +4 -1
  131. package/dist/ui/MetadataPanel.d.cts.map +1 -1
  132. package/dist/ui/MetadataPanel.d.ts +4 -1
  133. package/dist/ui/MetadataPanel.d.ts.map +1 -1
  134. package/dist/ui/MoveTargetPicker.d.cts +3 -1
  135. package/dist/ui/MoveTargetPicker.d.cts.map +1 -1
  136. package/dist/ui/MoveTargetPicker.d.ts +3 -1
  137. package/dist/ui/MoveTargetPicker.d.ts.map +1 -1
  138. package/dist/ui/ReplaceAssetDialog.cjs +7 -2
  139. package/dist/ui/ReplaceAssetDialog.d.cts +5 -2
  140. package/dist/ui/ReplaceAssetDialog.d.cts.map +1 -1
  141. package/dist/ui/ReplaceAssetDialog.d.ts +5 -2
  142. package/dist/ui/ReplaceAssetDialog.d.ts.map +1 -1
  143. package/dist/ui/ReplaceAssetDialog.js +7 -2
  144. package/dist/ui/UnsplashPanel.d.cts +4 -1
  145. package/dist/ui/UnsplashPanel.d.cts.map +1 -1
  146. package/dist/ui/UnsplashPanel.d.ts +4 -1
  147. package/dist/ui/UnsplashPanel.d.ts.map +1 -1
  148. package/dist/ui/UploadButton.cjs +7 -2
  149. package/dist/ui/UploadButton.d.cts +6 -2
  150. package/dist/ui/UploadButton.d.cts.map +1 -1
  151. package/dist/ui/UploadButton.d.ts +6 -2
  152. package/dist/ui/UploadButton.d.ts.map +1 -1
  153. package/dist/ui/UploadButton.js +7 -2
  154. package/dist/utils/asset-reference.cjs +87 -4
  155. package/dist/utils/asset-reference.d.cts +30 -6
  156. package/dist/utils/asset-reference.d.cts.map +1 -1
  157. package/dist/utils/asset-reference.d.ts +30 -6
  158. package/dist/utils/asset-reference.d.ts.map +1 -1
  159. package/dist/utils/asset-reference.js +83 -3
  160. package/dist/utils/csp.cjs +16 -0
  161. package/dist/utils/csp.d.cts +23 -0
  162. package/dist/utils/csp.d.cts.map +1 -1
  163. package/dist/utils/csp.d.ts +23 -0
  164. package/dist/utils/csp.d.ts.map +1 -1
  165. package/dist/utils/csp.js +16 -0
  166. package/dist/utils/data-source.cjs +19 -5
  167. package/dist/utils/data-source.d.cts +5 -1
  168. package/dist/utils/data-source.d.cts.map +1 -1
  169. package/dist/utils/data-source.d.ts +5 -1
  170. package/dist/utils/data-source.d.ts.map +1 -1
  171. package/dist/utils/data-source.js +19 -5
  172. package/dist/utils/errors.d.cts +5 -0
  173. package/dist/utils/errors.d.cts.map +1 -1
  174. package/dist/utils/errors.d.ts +5 -0
  175. package/dist/utils/errors.d.ts.map +1 -1
  176. package/dist/utils/query-param-transform.cjs +101 -0
  177. package/dist/utils/query-param-transform.d.cts +46 -0
  178. package/dist/utils/query-param-transform.d.cts.map +1 -0
  179. package/dist/utils/query-param-transform.d.ts +46 -0
  180. package/dist/utils/query-param-transform.d.ts.map +1 -0
  181. package/dist/utils/query-param-transform.js +60 -0
  182. package/dist/utils/registry.cjs +3 -0
  183. package/dist/utils/registry.d.cts +8 -0
  184. package/dist/utils/registry.d.cts.map +1 -1
  185. package/dist/utils/registry.d.ts +8 -0
  186. package/dist/utils/registry.d.ts.map +1 -1
  187. package/dist/utils/registry.js +3 -0
  188. package/dist/utils/resolver.cjs +19 -11
  189. package/dist/utils/resolver.d.cts +24 -0
  190. package/dist/utils/resolver.d.cts.map +1 -1
  191. package/dist/utils/resolver.d.ts +24 -0
  192. package/dist/utils/resolver.d.ts.map +1 -1
  193. package/dist/utils/resolver.js +19 -11
  194. package/dist/utils/retry.d.cts +2 -0
  195. package/dist/utils/retry.d.cts.map +1 -1
  196. package/dist/utils/retry.d.ts +2 -0
  197. package/dist/utils/retry.d.ts.map +1 -1
  198. package/dist/utils/run-resumable-upload.cjs +160 -0
  199. package/dist/utils/run-resumable-upload.d.cts +56 -0
  200. package/dist/utils/run-resumable-upload.d.cts.map +1 -0
  201. package/dist/utils/run-resumable-upload.d.ts +56 -0
  202. package/dist/utils/run-resumable-upload.d.ts.map +1 -0
  203. package/dist/utils/run-resumable-upload.js +122 -0
  204. package/dist/utils/sniff-file-type.cjs +209 -0
  205. package/dist/utils/sniff-file-type.d.cts +25 -0
  206. package/dist/utils/sniff-file-type.d.cts.map +1 -0
  207. package/dist/utils/sniff-file-type.d.ts +25 -0
  208. package/dist/utils/sniff-file-type.d.ts.map +1 -0
  209. package/dist/utils/sniff-file-type.js +164 -0
  210. package/dist/utils/studio-asset-source.cjs +11 -6
  211. package/dist/utils/studio-asset-source.d.cts +5 -1
  212. package/dist/utils/studio-asset-source.d.cts.map +1 -1
  213. package/dist/utils/studio-asset-source.d.ts +5 -1
  214. package/dist/utils/studio-asset-source.d.ts.map +1 -1
  215. package/dist/utils/studio-asset-source.js +11 -6
  216. package/dist/utils/upload-session-store.cjs +125 -0
  217. package/dist/utils/upload-session-store.d.cts +55 -0
  218. package/dist/utils/upload-session-store.d.cts.map +1 -0
  219. package/dist/utils/upload-session-store.d.ts +55 -0
  220. package/dist/utils/upload-session-store.d.ts.map +1 -0
  221. package/dist/utils/upload-session-store.js +84 -0
  222. package/dist/utils/validate-upload-result.cjs +9 -1
  223. package/dist/utils/validate-upload-result.d.cts +1 -0
  224. package/dist/utils/validate-upload-result.d.cts.map +1 -1
  225. package/dist/utils/validate-upload-result.d.ts +1 -0
  226. package/dist/utils/validate-upload-result.d.ts.map +1 -1
  227. package/dist/utils/validate-upload-result.js +9 -1
  228. package/dist/version.cjs +1 -1
  229. package/dist/version.d.cts +1 -1
  230. package/dist/version.d.cts.map +1 -1
  231. package/dist/version.d.ts +1 -1
  232. package/dist/version.d.ts.map +1 -1
  233. package/dist/version.js +1 -1
  234. package/meta/config.json +1 -1
  235. package/package.json +40 -10
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACN,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,GACX,MAAM,aAAa,CAAC;AACrB,YAAY,EACX,uBAAuB,EACvB,mBAAmB,EACnB,UAAU,GACV,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACX,aAAa,EACb,oBAAoB,EACpB,gBAAgB,GAChB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACX,eAAe,EACf,iBAAiB,EACjB,cAAc,GACd,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACX,WAAW,EACX,aAAa,EACb,SAAS,EACT,cAAc,EACd,aAAa,GACb,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,YAAY,EACX,SAAS,EACT,SAAS,EACT,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,YAAY,GACZ,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACX,qBAAqB,EACrB,aAAa,EACb,mBAAmB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACX,WAAW,EACX,kBAAkB,EAClB,YAAY,GACZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EACX,wBAAwB,EACxB,oBAAoB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC3E,YAAY,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AACrF,OAAO,EACN,uBAAuB,EACvB,oBAAoB,GACpB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EACX,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,GACzB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,yBAAyB,EACzB,4BAA4B,EAC5B,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,GACX,MAAM,aAAa,CAAC;AACrB,YAAY,EACX,uBAAuB,EACvB,mBAAmB,EACnB,UAAU,GACV,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACX,aAAa,EACb,oBAAoB,EACpB,gBAAgB,GAChB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACX,eAAe,EACf,iBAAiB,EACjB,cAAc,GACd,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACX,WAAW,EACX,aAAa,EACb,SAAS,EACT,cAAc,EACd,aAAa,GACb,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,YAAY,EACX,SAAS,EACT,OAAO,EACP,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,UAAU,EACV,aAAa,EACb,kBAAkB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EACX,cAAc,EACd,iBAAiB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACX,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,YAAY,GACZ,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACX,qBAAqB,EACrB,aAAa,EACb,mBAAmB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,YAAY,EACX,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,qBAAqB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EACX,wBAAwB,EACxB,oBAAoB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC3E,YAAY,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AACrF,OAAO,EACN,uBAAuB,EACvB,oBAAoB,GACpB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  export type { DataUrlUploaderOptions } from "./adapters/data-url.js";
2
2
  export { dataUrlUploader } from "./adapters/data-url.js";
3
3
  export { inMemoryUploader } from "./adapters/in-memory.js";
4
- export { createAssetManagerPlugin, createAssetReference, getAssetRegistry, uploadAsset, } from "./plugin.js";
4
+ export type { AssetManagerErrorEvent, AssetManagerEventMap, AssetManagerEventName, AssetManagerUploadedEvent, } from "./plugin.js";
5
+ export { ASSET_MANAGER_ERROR_EVENT, ASSET_MANAGER_UPLOADED_EVENT, createAssetManagerPlugin, createAssetReference, getAssetRegistry, uploadAsset, } from "./plugin.js";
5
6
  export type { AssetSourceCapabilities, AssetSourceProvider, AssetTheme, } from "./sources/provider.js";
6
7
  export type { AssetCategory, AssetFacetDefinition, AssetFacetOption, } from "./types/categories.js";
7
8
  export type { AssetDataSource, AssetSourceStatus, ReplacePayload, } from "./types/data-source.js";
@@ -9,9 +10,14 @@ export type { AssetFilter, AssetListPage, AssetSort, AssetSortField, AssetSource
9
10
  export type { AssetFolder, FolderId, FolderOptions } from "./types/folders.js";
10
11
  export { resolveFolderId } from "./types/folders.js";
11
12
  export type { AssetManagerOptions } from "./types/options.js";
12
- export type { AssetKind, AssetMeta, AssetRegistry, AssetRegistryListener, AssetSearchOptions, AssetSearchPage, UploadAdapter, UploadAdapterOptions, UploadResult, } from "./types/types.js";
13
+ export type { JsonValue, PartTag, PersistedUploadSession, ResumableUploadAdapter, ResumableUploadConfig, UploadPart, UploadSession, UploadSessionStore, } from "./types/resumable.js";
14
+ export { isResumableAdapter } from "./types/resumable.js";
15
+ export type { AssetTransform, TransformResolver, } from "./types/transform.js";
16
+ export type { AssetDeletedHook, AssetKind, AssetMeta, AssetRegistry, AssetRegistryListener, AssetSearchOptions, AssetSearchPage, UploadAdapter, UploadAdapterOptions, UploadResult, } from "./types/types.js";
13
17
  export type { UnsplashSourceOptions, UnsplashTheme, UnsplashThemeConfig, } from "./types/unsplash.js";
14
- export type { RequiredCsp, RequiredCspOptions, S3CspOptions, } from "./utils/csp.js";
18
+ export type { ParsedAssetReference } from "./utils/asset-reference.js";
19
+ export { parseAssetReference } from "./utils/asset-reference.js";
20
+ export type { RequiredCsp, RequiredCspOptions, S3CspOptions, S3MultipartCspOptions, } from "./utils/csp.js";
15
21
  export { getRequiredCsp } from "./utils/csp.js";
16
22
  export type { AssetResolutionErrorCode, AssetSourceErrorCode, } from "./utils/errors.js";
17
23
  export { AssetResolutionError, AssetSourceError, AssetValidationError, } from "./utils/errors.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACN,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,GACX,MAAM,aAAa,CAAC;AACrB,YAAY,EACX,uBAAuB,EACvB,mBAAmB,EACnB,UAAU,GACV,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACX,aAAa,EACb,oBAAoB,EACpB,gBAAgB,GAChB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACX,eAAe,EACf,iBAAiB,EACjB,cAAc,GACd,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACX,WAAW,EACX,aAAa,EACb,SAAS,EACT,cAAc,EACd,aAAa,GACb,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,YAAY,EACX,SAAS,EACT,SAAS,EACT,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,YAAY,GACZ,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACX,qBAAqB,EACrB,aAAa,EACb,mBAAmB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACX,WAAW,EACX,kBAAkB,EAClB,YAAY,GACZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EACX,wBAAwB,EACxB,oBAAoB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC3E,YAAY,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AACrF,OAAO,EACN,uBAAuB,EACvB,oBAAoB,GACpB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EACX,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,GACzB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,yBAAyB,EACzB,4BAA4B,EAC5B,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,GACX,MAAM,aAAa,CAAC;AACrB,YAAY,EACX,uBAAuB,EACvB,mBAAmB,EACnB,UAAU,GACV,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACX,aAAa,EACb,oBAAoB,EACpB,gBAAgB,GAChB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACX,eAAe,EACf,iBAAiB,EACjB,cAAc,GACd,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACX,WAAW,EACX,aAAa,EACb,SAAS,EACT,cAAc,EACd,aAAa,GACb,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,YAAY,EACX,SAAS,EACT,OAAO,EACP,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,UAAU,EACV,aAAa,EACb,kBAAkB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EACX,cAAc,EACd,iBAAiB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACX,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,YAAY,GACZ,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACX,qBAAqB,EACrB,aAAa,EACb,mBAAmB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,YAAY,EACX,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,qBAAqB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EACX,wBAAwB,EACxB,oBAAoB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC3E,YAAY,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AACrF,OAAO,EACN,uBAAuB,EACvB,oBAAoB,GACpB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,9 @@
1
1
  export { dataUrlUploader } from "./adapters/data-url.js";
2
2
  export { inMemoryUploader } from "./adapters/in-memory.js";
3
- export { createAssetManagerPlugin, createAssetReference, getAssetRegistry, uploadAsset } from "./plugin.js";
3
+ export { ASSET_MANAGER_ERROR_EVENT, ASSET_MANAGER_UPLOADED_EVENT, createAssetManagerPlugin, createAssetReference, getAssetRegistry, uploadAsset } from "./plugin.js";
4
4
  export { resolveFolderId } from "./types/folders.js";
5
+ export { isResumableAdapter } from "./types/resumable.js";
6
+ export { parseAssetReference } from "./utils/asset-reference.js";
5
7
  export { getRequiredCsp } from "./utils/csp.js";
6
8
  export { AssetResolutionError, AssetSourceError, AssetValidationError } from "./utils/errors.js";
7
9
  export { inferAssetKind } from "./utils/infer-kind.js";
package/dist/plugin.cjs CHANGED
@@ -37,6 +37,8 @@ var __webpack_require__ = {};
37
37
  var __webpack_exports__ = {};
38
38
  __webpack_require__.r(__webpack_exports__);
39
39
  __webpack_require__.d(__webpack_exports__, {
40
+ ASSET_MANAGER_ERROR_EVENT: ()=>ASSET_MANAGER_ERROR_EVENT,
41
+ ASSET_MANAGER_UPLOADED_EVENT: ()=>ASSET_MANAGER_UPLOADED_EVENT,
40
42
  createAssetManagerPlugin: ()=>createAssetManagerPlugin,
41
43
  createAssetReference: ()=>asset_reference_cjs_namespaceObject.createAssetReference,
42
44
  getAssetRegistry: ()=>getAssetRegistry,
@@ -58,6 +60,8 @@ const resolver_cjs_namespaceObject = require("./utils/resolver.cjs");
58
60
  const studio_asset_source_cjs_namespaceObject = require("./utils/studio-asset-source.cjs");
59
61
  const validate_upload_result_cjs_namespaceObject = require("./utils/validate-upload-result.cjs");
60
62
  const external_version_cjs_namespaceObject = require("./version.cjs");
63
+ const ASSET_MANAGER_UPLOADED_EVENT = "asset-manager:uploaded";
64
+ const ASSET_MANAGER_ERROR_EVENT = "asset-manager:error";
61
65
  const META = {
62
66
  ...config_json_default(),
63
67
  version: external_version_cjs_namespaceObject.ASSET_MANAGER_VERSION,
@@ -72,7 +76,10 @@ function createAssetManagerPlugin(options = {}) {
72
76
  const assetResolver = (0, resolver_cjs_namespaceObject.createIRAssetResolver)({
73
77
  registry,
74
78
  dataUrlAllowlistOptIn: normalizedOptions.dataUrlAllowlistOptIn,
75
- allowMixedScriptHostnames: normalizedOptions.allowMixedScriptHostnames
79
+ allowMixedScriptHostnames: normalizedOptions.allowMixedScriptHostnames,
80
+ ...normalizedOptions.transformResolver ? {
81
+ transformResolver: normalizedOptions.transformResolver
82
+ } : {}
76
83
  });
77
84
  return {
78
85
  meta: META,
@@ -94,9 +101,11 @@ function createAssetManagerPlugin(options = {}) {
94
101
  tokenByContext.set(initCtx, token);
95
102
  initCtx.registerAssetResolver(assetResolver);
96
103
  const upload = (file, opts)=>uploadAsset(initCtx, file, opts?.signal);
104
+ const onDelete = createAssetDeletedHandler(normalizedOptions, !hostOwnsAssetPlane(normalizedOptions));
97
105
  const studioAssetSource = (0, studio_asset_source_cjs_namespaceObject.createStudioAssetSource)({
98
106
  registry,
99
107
  upload,
108
+ onDelete,
100
109
  ...normalizedOptions.getThumbnail ? {
101
110
  getThumbnail: normalizedOptions.getThumbnail
102
111
  } : {}
@@ -143,39 +152,146 @@ async function uploadAsset(ctx, file, signal) {
143
152
  const { options, registry } = state;
144
153
  try {
145
154
  validateSelectedFile(file, options);
146
- const uploadResult = await options.uploader(file, signal ? {
147
- signal
148
- } : void 0);
155
+ await assertSniffedContentType(file, options, signal);
156
+ let contentHash;
157
+ if (true === options.dedupe) {
158
+ if (signal?.aborted) throw makePluginAbortError();
159
+ contentHash = await computeFileHash(file);
160
+ if (signal?.aborted) throw makePluginAbortError();
161
+ if (void 0 !== contentHash) {
162
+ const existing = registry.list().find((entry)=>entry.meta?.hash === contentHash);
163
+ if (void 0 !== existing) {
164
+ dispatchAssetReference(ctx, existing);
165
+ ctx.emit(ASSET_MANAGER_UPLOADED_EVENT, {
166
+ asset: existing,
167
+ reference: (0, asset_reference_cjs_namespaceObject.createAssetReference)(existing.id)
168
+ });
169
+ return existing;
170
+ }
171
+ }
172
+ }
173
+ if (signal?.aborted) throw makePluginAbortError();
174
+ const uploadResult = await performUpload(options, file, signal);
149
175
  if (signal?.aborted) throw makePluginAbortError();
150
176
  const validated = (0, validate_upload_result_cjs_namespaceObject.validateUploadResult)(mergeUploadMeta(uploadResult, file), options);
151
- const tagged = withDerivedTags(validated, file);
177
+ const hashed = void 0 !== contentHash ? {
178
+ ...validated,
179
+ meta: {
180
+ ...validated.meta ?? {},
181
+ hash: contentHash
182
+ }
183
+ } : validated;
184
+ const tagged = withDerivedTags(hashed, file);
152
185
  const stored = registry.register(tagged);
153
186
  dispatchAssetReference(ctx, stored);
154
- ctx.emit("asset-manager:uploaded", {
187
+ const payload = {
155
188
  asset: stored,
156
189
  reference: (0, asset_reference_cjs_namespaceObject.createAssetReference)(stored.id)
157
- });
190
+ };
191
+ ctx.emit(ASSET_MANAGER_UPLOADED_EVENT, payload);
158
192
  return stored;
159
193
  } catch (error) {
160
194
  if (isAbortLikeError(error) || signal?.aborted) throw error;
161
195
  const normalizedError = error instanceof errors_cjs_namespaceObject.AssetValidationError ? error : new errors_cjs_namespaceObject.AssetValidationError("UPLOAD_FAILED", error instanceof Error ? error.message : String(error), {
162
196
  cause: error
163
197
  });
164
- ctx.emit("asset-manager:error", {
198
+ const payload = {
165
199
  code: normalizedError.code,
166
200
  message: normalizedError.message
167
- });
201
+ };
202
+ ctx.emit(ASSET_MANAGER_ERROR_EVENT, payload);
168
203
  ctx.log("error", normalizedError.message, {
169
204
  code: normalizedError.code
170
205
  });
171
206
  throw normalizedError;
172
207
  }
173
208
  }
209
+ const DEFAULT_RESUMABLE_THRESHOLD = 8388608;
210
+ async function performUpload(options, file, signal) {
211
+ const { resumable } = options;
212
+ if (void 0 !== resumable && shouldUseResumable(resumable, file)) {
213
+ if (signal?.aborted) throw makePluginAbortError();
214
+ const { runResumableUpload } = await import("./utils/run-resumable-upload.cjs");
215
+ return runResumableUpload(resumable.adapter, file, {
216
+ ...void 0 !== resumable.partSize ? {
217
+ partSize: resumable.partSize
218
+ } : {},
219
+ ...resumable.sessionStore ? {
220
+ sessionStore: resumable.sessionStore
221
+ } : {},
222
+ ...signal ? {
223
+ signal
224
+ } : {}
225
+ });
226
+ }
227
+ return options.uploader(file, signal ? {
228
+ signal
229
+ } : void 0);
230
+ }
231
+ function shouldUseResumable(resumable, file) {
232
+ const threshold = resumable.threshold ?? resumable.partSize ?? DEFAULT_RESUMABLE_THRESHOLD;
233
+ return file.size >= threshold;
234
+ }
235
+ function createAssetDeletedHandler(options, callHostHook) {
236
+ return async (asset)=>{
237
+ revokeBlobUrl(asset.url);
238
+ if (callHostHook) await options.onAssetDeleted?.(asset);
239
+ };
240
+ }
241
+ const HOST_ASSET_PLANE_METHODS = [
242
+ "list",
243
+ "remove",
244
+ "replace",
245
+ "rename",
246
+ "move"
247
+ ];
248
+ function hostOwnsAssetPlane(options) {
249
+ const ds = options.dataSource;
250
+ if (void 0 === ds) return false;
251
+ return HOST_ASSET_PLANE_METHODS.every((method)=>"function" == typeof ds[method]);
252
+ }
253
+ function revokeBlobUrl(url) {
254
+ if (url.startsWith("blob:") && "u" > typeof URL && "function" == typeof URL.revokeObjectURL) URL.revokeObjectURL(url);
255
+ }
256
+ async function computeFileHash(file) {
257
+ const subtle = globalThis.crypto?.subtle;
258
+ if (void 0 === subtle || "function" != typeof file.arrayBuffer) return;
259
+ try {
260
+ const digest = await subtle.digest("SHA-256", await file.arrayBuffer());
261
+ const bytes = new Uint8Array(digest);
262
+ let hex = "";
263
+ for (const byte of bytes)hex += byte.toString(16).padStart(2, "0");
264
+ return hex;
265
+ } catch {
266
+ return;
267
+ }
268
+ }
269
+ async function assertSniffedContentType(file, options, signal) {
270
+ if (true !== options.sniffContent) return;
271
+ const declared = normalizeMime(file.type);
272
+ if ("" === declared || "application/octet-stream" === declared) return;
273
+ if (signal?.aborted) throw makePluginAbortError();
274
+ const { sniffFileMime } = await import("./utils/sniff-file-type.cjs");
275
+ const sniffed = await sniffFileMime(file);
276
+ if (signal?.aborted) throw makePluginAbortError();
277
+ if (void 0 === sniffed) return;
278
+ if (normalizeMime(sniffed) !== declared) throw new errors_cjs_namespaceObject.AssetValidationError("CONTENT_TYPE_MISMATCH", `File content was detected as "${sniffed}" but its declared type is "${file.type}".`);
279
+ }
280
+ function normalizeMime(mime) {
281
+ const lower = mime.trim().toLowerCase();
282
+ return "image/jpg" === lower ? "image/jpeg" : lower;
283
+ }
174
284
  function validateSelectedFile(file, options) {
175
285
  if (void 0 !== options.maxFileSize && file.size > options.maxFileSize) throw new errors_cjs_namespaceObject.AssetValidationError("FILE_TOO_LARGE", `File size ${file.size} bytes exceeds the configured maxFileSize of ${options.maxFileSize} bytes.`);
176
- if (options.acceptedMimeTypes && options.acceptedMimeTypes.length > 0 && !mimeTypeMatches(file.type, options.acceptedMimeTypes)) {
177
- const mimeType = file.type || "unknown";
178
- throw new errors_cjs_namespaceObject.AssetValidationError("UNSUPPORTED_MIME_TYPE", `File MIME type "${mimeType}" is not in acceptedMimeTypes.`);
286
+ const acceptedMimeTypes = options.acceptedMimeTypes ?? [];
287
+ const acceptedFileExtensions = options.acceptedFileExtensions ?? [];
288
+ const hasMimeAllowlist = acceptedMimeTypes.length > 0;
289
+ const hasExtensionAllowlist = acceptedFileExtensions.length > 0;
290
+ if (hasMimeAllowlist && "" !== file.type && !mimeTypeMatches(file.type, acceptedMimeTypes)) throw new errors_cjs_namespaceObject.AssetValidationError("UNSUPPORTED_MIME_TYPE", `File MIME type "${file.type}" is not in acceptedMimeTypes.`);
291
+ if (hasMimeAllowlist && "" === file.type && !hasExtensionAllowlist) throw new errors_cjs_namespaceObject.AssetValidationError("UNSUPPORTED_MIME_TYPE", 'File MIME type "unknown" is not in acceptedMimeTypes.');
292
+ if (hasExtensionAllowlist && !fileExtensionMatches(file.name, acceptedFileExtensions)) {
293
+ const extension = file.name.includes(".") ? file.name.slice(file.name.lastIndexOf(".")).toLowerCase() : "unknown";
294
+ throw new errors_cjs_namespaceObject.AssetValidationError("UNSUPPORTED_FILE_EXTENSION", `File extension "${extension}" is not in acceptedFileExtensions.`);
179
295
  }
180
296
  }
181
297
  function getRuntimeState(ctx) {
@@ -193,15 +309,20 @@ async function loadRichSource(ctx, registry, upload, options) {
193
309
  import("./sources/composite-source.cjs")
194
310
  ]);
195
311
  const maxDepth = "object" == typeof options.folders ? options.folders.maxDepth : void 0;
312
+ const allowMove = "object" == typeof options.folders ? options.folders.allowMove : void 0;
196
313
  const resolved = resolveDataSource({
197
314
  registry,
198
315
  upload,
316
+ onDelete: createAssetDeletedHandler(options, !hostOwnsAssetPlane(options)),
199
317
  ...options.dataSource ? {
200
318
  hostDataSource: options.dataSource
201
319
  } : {},
202
320
  ...void 0 !== maxDepth ? {
203
321
  maxDepth
204
322
  } : {},
323
+ ...void 0 !== allowMove ? {
324
+ allowMove
325
+ } : {},
205
326
  warn: (message)=>ctx.log("warn", message)
206
327
  });
207
328
  const providers = [
@@ -234,6 +355,11 @@ function normalizeOptions(options) {
234
355
  acceptedMimeTypes: Object.freeze([
235
356
  ...options.acceptedMimeTypes
236
357
  ])
358
+ } : {},
359
+ ...options.acceptedFileExtensions ? {
360
+ acceptedFileExtensions: Object.freeze([
361
+ ...options.acceptedFileExtensions
362
+ ])
237
363
  } : {}
238
364
  };
239
365
  }
@@ -285,6 +411,16 @@ function mimeTypeMatches(input, acceptedMimeTypes) {
285
411
  return input === accepted;
286
412
  });
287
413
  }
414
+ function fileExtensionMatches(name, acceptedFileExtensions) {
415
+ const lowerName = name.toLowerCase();
416
+ if ("" === lowerName) return false;
417
+ return acceptedFileExtensions.some((accepted)=>{
418
+ const trimmed = accepted.trim().toLowerCase();
419
+ if ("" === trimmed) return false;
420
+ const extension = trimmed.startsWith(".") ? trimmed : `.${trimmed}`;
421
+ return lowerName.endsWith(extension);
422
+ });
423
+ }
288
424
  function dispatchAssetReference(ctx, asset) {
289
425
  const currentData = ctx.getData();
290
426
  const assetsView = currentData.assets;
@@ -338,12 +474,16 @@ function isAbortLikeError(error) {
338
474
  const name = error.name;
339
475
  return "AbortError" === name;
340
476
  }
477
+ exports.ASSET_MANAGER_ERROR_EVENT = __webpack_exports__.ASSET_MANAGER_ERROR_EVENT;
478
+ exports.ASSET_MANAGER_UPLOADED_EVENT = __webpack_exports__.ASSET_MANAGER_UPLOADED_EVENT;
341
479
  exports.createAssetManagerPlugin = __webpack_exports__.createAssetManagerPlugin;
342
480
  exports.createAssetReference = __webpack_exports__.createAssetReference;
343
481
  exports.getAssetRegistry = __webpack_exports__.getAssetRegistry;
344
482
  exports.uploadAsset = __webpack_exports__.uploadAsset;
345
483
  exports.validateSelectedFile = __webpack_exports__.validateSelectedFile;
346
484
  for(var __rspack_i in __webpack_exports__)if (-1 === [
485
+ "ASSET_MANAGER_ERROR_EVENT",
486
+ "ASSET_MANAGER_UPLOADED_EVENT",
347
487
  "createAssetManagerPlugin",
348
488
  "createAssetReference",
349
489
  "getAssetRegistry",
package/dist/plugin.d.cts CHANGED
@@ -4,8 +4,56 @@ import type { AssetManagerOptions } from "./types/options.js";
4
4
  import type { AssetRegistry, UploadResult } from "./types/types.js";
5
5
  import { createAssetReference } from "./utils/asset-reference.js";
6
6
  export { createAssetReference };
7
+ /** Event name emitted after an asset upload has been validated and registered. */
8
+ export declare const ASSET_MANAGER_UPLOADED_EVENT: "asset-manager:uploaded";
9
+ /** Event name emitted when upload validation or adapter execution fails. */
10
+ export declare const ASSET_MANAGER_ERROR_EVENT: "asset-manager:error";
11
+ /** Payload emitted with {@link ASSET_MANAGER_UPLOADED_EVENT}. */
12
+ export interface AssetManagerUploadedEvent {
13
+ readonly asset: UploadResult;
14
+ readonly reference: string;
15
+ }
16
+ /** Payload emitted with {@link ASSET_MANAGER_ERROR_EVENT}. */
17
+ export interface AssetManagerErrorEvent {
18
+ readonly code: string;
19
+ readonly message: string;
20
+ }
21
+ /**
22
+ * Event payload map for asset-manager runtime notifications. Hosts can use this
23
+ * to type their event-bus wrappers around `asset-manager:uploaded` and
24
+ * `asset-manager:error`.
25
+ */
26
+ export interface AssetManagerEventMap {
27
+ readonly [ASSET_MANAGER_UPLOADED_EVENT]: AssetManagerUploadedEvent;
28
+ readonly [ASSET_MANAGER_ERROR_EVENT]: AssetManagerErrorEvent;
29
+ }
30
+ /** Supported asset-manager event names. */
31
+ export type AssetManagerEventName = keyof AssetManagerEventMap;
32
+ /**
33
+ * Create the Anvilkit Studio asset-manager plugin.
34
+ *
35
+ * The returned plugin registers localization messages, a header upload action,
36
+ * an IR asset resolver, and a Studio asset source. With no options it provides
37
+ * an in-memory uploader/library; production hosts typically provide an
38
+ * `uploader` and optionally a folder-aware `dataSource` or external providers.
39
+ */
7
40
  export declare function createAssetManagerPlugin<UserConfig extends PuckConfig = PuckConfig>(options?: AssetManagerOptions): StudioPlugin<UserConfig>;
41
+ /**
42
+ * Return the runtime registry associated with an initialized plugin context.
43
+ *
44
+ * The registry is available after the plugin `onInit` hook has run and is
45
+ * removed during `onDestroy`; callers should handle `undefined` in setup,
46
+ * teardown, and tests that inspect lifecycle boundaries.
47
+ */
8
48
  export declare function getAssetRegistry<UserConfig extends PuckConfig = PuckConfig>(ctx: StudioPluginContext<UserConfig>): AssetRegistry | undefined;
49
+ /**
50
+ * Validate and upload a single file through the configured plugin runtime.
51
+ *
52
+ * The pipeline enforces selected-file constraints, calls the resolved upload
53
+ * adapter, validates the adapter's `UploadResult`, derives lightweight tags,
54
+ * registers the asset, dispatches an `asset://` reference into page data, and
55
+ * emits typed asset-manager events.
56
+ */
9
57
  export declare function uploadAsset<UserConfig extends PuckConfig = PuckConfig>(ctx: StudioPluginContext<UserConfig>, file: File, signal?: AbortSignal): Promise<UploadResult>;
10
- export declare function validateSelectedFile(file: File, options: Pick<AssetManagerOptions, "acceptedMimeTypes" | "maxFileSize">): void;
58
+ export declare function validateSelectedFile(file: File, options: Pick<AssetManagerOptions, "acceptedFileExtensions" | "acceptedMimeTypes" | "maxFileSize">): void;
11
59
  //# sourceMappingURL=plugin.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.cts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEX,YAAY,EACZ,mBAAmB,EAEnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAU7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAEX,aAAa,EAEb,YAAY,EACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAWlE,OAAO,EAAE,oBAAoB,EAAE,CAAC;AA6BhC,wBAAgB,wBAAwB,CACvC,UAAU,SAAS,UAAU,GAAG,UAAU,EACzC,OAAO,GAAE,mBAAwB,GAAG,YAAY,CAAC,UAAU,CAAC,CA4F7D;AAED,wBAAgB,gBAAgB,CAAC,UAAU,SAAS,UAAU,GAAG,UAAU,EAC1E,GAAG,EAAE,mBAAmB,CAAC,UAAU,CAAC,GAClC,aAAa,GAAG,SAAS,CAG3B;AAED,wBAAsB,WAAW,CAAC,UAAU,SAAS,UAAU,GAAG,UAAU,EAC3E,GAAG,EAAE,mBAAmB,CAAC,UAAU,CAAC,EACpC,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,YAAY,CAAC,CAwDvB;AAED,wBAAgB,oBAAoB,CACnC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,aAAa,CAAC,GACrE,IAAI,CAmBN"}
1
+ {"version":3,"file":"plugin.d.cts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEX,YAAY,EACZ,mBAAmB,EAEnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAU7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAGX,aAAa,EAEb,YAAY,EACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAWlE,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC,kFAAkF;AAClF,eAAO,MAAM,4BAA4B,EAAG,wBAAiC,CAAC;AAE9E,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAG,qBAA8B,CAAC;AAExE,iEAAiE;AACjE,MAAM,WAAW,yBAAyB;IACzC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC3B;AAED,8DAA8D;AAC9D,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,CAAC,4BAA4B,CAAC,EAAE,yBAAyB,CAAC;IACnE,QAAQ,CAAC,CAAC,yBAAyB,CAAC,EAAE,sBAAsB,CAAC;CAC7D;AAED,2CAA2C;AAC3C,MAAM,MAAM,qBAAqB,GAAG,MAAM,oBAAoB,CAAC;AA8B/D;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACvC,UAAU,SAAS,UAAU,GAAG,UAAU,EACzC,OAAO,GAAE,mBAAwB,GAAG,YAAY,CAAC,UAAU,CAAC,CAoG7D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,SAAS,UAAU,GAAG,UAAU,EAC1E,GAAG,EAAE,mBAAmB,CAAC,UAAU,CAAC,GAClC,aAAa,GAAG,SAAS,CAG3B;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,UAAU,SAAS,UAAU,GAAG,UAAU,EAC3E,GAAG,EAAE,mBAAmB,CAAC,UAAU,CAAC,EACpC,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,YAAY,CAAC,CAmGvB;AAoKD,wBAAgB,oBAAoB,CACnC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,IAAI,CACZ,mBAAmB,EACnB,wBAAwB,GAAG,mBAAmB,GAAG,aAAa,CAC9D,GACC,IAAI,CAyCN"}
package/dist/plugin.d.ts CHANGED
@@ -4,8 +4,56 @@ import type { AssetManagerOptions } from "./types/options.js";
4
4
  import type { AssetRegistry, UploadResult } from "./types/types.js";
5
5
  import { createAssetReference } from "./utils/asset-reference.js";
6
6
  export { createAssetReference };
7
+ /** Event name emitted after an asset upload has been validated and registered. */
8
+ export declare const ASSET_MANAGER_UPLOADED_EVENT: "asset-manager:uploaded";
9
+ /** Event name emitted when upload validation or adapter execution fails. */
10
+ export declare const ASSET_MANAGER_ERROR_EVENT: "asset-manager:error";
11
+ /** Payload emitted with {@link ASSET_MANAGER_UPLOADED_EVENT}. */
12
+ export interface AssetManagerUploadedEvent {
13
+ readonly asset: UploadResult;
14
+ readonly reference: string;
15
+ }
16
+ /** Payload emitted with {@link ASSET_MANAGER_ERROR_EVENT}. */
17
+ export interface AssetManagerErrorEvent {
18
+ readonly code: string;
19
+ readonly message: string;
20
+ }
21
+ /**
22
+ * Event payload map for asset-manager runtime notifications. Hosts can use this
23
+ * to type their event-bus wrappers around `asset-manager:uploaded` and
24
+ * `asset-manager:error`.
25
+ */
26
+ export interface AssetManagerEventMap {
27
+ readonly [ASSET_MANAGER_UPLOADED_EVENT]: AssetManagerUploadedEvent;
28
+ readonly [ASSET_MANAGER_ERROR_EVENT]: AssetManagerErrorEvent;
29
+ }
30
+ /** Supported asset-manager event names. */
31
+ export type AssetManagerEventName = keyof AssetManagerEventMap;
32
+ /**
33
+ * Create the Anvilkit Studio asset-manager plugin.
34
+ *
35
+ * The returned plugin registers localization messages, a header upload action,
36
+ * an IR asset resolver, and a Studio asset source. With no options it provides
37
+ * an in-memory uploader/library; production hosts typically provide an
38
+ * `uploader` and optionally a folder-aware `dataSource` or external providers.
39
+ */
7
40
  export declare function createAssetManagerPlugin<UserConfig extends PuckConfig = PuckConfig>(options?: AssetManagerOptions): StudioPlugin<UserConfig>;
41
+ /**
42
+ * Return the runtime registry associated with an initialized plugin context.
43
+ *
44
+ * The registry is available after the plugin `onInit` hook has run and is
45
+ * removed during `onDestroy`; callers should handle `undefined` in setup,
46
+ * teardown, and tests that inspect lifecycle boundaries.
47
+ */
8
48
  export declare function getAssetRegistry<UserConfig extends PuckConfig = PuckConfig>(ctx: StudioPluginContext<UserConfig>): AssetRegistry | undefined;
49
+ /**
50
+ * Validate and upload a single file through the configured plugin runtime.
51
+ *
52
+ * The pipeline enforces selected-file constraints, calls the resolved upload
53
+ * adapter, validates the adapter's `UploadResult`, derives lightweight tags,
54
+ * registers the asset, dispatches an `asset://` reference into page data, and
55
+ * emits typed asset-manager events.
56
+ */
9
57
  export declare function uploadAsset<UserConfig extends PuckConfig = PuckConfig>(ctx: StudioPluginContext<UserConfig>, file: File, signal?: AbortSignal): Promise<UploadResult>;
10
- export declare function validateSelectedFile(file: File, options: Pick<AssetManagerOptions, "acceptedMimeTypes" | "maxFileSize">): void;
58
+ export declare function validateSelectedFile(file: File, options: Pick<AssetManagerOptions, "acceptedFileExtensions" | "acceptedMimeTypes" | "maxFileSize">): void;
11
59
  //# sourceMappingURL=plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEX,YAAY,EACZ,mBAAmB,EAEnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAU7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAEX,aAAa,EAEb,YAAY,EACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAWlE,OAAO,EAAE,oBAAoB,EAAE,CAAC;AA6BhC,wBAAgB,wBAAwB,CACvC,UAAU,SAAS,UAAU,GAAG,UAAU,EACzC,OAAO,GAAE,mBAAwB,GAAG,YAAY,CAAC,UAAU,CAAC,CA4F7D;AAED,wBAAgB,gBAAgB,CAAC,UAAU,SAAS,UAAU,GAAG,UAAU,EAC1E,GAAG,EAAE,mBAAmB,CAAC,UAAU,CAAC,GAClC,aAAa,GAAG,SAAS,CAG3B;AAED,wBAAsB,WAAW,CAAC,UAAU,SAAS,UAAU,GAAG,UAAU,EAC3E,GAAG,EAAE,mBAAmB,CAAC,UAAU,CAAC,EACpC,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,YAAY,CAAC,CAwDvB;AAED,wBAAgB,oBAAoB,CACnC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,aAAa,CAAC,GACrE,IAAI,CAmBN"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEX,YAAY,EACZ,mBAAmB,EAEnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAU7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAGX,aAAa,EAEb,YAAY,EACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAWlE,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC,kFAAkF;AAClF,eAAO,MAAM,4BAA4B,EAAG,wBAAiC,CAAC;AAE9E,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAG,qBAA8B,CAAC;AAExE,iEAAiE;AACjE,MAAM,WAAW,yBAAyB;IACzC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC3B;AAED,8DAA8D;AAC9D,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,CAAC,4BAA4B,CAAC,EAAE,yBAAyB,CAAC;IACnE,QAAQ,CAAC,CAAC,yBAAyB,CAAC,EAAE,sBAAsB,CAAC;CAC7D;AAED,2CAA2C;AAC3C,MAAM,MAAM,qBAAqB,GAAG,MAAM,oBAAoB,CAAC;AA8B/D;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACvC,UAAU,SAAS,UAAU,GAAG,UAAU,EACzC,OAAO,GAAE,mBAAwB,GAAG,YAAY,CAAC,UAAU,CAAC,CAoG7D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,SAAS,UAAU,GAAG,UAAU,EAC1E,GAAG,EAAE,mBAAmB,CAAC,UAAU,CAAC,GAClC,aAAa,GAAG,SAAS,CAG3B;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,UAAU,SAAS,UAAU,GAAG,UAAU,EAC3E,GAAG,EAAE,mBAAmB,CAAC,UAAU,CAAC,EACpC,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,YAAY,CAAC,CAmGvB;AAoKD,wBAAgB,oBAAoB,CACnC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,IAAI,CACZ,mBAAmB,EACnB,wBAAwB,GAAG,mBAAmB,GAAG,aAAa,CAC9D,GACC,IAAI,CAyCN"}