@shapio/cms 0.4.1 → 0.5.1

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 (270) hide show
  1. package/dist/admin/assets/{AssetTile-CoNClUYS.js → AssetTile-B8ftUG4s.js} +2 -2
  2. package/dist/admin/assets/{AssetTile-CoNClUYS.js.map → AssetTile-B8ftUG4s.js.map} +1 -1
  3. package/dist/admin/assets/{AssistError-BoejyShH.js → AssistError-BidlzaBY.js} +2 -2
  4. package/dist/admin/assets/{AssistError-BoejyShH.js.map → AssistError-BidlzaBY.js.map} +1 -1
  5. package/dist/admin/assets/{BlockMenuItems-B2Jugisa.js → BlockMenuItems-DfNBHqVM.js} +2 -2
  6. package/dist/admin/assets/{BlockMenuItems-B2Jugisa.js.map → BlockMenuItems-DfNBHqVM.js.map} +1 -1
  7. package/dist/admin/assets/{Body-D3GwLGaB.js → Body-C0oQSX6L.js} +2 -2
  8. package/dist/admin/assets/{Body-D3GwLGaB.js.map → Body-C0oQSX6L.js.map} +1 -1
  9. package/dist/admin/assets/{Builder-CmT5-8hI.js → Builder-Z_hcyzNW.js} +2 -2
  10. package/dist/admin/assets/{Builder-CmT5-8hI.js.map → Builder-Z_hcyzNW.js.map} +1 -1
  11. package/dist/admin/assets/{ConfirmDialog-HS8Gc2t3.js → ConfirmDialog-DVN-n-tE.js} +2 -2
  12. package/dist/admin/assets/{ConfirmDialog-HS8Gc2t3.js.map → ConfirmDialog-DVN-n-tE.js.map} +1 -1
  13. package/dist/admin/assets/{CopyButton-DS-bAA23.js → CopyButton--tHegXQr.js} +2 -2
  14. package/dist/admin/assets/{CopyButton-DS-bAA23.js.map → CopyButton--tHegXQr.js.map} +1 -1
  15. package/dist/admin/assets/{CursorPager-C6PyD3wE.js → CursorPager-Cb94mITn.js} +2 -2
  16. package/dist/admin/assets/{CursorPager-C6PyD3wE.js.map → CursorPager-Cb94mITn.js.map} +1 -1
  17. package/dist/admin/assets/{ExternalLink-KdO72pTj.js → ExternalLink-M1cb1n2n.js} +2 -2
  18. package/dist/admin/assets/{ExternalLink-KdO72pTj.js.map → ExternalLink-M1cb1n2n.js.map} +1 -1
  19. package/dist/admin/assets/{FocalPoint-C62fRhmM.js → FocalPoint-pTq17ngi.js} +2 -2
  20. package/dist/admin/assets/{FocalPoint-C62fRhmM.js.map → FocalPoint-pTq17ngi.js.map} +1 -1
  21. package/dist/admin/assets/{Form-CLEr5Csd.js → Form-4zah109J.js} +2 -2
  22. package/dist/admin/assets/{Form-CLEr5Csd.js.map → Form-4zah109J.js.map} +1 -1
  23. package/dist/admin/assets/FormCheckboxGroup-DAeuGKAU.js +2 -0
  24. package/dist/admin/assets/FormCheckboxGroup-DAeuGKAU.js.map +1 -0
  25. package/dist/admin/assets/{FormRadioGroup-BjE1Jhar.js → FormRadioGroup--xx08rw6.js} +2 -2
  26. package/dist/admin/assets/{FormRadioGroup-BjE1Jhar.js.map → FormRadioGroup--xx08rw6.js.map} +1 -1
  27. package/dist/admin/assets/{FormSelectField-g4zrUlhv.js → FormSelectField-DNOCQKqc.js} +2 -2
  28. package/dist/admin/assets/{FormSelectField-g4zrUlhv.js.map → FormSelectField-DNOCQKqc.js.map} +1 -1
  29. package/dist/admin/assets/{FormSwitchField-gciThNGV.js → FormSwitchField-BECl-pzH.js} +2 -2
  30. package/dist/admin/assets/{FormSwitchField-gciThNGV.js.map → FormSwitchField-BECl-pzH.js.map} +1 -1
  31. package/dist/admin/assets/{FormTextareaField-tsS-UXym.js → FormTextareaField-DmRuKDJ_.js} +2 -2
  32. package/dist/admin/assets/{FormTextareaField-tsS-UXym.js.map → FormTextareaField-DmRuKDJ_.js.map} +1 -1
  33. package/dist/admin/assets/{HintedLabel-CVe-PIyv.js → HintedLabel-DIEBvftx.js} +2 -2
  34. package/dist/admin/assets/{HintedLabel-CVe-PIyv.js.map → HintedLabel-DIEBvftx.js.map} +1 -1
  35. package/dist/admin/assets/{InfoHint-DtaHU1Cg.js → InfoHint-BdAadb9U.js} +2 -2
  36. package/dist/admin/assets/{InfoHint-DtaHU1Cg.js.map → InfoHint-BdAadb9U.js.map} +1 -1
  37. package/dist/admin/assets/{InsertMenuItem-DlzaD9zr.js → InsertMenuItem-oh0NJrhB.js} +2 -2
  38. package/dist/admin/assets/{InsertMenuItem-DlzaD9zr.js.map → InsertMenuItem-oh0NJrhB.js.map} +1 -1
  39. package/dist/admin/assets/{LinkTabs-stM3j4aH.js → LinkTabs-EBgHX4Uh.js} +2 -2
  40. package/dist/admin/assets/{LinkTabs-stM3j4aH.js.map → LinkTabs-EBgHX4Uh.js.map} +1 -1
  41. package/dist/admin/assets/{Match-ErAxnNAY.js → Match-CvpSNEfi.js} +2 -2
  42. package/dist/admin/assets/{Match-ErAxnNAY.js.map → Match-CvpSNEfi.js.map} +1 -1
  43. package/dist/admin/assets/{Panel-ClY9b33D.js → Panel-BV1BpNCn.js} +2 -2
  44. package/dist/admin/assets/{Panel-ClY9b33D.js.map → Panel-BV1BpNCn.js.map} +1 -1
  45. package/dist/admin/assets/{QueryView-C630REML.js → QueryView-Bbw1eiV2.js} +2 -2
  46. package/dist/admin/assets/{QueryView-C630REML.js.map → QueryView-Bbw1eiV2.js.map} +1 -1
  47. package/dist/admin/assets/{RadioTile-CD4mel7U.js → RadioTile-CSYW-8gL.js} +2 -2
  48. package/dist/admin/assets/{RadioTile-CD4mel7U.js.map → RadioTile-CSYW-8gL.js.map} +1 -1
  49. package/dist/admin/assets/{RichTextField-CxeVX6C-.js → RichTextField-BDb67rCi.js} +2 -2
  50. package/dist/admin/assets/{RichTextField-CxeVX6C-.js.map → RichTextField-BDb67rCi.js.map} +1 -1
  51. package/dist/admin/assets/{RowTitle-B-7RptyN.js → RowTitle-Cted2GP8.js} +2 -2
  52. package/dist/admin/assets/{RowTitle-B-7RptyN.js.map → RowTitle-Cted2GP8.js.map} +1 -1
  53. package/dist/admin/assets/SecretReveal-Ccaul96d.js +2 -0
  54. package/dist/admin/assets/SecretReveal-Ccaul96d.js.map +1 -0
  55. package/dist/admin/assets/{SharedGlyph-97RaO6Bh.js → SharedGlyph-BrLi3Hug.js} +2 -2
  56. package/dist/admin/assets/{SharedGlyph-97RaO6Bh.js.map → SharedGlyph-BrLi3Hug.js.map} +1 -1
  57. package/dist/admin/assets/{StepList--0Fiqsq-.js → StepList-BLvElvPV.js} +2 -2
  58. package/dist/admin/assets/{StepList--0Fiqsq-.js.map → StepList-BLvElvPV.js.map} +1 -1
  59. package/dist/admin/assets/Structure-CRNAuVY7.js +2 -0
  60. package/dist/admin/assets/{Structure-CoO3iah3.js.map → Structure-CRNAuVY7.js.map} +1 -1
  61. package/dist/admin/assets/{SubNavLink-YjjaDN40.js → SubNavLink-biGV5ozd.js} +2 -2
  62. package/dist/admin/assets/{SubNavLink-YjjaDN40.js.map → SubNavLink-biGV5ozd.js.map} +1 -1
  63. package/dist/admin/assets/{SuggestAltButton-Dlyxoypu.js → SuggestAltButton-CrFiRWGr.js} +2 -2
  64. package/dist/admin/assets/{SuggestAltButton-Dlyxoypu.js.map → SuggestAltButton-CrFiRWGr.js.map} +1 -1
  65. package/dist/admin/assets/{TextLink-DIqr5zkJ.js → TextLink-BPLbXw2n.js} +2 -2
  66. package/dist/admin/assets/{TextLink-DIqr5zkJ.js.map → TextLink-BPLbXw2n.js.map} +1 -1
  67. package/dist/admin/assets/{Thumbnail-BUYOr4XJ.js → Thumbnail-B_TWlgEz.js} +2 -2
  68. package/dist/admin/assets/{Thumbnail-BUYOr4XJ.js.map → Thumbnail-B_TWlgEz.js.map} +1 -1
  69. package/dist/admin/assets/{UnsavedChangesGuard-BfzHgUkF.js → UnsavedChangesGuard-CrzR2boF.js} +2 -2
  70. package/dist/admin/assets/{UnsavedChangesGuard-BfzHgUkF.js.map → UnsavedChangesGuard-CrzR2boF.js.map} +1 -1
  71. package/dist/admin/assets/{UserAvatar-DNOWhSWS.js → UserAvatar-W-S3st7E.js} +2 -2
  72. package/dist/admin/assets/{UserAvatar-DNOWhSWS.js.map → UserAvatar-W-S3st7E.js.map} +1 -1
  73. package/dist/admin/assets/{auth-YVfK3SxF.js → auth-cXFFyABE.js} +2 -2
  74. package/dist/admin/assets/{auth-YVfK3SxF.js.map → auth-cXFFyABE.js.map} +1 -1
  75. package/dist/admin/assets/{badge-lJ4Ih_Zn.js → badge-DrPwivGk.js} +2 -2
  76. package/dist/admin/assets/{badge-lJ4Ih_Zn.js.map → badge-DrPwivGk.js.map} +1 -1
  77. package/dist/admin/assets/{boxes-DRvd25_u.js → boxes-CKJ6P9VA.js} +2 -2
  78. package/dist/admin/assets/{boxes-DRvd25_u.js.map → boxes-CKJ6P9VA.js.map} +1 -1
  79. package/dist/admin/assets/{calendar-clock-VENf4s1R.js → calendar-clock-DPyjti63.js} +2 -2
  80. package/dist/admin/assets/{calendar-clock-VENf4s1R.js.map → calendar-clock-DPyjti63.js.map} +1 -1
  81. package/dist/admin/assets/{changeSets-JmSyu3tu.js → changeSets-DYGm5j1A.js} +2 -2
  82. package/dist/admin/assets/{changeSets-JmSyu3tu.js.map → changeSets-DYGm5j1A.js.map} +1 -1
  83. package/dist/admin/assets/chevron-left-DIp5sJuv.js +2 -0
  84. package/dist/admin/assets/{chevron-left-D2DnQyeV.js.map → chevron-left-DIp5sJuv.js.map} +1 -1
  85. package/dist/admin/assets/{circle-check-jmRQz1Jq.js → circle-check-VXPKg4cE.js} +2 -2
  86. package/dist/admin/assets/{circle-check-jmRQz1Jq.js.map → circle-check-VXPKg4cE.js.map} +1 -1
  87. package/dist/admin/assets/{clock-DrSTMGjp.js → clock-DNhupIko.js} +2 -2
  88. package/dist/admin/assets/{clock-DrSTMGjp.js.map → clock-DNhupIko.js.map} +1 -1
  89. package/dist/admin/assets/cn-CEPUgFbZ.js +2 -0
  90. package/dist/admin/assets/cn-CEPUgFbZ.js.map +1 -0
  91. package/dist/admin/assets/coerce-BxuBjZdf.js +2 -0
  92. package/dist/admin/assets/{coerce-B4MJTGg1.js.map → coerce-BxuBjZdf.js.map} +1 -1
  93. package/dist/admin/assets/{constants-ahk0YSYl.js → constants-B9cNrCXV.js} +2 -2
  94. package/dist/admin/assets/{constants-ahk0YSYl.js.map → constants-B9cNrCXV.js.map} +1 -1
  95. package/dist/admin/assets/{content-DcvNzKGe.js → content-DjyCdi4c.js} +3 -3
  96. package/dist/admin/assets/{content-DcvNzKGe.js.map → content-DjyCdi4c.js.map} +1 -1
  97. package/dist/admin/assets/{contentCounts-DzIvdeXR.js → contentCounts-CX15iYcR.js} +2 -2
  98. package/dist/admin/assets/{contentCounts-DzIvdeXR.js.map → contentCounts-CX15iYcR.js.map} +1 -1
  99. package/dist/admin/assets/{contentTypes-YAd-AzOF.js → contentTypes-FgyxLhlk.js} +2 -2
  100. package/dist/admin/assets/{contentTypes-YAd-AzOF.js.map → contentTypes-FgyxLhlk.js.map} +1 -1
  101. package/dist/admin/assets/{context-4Jl20mYc.js → context-FqJXjS5k.js} +2 -2
  102. package/dist/admin/assets/{context-4Jl20mYc.js.map → context-FqJXjS5k.js.map} +1 -1
  103. package/dist/admin/assets/{copy-t6kAFw-O.js → copy-CoHbtS-Y.js} +2 -2
  104. package/dist/admin/assets/{copy-t6kAFw-O.js.map → copy-CoHbtS-Y.js.map} +1 -1
  105. package/dist/admin/assets/{dateTimeLocal-IDUOKulz.js → dateTimeLocal-BxmDLO_H.js} +2 -2
  106. package/dist/admin/assets/{dateTimeLocal-IDUOKulz.js.map → dateTimeLocal-BxmDLO_H.js.map} +1 -1
  107. package/dist/admin/assets/{develop-DYwiTd6R.js → develop-gx8WeWv4.js} +2 -2
  108. package/dist/admin/assets/{develop-DYwiTd6R.js.map → develop-gx8WeWv4.js.map} +1 -1
  109. package/dist/admin/assets/{dropdown-menu-DiYSm-g3.js → dropdown-menu-BG1rctRQ.js} +2 -2
  110. package/dist/admin/assets/{dropdown-menu-DiYSm-g3.js.map → dropdown-menu-BG1rctRQ.js.map} +1 -1
  111. package/dist/admin/assets/{ellipsis-DEHUaCkn.js → ellipsis-DHfP1Ah2.js} +2 -2
  112. package/dist/admin/assets/{ellipsis-DEHUaCkn.js.map → ellipsis-DHfP1Ah2.js.map} +1 -1
  113. package/dist/admin/assets/{external-link-B8UFREQ_.js → external-link-itxcNtaX.js} +2 -2
  114. package/dist/admin/assets/{external-link-B8UFREQ_.js.map → external-link-itxcNtaX.js.map} +1 -1
  115. package/dist/admin/assets/{fileRoute-CVQpW8cj.js → fileRoute-BZ0pGGsh.js} +2 -2
  116. package/dist/admin/assets/{fileRoute-CVQpW8cj.js.map → fileRoute-BZ0pGGsh.js.map} +1 -1
  117. package/dist/admin/assets/{folder-plus-iDg1hhew.js → folder-plus-BgsfY_6i.js} +2 -2
  118. package/dist/admin/assets/{folder-plus-iDg1hhew.js.map → folder-plus-BgsfY_6i.js.map} +1 -1
  119. package/dist/admin/assets/{followPlural-BdqfEe48.js → followPlural-BqjqhHmz.js} +2 -2
  120. package/dist/admin/assets/{followPlural-BdqfEe48.js.map → followPlural-BqjqhHmz.js.map} +1 -1
  121. package/dist/admin/assets/{globe-TooNSp9V.js → globe-RjXj4P-A.js} +2 -2
  122. package/dist/admin/assets/{globe-TooNSp9V.js.map → globe-RjXj4P-A.js.map} +1 -1
  123. package/dist/admin/assets/{image-CXZXXH58.js → image-4itB4TLl.js} +2 -2
  124. package/dist/admin/assets/{image-CXZXXH58.js.map → image-4itB4TLl.js.map} +1 -1
  125. package/dist/admin/assets/{image-off-cxva5G-Y.js → image-off-CokIymyg.js} +2 -2
  126. package/dist/admin/assets/{image-off-cxva5G-Y.js.map → image-off-CokIymyg.js.map} +1 -1
  127. package/dist/admin/assets/{inbox-CnzNfqt9.js → inbox-8AAyyM0T.js} +2 -2
  128. package/dist/admin/assets/{inbox-CnzNfqt9.js.map → inbox-8AAyyM0T.js.map} +1 -1
  129. package/dist/admin/assets/{inbox-B8c9Kj_z.js → inbox-97pzmuus.js} +2 -2
  130. package/dist/admin/assets/{inbox-B8c9Kj_z.js.map → inbox-97pzmuus.js.map} +1 -1
  131. package/dist/admin/assets/{index-D9KL7arJ.js → index-cpiZvLck.js} +4 -4
  132. package/dist/admin/assets/{index-D9KL7arJ.js.map → index-cpiZvLck.js.map} +1 -1
  133. package/dist/admin/assets/{key-round-CFJ61iCd.js → key-round-Dc4_SOi-.js} +2 -2
  134. package/dist/admin/assets/{key-round-CFJ61iCd.js.map → key-round-Dc4_SOi-.js.map} +1 -1
  135. package/dist/admin/assets/{languages-eh7U4anI.js → languages-DR2K97A5.js} +2 -2
  136. package/dist/admin/assets/{languages-eh7U4anI.js.map → languages-DR2K97A5.js.map} +1 -1
  137. package/dist/admin/assets/{layers-mGfmMsKE.js → layers-ZPmcbieN.js} +2 -2
  138. package/dist/admin/assets/{layers-mGfmMsKE.js.map → layers-ZPmcbieN.js.map} +1 -1
  139. package/dist/admin/assets/{link-2-off-DbZzRN_w.js → link-2-off-D_5_hkT7.js} +2 -2
  140. package/dist/admin/assets/{link-2-off-DbZzRN_w.js.map → link-2-off-D_5_hkT7.js.map} +1 -1
  141. package/dist/admin/assets/{link-b2pFaN-A.js → link-BnDFFyvi.js} +2 -2
  142. package/dist/admin/assets/{link-b2pFaN-A.js.map → link-BnDFFyvi.js.map} +1 -1
  143. package/dist/admin/assets/{locales-oBD0q1pN.js → locales-D-21t-l-.js} +2 -2
  144. package/dist/admin/assets/{locales-oBD0q1pN.js.map → locales-D-21t-l-.js.map} +1 -1
  145. package/dist/admin/assets/{media-5ks_0Rre.js → media-D7aimjyy.js} +2 -2
  146. package/dist/admin/assets/{media-5ks_0Rre.js.map → media-D7aimjyy.js.map} +1 -1
  147. package/dist/admin/assets/{media-Cs9LCQcz.js → media-Db0cHYNY.js} +2 -2
  148. package/dist/admin/assets/{media-Cs9LCQcz.js.map → media-Db0cHYNY.js.map} +1 -1
  149. package/dist/admin/assets/network-l_oLT5fa.js +2 -0
  150. package/dist/admin/assets/network-l_oLT5fa.js.map +1 -0
  151. package/dist/admin/assets/{pencil-C7eD5mlZ.js → pencil-Cn8c_gtv.js} +2 -2
  152. package/dist/admin/assets/{pencil-C7eD5mlZ.js.map → pencil-Cn8c_gtv.js.map} +1 -1
  153. package/dist/admin/assets/{plus-BDZHQBlU.js → plus-yxvf4aAT.js} +2 -2
  154. package/dist/admin/assets/{plus-BDZHQBlU.js.map → plus-yxvf4aAT.js.map} +1 -1
  155. package/dist/admin/assets/{preload-helper-CJNJ4S3k.js → preload-helper-pwSesV5P.js} +2 -2
  156. package/dist/admin/assets/{preload-helper-CJNJ4S3k.js.map → preload-helper-pwSesV5P.js.map} +1 -1
  157. package/dist/admin/assets/{publishing-C4YQ4XKt.js → publishing-PQLCOnvu.js} +2 -2
  158. package/dist/admin/assets/{publishing-C4YQ4XKt.js.map → publishing-PQLCOnvu.js.map} +1 -1
  159. package/dist/admin/assets/{radio-group-zOsGAYRP.js → radio-group-Fc2ENIMO.js} +2 -2
  160. package/dist/admin/assets/{radio-group-zOsGAYRP.js.map → radio-group-Fc2ENIMO.js.map} +1 -1
  161. package/dist/admin/assets/{rotate-ccw-DCWwb4Ga.js → rotate-ccw-BHa0BHug.js} +2 -2
  162. package/dist/admin/assets/{rotate-ccw-DCWwb4Ga.js.map → rotate-ccw-BHa0BHug.js.map} +1 -1
  163. package/dist/admin/assets/{schedules-DXrBSypK.js → schedules-B8y_GnqX.js} +2 -2
  164. package/dist/admin/assets/{schedules-DXrBSypK.js.map → schedules-B8y_GnqX.js.map} +1 -1
  165. package/dist/admin/assets/{schema-B7L9OJrX.js → schema-BJHcYshf.js} +2 -2
  166. package/dist/admin/assets/{schema-B7L9OJrX.js.map → schema-BJHcYshf.js.map} +1 -1
  167. package/dist/admin/assets/{scroll-text-BLThe4Ki.js → scroll-text-BHLmZpBB.js} +2 -2
  168. package/dist/admin/assets/{scroll-text-BLThe4Ki.js.map → scroll-text-BHLmZpBB.js.map} +1 -1
  169. package/dist/admin/assets/{search-CcJQqtRw.js → search-D3GGSaSL.js} +2 -2
  170. package/dist/admin/assets/{search-CcJQqtRw.js.map → search-D3GGSaSL.js.map} +1 -1
  171. package/dist/admin/assets/{searchSchemas-BCRZ1jyL.js → searchSchemas-C4dnYI9a.js} +2 -2
  172. package/dist/admin/assets/{searchSchemas-BCRZ1jyL.js.map → searchSchemas-C4dnYI9a.js.map} +1 -1
  173. package/dist/admin/assets/{sections-v5Flaor9.js → sections-BWoTaw2B.js} +2 -2
  174. package/dist/admin/assets/{sections-v5Flaor9.js.map → sections-BWoTaw2B.js.map} +1 -1
  175. package/dist/admin/assets/{sections-TIN_Nl1b.js → sections-eeTU636D.js} +2 -2
  176. package/dist/admin/assets/{sections-TIN_Nl1b.js.map → sections-eeTU636D.js.map} +1 -1
  177. package/dist/admin/assets/{select-CpHp3YOH.js → select-BMi4G1Ib.js} +2 -2
  178. package/dist/admin/assets/{select-CpHp3YOH.js.map → select-BMi4G1Ib.js.map} +1 -1
  179. package/dist/admin/assets/{send-CbP0Rc9_.js → send-Bqhmg9HP.js} +2 -2
  180. package/dist/admin/assets/{send-CbP0Rc9_.js.map → send-Bqhmg9HP.js.map} +1 -1
  181. package/dist/admin/assets/{seo-1n9s7YuX.js → seo-BL9C7Yt3.js} +2 -2
  182. package/dist/admin/assets/{seo-1n9s7YuX.js.map → seo-BL9C7Yt3.js.map} +1 -1
  183. package/dist/admin/assets/settings-D-nW3wQb.js +2 -0
  184. package/dist/admin/assets/settings-D-nW3wQb.js.map +1 -0
  185. package/dist/admin/assets/skeleton-BPLAzyDo.js +42 -0
  186. package/dist/admin/assets/skeleton-BPLAzyDo.js.map +1 -0
  187. package/dist/admin/assets/{snapshots-DkyyrWX3.js → snapshots-COSUeZBP.js} +2 -2
  188. package/dist/admin/assets/{snapshots-DkyyrWX3.js.map → snapshots-COSUeZBP.js.map} +1 -1
  189. package/dist/admin/assets/{sparkles-D88gf3vX.js → sparkles-CykwtKTd.js} +2 -2
  190. package/dist/admin/assets/{sparkles-D88gf3vX.js.map → sparkles-CykwtKTd.js.map} +1 -1
  191. package/dist/admin/assets/{stableId-DlNKh3HM.js → stableId-DfJkQUV3.js} +2 -2
  192. package/dist/admin/assets/{stableId-DlNKh3HM.js.map → stableId-DfJkQUV3.js.map} +1 -1
  193. package/dist/admin/assets/{store-jUWyOXDG.js → store-GOGeP63I.js} +2 -2
  194. package/dist/admin/assets/{store-jUWyOXDG.js.map → store-GOGeP63I.js.map} +1 -1
  195. package/dist/admin/assets/{switch-CijNGYkG.js → switch-XRU_EOoM.js} +2 -2
  196. package/dist/admin/assets/{switch-CijNGYkG.js.map → switch-XRU_EOoM.js.map} +1 -1
  197. package/dist/admin/assets/{table-DQ5ILlSh.js → table-CLVW6uJB.js} +2 -2
  198. package/dist/admin/assets/{table-DQ5ILlSh.js.map → table-CLVW6uJB.js.map} +1 -1
  199. package/dist/admin/assets/{tabs-CSqGW9Du.js → tabs-DB42Xljn.js} +3 -3
  200. package/dist/admin/assets/{tabs-CSqGW9Du.js.map → tabs-DB42Xljn.js.map} +1 -1
  201. package/dist/admin/assets/{textarea-FwSvwmyT.js → textarea-DcsLGCkq.js} +2 -2
  202. package/dist/admin/assets/{textarea-FwSvwmyT.js.map → textarea-DcsLGCkq.js.map} +1 -1
  203. package/dist/admin/assets/{theme-CHHVK8Ps.js → theme-CnSar6tt.js} +2 -2
  204. package/dist/admin/assets/{theme-CHHVK8Ps.js.map → theme-CnSar6tt.js.map} +1 -1
  205. package/dist/admin/assets/{titles-CQYc9nDQ.js → titles-DluirfBO.js} +2 -2
  206. package/dist/admin/assets/{titles-CQYc9nDQ.js.map → titles-DluirfBO.js.map} +1 -1
  207. package/dist/admin/assets/{tokens-C-20gLAT.js → tokens-CQooB8Sf.js} +2 -2
  208. package/dist/admin/assets/{tokens-C-20gLAT.js.map → tokens-CQooB8Sf.js.map} +1 -1
  209. package/dist/admin/assets/{tooltip-BXqFQv9N.js → tooltip-xfZn0Fla.js} +2 -2
  210. package/dist/admin/assets/{tooltip-BXqFQv9N.js.map → tooltip-xfZn0Fla.js.map} +1 -1
  211. package/dist/admin/assets/{undo-2-CLy2zklL.js → undo-2-B_QjuGmR.js} +2 -2
  212. package/dist/admin/assets/{undo-2-CLy2zklL.js.map → undo-2-B_QjuGmR.js.map} +1 -1
  213. package/dist/admin/assets/{useAuditLabels-BJF7M5RY.js → useAuditLabels-BZPAj3wG.js} +2 -2
  214. package/dist/admin/assets/{useAuditLabels-BJF7M5RY.js.map → useAuditLabels-BZPAj3wG.js.map} +1 -1
  215. package/dist/admin/assets/{useConfirmTarget-BUvlrGSW.js → useConfirmTarget-B7iLg66j.js} +2 -2
  216. package/dist/admin/assets/{useConfirmTarget-BUvlrGSW.js.map → useConfirmTarget-B7iLg66j.js.map} +1 -1
  217. package/dist/admin/assets/{useContentSchema-Cvtes34f.js → useContentSchema-BTyBYURX.js} +2 -2
  218. package/dist/admin/assets/{useContentSchema-Cvtes34f.js.map → useContentSchema-BTyBYURX.js.map} +1 -1
  219. package/dist/admin/assets/{useCursorPager-CzB6NDOB.js → useCursorPager-CTGOzl69.js} +2 -2
  220. package/dist/admin/assets/{useCursorPager-CzB6NDOB.js.map → useCursorPager-CTGOzl69.js.map} +1 -1
  221. package/dist/admin/assets/{useDiscardGuard-BAEGkGK9.js → useDiscardGuard-CSkPw8iq.js} +2 -2
  222. package/dist/admin/assets/{useDiscardGuard-BAEGkGK9.js.map → useDiscardGuard-CSkPw8iq.js.map} +1 -1
  223. package/dist/admin/assets/{useMediaPickerDialog-CiN_pias.js → useMediaPickerDialog-W0jhN-hi.js} +2 -2
  224. package/dist/admin/assets/{useMediaPickerDialog-CiN_pias.js.map → useMediaPickerDialog-W0jhN-hi.js.map} +1 -1
  225. package/dist/admin/assets/{useMediaUploader-CapEHBIt.js → useMediaUploader-BC5zCkQt.js} +2 -2
  226. package/dist/admin/assets/{useMediaUploader-CapEHBIt.js.map → useMediaUploader-BC5zCkQt.js.map} +1 -1
  227. package/dist/admin/assets/{usePaletteItems-wpn3ms6o.js → usePaletteItems-CqcKndUT.js} +2 -2
  228. package/dist/admin/assets/{usePaletteItems-wpn3ms6o.js.map → usePaletteItems-CqcKndUT.js.map} +1 -1
  229. package/dist/admin/assets/{usePlaces-6iTN15Xy.js → usePlaces-o4Os5Nbv.js} +2 -2
  230. package/dist/admin/assets/{usePlaces-6iTN15Xy.js.map → usePlaces-o4Os5Nbv.js.map} +1 -1
  231. package/dist/admin/assets/{useQueries-CYfcxI0Q.js → useQueries-BTnSD0k5.js} +2 -2
  232. package/dist/admin/assets/{useQueries-CYfcxI0Q.js.map → useQueries-BTnSD0k5.js.map} +1 -1
  233. package/dist/admin/assets/{useResolvedScheme-i1EwGHuF.js → useResolvedScheme-SoI-2Faf.js} +2 -2
  234. package/dist/admin/assets/{useResolvedScheme-i1EwGHuF.js.map → useResolvedScheme-SoI-2Faf.js.map} +1 -1
  235. package/dist/admin/assets/{useSchemaScopeAccess-WQKmj8_3.js → useSchemaScopeAccess-B4-31q7m.js} +2 -2
  236. package/dist/admin/assets/{useSchemaScopeAccess-WQKmj8_3.js.map → useSchemaScopeAccess-B4-31q7m.js.map} +1 -1
  237. package/dist/admin/assets/{users-BgTNDPXx.js → users-BVuapb3u.js} +2 -2
  238. package/dist/admin/assets/{users-BgTNDPXx.js.map → users-BVuapb3u.js.map} +1 -1
  239. package/dist/admin/assets/{users-B01EH47o.js → users-Oj5V5za_.js} +2 -2
  240. package/dist/admin/assets/{users-B01EH47o.js.map → users-Oj5V5za_.js.map} +1 -1
  241. package/dist/admin/assets/{zod-79xzBIrW.js → zod-cTJwCa4E.js} +2 -2
  242. package/dist/admin/assets/{zod-79xzBIrW.js.map → zod-cTJwCa4E.js.map} +1 -1
  243. package/dist/admin/index.html +55 -55
  244. package/dist/cli.js +128 -21
  245. package/dist/cli.js.map +1 -1
  246. package/dist/config.d.ts +1 -1
  247. package/dist/index.d.ts +1 -1
  248. package/dist/index.js +1 -1
  249. package/dist/{public-CTK82y3t.d.ts → public-C027OJX6.d.ts} +13 -2
  250. package/dist/s3Adapter-BipoQiwQ.js +125 -0
  251. package/dist/s3Adapter-BipoQiwQ.js.map +1 -0
  252. package/dist/{worker-BDYDbaea.js → worker-BU-V4qbH.js} +555 -411
  253. package/dist/worker-BU-V4qbH.js.map +1 -0
  254. package/package.json +8 -5
  255. package/dist/admin/assets/FormCheckboxGroup-BrXY6qBg.js +0 -2
  256. package/dist/admin/assets/FormCheckboxGroup-BrXY6qBg.js.map +0 -1
  257. package/dist/admin/assets/SecretReveal-Dhw_dYxe.js +0 -2
  258. package/dist/admin/assets/SecretReveal-Dhw_dYxe.js.map +0 -1
  259. package/dist/admin/assets/Structure-CoO3iah3.js +0 -2
  260. package/dist/admin/assets/chevron-left-D2DnQyeV.js +0 -2
  261. package/dist/admin/assets/cn-CL1YHRrS.js +0 -2
  262. package/dist/admin/assets/cn-CL1YHRrS.js.map +0 -1
  263. package/dist/admin/assets/coerce-B4MJTGg1.js +0 -2
  264. package/dist/admin/assets/network-DS8MW3AZ.js +0 -2
  265. package/dist/admin/assets/network-DS8MW3AZ.js.map +0 -1
  266. package/dist/admin/assets/settings-CuEO5l07.js +0 -2
  267. package/dist/admin/assets/settings-CuEO5l07.js.map +0 -1
  268. package/dist/admin/assets/skeleton-DElTumgk.js +0 -42
  269. package/dist/admin/assets/skeleton-DElTumgk.js.map +0 -1
  270. package/dist/worker-BDYDbaea.js.map +0 -1
package/dist/config.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { A as ServiceFactoryContext, C as HookEvent, D as MediaUsage, E as MediaReferenceService, F as defineConfig, I as isHookError, M as ShapioServices, N as ThemeDefinition, O as ModelHooks, P as ThemeTokens, S as HookError, T as JobHandlerContext, _ as ExtensionRoute, a as BeforeHookContext, b as ExtensionSite, c as ContentReadOptions, d as EXTENSION_CONTRACT_VERSION, f as EnqueueOptions, g as ExtensionJobService, h as ExtensionJobHandler, i as BeforeHook, j as ShapioConfig, k as ServiceFactory, l as ContentReadService, m as ExtensionHostConfig, n as AfterHookContext, o as BeforeHookEvent, p as EntryData, r as AfterHookEvent, s as ContentReadEntry, t as AfterHook, u as CustomServices, v as ExtensionRouteOptions, w as HookModel, x as HookEntry, y as ExtensionServices } from "./public-CTK82y3t.js";
1
+ import { A as ServiceFactoryContext, C as HookEvent, D as MediaUsage, E as MediaReferenceService, F as defineConfig, I as isHookError, M as ShapioServices, N as ThemeDefinition, O as ModelHooks, P as ThemeTokens, S as HookError, T as JobHandlerContext, _ as ExtensionRoute, a as BeforeHookContext, b as ExtensionSite, c as ContentReadOptions, d as EXTENSION_CONTRACT_VERSION, f as EnqueueOptions, g as ExtensionJobService, h as ExtensionJobHandler, i as BeforeHook, j as ShapioConfig, k as ServiceFactory, l as ContentReadService, m as ExtensionHostConfig, n as AfterHookContext, o as BeforeHookEvent, p as EntryData, r as AfterHookEvent, s as ContentReadEntry, t as AfterHook, u as CustomServices, v as ExtensionRouteOptions, w as HookModel, x as HookEntry, y as ExtensionServices } from "./public-C027OJX6.js";
2
2
  export { AfterHook, AfterHookContext, AfterHookEvent, BeforeHook, BeforeHookContext, BeforeHookEvent, ContentReadEntry, ContentReadOptions, ContentReadService, CustomServices, EXTENSION_CONTRACT_VERSION, EnqueueOptions, EntryData, ExtensionHostConfig, ExtensionJobHandler, ExtensionJobService, ExtensionRoute, ExtensionRouteOptions, ExtensionServices, ExtensionSite, HookEntry, HookError, HookEvent, HookModel, JobHandlerContext, MediaReferenceService, MediaUsage, ModelHooks, ServiceFactory, ServiceFactoryContext, ShapioConfig, ShapioServices, ThemeDefinition, ThemeTokens, defineConfig, isHookError };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { A as ServiceFactoryContext, B as Principal, C as HookEvent, D as MediaUsage, E as MediaReferenceService, F as defineConfig, G as ComponentDefinition, H as DB, I as isHookError, J as ModelDefinition, K as DataType, L as KnownVersions, M as ShapioServices, N as ThemeDefinition, O as ModelHooks, P as ThemeTokens, R as PermissionEvaluator, S as HookError, T as JobHandlerContext, U as OutboxEvents, V as Database, W as ContentData, Y as SchemaChange, _ as ExtensionRoute, a as BeforeHookContext, b as ExtensionSite, c as ContentReadOptions, d as EXTENSION_CONTRACT_VERSION, f as EnqueueOptions, g as ExtensionJobService, h as ExtensionJobHandler, i as BeforeHook, j as ShapioConfig, k as ServiceFactory, l as ContentReadService, m as ExtensionHostConfig, n as AfterHookContext, o as BeforeHookEvent, p as EntryData, q as JsonValue, r as AfterHookEvent, s as ContentReadEntry, t as AfterHook, u as CustomServices, v as ExtensionRouteOptions, w as HookModel, x as HookEntry, y as ExtensionServices, z as PermissionExecutor } from "./public-CTK82y3t.js";
1
+ import { A as ServiceFactoryContext, B as Principal, C as HookEvent, D as MediaUsage, E as MediaReferenceService, F as defineConfig, G as ComponentDefinition, H as DB, I as isHookError, J as ModelDefinition, K as DataType, L as KnownVersions, M as ShapioServices, N as ThemeDefinition, O as ModelHooks, P as ThemeTokens, R as PermissionEvaluator, S as HookError, T as JobHandlerContext, U as OutboxEvents, V as Database, W as ContentData, Y as SchemaChange, _ as ExtensionRoute, a as BeforeHookContext, b as ExtensionSite, c as ContentReadOptions, d as EXTENSION_CONTRACT_VERSION, f as EnqueueOptions, g as ExtensionJobService, h as ExtensionJobHandler, i as BeforeHook, j as ShapioConfig, k as ServiceFactory, l as ContentReadService, m as ExtensionHostConfig, n as AfterHookContext, o as BeforeHookEvent, p as EntryData, q as JsonValue, r as AfterHookEvent, s as ContentReadEntry, t as AfterHook, u as CustomServices, v as ExtensionRouteOptions, w as HookModel, x as HookEntry, y as ExtensionServices, z as PermissionExecutor } from "./public-C027OJX6.js";
2
2
  import { FastifyBaseLogger, FastifyInstance } from "fastify";
3
3
  import { Kysely, Selectable, Transaction } from "kysely";
4
4
  import { Static, Type } from "typebox";
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- import { a as loadConfig, n as startServer, s as buildApp, t as startDedicatedWorker, u as SHAPIO_VERSION } from "./worker-BDYDbaea.js";
1
+ import { a as loadConfig, f as SHAPIO_VERSION, n as startServer, s as buildApp, t as startDedicatedWorker } from "./worker-BU-V4qbH.js";
2
2
  import { EXTENSION_CONTRACT_VERSION, HookError, defineConfig, isHookError } from "./config.js";
3
3
  export { EXTENSION_CONTRACT_VERSION, HookError, SHAPIO_VERSION, buildApp, defineConfig, isHookError, loadConfig, startDedicatedWorker, startServer };
@@ -906,6 +906,7 @@ interface SystemSettings {
906
906
  interface SystemVersions {
907
907
  id: Generated<boolean>;
908
908
  permissions_version: Generated<number>;
909
+ release: string | null;
909
910
  schema_version: Generated<number>;
910
911
  updated_at: Generated<Timestamp>;
911
912
  }
@@ -1091,6 +1092,16 @@ type SystemPrincipal = {
1091
1092
  type Principal = AdminPrincipal | AppUserPrincipal | TokenPrincipal | AnonymousPrincipal | SystemPrincipal;
1092
1093
  declare const CONTENT_ACTIONS: readonly ["read", "create", "update", "delete", "publish", "schemaManage"];
1093
1094
  type ContentAction = (typeof CONTENT_ACTIONS)[number];
1095
+ /**
1096
+ * What a delivery role may grant (plan drafts-mode §1): `read`, and `readDrafts`, which lets a delivery token
1097
+ * read draft heads (`?publicationState=draft`, GraphQL `publicationState: DRAFT`) on top of `read`. A
1098
+ * `readDrafts` grant always covers every model (no model, condition or field list), so one check per request
1099
+ * covers relation targets too. Admin and app roles never hold it; admin principals read drafts without it.
1100
+ */
1101
+ declare const DELIVERY_ACTIONS: readonly ["read", "readDrafts"];
1102
+ type DeliveryAction = (typeof DELIVERY_ACTIONS)[number];
1103
+ /** Any action evaluated per model: content actions, and `readDrafts`. */
1104
+ type ModelAction = ContentAction | DeliveryAction;
1094
1105
  declare const GLOBAL_ACTIONS: readonly ["schema.create", "users.manage", "roles.manage", "audit.read", "sites.manage", "tokens.manage", "media.read", "media.write", "media.manage", "publishing.manage", "webhooks.manage", "deployments.manage", "deployments.trigger", "changes.manage", "changes.ship", "site.settings"];
1095
1106
  type GlobalAction = (typeof GLOBAL_ACTIONS)[number];
1096
1107
  /** Field visibility by stable field ID. `all` means every field the schema exposes to this principal kind. */
@@ -1119,7 +1130,7 @@ type Policy = {
1119
1130
  writeMask: FieldMask;
1120
1131
  };
1121
1132
  type PolicyRequest = {
1122
- action: ContentAction;
1133
+ action: ModelAction;
1123
1134
  modelId: string;
1124
1135
  };
1125
1136
  /**
@@ -1445,4 +1456,4 @@ declare class HookError extends Error {
1445
1456
  declare const isHookError: (error: unknown) => error is HookError;
1446
1457
  //#endregion
1447
1458
  export { ServiceFactoryContext as A, Principal as B, HookEvent as C, MediaUsage as D, MediaReferenceService as E, defineConfig as F, ComponentDefinition as G, DB as H, isHookError as I, ModelDefinition as J, DataType as K, KnownVersions as L, ShapioServices as M, ThemeDefinition as N, ModelHooks as O, ThemeTokens as P, PermissionEvaluator as R, HookError as S, JobHandlerContext as T, OutboxEvents as U, Database as V, ContentData as W, SchemaChange as Y, ExtensionRoute as _, BeforeHookContext as a, ExtensionSite as b, ContentReadOptions as c, EXTENSION_CONTRACT_VERSION as d, EnqueueOptions as f, ExtensionJobService as g, ExtensionJobHandler as h, BeforeHook as i, ShapioConfig as j, ServiceFactory as k, ContentReadService as l, ExtensionHostConfig as m, AfterHookContext as n, BeforeHookEvent as o, EntryData as p, JsonValue$1 as q, AfterHookEvent as r, ContentReadEntry as s, AfterHook as t, CustomServices as u, ExtensionRouteOptions as v, HookModel as w, HookEntry as x, ExtensionServices as y, PermissionExecutor as z };
1448
- //# sourceMappingURL=public-CTK82y3t.d.ts.map
1459
+ //# sourceMappingURL=public-C027OJX6.d.ts.map
@@ -0,0 +1,125 @@
1
+ import { M as isValidStorageKey, c as bucketContentDisposition, h as ObjectNotFoundError, j as encodeKeyPath, l as contentDisposition, m as InvalidStorageKeyError } from "./worker-BU-V4qbH.js";
2
+ import { DeleteObjectCommand, GetObjectCommand, HeadObjectCommand, PutObjectCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
3
+ import { createPresignedPost } from "@aws-sdk/s3-presigned-post";
4
+ import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
5
+ //#region src/media/s3Adapter.ts
6
+ /** R2 accepts any region name ("auto" by convention); AWS needs the bucket's real region. */
7
+ const DEFAULT_REGION = "us-east-1";
8
+ const isNotFound = (error) => error instanceof S3ServiceException && (error.$metadata.httpStatusCode === 404 || error.name === "NotFound" || error.name === "NoSuchKey");
9
+ const createS3Client = (config) => new S3Client({
10
+ region: config.region ?? DEFAULT_REGION,
11
+ ...config.endpoint ? { endpoint: config.endpoint } : {},
12
+ forcePathStyle: config.forcePathStyle,
13
+ ...config.accessKeyId && config.secretAccessKey ? { credentials: {
14
+ accessKeyId: config.accessKeyId,
15
+ secretAccessKey: config.secretAccessKey
16
+ } } : {},
17
+ requestChecksumCalculation: "WHEN_REQUIRED",
18
+ responseChecksumValidation: "WHEN_REQUIRED"
19
+ });
20
+ /**
21
+ * Any S3-compatible service (AWS S3, Cloudflare R2, B2, Spaces, Wasabi, versitygw). Private objects are read
22
+ * through presigned GET URLs; browsers upload straight to the bucket with a presigned POST whose policy
23
+ * limits size and content type, so Shapio never streams upload bytes.
24
+ */
25
+ const createS3Adapter = ({ config, publicBaseUrl, client }) => {
26
+ const s3 = client ?? createS3Client(config);
27
+ const Bucket = config.bucket;
28
+ const checkKey = (key) => {
29
+ if (!isValidStorageKey(key)) throw new InvalidStorageKeyError(key);
30
+ return key;
31
+ };
32
+ const head = async (key) => {
33
+ try {
34
+ const result = await s3.send(new HeadObjectCommand({
35
+ Bucket,
36
+ Key: checkKey(key)
37
+ }));
38
+ return {
39
+ size: result.ContentLength ?? 0,
40
+ contentType: result.ContentType
41
+ };
42
+ } catch (error) {
43
+ if (isNotFound(error)) return;
44
+ throw error;
45
+ }
46
+ };
47
+ return {
48
+ driver: "s3",
49
+ put: async (key, body, { contentType, contentLength }) => {
50
+ await s3.send(new PutObjectCommand({
51
+ Bucket,
52
+ Key: checkKey(key),
53
+ Body: body,
54
+ ContentType: contentType,
55
+ ContentLength: Buffer.isBuffer(body) ? body.length : contentLength,
56
+ ContentDisposition: bucketContentDisposition(contentType)
57
+ }));
58
+ },
59
+ getStream: async (key, range) => {
60
+ try {
61
+ const result = await s3.send(new GetObjectCommand({
62
+ Bucket,
63
+ Key: checkKey(key),
64
+ ...range ? { Range: `bytes=${range.start}-${range.end}` } : {}
65
+ }));
66
+ if (!result.Body) throw new ObjectNotFoundError(key);
67
+ return result.Body;
68
+ } catch (error) {
69
+ throw isNotFound(error) ? new ObjectNotFoundError(key, { cause: error }) : error;
70
+ }
71
+ },
72
+ head,
73
+ exists: async (key) => await head(key) !== void 0,
74
+ delete: async (key) => {
75
+ await s3.send(new DeleteObjectCommand({
76
+ Bucket,
77
+ Key: checkKey(key)
78
+ }));
79
+ },
80
+ signedGetUrl: async (key, { expiresInSeconds, filename, contentType }) => getSignedUrl(s3, new GetObjectCommand({
81
+ Bucket,
82
+ Key: checkKey(key),
83
+ ResponseContentType: contentType,
84
+ ResponseContentDisposition: contentDisposition(filename)
85
+ }), { expiresIn: expiresInSeconds }),
86
+ publicUrl: (key) => publicBaseUrl ? `${publicBaseUrl}/${encodeKeyPath(checkKey(key))}` : void 0,
87
+ presignedUpload: async ({ key, contentType, maxSizeBytes, expiresInSeconds }) => {
88
+ const disposition = bucketContentDisposition(contentType);
89
+ const { url, fields } = await createPresignedPost(s3, {
90
+ Bucket,
91
+ Key: checkKey(key),
92
+ Conditions: [
93
+ [
94
+ "content-length-range",
95
+ 1,
96
+ maxSizeBytes
97
+ ],
98
+ [
99
+ "eq",
100
+ "$Content-Type",
101
+ contentType
102
+ ],
103
+ ...disposition ? [[
104
+ "eq",
105
+ "$Content-Disposition",
106
+ disposition
107
+ ]] : []
108
+ ],
109
+ Fields: {
110
+ "Content-Type": contentType,
111
+ ...disposition ? { "Content-Disposition": disposition } : {}
112
+ },
113
+ Expires: expiresInSeconds
114
+ });
115
+ return {
116
+ url,
117
+ fields
118
+ };
119
+ }
120
+ };
121
+ };
122
+ //#endregion
123
+ export { createS3Adapter };
124
+
125
+ //# sourceMappingURL=s3Adapter-BipoQiwQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3Adapter-BipoQiwQ.js","names":[],"sources":["../src/media/s3Adapter.ts"],"sourcesContent":["import type { Readable } from 'node:stream';\nimport {\n DeleteObjectCommand,\n GetObjectCommand,\n HeadObjectCommand,\n PutObjectCommand,\n S3Client,\n S3ServiceException,\n} from '@aws-sdk/client-s3';\nimport { createPresignedPost } from '@aws-sdk/s3-presigned-post';\nimport { getSignedUrl } from '@aws-sdk/s3-request-presigner';\nimport type { S3StorageConfig } from '../config/index.js';\nimport { bucketContentDisposition, contentDisposition } from './contentDisposition.js';\nimport { InvalidStorageKeyError, ObjectNotFoundError } from './errors.js';\nimport { encodeKeyPath, isValidStorageKey } from './keys.js';\nimport type { StorageAdapter } from './types.js';\n\n/** R2 accepts any region name (\"auto\" by convention); AWS needs the bucket's real region. */\nconst DEFAULT_REGION = 'us-east-1';\n\nconst isNotFound = (error: unknown): boolean =>\n error instanceof S3ServiceException &&\n (error.$metadata.httpStatusCode === 404 || error.name === 'NotFound' || error.name === 'NoSuchKey');\n\nexport const createS3Client = (config: S3StorageConfig): S3Client =>\n new S3Client({\n region: config.region ?? DEFAULT_REGION,\n ...(config.endpoint ? { endpoint: config.endpoint } : {}),\n forcePathStyle: config.forcePathStyle,\n ...(config.accessKeyId && config.secretAccessKey\n ? { credentials: { accessKeyId: config.accessKeyId, secretAccessKey: config.secretAccessKey } }\n : {}),\n // Only send/validate checksums when an operation requires them: several S3-compatible services\n // (R2, B2 and other gateways) reject the SDK's default streaming CRC32 trailers.\n requestChecksumCalculation: 'WHEN_REQUIRED',\n responseChecksumValidation: 'WHEN_REQUIRED',\n });\n\nexport type S3AdapterOptions = {\n config: S3StorageConfig;\n publicBaseUrl: string | undefined;\n /** Injected in tests; created from `config` otherwise. */\n client?: S3Client;\n};\n\n/**\n * Any S3-compatible service (AWS S3, Cloudflare R2, B2, Spaces, Wasabi, versitygw). Private objects are read\n * through presigned GET URLs; browsers upload straight to the bucket with a presigned POST whose policy\n * limits size and content type, so Shapio never streams upload bytes.\n */\nexport const createS3Adapter = ({ config, publicBaseUrl, client }: S3AdapterOptions): StorageAdapter => {\n const s3 = client ?? createS3Client(config);\n const Bucket = config.bucket;\n const checkKey = (key: string) => {\n if (!isValidStorageKey(key)) {\n throw new InvalidStorageKeyError(key);\n }\n return key;\n };\n\n const head = async (key: string) => {\n try {\n const result = await s3.send(new HeadObjectCommand({ Bucket, Key: checkKey(key) }));\n return { size: result.ContentLength ?? 0, contentType: result.ContentType };\n } catch (error) {\n if (isNotFound(error)) {\n return undefined;\n }\n throw error;\n }\n };\n\n return {\n driver: 's3',\n put: async (key, body, { contentType, contentLength }) => {\n await s3.send(\n new PutObjectCommand({\n Bucket,\n Key: checkKey(key),\n Body: body,\n ContentType: contentType,\n ContentLength: Buffer.isBuffer(body) ? body.length : contentLength,\n ContentDisposition: bucketContentDisposition(contentType),\n }),\n );\n },\n getStream: async (key, range) => {\n try {\n const result = await s3.send(\n new GetObjectCommand({\n Bucket,\n Key: checkKey(key),\n ...(range ? { Range: `bytes=${range.start}-${range.end}` } : {}),\n }),\n );\n if (!result.Body) {\n throw new ObjectNotFoundError(key);\n }\n return result.Body as Readable;\n } catch (error) {\n throw isNotFound(error) ? new ObjectNotFoundError(key, { cause: error }) : error;\n }\n },\n head,\n exists: async (key) => (await head(key)) !== undefined,\n delete: async (key) => {\n await s3.send(new DeleteObjectCommand({ Bucket, Key: checkKey(key) }));\n },\n signedGetUrl: async (key, { expiresInSeconds, filename, contentType }) =>\n getSignedUrl(\n s3,\n new GetObjectCommand({\n Bucket,\n Key: checkKey(key),\n ResponseContentType: contentType,\n ResponseContentDisposition: contentDisposition(filename),\n }),\n { expiresIn: expiresInSeconds },\n ),\n publicUrl: (key) => (publicBaseUrl ? `${publicBaseUrl}/${encodeKeyPath(checkKey(key))}` : undefined),\n presignedUpload: async ({ key, contentType, maxSizeBytes, expiresInSeconds }) => {\n const disposition = bucketContentDisposition(contentType);\n const { url, fields } = await createPresignedPost(s3, {\n Bucket,\n Key: checkKey(key),\n Conditions: [\n ['content-length-range', 1, maxSizeBytes],\n ['eq', '$Content-Type', contentType],\n ...(disposition ? [['eq', '$Content-Disposition', disposition] as ['eq', string, string]] : []),\n ],\n Fields: {\n 'Content-Type': contentType,\n ...(disposition ? { 'Content-Disposition': disposition } : {}),\n },\n Expires: expiresInSeconds,\n });\n return { url, fields };\n },\n };\n};\n"],"mappings":"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"}