@makeswift/runtime 0.24.0-canary.0 → 0.24.0

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 (484) hide show
  1. package/dist/cjs/api/react.js +28 -7
  2. package/dist/cjs/api/react.js.map +1 -1
  3. package/dist/cjs/api/site-version.js +36 -0
  4. package/dist/cjs/api/site-version.js.map +1 -0
  5. package/dist/cjs/components/builtin/Box/register.js +3 -3
  6. package/dist/cjs/components/builtin/Box/register.js.map +1 -1
  7. package/dist/cjs/components/builtin/Button/register.js +2 -2
  8. package/dist/cjs/components/builtin/Button/register.js.map +1 -1
  9. package/dist/cjs/components/builtin/Carousel/Carousel.js +6 -5
  10. package/dist/cjs/components/builtin/Carousel/Carousel.js.map +1 -1
  11. package/dist/cjs/components/builtin/Carousel/register.js +2 -2
  12. package/dist/cjs/components/builtin/Carousel/register.js.map +1 -1
  13. package/dist/cjs/components/builtin/Countdown/register.js +2 -2
  14. package/dist/cjs/components/builtin/Countdown/register.js.map +1 -1
  15. package/dist/cjs/components/builtin/Form/register.js +4 -4
  16. package/dist/cjs/components/builtin/Form/register.js.map +1 -1
  17. package/dist/cjs/components/builtin/Image/Image.js +3 -3
  18. package/dist/cjs/components/builtin/Image/Image.js.map +1 -1
  19. package/dist/cjs/components/builtin/Navigation/register.js +4 -4
  20. package/dist/cjs/components/builtin/Navigation/register.js.map +1 -1
  21. package/dist/cjs/components/builtin/SocialLinks/register.js +3 -3
  22. package/dist/cjs/components/builtin/SocialLinks/register.js.map +1 -1
  23. package/dist/cjs/components/builtin/Text/register.js +3 -3
  24. package/dist/cjs/components/builtin/Text/register.js.map +1 -1
  25. package/dist/cjs/components/hooks/useMediaQuery.js +5 -5
  26. package/dist/cjs/components/hooks/useMediaQuery.js.map +1 -1
  27. package/dist/cjs/components/page/Page.js +7 -4
  28. package/dist/cjs/components/page/Page.js.map +1 -1
  29. package/dist/cjs/components/page/PageHead.js +17 -8
  30. package/dist/cjs/components/page/PageHead.js.map +1 -1
  31. package/dist/cjs/components/page/page-seo-settings.js +43 -0
  32. package/dist/cjs/components/page/page-seo-settings.js.map +1 -0
  33. package/dist/cjs/components/shared/Link/index.js +3 -1
  34. package/dist/cjs/components/shared/Link/index.js.map +1 -1
  35. package/dist/cjs/components/utils/responsive-style.js +2 -3
  36. package/dist/cjs/components/utils/responsive-style.js.map +1 -1
  37. package/dist/cjs/core/index.js +18 -2
  38. package/dist/cjs/core/index.js.map +1 -1
  39. package/dist/cjs/jest-setup.js +3 -0
  40. package/dist/cjs/jest-setup.js.map +1 -1
  41. package/dist/cjs/locale.js +79 -0
  42. package/dist/cjs/locale.js.map +1 -1
  43. package/dist/cjs/next/api-handler/handlers/clear-draft.js +64 -0
  44. package/dist/cjs/next/api-handler/handlers/clear-draft.js.map +1 -0
  45. package/dist/cjs/next/api-handler/handlers/manifest.js +3 -2
  46. package/dist/cjs/next/api-handler/handlers/manifest.js.map +1 -1
  47. package/dist/cjs/next/api-handler/handlers/redirect-draft.js +77 -0
  48. package/dist/cjs/next/api-handler/handlers/redirect-draft.js.map +1 -0
  49. package/dist/cjs/next/api-handler/handlers/redirect-preview.js +67 -0
  50. package/dist/cjs/next/api-handler/handlers/redirect-preview.js.map +1 -0
  51. package/dist/cjs/next/api-handler/handlers/utils/draft.js +53 -0
  52. package/dist/cjs/next/api-handler/handlers/utils/draft.js.map +1 -0
  53. package/dist/cjs/next/api-handler/handlers/webhook/index.js +3 -3
  54. package/dist/cjs/next/api-handler/handlers/webhook/index.js.map +1 -1
  55. package/dist/cjs/next/api-handler/handlers/webhook/site-published.js +8 -5
  56. package/dist/cjs/next/api-handler/handlers/webhook/site-published.js.map +1 -1
  57. package/dist/cjs/next/api-handler/handlers/webhook/types.js.map +1 -1
  58. package/dist/cjs/next/api-handler/index.js +24 -9
  59. package/dist/cjs/next/api-handler/index.js.map +1 -1
  60. package/dist/cjs/next/cache.js +29 -0
  61. package/dist/cjs/next/cache.js.map +1 -0
  62. package/dist/cjs/next/client.js +135 -60
  63. package/dist/cjs/next/client.js.map +1 -1
  64. package/dist/cjs/next/components/page.js +3 -2
  65. package/dist/cjs/next/components/page.js.map +1 -1
  66. package/dist/cjs/next/components/tests/controls/color-control/fixtures.js +51 -0
  67. package/dist/cjs/next/components/tests/controls/color-control/fixtures.js.map +1 -0
  68. package/dist/cjs/next/components/tests/controls/page-control-prop-rendering.js +91 -35
  69. package/dist/cjs/next/components/tests/controls/page-control-prop-rendering.js.map +1 -1
  70. package/dist/cjs/next/components/tests/controls/rich-text-v2-control/fixtures.js +91 -0
  71. package/dist/cjs/next/components/tests/controls/rich-text-v2-control/fixtures.js.map +1 -0
  72. package/dist/cjs/next/components/tests/controls/style-control/fixtures.js +60 -0
  73. package/dist/cjs/next/components/tests/controls/style-control/fixtures.js.map +1 -0
  74. package/dist/cjs/next/components/tests/prop-controllers/page-prop-controller.js +20 -11
  75. package/dist/cjs/next/components/tests/prop-controllers/page-prop-controller.js.map +1 -1
  76. package/dist/cjs/next/document.js +1 -3
  77. package/dist/cjs/next/document.js.map +1 -1
  78. package/dist/cjs/next/draft-mode/index.js +3 -3
  79. package/dist/cjs/next/draft-mode/index.js.map +1 -1
  80. package/dist/cjs/next/hooks/use-is-pages-router.js.map +1 -1
  81. package/dist/cjs/next/index.js +0 -3
  82. package/dist/cjs/next/index.js.map +1 -1
  83. package/dist/cjs/next/middleware/index.js +29 -0
  84. package/dist/cjs/next/middleware/index.js.map +1 -0
  85. package/dist/cjs/next/middleware/request-utils.js +49 -0
  86. package/dist/cjs/next/middleware/request-utils.js.map +1 -0
  87. package/dist/cjs/next/preview-mode.js +4 -110
  88. package/dist/cjs/next/preview-mode.js.map +1 -1
  89. package/dist/cjs/next/root-style-registry.js +24 -20
  90. package/dist/cjs/next/root-style-registry.js.map +1 -1
  91. package/dist/cjs/next/server.js +0 -3
  92. package/dist/cjs/next/server.js.map +1 -1
  93. package/dist/cjs/next/tests/test-utils.js +61 -0
  94. package/dist/cjs/next/tests/test-utils.js.map +1 -0
  95. package/dist/cjs/runtimes/react/components/Document.js +1 -1
  96. package/dist/cjs/runtimes/react/components/Document.js.map +1 -1
  97. package/dist/cjs/runtimes/react/components/ElementData.js +1 -0
  98. package/dist/cjs/runtimes/react/components/ElementData.js.map +1 -1
  99. package/dist/cjs/runtimes/react/components/RuntimeProvider.js +14 -3
  100. package/dist/cjs/runtimes/react/components/RuntimeProvider.js.map +1 -1
  101. package/dist/cjs/runtimes/react/components/draft-switcher/draft-switcher.js +72 -0
  102. package/dist/cjs/runtimes/react/components/draft-switcher/draft-switcher.js.map +1 -0
  103. package/dist/cjs/runtimes/react/components/draft-switcher/draft-toolbar.js +79 -0
  104. package/dist/cjs/runtimes/react/components/draft-switcher/draft-toolbar.js.map +1 -0
  105. package/dist/cjs/runtimes/react/components/hooks/use-builder-connection-ping.js +67 -0
  106. package/dist/cjs/runtimes/react/components/hooks/use-builder-connection-ping.js.map +1 -0
  107. package/dist/cjs/runtimes/react/components/hooks/use-builder-handshake.js +45 -0
  108. package/dist/cjs/runtimes/react/components/hooks/use-builder-handshake.js.map +1 -0
  109. package/dist/cjs/runtimes/react/controls/rich-text-v2/EditableTextV2/usePresetValue.js +1 -1
  110. package/dist/cjs/runtimes/react/controls/rich-text-v2/EditableTextV2/usePresetValue.js.map +1 -1
  111. package/dist/cjs/runtimes/react/hooks/use-cache-data.js +2 -2
  112. package/dist/cjs/runtimes/react/hooks/use-cache-data.js.map +1 -1
  113. package/dist/cjs/runtimes/react/hooks/use-document-context.js +8 -13
  114. package/dist/cjs/runtimes/react/hooks/use-document-context.js.map +1 -1
  115. package/dist/cjs/runtimes/react/hooks/use-register-document.js +8 -1
  116. package/dist/cjs/runtimes/react/hooks/use-register-document.js.map +1 -1
  117. package/dist/cjs/runtimes/react/hooks/use-resolvable-record.js +68 -0
  118. package/dist/cjs/runtimes/react/hooks/use-resolvable-record.js.map +1 -0
  119. package/dist/cjs/runtimes/react/hooks/use-resolved-props.js +6 -5
  120. package/dist/cjs/runtimes/react/hooks/use-resolved-props.js.map +1 -1
  121. package/dist/cjs/runtimes/react/hooks/use-resolved-value.js +1 -1
  122. package/dist/cjs/runtimes/react/hooks/use-resolved-value.js.map +1 -1
  123. package/dist/cjs/runtimes/react/hooks/use-resource-resolver.js +2 -1
  124. package/dist/cjs/runtimes/react/hooks/use-resource-resolver.js.map +1 -1
  125. package/dist/cjs/runtimes/react/hooks/use-stylesheet-factory.js +1 -2
  126. package/dist/cjs/runtimes/react/hooks/use-stylesheet-factory.js.map +1 -1
  127. package/dist/cjs/runtimes/react/host-api-client.js +5 -1
  128. package/dist/cjs/runtimes/react/host-api-client.js.map +1 -1
  129. package/dist/cjs/{utils/tests/breakpoint-test-util.js → runtimes/react/testing/breakpoints.js} +4 -4
  130. package/dist/cjs/runtimes/react/testing/breakpoints.js.map +1 -0
  131. package/dist/cjs/{utils/tests/element-data-test-test.js → runtimes/react/testing/element-data.js} +33 -7
  132. package/dist/cjs/runtimes/react/testing/element-data.js.map +1 -0
  133. package/dist/cjs/runtimes/react/testing/index.js +27 -0
  134. package/dist/cjs/runtimes/react/testing/index.js.map +1 -0
  135. package/dist/cjs/runtimes/react/testing/react-provider.js +38 -0
  136. package/dist/cjs/runtimes/react/testing/react-provider.js.map +1 -0
  137. package/dist/cjs/runtimes/react/use-style.js +2 -2
  138. package/dist/cjs/runtimes/react/use-style.js.map +1 -1
  139. package/dist/cjs/slate/BlockPlugin/setBlockKeyForDevice.js +1 -2
  140. package/dist/cjs/slate/BlockPlugin/setBlockKeyForDevice.js.map +1 -1
  141. package/dist/cjs/slate/TypographyPlugin/setActiveTypographyStyle.js +2 -2
  142. package/dist/cjs/slate/TypographyPlugin/setActiveTypographyStyle.js.map +1 -1
  143. package/dist/cjs/slate/selectors.js +2 -3
  144. package/dist/cjs/slate/selectors.js.map +1 -1
  145. package/dist/cjs/state/makeswift-api-client.js +23 -12
  146. package/dist/cjs/state/makeswift-api-client.js.map +1 -1
  147. package/dist/cjs/state/modules/breakpoints.js +1 -44
  148. package/dist/cjs/state/modules/breakpoints.js.map +1 -1
  149. package/dist/cjs/state/modules/element-trees.js +10 -7
  150. package/dist/cjs/state/modules/element-trees.js.map +1 -1
  151. package/dist/esm/api/react.js +28 -7
  152. package/dist/esm/api/react.js.map +1 -1
  153. package/dist/esm/api/site-version.js +10 -0
  154. package/dist/esm/api/site-version.js.map +1 -0
  155. package/dist/esm/components/builtin/Box/register.js +1 -1
  156. package/dist/esm/components/builtin/Box/register.js.map +1 -1
  157. package/dist/esm/components/builtin/Button/register.js +1 -1
  158. package/dist/esm/components/builtin/Button/register.js.map +1 -1
  159. package/dist/esm/components/builtin/Carousel/Carousel.js +5 -4
  160. package/dist/esm/components/builtin/Carousel/Carousel.js.map +1 -1
  161. package/dist/esm/components/builtin/Carousel/register.js +1 -1
  162. package/dist/esm/components/builtin/Carousel/register.js.map +1 -1
  163. package/dist/esm/components/builtin/Countdown/register.js +1 -1
  164. package/dist/esm/components/builtin/Countdown/register.js.map +1 -1
  165. package/dist/esm/components/builtin/Form/register.js +1 -1
  166. package/dist/esm/components/builtin/Form/register.js.map +1 -1
  167. package/dist/esm/components/builtin/Image/Image.js +1 -1
  168. package/dist/esm/components/builtin/Image/Image.js.map +1 -1
  169. package/dist/esm/components/builtin/Navigation/register.js +1 -1
  170. package/dist/esm/components/builtin/Navigation/register.js.map +1 -1
  171. package/dist/esm/components/builtin/SocialLinks/register.js +1 -1
  172. package/dist/esm/components/builtin/SocialLinks/register.js.map +1 -1
  173. package/dist/esm/components/builtin/Text/register.js +1 -1
  174. package/dist/esm/components/builtin/Text/register.js.map +1 -1
  175. package/dist/esm/components/hooks/useMediaQuery.js +1 -1
  176. package/dist/esm/components/hooks/useMediaQuery.js.map +1 -1
  177. package/dist/esm/components/page/Page.js +5 -2
  178. package/dist/esm/components/page/Page.js.map +1 -1
  179. package/dist/esm/components/page/PageHead.js +17 -8
  180. package/dist/esm/components/page/PageHead.js.map +1 -1
  181. package/dist/esm/components/page/page-seo-settings.js +19 -0
  182. package/dist/esm/components/page/page-seo-settings.js.map +1 -0
  183. package/dist/esm/components/shared/Link/index.js +3 -1
  184. package/dist/esm/components/shared/Link/index.js.map +1 -1
  185. package/dist/esm/components/utils/responsive-style.js +3 -2
  186. package/dist/esm/components/utils/responsive-style.js.map +1 -1
  187. package/dist/esm/core/index.js +18 -2
  188. package/dist/esm/core/index.js.map +1 -1
  189. package/dist/esm/jest-setup.js +4 -1
  190. package/dist/esm/jest-setup.js.map +1 -1
  191. package/dist/esm/locale.js +79 -0
  192. package/dist/esm/locale.js.map +1 -1
  193. package/dist/esm/next/api-handler/handlers/clear-draft.js +50 -0
  194. package/dist/esm/next/api-handler/handlers/clear-draft.js.map +1 -0
  195. package/dist/esm/next/api-handler/handlers/manifest.js +3 -2
  196. package/dist/esm/next/api-handler/handlers/manifest.js.map +1 -1
  197. package/dist/esm/next/api-handler/handlers/redirect-draft.js +63 -0
  198. package/dist/esm/next/api-handler/handlers/redirect-draft.js.map +1 -0
  199. package/dist/esm/next/api-handler/handlers/redirect-preview.js +53 -0
  200. package/dist/esm/next/api-handler/handlers/redirect-preview.js.map +1 -0
  201. package/dist/esm/next/api-handler/handlers/utils/draft.js +24 -0
  202. package/dist/esm/next/api-handler/handlers/utils/draft.js.map +1 -0
  203. package/dist/esm/next/api-handler/handlers/webhook/index.js +3 -3
  204. package/dist/esm/next/api-handler/handlers/webhook/index.js.map +1 -1
  205. package/dist/esm/next/api-handler/handlers/webhook/site-published.js +7 -3
  206. package/dist/esm/next/api-handler/handlers/webhook/site-published.js.map +1 -1
  207. package/dist/esm/next/api-handler/handlers/webhook/types.js.map +1 -1
  208. package/dist/esm/next/api-handler/index.js +28 -9
  209. package/dist/esm/next/api-handler/index.js.map +1 -1
  210. package/dist/esm/next/cache.js +5 -0
  211. package/dist/esm/next/cache.js.map +1 -0
  212. package/dist/esm/next/client.js +128 -54
  213. package/dist/esm/next/client.js.map +1 -1
  214. package/dist/esm/next/components/page.js +3 -2
  215. package/dist/esm/next/components/page.js.map +1 -1
  216. package/dist/esm/next/components/tests/controls/color-control/fixtures.js +24 -0
  217. package/dist/esm/next/components/tests/controls/color-control/fixtures.js.map +1 -0
  218. package/dist/esm/next/components/tests/controls/page-control-prop-rendering.js +82 -39
  219. package/dist/esm/next/components/tests/controls/page-control-prop-rendering.js.map +1 -1
  220. package/dist/esm/next/components/tests/controls/rich-text-v2-control/fixtures.js +56 -0
  221. package/dist/esm/next/components/tests/controls/rich-text-v2-control/fixtures.js.map +1 -0
  222. package/dist/esm/next/components/tests/controls/style-control/fixtures.js +35 -0
  223. package/dist/esm/next/components/tests/controls/style-control/fixtures.js.map +1 -0
  224. package/dist/esm/next/components/tests/prop-controllers/page-prop-controller.js +7 -11
  225. package/dist/esm/next/components/tests/prop-controllers/page-prop-controller.js.map +1 -1
  226. package/dist/esm/next/document.js +1 -3
  227. package/dist/esm/next/document.js.map +1 -1
  228. package/dist/esm/next/draft-mode/index.js +1 -1
  229. package/dist/esm/next/draft-mode/index.js.map +1 -1
  230. package/dist/esm/next/hooks/use-is-pages-router.js.map +1 -1
  231. package/dist/esm/next/index.js +0 -2
  232. package/dist/esm/next/index.js.map +1 -1
  233. package/dist/esm/next/middleware/index.js +5 -0
  234. package/dist/esm/next/middleware/index.js.map +1 -0
  235. package/dist/esm/next/middleware/request-utils.js +28 -0
  236. package/dist/esm/next/middleware/request-utils.js.map +1 -0
  237. package/dist/esm/next/preview-mode.js +2 -105
  238. package/dist/esm/next/preview-mode.js.map +1 -1
  239. package/dist/esm/next/root-style-registry.js +24 -20
  240. package/dist/esm/next/root-style-registry.js.map +1 -1
  241. package/dist/esm/next/server.js +0 -2
  242. package/dist/esm/next/server.js.map +1 -1
  243. package/dist/esm/next/tests/test-utils.js +37 -0
  244. package/dist/esm/next/tests/test-utils.js.map +1 -0
  245. package/dist/esm/runtimes/react/components/Document.js +2 -2
  246. package/dist/esm/runtimes/react/components/Document.js.map +1 -1
  247. package/dist/esm/runtimes/react/components/ElementData.js +1 -0
  248. package/dist/esm/runtimes/react/components/ElementData.js.map +1 -1
  249. package/dist/esm/runtimes/react/components/RuntimeProvider.js +15 -4
  250. package/dist/esm/runtimes/react/components/RuntimeProvider.js.map +1 -1
  251. package/dist/esm/runtimes/react/components/draft-switcher/draft-switcher.js +48 -0
  252. package/dist/esm/runtimes/react/components/draft-switcher/draft-switcher.js.map +1 -0
  253. package/dist/esm/runtimes/react/components/draft-switcher/draft-toolbar.js +55 -0
  254. package/dist/esm/runtimes/react/components/draft-switcher/draft-toolbar.js.map +1 -0
  255. package/dist/esm/runtimes/react/components/hooks/use-builder-connection-ping.js +43 -0
  256. package/dist/esm/runtimes/react/components/hooks/use-builder-connection-ping.js.map +1 -0
  257. package/dist/esm/runtimes/react/components/hooks/use-builder-handshake.js +21 -0
  258. package/dist/esm/runtimes/react/components/hooks/use-builder-handshake.js.map +1 -0
  259. package/dist/esm/runtimes/react/controls/rich-text-v2/EditableTextV2/usePresetValue.js +2 -2
  260. package/dist/esm/runtimes/react/controls/rich-text-v2/EditableTextV2/usePresetValue.js.map +1 -1
  261. package/dist/esm/runtimes/react/hooks/use-cache-data.js +2 -2
  262. package/dist/esm/runtimes/react/hooks/use-cache-data.js.map +1 -1
  263. package/dist/esm/runtimes/react/hooks/use-document-context.js +6 -11
  264. package/dist/esm/runtimes/react/hooks/use-document-context.js.map +1 -1
  265. package/dist/esm/runtimes/react/hooks/use-register-document.js +9 -2
  266. package/dist/esm/runtimes/react/hooks/use-register-document.js.map +1 -1
  267. package/dist/esm/runtimes/react/hooks/use-resolvable-record.js +44 -0
  268. package/dist/esm/runtimes/react/hooks/use-resolvable-record.js.map +1 -0
  269. package/dist/esm/runtimes/react/hooks/use-resolved-props.js +6 -5
  270. package/dist/esm/runtimes/react/hooks/use-resolved-props.js.map +1 -1
  271. package/dist/esm/runtimes/react/hooks/use-resolved-value.js +1 -1
  272. package/dist/esm/runtimes/react/hooks/use-resolved-value.js.map +1 -1
  273. package/dist/esm/runtimes/react/hooks/use-resource-resolver.js +3 -2
  274. package/dist/esm/runtimes/react/hooks/use-resource-resolver.js.map +1 -1
  275. package/dist/esm/runtimes/react/hooks/use-stylesheet-factory.js +2 -2
  276. package/dist/esm/runtimes/react/hooks/use-stylesheet-factory.js.map +1 -1
  277. package/dist/esm/runtimes/react/host-api-client.js +5 -1
  278. package/dist/esm/runtimes/react/host-api-client.js.map +1 -1
  279. package/dist/esm/{utils/tests/breakpoint-test-util.js → runtimes/react/testing/breakpoints.js} +1 -1
  280. package/dist/esm/runtimes/react/testing/breakpoints.js.map +1 -0
  281. package/dist/esm/{utils/tests/element-data-test-test.js → runtimes/react/testing/element-data.js} +29 -4
  282. package/dist/esm/runtimes/react/testing/element-data.js.map +1 -0
  283. package/dist/esm/runtimes/react/testing/index.js +4 -0
  284. package/dist/esm/runtimes/react/testing/index.js.map +1 -0
  285. package/dist/esm/runtimes/react/testing/react-provider.js +14 -0
  286. package/dist/esm/runtimes/react/testing/react-provider.js.map +1 -0
  287. package/dist/esm/runtimes/react/use-style.js +2 -2
  288. package/dist/esm/runtimes/react/use-style.js.map +1 -1
  289. package/dist/esm/slate/BlockPlugin/setBlockKeyForDevice.js +4 -2
  290. package/dist/esm/slate/BlockPlugin/setBlockKeyForDevice.js.map +1 -1
  291. package/dist/esm/slate/TypographyPlugin/setActiveTypographyStyle.js +3 -1
  292. package/dist/esm/slate/TypographyPlugin/setActiveTypographyStyle.js.map +1 -1
  293. package/dist/esm/slate/selectors.js +4 -2
  294. package/dist/esm/slate/selectors.js.map +1 -1
  295. package/dist/esm/state/makeswift-api-client.js +22 -11
  296. package/dist/esm/state/makeswift-api-client.js.map +1 -1
  297. package/dist/esm/state/modules/breakpoints.js +1 -42
  298. package/dist/esm/state/modules/breakpoints.js.map +1 -1
  299. package/dist/esm/state/modules/element-trees.js +10 -7
  300. package/dist/esm/state/modules/element-trees.js.map +1 -1
  301. package/dist/types/api/react.d.ts +4 -1
  302. package/dist/types/api/react.d.ts.map +1 -1
  303. package/dist/types/api/site-version.d.ts +6 -0
  304. package/dist/types/api/site-version.d.ts.map +1 -0
  305. package/dist/types/components/builtin/Box/register.d.ts.map +1 -1
  306. package/dist/types/components/builtin/Button/register.d.ts.map +1 -1
  307. package/dist/types/components/builtin/Carousel/Carousel.d.ts.map +1 -1
  308. package/dist/types/components/builtin/Image/Image.d.ts.map +1 -1
  309. package/dist/types/components/hooks/useMediaQuery.d.ts +1 -1
  310. package/dist/types/components/hooks/useMediaQuery.d.ts.map +1 -1
  311. package/dist/types/components/page/Page.d.ts +3 -1
  312. package/dist/types/components/page/Page.d.ts.map +1 -1
  313. package/dist/types/components/page/PageHead.d.ts +3 -1
  314. package/dist/types/components/page/PageHead.d.ts.map +1 -1
  315. package/dist/types/components/page/page-seo-settings.d.ts +11 -0
  316. package/dist/types/components/page/page-seo-settings.d.ts.map +1 -0
  317. package/dist/types/components/shared/Link/index.d.ts.map +1 -1
  318. package/dist/types/components/utils/responsive-style.d.ts +1 -1
  319. package/dist/types/components/utils/responsive-style.d.ts.map +1 -1
  320. package/dist/types/controls/link.d.ts +1 -1
  321. package/dist/types/core/index.d.ts +1 -1
  322. package/dist/types/core/index.d.ts.map +1 -1
  323. package/dist/types/locale.d.ts +3 -3
  324. package/dist/types/locale.d.ts.map +1 -1
  325. package/dist/types/next/api-handler/handlers/clear-draft.d.ts +20 -0
  326. package/dist/types/next/api-handler/handlers/clear-draft.d.ts.map +1 -0
  327. package/dist/types/next/api-handler/handlers/manifest.d.ts +1 -0
  328. package/dist/types/next/api-handler/handlers/manifest.d.ts.map +1 -1
  329. package/dist/types/next/api-handler/handlers/redirect-draft.d.ts +18 -0
  330. package/dist/types/next/api-handler/handlers/redirect-draft.d.ts.map +1 -0
  331. package/dist/types/next/api-handler/handlers/redirect-preview.d.ts +18 -0
  332. package/dist/types/next/api-handler/handlers/redirect-preview.d.ts.map +1 -0
  333. package/dist/types/next/api-handler/handlers/utils/draft.d.ts +16 -0
  334. package/dist/types/next/api-handler/handlers/utils/draft.d.ts.map +1 -0
  335. package/dist/types/next/api-handler/handlers/webhook/index.d.ts +9 -11
  336. package/dist/types/next/api-handler/handlers/webhook/index.d.ts.map +1 -1
  337. package/dist/types/next/api-handler/handlers/webhook/site-published.d.ts +6 -3
  338. package/dist/types/next/api-handler/handlers/webhook/site-published.d.ts.map +1 -1
  339. package/dist/types/next/api-handler/handlers/webhook/types.d.ts +13 -12
  340. package/dist/types/next/api-handler/handlers/webhook/types.d.ts.map +1 -1
  341. package/dist/types/next/api-handler/index.d.ts +10 -5
  342. package/dist/types/next/api-handler/index.d.ts.map +1 -1
  343. package/dist/types/next/cache.d.ts +2 -0
  344. package/dist/types/next/cache.d.ts.map +1 -0
  345. package/dist/types/next/client.d.ts +14 -12
  346. package/dist/types/next/client.d.ts.map +1 -1
  347. package/dist/types/next/components/page.d.ts +21 -1
  348. package/dist/types/next/components/page.d.ts.map +1 -1
  349. package/dist/types/next/components/tests/controls/color-control/client.test.d.ts +3 -0
  350. package/dist/types/next/components/tests/controls/color-control/client.test.d.ts.map +1 -0
  351. package/dist/types/next/components/tests/controls/color-control/fixtures.d.ts +11 -0
  352. package/dist/types/next/components/tests/controls/color-control/fixtures.d.ts.map +1 -0
  353. package/dist/types/next/components/tests/controls/color-control/server.test.d.ts +2 -0
  354. package/dist/types/next/components/tests/controls/color-control/server.test.d.ts.map +1 -0
  355. package/dist/types/next/components/tests/controls/page-control-prop-rendering.d.ts +2 -3
  356. package/dist/types/next/components/tests/controls/page-control-prop-rendering.d.ts.map +1 -1
  357. package/dist/types/next/components/tests/controls/rich-text-v2-control/client.test.d.ts +2 -0
  358. package/dist/types/next/components/tests/controls/rich-text-v2-control/client.test.d.ts.map +1 -0
  359. package/dist/types/next/components/tests/controls/rich-text-v2-control/fixtures.d.ts +42 -0
  360. package/dist/types/next/components/tests/controls/rich-text-v2-control/fixtures.d.ts.map +1 -0
  361. package/dist/types/next/components/tests/controls/rich-text-v2-control/server.test.d.ts +2 -0
  362. package/dist/types/next/components/tests/controls/rich-text-v2-control/server.test.d.ts.map +1 -0
  363. package/dist/types/next/components/tests/controls/style-control/client.test.d.ts +2 -0
  364. package/dist/types/next/components/tests/controls/style-control/client.test.d.ts.map +1 -0
  365. package/dist/types/next/components/tests/controls/style-control/fixtures.d.ts +6 -0
  366. package/dist/types/next/components/tests/controls/style-control/fixtures.d.ts.map +1 -0
  367. package/dist/types/next/components/tests/controls/style-control/server.test.d.ts +2 -0
  368. package/dist/types/next/components/tests/controls/style-control/server.test.d.ts.map +1 -0
  369. package/dist/types/next/components/tests/makeswift-page-metadata-rendering.test.d.ts +3 -0
  370. package/dist/types/next/components/tests/makeswift-page-metadata-rendering.test.d.ts.map +1 -0
  371. package/dist/types/next/components/tests/prop-controllers/page-prop-controller.d.ts.map +1 -1
  372. package/dist/types/next/document.d.ts +1 -5
  373. package/dist/types/next/document.d.ts.map +1 -1
  374. package/dist/types/next/draft-mode/index.d.ts +2 -2
  375. package/dist/types/next/hooks/use-is-pages-router.d.ts.map +1 -1
  376. package/dist/types/next/index.d.ts +0 -1
  377. package/dist/types/next/index.d.ts.map +1 -1
  378. package/dist/types/next/middleware/index.d.ts +2 -0
  379. package/dist/types/next/middleware/index.d.ts.map +1 -0
  380. package/dist/types/next/middleware/request-utils.d.ts +3 -0
  381. package/dist/types/next/middleware/request-utils.d.ts.map +1 -0
  382. package/dist/types/next/middleware/request-utils.test.d.ts +2 -0
  383. package/dist/types/next/middleware/request-utils.test.d.ts.map +1 -0
  384. package/dist/types/next/preview-mode.d.ts +3 -10
  385. package/dist/types/next/preview-mode.d.ts.map +1 -1
  386. package/dist/types/next/root-style-registry.d.ts +2 -1
  387. package/dist/types/next/root-style-registry.d.ts.map +1 -1
  388. package/dist/types/next/server.d.ts +0 -1
  389. package/dist/types/next/server.d.ts.map +1 -1
  390. package/dist/types/next/tests/client.error-handling.test.d.ts +2 -0
  391. package/dist/types/next/tests/client.error-handling.test.d.ts.map +1 -0
  392. package/dist/types/next/tests/client.get-page-snapshot.test.d.ts +2 -0
  393. package/dist/types/next/tests/client.get-page-snapshot.test.d.ts.map +1 -0
  394. package/dist/types/next/tests/client.get-resources.test.d.ts +2 -0
  395. package/dist/types/next/tests/client.get-resources.test.d.ts.map +1 -0
  396. package/dist/types/next/tests/server.makeswift-api-handler.test.d.ts +2 -0
  397. package/dist/types/next/tests/server.makeswift-api-handler.test.d.ts.map +1 -0
  398. package/dist/types/next/tests/test-utils.d.ts +8 -0
  399. package/dist/types/next/tests/test-utils.d.ts.map +1 -0
  400. package/dist/types/runtimes/react/components/Document.d.ts.map +1 -1
  401. package/dist/types/runtimes/react/components/ElementData.d.ts.map +1 -1
  402. package/dist/types/runtimes/react/components/RuntimeProvider.d.ts +2 -1
  403. package/dist/types/runtimes/react/components/RuntimeProvider.d.ts.map +1 -1
  404. package/dist/types/runtimes/react/components/draft-switcher/draft-switcher.d.ts +4 -0
  405. package/dist/types/runtimes/react/components/draft-switcher/draft-switcher.d.ts.map +1 -0
  406. package/dist/types/runtimes/react/components/draft-switcher/draft-toolbar.d.ts +6 -0
  407. package/dist/types/runtimes/react/components/draft-switcher/draft-toolbar.d.ts.map +1 -0
  408. package/dist/types/runtimes/react/components/hooks/use-builder-connection-ping.d.ts +4 -0
  409. package/dist/types/runtimes/react/components/hooks/use-builder-connection-ping.d.ts.map +1 -0
  410. package/dist/types/runtimes/react/components/hooks/use-builder-handshake.d.ts +4 -0
  411. package/dist/types/runtimes/react/components/hooks/use-builder-handshake.d.ts.map +1 -0
  412. package/dist/types/runtimes/react/hooks/use-cache-data.d.ts.map +1 -1
  413. package/dist/types/runtimes/react/hooks/use-document-context.d.ts +2 -7
  414. package/dist/types/runtimes/react/hooks/use-document-context.d.ts.map +1 -1
  415. package/dist/types/runtimes/react/hooks/use-register-document.d.ts.map +1 -1
  416. package/dist/types/runtimes/react/hooks/use-resolvable-record.d.ts +3 -0
  417. package/dist/types/runtimes/react/hooks/use-resolvable-record.d.ts.map +1 -0
  418. package/dist/types/runtimes/react/hooks/use-resolved-props.d.ts.map +1 -1
  419. package/dist/types/runtimes/react/hooks/use-resource-resolver.d.ts.map +1 -1
  420. package/dist/types/runtimes/react/hooks/use-stylesheet-factory.d.ts.map +1 -1
  421. package/dist/types/runtimes/react/host-api-client.d.ts.map +1 -1
  422. package/dist/types/{utils/tests/breakpoint-test-util.d.ts → runtimes/react/testing/breakpoints.d.ts} +1 -1
  423. package/dist/types/runtimes/react/testing/breakpoints.d.ts.map +1 -0
  424. package/dist/types/{utils/tests/element-data-test-test.d.ts → runtimes/react/testing/element-data.d.ts} +7 -3
  425. package/dist/types/runtimes/react/testing/element-data.d.ts.map +1 -0
  426. package/dist/types/runtimes/react/testing/index.d.ts +4 -0
  427. package/dist/types/runtimes/react/testing/index.d.ts.map +1 -0
  428. package/dist/types/runtimes/react/testing/react-provider.d.ts +8 -0
  429. package/dist/types/runtimes/react/testing/react-provider.d.ts.map +1 -0
  430. package/dist/types/slate/BlockPlugin/setBlockKeyForDevice.d.ts +1 -1
  431. package/dist/types/slate/BlockPlugin/setBlockKeyForDevice.d.ts.map +1 -1
  432. package/dist/types/slate/TypographyPlugin/setActiveTypographyStyle.d.ts +1 -1
  433. package/dist/types/slate/TypographyPlugin/setActiveTypographyStyle.d.ts.map +1 -1
  434. package/dist/types/slate/selectors.d.ts +1 -2
  435. package/dist/types/slate/selectors.d.ts.map +1 -1
  436. package/dist/types/state/makeswift-api-client.d.ts +2 -1
  437. package/dist/types/state/makeswift-api-client.d.ts.map +1 -1
  438. package/dist/types/state/modules/__tests__/fixtures/element-trees-demo-component.d.ts +7 -0
  439. package/dist/types/state/modules/__tests__/fixtures/element-trees-demo-component.d.ts.map +1 -0
  440. package/dist/types/state/modules/__tests__/fixtures/element-trees.d.ts +239 -0
  441. package/dist/types/state/modules/__tests__/fixtures/element-trees.d.ts.map +1 -1
  442. package/dist/types/state/modules/breakpoints.d.ts +2 -7
  443. package/dist/types/state/modules/breakpoints.d.ts.map +1 -1
  444. package/dist/types/state/modules/element-trees.d.ts +1 -1
  445. package/dist/types/state/modules/element-trees.d.ts.map +1 -1
  446. package/package.json +17 -5
  447. package/dist/cjs/next/api-handler/handlers/proxy-draft-mode.js +0 -80
  448. package/dist/cjs/next/api-handler/handlers/proxy-draft-mode.js.map +0 -1
  449. package/dist/cjs/next/api-handler/handlers/proxy-preview-mode.js +0 -100
  450. package/dist/cjs/next/api-handler/handlers/proxy-preview-mode.js.map +0 -1
  451. package/dist/cjs/next/draft-mode/draft-mode-script.js +0 -137
  452. package/dist/cjs/next/draft-mode/draft-mode-script.js.map +0 -1
  453. package/dist/cjs/runtimes/react/resolvable-record.js +0 -67
  454. package/dist/cjs/runtimes/react/resolvable-record.js.map +0 -1
  455. package/dist/cjs/utils/tests/breakpoint-test-util.js.map +0 -1
  456. package/dist/cjs/utils/tests/element-data-test-test.js.map +0 -1
  457. package/dist/esm/next/api-handler/handlers/proxy-draft-mode.js +0 -60
  458. package/dist/esm/next/api-handler/handlers/proxy-draft-mode.js.map +0 -1
  459. package/dist/esm/next/api-handler/handlers/proxy-preview-mode.js +0 -80
  460. package/dist/esm/next/api-handler/handlers/proxy-preview-mode.js.map +0 -1
  461. package/dist/esm/next/draft-mode/draft-mode-script.js +0 -103
  462. package/dist/esm/next/draft-mode/draft-mode-script.js.map +0 -1
  463. package/dist/esm/runtimes/react/resolvable-record.js +0 -43
  464. package/dist/esm/runtimes/react/resolvable-record.js.map +0 -1
  465. package/dist/esm/utils/tests/breakpoint-test-util.js.map +0 -1
  466. package/dist/esm/utils/tests/element-data-test-test.js.map +0 -1
  467. package/dist/types/next/api-handler/handlers/proxy-draft-mode.d.ts +0 -20
  468. package/dist/types/next/api-handler/handlers/proxy-draft-mode.d.ts.map +0 -1
  469. package/dist/types/next/api-handler/handlers/proxy-draft-mode.test.d.ts +0 -2
  470. package/dist/types/next/api-handler/handlers/proxy-draft-mode.test.d.ts.map +0 -1
  471. package/dist/types/next/api-handler/handlers/proxy-preview-mode.d.ts +0 -20
  472. package/dist/types/next/api-handler/handlers/proxy-preview-mode.d.ts.map +0 -1
  473. package/dist/types/next/components/tests/controls/color-control.test.d.ts +0 -3
  474. package/dist/types/next/components/tests/controls/color-control.test.d.ts.map +0 -1
  475. package/dist/types/next/components/tests/controls/rich-text-v2-control.test.d.ts +0 -2
  476. package/dist/types/next/components/tests/controls/rich-text-v2-control.test.d.ts.map +0 -1
  477. package/dist/types/next/components/tests/controls/style-control.test.d.ts +0 -2
  478. package/dist/types/next/components/tests/controls/style-control.test.d.ts.map +0 -1
  479. package/dist/types/next/draft-mode/draft-mode-script.d.ts +0 -6
  480. package/dist/types/next/draft-mode/draft-mode-script.d.ts.map +0 -1
  481. package/dist/types/runtimes/react/resolvable-record.d.ts +0 -3
  482. package/dist/types/runtimes/react/resolvable-record.d.ts.map +0 -1
  483. package/dist/types/utils/tests/breakpoint-test-util.d.ts.map +0 -1
  484. package/dist/types/utils/tests/element-data-test-test.d.ts.map +0 -1
@@ -0,0 +1,53 @@
1
+ import { NextResponse } from "next/server";
2
+ import { P, match } from "ts-pattern";
3
+ import { parse as parseSetCookie } from "set-cookie-parser";
4
+ import { serialize as serializeCookie } from "cookie";
5
+ import { MakeswiftSiteVersion } from "../../../api/site-version";
6
+ import {
7
+ cookieSettingOptions,
8
+ PRERENDER_BYPASS_COOKIE,
9
+ PREVIEW_DATA_COOKIE,
10
+ SearchParams,
11
+ SET_COOKIE_HEADER
12
+ } from "./utils/draft";
13
+ const routeHandlerPattern = [P.instanceOf(Request), P.any, P.any];
14
+ const apiRoutePattern = [P.any, P.any, P.any];
15
+ async function redirectPreviewHandler(...args) {
16
+ return match(args).with(routeHandlerPattern, (args2) => redirectPreviewRouteHandler(...args2)).with(apiRoutePattern, (args2) => redirectPreviewApiRouteHandler(...args2)).exhaustive();
17
+ }
18
+ async function redirectPreviewRouteHandler(_request, _context, {}) {
19
+ const message = "Cannot request preview endpoint from an API handler registered in `app`. Move your Makeswift API handler to the `pages/api` directory";
20
+ console.error(message);
21
+ return NextResponse.json(message, { status: 500 });
22
+ }
23
+ async function redirectPreviewApiRouteHandler(req, res, { apiKey }) {
24
+ const secret = req.query[SearchParams.PreviewMode];
25
+ if (secret == null) {
26
+ return res.status(401).send("Unauthorized to enable preview mode: no secret provided");
27
+ }
28
+ if (secret !== apiKey) {
29
+ return res.status(401).send("Unauthorized to enable preview mode: secret is incorrect");
30
+ }
31
+ if (req.url == null) {
32
+ return res.status(400).send("Bad request: incoming request does not have URL property");
33
+ }
34
+ const setCookie = res.setPreviewData({ makeswift: true, siteVersion: MakeswiftSiteVersion.Working }).getHeader(SET_COOKIE_HEADER);
35
+ res.removeHeader(SET_COOKIE_HEADER);
36
+ const parsedCookies = parseSetCookie(Array.isArray(setCookie) ? setCookie : "");
37
+ const prerenderBypassCookie = parsedCookies.find((c) => c.name === PRERENDER_BYPASS_COOKIE);
38
+ const previewDataCookie = parsedCookies.find((c) => c.name === PREVIEW_DATA_COOKIE);
39
+ if (prerenderBypassCookie?.value == null || previewDataCookie?.value == null) {
40
+ return res.status(500).send("Could not retrieve preview mode cookies");
41
+ }
42
+ const patchedCookies = [prerenderBypassCookie, previewDataCookie].map(({ name, value }) => {
43
+ return serializeCookie(name, value, { ...cookieSettingOptions });
44
+ });
45
+ res.setHeader(SET_COOKIE_HEADER, patchedCookies);
46
+ const destinationUrl = new URL(req.url, "http://test.com");
47
+ destinationUrl.searchParams.delete(SearchParams.PreviewMode);
48
+ res.redirect(`${destinationUrl.pathname}?${destinationUrl.searchParams.toString()}`);
49
+ }
50
+ export {
51
+ redirectPreviewHandler as default
52
+ };
53
+ //# sourceMappingURL=redirect-preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/next/api-handler/handlers/redirect-preview.ts"],"sourcesContent":["import { NextApiRequest, NextApiResponse } from 'next'\nimport { NextRequest, NextResponse } from 'next/server'\nimport { P, match } from 'ts-pattern'\n\nimport { parse as parseSetCookie } from 'set-cookie-parser'\nimport { serialize as serializeCookie } from 'cookie'\n\nimport { MakeswiftSiteVersion } from '../../../api/site-version'\nimport {\n cookieSettingOptions,\n PRERENDER_BYPASS_COOKIE,\n PREVIEW_DATA_COOKIE,\n SearchParams,\n SET_COOKIE_HEADER,\n} from './utils/draft'\n\ntype Context = { params: { [key: string]: string | string[] } }\n\ntype RedirectPreviewError = string\n\ntype Response = unknown\n\nexport type RedirectPreviewResponse = RedirectPreviewError | Response\n\ntype RedirectPreviewHandlerArgs =\n | [request: NextRequest, context: Context, params: { apiKey: string }]\n | [req: NextApiRequest, res: NextApiResponse<RedirectPreviewResponse>, params: { apiKey: string }]\n\nconst routeHandlerPattern = [P.instanceOf(Request), P.any, P.any] as const\nconst apiRoutePattern = [P.any, P.any, P.any] as const\n\nexport default async function redirectPreviewHandler(\n request: NextRequest,\n context: Context,\n { apiKey }: { apiKey: string },\n): Promise<NextResponse<RedirectPreviewResponse>>\nexport default async function redirectPreviewHandler(\n req: NextApiRequest,\n res: NextApiResponse<RedirectPreviewResponse>,\n { apiKey }: { apiKey: string },\n): Promise<void>\nexport default async function redirectPreviewHandler(\n ...args: RedirectPreviewHandlerArgs\n): Promise<NextResponse<RedirectPreviewResponse> | void> {\n return match(args)\n .with(routeHandlerPattern, args => redirectPreviewRouteHandler(...args))\n .with(apiRoutePattern, args => redirectPreviewApiRouteHandler(...args))\n .exhaustive()\n}\n\nasync function redirectPreviewRouteHandler(\n _request: NextRequest,\n _context: Context,\n {}: { apiKey: string },\n): Promise<NextResponse<RedirectPreviewResponse>> {\n const message =\n 'Cannot request preview endpoint from an API handler registered in `app`. Move your Makeswift API handler to the `pages/api` directory'\n console.error(message)\n return NextResponse.json(message, { status: 500 })\n}\n\nasync function redirectPreviewApiRouteHandler(\n req: NextApiRequest,\n res: NextApiResponse<RedirectPreviewResponse>,\n { apiKey }: { apiKey: string },\n): Promise<void> {\n const secret = req.query[SearchParams.PreviewMode]\n\n if (secret == null) {\n return res.status(401).send('Unauthorized to enable preview mode: no secret provided')\n }\n if (secret !== apiKey) {\n return res.status(401).send('Unauthorized to enable preview mode: secret is incorrect')\n }\n\n if (req.url == null) {\n return res.status(400).send('Bad request: incoming request does not have URL property')\n }\n\n const setCookie = res\n // Eventually, we can make the preview data value dynamic using the request\n .setPreviewData({ makeswift: true, siteVersion: MakeswiftSiteVersion.Working })\n .getHeader(SET_COOKIE_HEADER)\n\n res.removeHeader(SET_COOKIE_HEADER)\n\n const parsedCookies = parseSetCookie(Array.isArray(setCookie) ? setCookie : '')\n\n const prerenderBypassCookie = parsedCookies.find(c => c.name === PRERENDER_BYPASS_COOKIE)\n const previewDataCookie = parsedCookies.find(c => c.name === PREVIEW_DATA_COOKIE)\n\n if (prerenderBypassCookie?.value == null || previewDataCookie?.value == null) {\n return res.status(500).send('Could not retrieve preview mode cookies')\n }\n\n const patchedCookies = [prerenderBypassCookie, previewDataCookie].map(({ name, value }) => {\n return serializeCookie(name, value, { ...cookieSettingOptions })\n })\n\n res.setHeader(SET_COOKIE_HEADER, patchedCookies)\n\n const destinationUrl = new URL(req.url, 'http://test.com')\n destinationUrl.searchParams.delete(SearchParams.PreviewMode)\n\n res.redirect(`${destinationUrl.pathname}?${destinationUrl.searchParams.toString()}`)\n}\n"],"mappings":"AACA,SAAsB,oBAAoB;AAC1C,SAAS,GAAG,aAAa;AAEzB,SAAS,SAAS,sBAAsB;AACxC,SAAS,aAAa,uBAAuB;AAE7C,SAAS,4BAA4B;AACrC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAcP,MAAM,sBAAsB,CAAC,EAAE,WAAW,OAAO,GAAG,EAAE,KAAK,EAAE,GAAG;AAChE,MAAM,kBAAkB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG;AAY5C,eAAO,0BACF,MACoD;AACvD,SAAO,MAAM,IAAI,EACd,KAAK,qBAAqB,CAAAA,UAAQ,4BAA4B,GAAGA,KAAI,CAAC,EACtE,KAAK,iBAAiB,CAAAA,UAAQ,+BAA+B,GAAGA,KAAI,CAAC,EACrE,WAAW;AAChB;AAEA,eAAe,4BACb,UACA,UACA,CAAC,GAC+C;AAChD,QAAM,UACJ;AACF,UAAQ,MAAM,OAAO;AACrB,SAAO,aAAa,KAAK,SAAS,EAAE,QAAQ,IAAI,CAAC;AACnD;AAEA,eAAe,+BACb,KACA,KACA,EAAE,OAAO,GACM;AACf,QAAM,SAAS,IAAI,MAAM,aAAa,WAAW;AAEjD,MAAI,UAAU,MAAM;AAClB,WAAO,IAAI,OAAO,GAAG,EAAE,KAAK,yDAAyD;AAAA,EACvF;AACA,MAAI,WAAW,QAAQ;AACrB,WAAO,IAAI,OAAO,GAAG,EAAE,KAAK,0DAA0D;AAAA,EACxF;AAEA,MAAI,IAAI,OAAO,MAAM;AACnB,WAAO,IAAI,OAAO,GAAG,EAAE,KAAK,0DAA0D;AAAA,EACxF;AAEA,QAAM,YAAY,IAEf,eAAe,EAAE,WAAW,MAAM,aAAa,qBAAqB,QAAQ,CAAC,EAC7E,UAAU,iBAAiB;AAE9B,MAAI,aAAa,iBAAiB;AAElC,QAAM,gBAAgB,eAAe,MAAM,QAAQ,SAAS,IAAI,YAAY,EAAE;AAE9E,QAAM,wBAAwB,cAAc,KAAK,OAAK,EAAE,SAAS,uBAAuB;AACxF,QAAM,oBAAoB,cAAc,KAAK,OAAK,EAAE,SAAS,mBAAmB;AAEhF,MAAI,uBAAuB,SAAS,QAAQ,mBAAmB,SAAS,MAAM;AAC5E,WAAO,IAAI,OAAO,GAAG,EAAE,KAAK,yCAAyC;AAAA,EACvE;AAEA,QAAM,iBAAiB,CAAC,uBAAuB,iBAAiB,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,MAAM;AACzF,WAAO,gBAAgB,MAAM,OAAO,EAAE,GAAG,qBAAqB,CAAC;AAAA,EACjE,CAAC;AAED,MAAI,UAAU,mBAAmB,cAAc;AAE/C,QAAM,iBAAiB,IAAI,IAAI,IAAI,KAAK,iBAAiB;AACzD,iBAAe,aAAa,OAAO,aAAa,WAAW;AAE3D,MAAI,SAAS,GAAG,eAAe,QAAQ,IAAI,eAAe,aAAa,SAAS,CAAC,EAAE;AACrF;","names":["args"]}
@@ -0,0 +1,24 @@
1
+ const PRERENDER_BYPASS_COOKIE = "__prerender_bypass";
2
+ const PREVIEW_DATA_COOKIE = "__next_preview_data";
3
+ const MAKESWIFT_DRAFT_DATA_COOKIE = "x-makeswift-draft-data";
4
+ const SET_COOKIE_HEADER = "set-cookie";
5
+ const SearchParams = {
6
+ DraftMode: "x-makeswift-draft-mode",
7
+ PreviewMode: "x-makeswift-preview-mode"
8
+ };
9
+ const cookieSettingOptions = {
10
+ path: "/",
11
+ sameSite: "none",
12
+ secure: true,
13
+ httpOnly: true,
14
+ partitioned: true
15
+ };
16
+ export {
17
+ MAKESWIFT_DRAFT_DATA_COOKIE,
18
+ PRERENDER_BYPASS_COOKIE,
19
+ PREVIEW_DATA_COOKIE,
20
+ SET_COOKIE_HEADER,
21
+ SearchParams,
22
+ cookieSettingOptions
23
+ };
24
+ //# sourceMappingURL=draft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/next/api-handler/handlers/utils/draft.ts"],"sourcesContent":["export const PRERENDER_BYPASS_COOKIE = '__prerender_bypass'\nexport const PREVIEW_DATA_COOKIE = '__next_preview_data'\n\nexport const MAKESWIFT_DRAFT_DATA_COOKIE = 'x-makeswift-draft-data'\nexport const SET_COOKIE_HEADER = 'set-cookie'\n\nexport const SearchParams = {\n DraftMode: 'x-makeswift-draft-mode',\n PreviewMode: 'x-makeswift-preview-mode',\n} as const\n\nexport const cookieSettingOptions = {\n path: '/',\n sameSite: 'none',\n secure: true,\n httpOnly: true,\n partitioned: true,\n} as const\n"],"mappings":"AAAO,MAAM,0BAA0B;AAChC,MAAM,sBAAsB;AAE5B,MAAM,8BAA8B;AACpC,MAAM,oBAAoB;AAE1B,MAAM,eAAe;AAAA,EAC1B,WAAW;AAAA,EACX,aAAa;AACf;AAEO,MAAM,uBAAuB;AAAA,EAClC,MAAM;AAAA,EACN,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,aAAa;AACf;","names":[]}
@@ -14,10 +14,10 @@ function getRequestBody(args) {
14
14
  return match(args).with(routeHandlerPattern, ([request]) => request.json()).with(apiRoutePattern, ([req]) => req.body).exhaustive();
15
15
  }
16
16
  function respond(args, response, status) {
17
- return match(args).with(routeHandlerPattern, () => NextResponse.json(response, { status })).with(apiRoutePattern, ([, res]) => res.json(response)).exhaustive();
17
+ return match(args).with(routeHandlerPattern, () => NextResponse.json(response, { status })).with(apiRoutePattern, ([, res]) => res.status(status ?? 200).json(response)).exhaustive();
18
18
  }
19
19
  async function handler(...args) {
20
- const [, , { apiKey }] = args;
20
+ const [, , { apiKey, events }] = args;
21
21
  const secret = getSecret(args);
22
22
  if (secret !== apiKey)
23
23
  return respond(args, { message: "Unauthorized" }, 401);
@@ -29,7 +29,7 @@ async function handler(...args) {
29
29
  console.error(error);
30
30
  return respond(args, { message: "Invalid request body" }, 400);
31
31
  }
32
- const result = match(payload.type).with(WebhookEventType.SITE_PUBLISHED, () => handleSitePublished(payload)).exhaustive();
32
+ const result = await match(payload.type).with(WebhookEventType.SITE_PUBLISHED, () => handleSitePublished(payload, { onPublish: events?.onPublish })).exhaustive();
33
33
  return respond(args, result.body, result.status);
34
34
  }
35
35
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/next/api-handler/handlers/webhook/index.ts"],"sourcesContent":["import { NextApiRequest, NextApiResponse } from 'next'\nimport { NextRequest, NextResponse } from 'next/server'\nimport { P, match } from 'ts-pattern'\nimport { handleSitePublished } from './site-published'\nimport {\n sitePublishedWebhookPayloadSchema,\n WebhookEventType,\n WebhookPayloadSchema,\n WebhookResponseBody,\n} from './types'\n\ntype Context = { params: { [key: string]: string | string[] } }\n\nexport type WebhookHandlerArgs =\n | [request: NextRequest, context: Context, params: { apiKey: string }]\n | [req: NextApiRequest, res: NextApiResponse<WebhookResponseBody>, params: { apiKey: string }]\n\nconst routeHandlerPattern = [P.instanceOf(Request), P.any, P.any] as const\nconst apiRoutePattern = [P.any, P.any, P.any] as const\n\nfunction getSecret(args: WebhookHandlerArgs) {\n return match(args)\n .with(routeHandlerPattern, ([request]) => request.nextUrl.searchParams.get('secret'))\n .with(apiRoutePattern, ([req]) => req.query.secret)\n .exhaustive()\n}\n\nfunction getRequestBody(args: WebhookHandlerArgs) {\n return match(args)\n .with(routeHandlerPattern, ([request]) => request.json())\n .with(apiRoutePattern, ([req]) => req.body)\n .exhaustive()\n}\n\nfunction respond(args: WebhookHandlerArgs, response: WebhookResponseBody, status?: number) {\n return match(args)\n .with(routeHandlerPattern, () => NextResponse.json(response, { status }))\n .with(apiRoutePattern, ([, res]) => res.json(response))\n .exhaustive()\n}\n\nexport default async function handler(\n request: NextRequest,\n context: Context,\n { apiKey }: { apiKey: string },\n): Promise<NextResponse<WebhookResponseBody>>\nexport default async function handler(\n req: NextApiRequest,\n res: NextApiResponse<WebhookResponseBody>,\n { apiKey }: { apiKey: string },\n): Promise<void>\nexport default async function handler(\n ...args: WebhookHandlerArgs\n): Promise<NextResponse<WebhookResponseBody> | void> {\n const [, , { apiKey }] = args\n const secret = getSecret(args)\n\n if (secret !== apiKey) return respond(args, { message: 'Unauthorized' }, 401)\n\n let payload: WebhookPayloadSchema\n\n try {\n const body = await getRequestBody(args)\n payload = sitePublishedWebhookPayloadSchema.parse(body)\n } catch (error) {\n console.error(error)\n return respond(args, { message: 'Invalid request body' }, 400)\n }\n\n const result = match(payload.type)\n .with(WebhookEventType.SITE_PUBLISHED, () => handleSitePublished(payload))\n .exhaustive()\n\n return respond(args, result.body, result.status)\n}\n"],"mappings":"AACA,SAAsB,oBAAoB;AAC1C,SAAS,GAAG,aAAa;AACzB,SAAS,2BAA2B;AACpC;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AAQP,MAAM,sBAAsB,CAAC,EAAE,WAAW,OAAO,GAAG,EAAE,KAAK,EAAE,GAAG;AAChE,MAAM,kBAAkB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG;AAE5C,SAAS,UAAU,MAA0B;AAC3C,SAAO,MAAM,IAAI,EACd,KAAK,qBAAqB,CAAC,CAAC,OAAO,MAAM,QAAQ,QAAQ,aAAa,IAAI,QAAQ,CAAC,EACnF,KAAK,iBAAiB,CAAC,CAAC,GAAG,MAAM,IAAI,MAAM,MAAM,EACjD,WAAW;AAChB;AAEA,SAAS,eAAe,MAA0B;AAChD,SAAO,MAAM,IAAI,EACd,KAAK,qBAAqB,CAAC,CAAC,OAAO,MAAM,QAAQ,KAAK,CAAC,EACvD,KAAK,iBAAiB,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,EACzC,WAAW;AAChB;AAEA,SAAS,QAAQ,MAA0B,UAA+B,QAAiB;AACzF,SAAO,MAAM,IAAI,EACd,KAAK,qBAAqB,MAAM,aAAa,KAAK,UAAU,EAAE,OAAO,CAAC,CAAC,EACvE,KAAK,iBAAiB,CAAC,CAAC,EAAE,GAAG,MAAM,IAAI,KAAK,QAAQ,CAAC,EACrD,WAAW;AAChB;AAYA,eAAO,WACF,MACgD;AACnD,QAAM,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI;AACzB,QAAM,SAAS,UAAU,IAAI;AAE7B,MAAI,WAAW;AAAQ,WAAO,QAAQ,MAAM,EAAE,SAAS,eAAe,GAAG,GAAG;AAE5E,MAAI;AAEJ,MAAI;AACF,UAAM,OAAO,MAAM,eAAe,IAAI;AACtC,cAAU,kCAAkC,MAAM,IAAI;AAAA,EACxD,SAAS,OAAO;AACd,YAAQ,MAAM,KAAK;AACnB,WAAO,QAAQ,MAAM,EAAE,SAAS,uBAAuB,GAAG,GAAG;AAAA,EAC/D;AAEA,QAAM,SAAS,MAAM,QAAQ,IAAI,EAC9B,KAAK,iBAAiB,gBAAgB,MAAM,oBAAoB,OAAO,CAAC,EACxE,WAAW;AAEd,SAAO,QAAQ,MAAM,OAAO,MAAM,OAAO,MAAM;AACjD;","names":[]}
1
+ {"version":3,"sources":["../../../../../../src/next/api-handler/handlers/webhook/index.ts"],"sourcesContent":["import { NextApiRequest, NextApiResponse } from 'next'\nimport { NextRequest, NextResponse } from 'next/server'\nimport { P, match } from 'ts-pattern'\nimport { handleSitePublished } from './site-published'\nimport {\n OnPublish,\n sitePublishedWebhookPayloadSchema,\n WebhookEventType,\n WebhookPayloadSchema,\n WebhookResponseBody,\n} from './types'\n\ntype Context = { params: { [key: string]: string | string[] } }\n\ntype WebhookParams = {\n apiKey: string,\n events?: { onPublish?: OnPublish },\n}\n\nexport type WebhookHandlerArgs =\n | [request: NextRequest, context: Context, params: WebhookParams]\n | [req: NextApiRequest, res: NextApiResponse<WebhookResponseBody>, params: WebhookParams]\n\nconst routeHandlerPattern = [P.instanceOf(Request), P.any, P.any] as const\nconst apiRoutePattern = [P.any, P.any, P.any] as const\n\nfunction getSecret(args: WebhookHandlerArgs) {\n return match(args)\n .with(routeHandlerPattern, ([request]) => request.nextUrl.searchParams.get('secret'))\n .with(apiRoutePattern, ([req]) => req.query.secret)\n .exhaustive()\n}\n\nfunction getRequestBody(args: WebhookHandlerArgs) {\n return match(args)\n .with(routeHandlerPattern, ([request]) => request.json())\n .with(apiRoutePattern, ([req]) => req.body)\n .exhaustive()\n}\n\nfunction respond(args: WebhookHandlerArgs, response: WebhookResponseBody, status?: number) {\n return match(args)\n .with(routeHandlerPattern, () => NextResponse.json(response, { status }))\n .with(apiRoutePattern, ([, res]) => res.status(status ?? 200).json(response))\n .exhaustive()\n}\n\nexport default async function handler(\n request: NextRequest,\n context: Context,\n { apiKey, events }: WebhookParams,\n): Promise<NextResponse<WebhookResponseBody>>\nexport default async function handler(\n req: NextApiRequest,\n res: NextApiResponse<WebhookResponseBody>,\n { apiKey, events }: WebhookParams,\n): Promise<void>\nexport default async function handler(\n ...args: WebhookHandlerArgs\n): Promise<NextResponse<WebhookResponseBody> | void> {\n const [, , { apiKey, events }] = args\n const secret = getSecret(args)\n\n if (secret !== apiKey) return respond(args, { message: 'Unauthorized' }, 401)\n\n let payload: WebhookPayloadSchema\n\n try {\n const body = await getRequestBody(args)\n payload = sitePublishedWebhookPayloadSchema.parse(body)\n } catch (error) {\n console.error(error)\n return respond(args, { message: 'Invalid request body' }, 400)\n }\n\n const result = await match(payload.type)\n .with(WebhookEventType.SITE_PUBLISHED, () => handleSitePublished(payload, { onPublish: events?.onPublish }))\n .exhaustive()\n\n return respond(args, result.body, result.status)\n}\n"],"mappings":"AACA,SAAsB,oBAAoB;AAC1C,SAAS,GAAG,aAAa;AACzB,SAAS,2BAA2B;AACpC;AAAA,EAEE;AAAA,EACA;AAAA,OAGK;AAaP,MAAM,sBAAsB,CAAC,EAAE,WAAW,OAAO,GAAG,EAAE,KAAK,EAAE,GAAG;AAChE,MAAM,kBAAkB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG;AAE5C,SAAS,UAAU,MAA0B;AAC3C,SAAO,MAAM,IAAI,EACd,KAAK,qBAAqB,CAAC,CAAC,OAAO,MAAM,QAAQ,QAAQ,aAAa,IAAI,QAAQ,CAAC,EACnF,KAAK,iBAAiB,CAAC,CAAC,GAAG,MAAM,IAAI,MAAM,MAAM,EACjD,WAAW;AAChB;AAEA,SAAS,eAAe,MAA0B;AAChD,SAAO,MAAM,IAAI,EACd,KAAK,qBAAqB,CAAC,CAAC,OAAO,MAAM,QAAQ,KAAK,CAAC,EACvD,KAAK,iBAAiB,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,EACzC,WAAW;AAChB;AAEA,SAAS,QAAQ,MAA0B,UAA+B,QAAiB;AACzF,SAAO,MAAM,IAAI,EACd,KAAK,qBAAqB,MAAM,aAAa,KAAK,UAAU,EAAE,OAAO,CAAC,CAAC,EACvE,KAAK,iBAAiB,CAAC,CAAC,EAAE,GAAG,MAAM,IAAI,OAAO,UAAU,GAAG,EAAE,KAAK,QAAQ,CAAC,EAC3E,WAAW;AAChB;AAYA,eAAO,WACF,MACgD;AACnD,QAAM,CAAC,EAAE,EAAE,EAAE,QAAQ,OAAO,CAAC,IAAI;AACjC,QAAM,SAAS,UAAU,IAAI;AAE7B,MAAI,WAAW;AAAQ,WAAO,QAAQ,MAAM,EAAE,SAAS,eAAe,GAAG,GAAG;AAE5E,MAAI;AAEJ,MAAI;AACF,UAAM,OAAO,MAAM,eAAe,IAAI;AACtC,cAAU,kCAAkC,MAAM,IAAI;AAAA,EACxD,SAAS,OAAO;AACd,YAAQ,MAAM,KAAK;AACnB,WAAO,QAAQ,MAAM,EAAE,SAAS,uBAAuB,GAAG,GAAG;AAAA,EAC/D;AAEA,QAAM,SAAS,MAAM,MAAM,QAAQ,IAAI,EACpC,KAAK,iBAAiB,gBAAgB,MAAM,oBAAoB,SAAS,EAAE,WAAW,QAAQ,UAAU,CAAC,CAAC,EAC1G,WAAW;AAEd,SAAO,QAAQ,MAAM,OAAO,MAAM,OAAO,MAAM;AACjD;","names":[]}
@@ -1,11 +1,15 @@
1
1
  import { revalidateTag } from "next/cache";
2
- function handleSitePublished(_payload) {
2
+ import { MAKESWIFT_CACHE_TAG } from "../../../cache";
3
+ async function handleSitePublished(_payload, { onPublish }) {
3
4
  revalidateTag(MAKESWIFT_CACHE_TAG);
5
+ try {
6
+ await onPublish?.();
7
+ } catch (error) {
8
+ console.error("Unhandled exception in the 'onPublish' callback:", error);
9
+ }
4
10
  return { body: { success: true }, status: 200 };
5
11
  }
6
- const MAKESWIFT_CACHE_TAG = "@@makeswift";
7
12
  export {
8
- MAKESWIFT_CACHE_TAG,
9
13
  handleSitePublished
10
14
  };
11
15
  //# sourceMappingURL=site-published.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/next/api-handler/handlers/webhook/site-published.ts"],"sourcesContent":["import { revalidateTag } from 'next/cache'\nimport { SitePublishedWebhookPayload, WebhookHandlerResult } from './types'\n\nexport function handleSitePublished(_payload: SitePublishedWebhookPayload): WebhookHandlerResult {\n revalidateTag(MAKESWIFT_CACHE_TAG)\n\n return { body: { success: true }, status: 200 }\n}\n\nexport const MAKESWIFT_CACHE_TAG = '@@makeswift'\n"],"mappings":"AAAA,SAAS,qBAAqB;AAGvB,SAAS,oBAAoB,UAA6D;AAC/F,gBAAc,mBAAmB;AAEjC,SAAO,EAAE,MAAM,EAAE,SAAS,KAAK,GAAG,QAAQ,IAAI;AAChD;AAEO,MAAM,sBAAsB;","names":[]}
1
+ {"version":3,"sources":["../../../../../../src/next/api-handler/handlers/webhook/site-published.ts"],"sourcesContent":["import { revalidateTag } from 'next/cache'\nimport {\n type OnPublish,\n type SitePublishedWebhookPayload,\n type WebhookHandlerResult,\n} from './types'\n\nimport { MAKESWIFT_CACHE_TAG } from '../../../cache'\n\ntype SitePublishedParams = {\n onPublish?: OnPublish\n}\n\nexport async function handleSitePublished(\n _payload: SitePublishedWebhookPayload,\n { onPublish }: SitePublishedParams,\n): Promise<WebhookHandlerResult> {\n revalidateTag(MAKESWIFT_CACHE_TAG)\n\n try {\n await onPublish?.()\n } catch (error) {\n // log and ignore any error in user-provided onPublish\n console.error(\"Unhandled exception in the 'onPublish' callback:\", error)\n }\n\n return { body: { success: true }, status: 200 }\n}\n"],"mappings":"AAAA,SAAS,qBAAqB;AAO9B,SAAS,2BAA2B;AAMpC,eAAsB,oBACpB,UACA,EAAE,UAAU,GACmB;AAC/B,gBAAc,mBAAmB;AAEjC,MAAI;AACF,UAAM,YAAY;AAAA,EACpB,SAAS,OAAO;AAEd,YAAQ,MAAM,oDAAoD,KAAK;AAAA,EACzE;AAEA,SAAO,EAAE,MAAM,EAAE,SAAS,KAAK,GAAG,QAAQ,IAAI;AAChD;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/next/api-handler/handlers/webhook/types.ts"],"sourcesContent":["import { z } from 'zod'\n\nexport const WebhookEventType = {\n SITE_PUBLISHED: 'site.published',\n} as const\n\nexport const sitePublishedWebhookPayloadSchema = z.object({\n type: z.literal(WebhookEventType.SITE_PUBLISHED),\n data: z.object({\n siteId: z.string().uuid(),\n publish: z.object({\n from: z.string().uuid().nullable(),\n to: z.string().uuid(),\n }),\n at: z.number(),\n }),\n})\n\nexport type SitePublishedWebhookPayload = z.infer<typeof sitePublishedWebhookPayloadSchema>\n\nconst webhookPayloadSchema = sitePublishedWebhookPayloadSchema\n\nexport type WebhookPayloadSchema = z.infer<typeof webhookPayloadSchema>\n\ntype WebhookSuccessBody = { success: true }\n\ntype WebhookErrorBody = { message: string }\n\nexport type WebhookResponseBody = WebhookSuccessBody | WebhookErrorBody\n\nexport type WebhookHandlerResult = {\n body: WebhookResponseBody\n status: 200\n}\n"],"mappings":"AAAA,SAAS,SAAS;AAEX,MAAM,mBAAmB;AAAA,EAC9B,gBAAgB;AAClB;AAEO,MAAM,oCAAoC,EAAE,OAAO;AAAA,EACxD,MAAM,EAAE,QAAQ,iBAAiB,cAAc;AAAA,EAC/C,MAAM,EAAE,OAAO;AAAA,IACb,QAAQ,EAAE,OAAO,EAAE,KAAK;AAAA,IACxB,SAAS,EAAE,OAAO;AAAA,MAChB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS;AAAA,MACjC,IAAI,EAAE,OAAO,EAAE,KAAK;AAAA,IACtB,CAAC;AAAA,IACD,IAAI,EAAE,OAAO;AAAA,EACf,CAAC;AACH,CAAC;AAID,MAAM,uBAAuB;","names":[]}
1
+ {"version":3,"sources":["../../../../../../src/next/api-handler/handlers/webhook/types.ts"],"sourcesContent":["import { z } from 'zod'\n\nexport const WebhookEventType = {\n SITE_PUBLISHED: 'site.published',\n} as const\n\nexport const sitePublishedWebhookPayloadSchema = z.object({\n type: z.literal(WebhookEventType.SITE_PUBLISHED),\n data: z.object({\n siteId: z.string().uuid(),\n publish: z.object({\n from: z.string().uuid().nullable(),\n to: z.string().uuid(),\n }),\n at: z.number(),\n }),\n})\n\nexport type SitePublishedWebhookPayload = z.infer<typeof sitePublishedWebhookPayloadSchema>\n\nconst webhookPayloadSchema = sitePublishedWebhookPayloadSchema\n\nexport type WebhookPayloadSchema = z.infer<typeof webhookPayloadSchema>\n\ntype WebhookSuccessBody = { success: true }\n\ntype WebhookErrorBody = { message: string }\n\nexport type WebhookResponseBody = WebhookSuccessBody | WebhookErrorBody\n\nexport type WebhookHandlerResult = {\n body: WebhookResponseBody\n status: 200\n}\n\nexport type OnPublish = () => void | Promise<void>\n"],"mappings":"AAAA,SAAS,SAAS;AAEX,MAAM,mBAAmB;AAAA,EAC9B,gBAAgB;AAClB;AAEO,MAAM,oCAAoC,EAAE,OAAO;AAAA,EACxD,MAAM,EAAE,QAAQ,iBAAiB,cAAc;AAAA,EAC/C,MAAM,EAAE,OAAO;AAAA,IACb,QAAQ,EAAE,OAAO,EAAE,KAAK;AAAA,IACxB,SAAS,EAAE,OAAO;AAAA,MAChB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS;AAAA,MACjC,IAAI,EAAE,OAAO,EAAE,KAAK;AAAA,IACtB,CAAC;AAAA,IACD,IAAI,EAAE,OAAO;AAAA,EACf,CAAC;AACH,CAAC;AAID,MAAM,uBAAuB;","names":[]}
@@ -5,14 +5,19 @@ import { Makeswift } from "../client";
5
5
  import elementTree from "./handlers/element-tree";
6
6
  import fonts from "./handlers/fonts";
7
7
  import manifest from "./handlers/manifest";
8
- import proxyPreviewMode from "./handlers/proxy-preview-mode";
9
- import proxyDraftMode from "./handlers/proxy-draft-mode";
8
+ import redirectDraft from "./handlers/redirect-draft";
9
+ import redirectPreview from "./handlers/redirect-preview";
10
+ import clearDraft from "./handlers/clear-draft";
10
11
  import { revalidate } from "./handlers/revalidate";
11
12
  import translatableData from "./handlers/translatable-data";
12
13
  import mergeTranslatedData from "./handlers/merge-translated-data";
13
14
  import webhook from "./handlers/webhook";
14
15
  import { P, match } from "ts-pattern";
15
- import { getSiteVersion } from "../draft-mode";
16
+ import {
17
+ API_HANDLER_SITE_VERSION_HEADER,
18
+ MakeswiftSiteVersion,
19
+ makeswiftSiteVersionSchema
20
+ } from "../../api/site-version";
16
21
  function apiRequestParams(request) {
17
22
  return Promise.resolve(request.query);
18
23
  }
@@ -20,6 +25,7 @@ function MakeswiftApiHandler(apiKey, {
20
25
  appOrigin = "https://app.makeswift.com",
21
26
  apiOrigin = "https://api.makeswift.com",
22
27
  getFonts,
28
+ events,
23
29
  runtime
24
30
  }) {
25
31
  const cors = Cors({ origin: appOrigin });
@@ -51,6 +57,16 @@ Received "${apiKey}" instead.`
51
57
  return await makeswiftApiHandler(...args2);
52
58
  }).exhaustive();
53
59
  };
60
+ function getSiteVersionFromRequest(args) {
61
+ const header = match(args).with(
62
+ routeHandlerPattern,
63
+ ([request]) => request.headers.get(API_HANDLER_SITE_VERSION_HEADER)
64
+ ).with(apiRoutePattern, ([req]) => req.headers[API_HANDLER_SITE_VERSION_HEADER.toLowerCase()]).exhaustive();
65
+ const parsed = makeswiftSiteVersionSchema.safeParse(header);
66
+ if (!parsed.success)
67
+ return MakeswiftSiteVersion.Live;
68
+ return parsed.data;
69
+ }
54
70
  async function makeswiftApiHandler(...args) {
55
71
  const params = match(args).with(routeHandlerPattern, ([, context]) => context.params).with(apiRoutePattern, ([req]) => apiRequestParams(req)).exhaustive();
56
72
  const { makeswift } = await params;
@@ -62,7 +78,7 @@ Read more about dynamic catch-all routes here: https://nextjs.org/docs/routing/d
62
78
  );
63
79
  }
64
80
  const client = new Makeswift(apiKey, { apiOrigin, runtime });
65
- const siteVersion = await match(args).with(routeHandlerPattern, () => getSiteVersion()).with(apiRoutePattern, ([req]) => Makeswift.getSiteVersion(req.previewData)).exhaustive();
81
+ const siteVersion = getSiteVersionFromRequest(args);
66
82
  const action = "/" + makeswift.join("/");
67
83
  const matches = (pattern) => matchPattern(pattern, { decode: decodeURIComponent })(action);
68
84
  let m;
@@ -72,11 +88,14 @@ Read more about dynamic catch-all routes here: https://nextjs.org/docs/routing/d
72
88
  if (matches("/revalidate")) {
73
89
  return match(args).with(routeHandlerPattern, (args2) => revalidate(...args2, { apiKey })).with(apiRoutePattern, (args2) => revalidate(...args2, { apiKey })).exhaustive();
74
90
  }
75
- if (matches("/proxy-preview-mode")) {
76
- return match(args).with(routeHandlerPattern, (args2) => proxyPreviewMode(...args2, { apiKey })).with(apiRoutePattern, (args2) => proxyPreviewMode(...args2, { apiKey })).exhaustive();
91
+ if (matches("/draft")) {
92
+ return match(args).with(routeHandlerPattern, (args2) => redirectDraft(...args2, { apiKey })).with(apiRoutePattern, (args2) => redirectDraft(...args2, { apiKey })).exhaustive();
93
+ }
94
+ if (matches("/preview")) {
95
+ return match(args).with(routeHandlerPattern, (args2) => redirectPreview(...args2, { apiKey })).with(apiRoutePattern, (args2) => redirectPreview(...args2, { apiKey })).exhaustive();
77
96
  }
78
- if (matches("/proxy-draft-mode")) {
79
- return match(args).with(routeHandlerPattern, (args2) => proxyDraftMode(...args2, { apiKey })).with(apiRoutePattern, (args2) => proxyDraftMode(...args2, { apiKey })).exhaustive();
97
+ if (matches("/clear-draft")) {
98
+ return match(args).with(routeHandlerPattern, (args2) => clearDraft(...args2, { apiKey })).with(apiRoutePattern, (args2) => clearDraft(...args2, { apiKey })).exhaustive();
80
99
  }
81
100
  if (matches("/fonts")) {
82
101
  return match(args).with(routeHandlerPattern, (args2) => fonts(...args2, { getFonts })).with(apiRoutePattern, (args2) => fonts(...args2, { getFonts })).exhaustive();
@@ -91,7 +110,7 @@ Read more about dynamic catch-all routes here: https://nextjs.org/docs/routing/d
91
110
  return match(args).with(routeHandlerPattern, (args2) => mergeTranslatedData(...args2, client)).with(apiRoutePattern, (args2) => mergeTranslatedData(...args2, client)).exhaustive();
92
111
  }
93
112
  if (matches("/webhook")) {
94
- return match(args).with(routeHandlerPattern, (args2) => webhook(...args2, { apiKey })).with(apiRoutePattern, (args2) => webhook(...args2, { apiKey })).exhaustive();
113
+ return match(args).with(routeHandlerPattern, (args2) => webhook(...args2, { apiKey, events })).with(apiRoutePattern, (args2) => webhook(...args2, { apiKey, events })).exhaustive();
95
114
  }
96
115
  const handleResource = (resource) => {
97
116
  const status2 = resource === null ? 404 : 200;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/next/api-handler/index.ts"],"sourcesContent":["import Cors from 'cors'\nimport { NextApiRequest, NextApiResponse } from 'next'\nimport { NextRequest, NextResponse } from 'next/server'\nimport { Match, match as matchPattern } from 'path-to-regexp'\nimport { APIResource } from '../../api'\nimport { Makeswift } from '../client'\n\nimport elementTree, { ElementTreeResponse } from './handlers/element-tree'\nimport fonts, { Font, FontsResponse, GetFonts } from './handlers/fonts'\nimport manifest, { Manifest, ManifestResponse } from './handlers/manifest'\nimport proxyPreviewMode, { ProxyPreviewModeResponse } from './handlers/proxy-preview-mode'\nimport proxyDraftMode, { ProxyDraftModeResponse } from './handlers/proxy-draft-mode'\nimport { revalidate, RevalidationResponse } from './handlers/revalidate'\nimport translatableData, { TranslatableDataResponse } from './handlers/translatable-data'\nimport mergeTranslatedData, { TranslatedDataResponse } from './handlers/merge-translated-data'\nimport webhook from './handlers/webhook'\nimport { WebhookResponseBody } from './handlers/webhook/types'\nimport { ReactRuntime } from '../../react'\nimport { P, match } from 'ts-pattern'\nimport { getSiteVersion } from '../draft-mode'\n\nexport type { Manifest, Font }\n\ntype Context = { params: { [key: string]: string | string[] } }\n\ntype MakeswiftApiHandlerConfig = {\n appOrigin?: string\n apiOrigin?: string\n getFonts?: GetFonts\n runtime: ReactRuntime\n}\n\ntype NotFoundError = { message: string }\n\nexport type MakeswiftApiHandlerResponse =\n | ManifestResponse\n | RevalidationResponse\n | ProxyPreviewModeResponse\n | ProxyDraftModeResponse\n | FontsResponse\n | ElementTreeResponse\n | TranslatableDataResponse\n | TranslatedDataResponse\n | APIResource\n | NotFoundError\n | WebhookResponseBody\n\ntype MakeswiftApiHandlerArgs =\n | [NextRequest, Context]\n | [NextApiRequest, NextApiResponse<MakeswiftApiHandlerResponse>]\n\nfunction apiRequestParams(request: NextApiRequest): Promise<NextApiRequest['query']> {\n // `NextApiRequest.query` prop became async in Next.js 15, but it's not reflected in the type definition;\n // force-casting it to a `Promise` manually\n return Promise.resolve(request.query)\n}\n\nexport function MakeswiftApiHandler(\n apiKey: string,\n {\n appOrigin = 'https://app.makeswift.com',\n apiOrigin = 'https://api.makeswift.com',\n getFonts,\n runtime,\n }: MakeswiftApiHandlerConfig,\n): (...args: MakeswiftApiHandlerArgs) => Promise<NextResponse<MakeswiftApiHandlerResponse> | void> {\n const cors = Cors({ origin: appOrigin })\n\n if (typeof apiKey !== 'string') {\n throw new Error(\n 'The Makeswift Next.js API handler must be passed a valid Makeswift site API key: ' +\n \"`MakeswiftApiHandler('<makeswift_site_api_key>')`\\n\" +\n `Received \"${apiKey}\" instead.`,\n )\n }\n\n const routeHandlerPattern = [P.instanceOf(Request), P.any] as const\n const apiRoutePattern = [P.any, P.any] as const\n\n return function handler(\n ...args: MakeswiftApiHandlerArgs\n ): Promise<NextResponse<MakeswiftApiHandlerResponse> | void> {\n return match(args)\n .with(routeHandlerPattern, async args => {\n const response = await makeswiftApiHandler(...args)\n\n response.headers.append('Access-Control-Allow-Origin', appOrigin)\n response.headers.append('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')\n response.headers.append('Access-Control-Allow-Headers', 'Content-Type, Authorization')\n\n return response\n })\n .with(apiRoutePattern, async args => {\n const [req, res] = args\n\n await new Promise<void>((resolve, reject) => {\n cors(req, res, err => {\n if (err instanceof Error) reject(err)\n else resolve()\n })\n })\n\n return await makeswiftApiHandler(...args)\n })\n .exhaustive()\n }\n\n async function makeswiftApiHandler(\n request: NextRequest,\n context: Context,\n ): Promise<NextResponse<MakeswiftApiHandlerResponse>>\n async function makeswiftApiHandler(\n req: NextApiRequest,\n res: NextApiResponse<MakeswiftApiHandlerResponse>,\n ): Promise<void>\n async function makeswiftApiHandler(\n ...args: MakeswiftApiHandlerArgs\n ): Promise<NextResponse<MakeswiftApiHandlerResponse> | void> {\n const params = match(args)\n .with(routeHandlerPattern, ([, context]) => context.params)\n .with(apiRoutePattern, ([req]) => apiRequestParams(req))\n .exhaustive()\n\n const { makeswift } = await params\n\n if (!Array.isArray(makeswift)) {\n throw new Error(\n 'The Makeswift Next.js API handler must be used in a dynamic catch-all route named `[...makeswift]`.\\n' +\n `Received \"${makeswift}\" for the \\`makeswift\\` param instead.\\n` +\n 'Read more about dynamic catch-all routes here: https://nextjs.org/docs/routing/dynamic-routes#catch-all-routes',\n )\n }\n\n const client = new Makeswift(apiKey, { apiOrigin, runtime })\n const siteVersion = await match(args)\n .with(routeHandlerPattern, () => getSiteVersion())\n .with(apiRoutePattern, ([req]) => Makeswift.getSiteVersion(req.previewData))\n .exhaustive()\n const action = '/' + makeswift.join('/')\n const matches = <T extends object>(pattern: string): Match<T> =>\n matchPattern<T>(pattern, { decode: decodeURIComponent })(action)\n\n let m\n\n if (matches('/manifest')) {\n return match(args)\n .with(routeHandlerPattern, args => manifest(...args, { apiKey }))\n .with(apiRoutePattern, args => manifest(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/revalidate')) {\n return match(args)\n .with(routeHandlerPattern, args => revalidate(...args, { apiKey }))\n .with(apiRoutePattern, args => revalidate(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/proxy-preview-mode')) {\n return match(args)\n .with(routeHandlerPattern, args => proxyPreviewMode(...args, { apiKey }))\n .with(apiRoutePattern, args => proxyPreviewMode(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/proxy-draft-mode')) {\n return match(args)\n .with(routeHandlerPattern, args => proxyDraftMode(...args, { apiKey }))\n .with(apiRoutePattern, args => proxyDraftMode(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/fonts')) {\n return match(args)\n .with(routeHandlerPattern, args => fonts(...args, { getFonts }))\n .with(apiRoutePattern, args => fonts(...args, { getFonts }))\n .exhaustive()\n }\n\n if (matches('/element-tree')) {\n return match(args)\n .with(routeHandlerPattern, args => elementTree(...args, runtime))\n .with(apiRoutePattern, args => elementTree(...args, runtime))\n .exhaustive()\n }\n\n if (matches('/translatable-data')) {\n return match(args)\n .with(routeHandlerPattern, args => translatableData(...args, client))\n .with(apiRoutePattern, args => translatableData(...args, client))\n .exhaustive()\n }\n\n if (matches('/merge-translated-data')) {\n return match(args)\n .with(routeHandlerPattern, args => mergeTranslatedData(...args, client))\n .with(apiRoutePattern, args => mergeTranslatedData(...args, client))\n .exhaustive()\n }\n\n if (matches('/webhook')) {\n return match(args)\n .with(routeHandlerPattern, args => webhook(...args, { apiKey }))\n .with(apiRoutePattern, args => webhook(...args, { apiKey }))\n .exhaustive()\n }\n\n const handleResource = <T extends APIResource>(\n resource: T | null,\n ): NextResponse<MakeswiftApiHandlerResponse> | void => {\n const status = resource === null ? 404 : 200\n const body = resource === null ? { message: 'Not Found' } : resource\n\n return match(args)\n .with(routeHandlerPattern, () => NextResponse.json(body, { status }))\n .with(apiRoutePattern, ([, res]) => res.status(status).json(body))\n .exhaustive()\n }\n\n if ((m = matches<{ id: string }>('/swatches/:id'))) {\n return client.getSwatch(m.params.id, siteVersion).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/files/:id'))) {\n return client.getFile(m.params.id).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/typographies/:id'))) {\n return client.getTypography(m.params.id, siteVersion).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/global-elements/:id'))) {\n return client.getGlobalElement(m.params.id, siteVersion).then(handleResource)\n }\n\n if (\n (m = matches<{ globalElementId: string; locale: string }>(\n '/localized-global-elements/:globalElementId/:locale',\n ))\n ) {\n return client\n .getLocalizedGlobalElement(m.params.globalElementId, m.params.locale, siteVersion)\n .then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/page-pathname-slices/:id'))) {\n const localeParam = match(args)\n .with(routeHandlerPattern, ([request]) => request.nextUrl.searchParams.get('locale'))\n .with(apiRoutePattern, ([req]) => req.query.locale)\n .exhaustive()\n const locale = typeof localeParam === 'string' ? localeParam : undefined\n\n return client.getPagePathnameSlice(m.params.id, siteVersion, { locale }).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/tables/:id'))) {\n return client.getTable(m.params.id).then(handleResource)\n }\n\n const status = 404\n const body = { message: 'Not Found' }\n\n return match(args)\n .with(routeHandlerPattern, () => NextResponse.json(body, { status }))\n .with(apiRoutePattern, ([, res]) => res.status(status).json(body))\n .exhaustive()\n }\n}\n"],"mappings":"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","names":["args","status","body"]}
1
+ {"version":3,"sources":["../../../../src/next/api-handler/index.ts"],"sourcesContent":["import Cors from 'cors'\nimport { NextApiRequest, NextApiResponse } from 'next'\nimport { NextRequest, NextResponse } from 'next/server'\nimport { Match, match as matchPattern } from 'path-to-regexp'\nimport { APIResource } from '../../api'\nimport { Makeswift } from '../client'\n\nimport elementTree, { ElementTreeResponse } from './handlers/element-tree'\nimport fonts, { Font, FontsResponse, GetFonts } from './handlers/fonts'\nimport manifest, { Manifest, ManifestResponse } from './handlers/manifest'\nimport redirectDraft, { type RedirectDraftResponse } from './handlers/redirect-draft'\nimport redirectPreview, { type RedirectPreviewResponse } from './handlers/redirect-preview'\nimport clearDraft, { type ClearDraftResponse } from './handlers/clear-draft'\nimport { revalidate, RevalidationResponse } from './handlers/revalidate'\nimport translatableData, { TranslatableDataResponse } from './handlers/translatable-data'\nimport mergeTranslatedData, { TranslatedDataResponse } from './handlers/merge-translated-data'\nimport webhook from './handlers/webhook'\nimport { OnPublish, WebhookResponseBody } from './handlers/webhook/types'\nimport { ReactRuntime } from '../../react'\nimport { P, match } from 'ts-pattern'\nimport {\n API_HANDLER_SITE_VERSION_HEADER,\n MakeswiftSiteVersion,\n makeswiftSiteVersionSchema,\n} from '../../api/site-version'\n\nexport type { Manifest, Font }\n\ntype Context = { params: { [key: string]: string | string[] } }\n\ntype Events = { onPublish: OnPublish }\n\ntype MakeswiftApiHandlerConfig = {\n appOrigin?: string\n apiOrigin?: string\n getFonts?: GetFonts\n events?: Events\n runtime: ReactRuntime\n}\n\ntype NotFoundError = { message: string }\n\nexport type MakeswiftApiHandlerResponse =\n | ManifestResponse\n | RevalidationResponse\n | RedirectDraftResponse\n | RedirectPreviewResponse\n | ClearDraftResponse\n | FontsResponse\n | ElementTreeResponse\n | TranslatableDataResponse\n | TranslatedDataResponse\n | APIResource\n | NotFoundError\n | WebhookResponseBody\n\ntype MakeswiftApiHandlerArgs =\n | [NextRequest, Context]\n | [NextApiRequest, NextApiResponse<MakeswiftApiHandlerResponse>]\n\nfunction apiRequestParams(request: NextApiRequest): Promise<NextApiRequest['query']> {\n // `NextApiRequest.query` prop became async in Next.js 15, but it's not reflected in the type definition;\n // force-casting it to a `Promise` manually\n return Promise.resolve(request.query)\n}\n\nexport function MakeswiftApiHandler(\n apiKey: string,\n {\n appOrigin = 'https://app.makeswift.com',\n apiOrigin = 'https://api.makeswift.com',\n getFonts,\n events,\n runtime,\n }: MakeswiftApiHandlerConfig,\n): (...args: MakeswiftApiHandlerArgs) => Promise<NextResponse<MakeswiftApiHandlerResponse> | void> {\n const cors = Cors({ origin: appOrigin })\n\n if (typeof apiKey !== 'string') {\n throw new Error(\n 'The Makeswift Next.js API handler must be passed a valid Makeswift site API key: ' +\n \"`MakeswiftApiHandler('<makeswift_site_api_key>')`\\n\" +\n `Received \"${apiKey}\" instead.`,\n )\n }\n\n const routeHandlerPattern = [P.instanceOf(Request), P.any] as const\n const apiRoutePattern = [P.any, P.any] as const\n\n return function handler(\n ...args: MakeswiftApiHandlerArgs\n ): Promise<NextResponse<MakeswiftApiHandlerResponse> | void> {\n return match(args)\n .with(routeHandlerPattern, async args => {\n const response = await makeswiftApiHandler(...args)\n\n response.headers.append('Access-Control-Allow-Origin', appOrigin)\n response.headers.append('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')\n response.headers.append('Access-Control-Allow-Headers', 'Content-Type, Authorization')\n\n return response\n })\n .with(apiRoutePattern, async args => {\n const [req, res] = args\n\n await new Promise<void>((resolve, reject) => {\n cors(req, res, err => {\n if (err instanceof Error) reject(err)\n else resolve()\n })\n })\n\n return await makeswiftApiHandler(...args)\n })\n .exhaustive()\n }\n\n function getSiteVersionFromRequest(args: MakeswiftApiHandlerArgs): MakeswiftSiteVersion {\n const header = match(args)\n .with(routeHandlerPattern, ([request]) =>\n request.headers.get(API_HANDLER_SITE_VERSION_HEADER),\n )\n .with(apiRoutePattern, ([req]) => req.headers[API_HANDLER_SITE_VERSION_HEADER.toLowerCase()])\n .exhaustive()\n\n const parsed = makeswiftSiteVersionSchema.safeParse(header)\n if (!parsed.success) return MakeswiftSiteVersion.Live\n return parsed.data\n }\n\n async function makeswiftApiHandler(\n request: NextRequest,\n context: Context,\n ): Promise<NextResponse<MakeswiftApiHandlerResponse>>\n async function makeswiftApiHandler(\n req: NextApiRequest,\n res: NextApiResponse<MakeswiftApiHandlerResponse>,\n ): Promise<void>\n async function makeswiftApiHandler(\n ...args: MakeswiftApiHandlerArgs\n ): Promise<NextResponse<MakeswiftApiHandlerResponse> | void> {\n const params = match(args)\n .with(routeHandlerPattern, ([, context]) => context.params)\n .with(apiRoutePattern, ([req]) => apiRequestParams(req))\n .exhaustive()\n\n const { makeswift } = await params\n\n if (!Array.isArray(makeswift)) {\n throw new Error(\n 'The Makeswift Next.js API handler must be used in a dynamic catch-all route named `[...makeswift]`.\\n' +\n `Received \"${makeswift}\" for the \\`makeswift\\` param instead.\\n` +\n 'Read more about dynamic catch-all routes here: https://nextjs.org/docs/routing/dynamic-routes#catch-all-routes',\n )\n }\n\n const client = new Makeswift(apiKey, { apiOrigin, runtime })\n const siteVersion = getSiteVersionFromRequest(args)\n const action = '/' + makeswift.join('/')\n const matches = <T extends object>(pattern: string): Match<T> =>\n matchPattern<T>(pattern, { decode: decodeURIComponent })(action)\n\n let m\n\n if (matches('/manifest')) {\n return match(args)\n .with(routeHandlerPattern, args => manifest(...args, { apiKey }))\n .with(apiRoutePattern, args => manifest(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/revalidate')) {\n return match(args)\n .with(routeHandlerPattern, args => revalidate(...args, { apiKey }))\n .with(apiRoutePattern, args => revalidate(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/draft')) {\n return match(args)\n .with(routeHandlerPattern, args => redirectDraft(...args, { apiKey }))\n .with(apiRoutePattern, args => redirectDraft(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/preview')) {\n return match(args)\n .with(routeHandlerPattern, args => redirectPreview(...args, { apiKey }))\n .with(apiRoutePattern, args => redirectPreview(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/clear-draft')) {\n return match(args)\n .with(routeHandlerPattern, args => clearDraft(...args, { apiKey }))\n .with(apiRoutePattern, args => clearDraft(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/fonts')) {\n return match(args)\n .with(routeHandlerPattern, args => fonts(...args, { getFonts }))\n .with(apiRoutePattern, args => fonts(...args, { getFonts }))\n .exhaustive()\n }\n\n if (matches('/element-tree')) {\n return match(args)\n .with(routeHandlerPattern, args => elementTree(...args, runtime))\n .with(apiRoutePattern, args => elementTree(...args, runtime))\n .exhaustive()\n }\n\n if (matches('/translatable-data')) {\n return match(args)\n .with(routeHandlerPattern, args => translatableData(...args, client))\n .with(apiRoutePattern, args => translatableData(...args, client))\n .exhaustive()\n }\n\n if (matches('/merge-translated-data')) {\n return match(args)\n .with(routeHandlerPattern, args => mergeTranslatedData(...args, client))\n .with(apiRoutePattern, args => mergeTranslatedData(...args, client))\n .exhaustive()\n }\n\n if (matches('/webhook')) {\n return match(args)\n .with(routeHandlerPattern, args => webhook(...args, { apiKey, events }))\n .with(apiRoutePattern, args => webhook(...args, { apiKey, events }))\n .exhaustive()\n }\n\n const handleResource = <T extends APIResource>(\n resource: T | null,\n ): NextResponse<MakeswiftApiHandlerResponse> | void => {\n const status = resource === null ? 404 : 200\n const body = resource === null ? { message: 'Not Found' } : resource\n\n return match(args)\n .with(routeHandlerPattern, () => NextResponse.json(body, { status }))\n .with(apiRoutePattern, ([, res]) => res.status(status).json(body))\n .exhaustive()\n }\n\n if ((m = matches<{ id: string }>('/swatches/:id'))) {\n return client.getSwatch(m.params.id, siteVersion).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/files/:id'))) {\n return client.getFile(m.params.id).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/typographies/:id'))) {\n return client.getTypography(m.params.id, siteVersion).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/global-elements/:id'))) {\n return client.getGlobalElement(m.params.id, siteVersion).then(handleResource)\n }\n\n if (\n (m = matches<{ globalElementId: string; locale: string }>(\n '/localized-global-elements/:globalElementId/:locale',\n ))\n ) {\n return client\n .getLocalizedGlobalElement(m.params.globalElementId, m.params.locale, siteVersion)\n .then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/page-pathname-slices/:id'))) {\n const localeParam = match(args)\n .with(routeHandlerPattern, ([request]) => request.nextUrl.searchParams.get('locale'))\n .with(apiRoutePattern, ([req]) => req.query.locale)\n .exhaustive()\n const locale = typeof localeParam === 'string' ? localeParam : undefined\n\n return client.getPagePathnameSlice(m.params.id, siteVersion, { locale }).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/tables/:id'))) {\n return client.getTable(m.params.id).then(handleResource)\n }\n\n const status = 404\n const body = { message: 'Not Found' }\n\n return match(args)\n .with(routeHandlerPattern, () => NextResponse.json(body, { status }))\n .with(apiRoutePattern, ([, res]) => res.status(status).json(body))\n .exhaustive()\n }\n}\n"],"mappings":"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","names":["args","status","body"]}
@@ -0,0 +1,5 @@
1
+ const MAKESWIFT_CACHE_TAG = "@@makeswift";
2
+ export {
3
+ MAKESWIFT_CACHE_TAG
4
+ };
5
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/next/cache.ts"],"sourcesContent":["export const MAKESWIFT_CACHE_TAG = '@@makeswift'\n"],"mappings":"AAAO,MAAM,sBAAsB;","names":[]}