@makeswift/runtime 0.14.5 → 0.16.0-canary.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 (472) hide show
  1. package/dist/cjs/api/react.js +3 -17
  2. package/dist/cjs/api/react.js.map +1 -1
  3. package/dist/cjs/api/resource-types.js +24 -0
  4. package/dist/cjs/api/resource-types.js.map +1 -0
  5. package/dist/cjs/builder/serialization/control-serialization.js +3 -2
  6. package/dist/cjs/builder/serialization/control-serialization.js.map +1 -1
  7. package/dist/cjs/components/builtin/Box/Box.js +1 -0
  8. package/dist/cjs/components/builtin/Box/Box.js.map +1 -1
  9. package/dist/cjs/components/builtin/Box/animations.js +1 -0
  10. package/dist/cjs/components/builtin/Box/animations.js.map +1 -1
  11. package/dist/cjs/components/builtin/Box/register.js +2 -3
  12. package/dist/cjs/components/builtin/Box/register.js.map +1 -1
  13. package/dist/cjs/components/builtin/Button/Button.js.map +1 -1
  14. package/dist/cjs/components/builtin/Button/register.js +15 -15
  15. package/dist/cjs/components/builtin/Button/register.js.map +1 -1
  16. package/dist/cjs/components/builtin/Carousel/Carousel.js +1 -0
  17. package/dist/cjs/components/builtin/Carousel/Carousel.js.map +1 -1
  18. package/dist/cjs/components/builtin/Carousel/register.js +2 -3
  19. package/dist/cjs/components/builtin/Carousel/register.js.map +1 -1
  20. package/dist/cjs/components/builtin/Countdown/Countdown.js +1 -0
  21. package/dist/cjs/components/builtin/Countdown/Countdown.js.map +1 -1
  22. package/dist/cjs/components/builtin/Countdown/register.js +2 -3
  23. package/dist/cjs/components/builtin/Countdown/register.js.map +1 -1
  24. package/dist/cjs/components/builtin/Divider/register.js +2 -3
  25. package/dist/cjs/components/builtin/Divider/register.js.map +1 -1
  26. package/dist/cjs/components/builtin/Embed/Embed.js +1 -0
  27. package/dist/cjs/components/builtin/Embed/Embed.js.map +1 -1
  28. package/dist/cjs/components/builtin/Embed/register.js +2 -3
  29. package/dist/cjs/components/builtin/Embed/register.js.map +1 -1
  30. package/dist/cjs/components/builtin/Form/Form.js +3 -2
  31. package/dist/cjs/components/builtin/Form/Form.js.map +1 -1
  32. package/dist/cjs/components/builtin/Form/context/FormContext.js +1 -0
  33. package/dist/cjs/components/builtin/Form/context/FormContext.js.map +1 -1
  34. package/dist/cjs/components/builtin/Form/register.js +4 -4
  35. package/dist/cjs/components/builtin/Form/register.js.map +1 -1
  36. package/dist/cjs/components/builtin/Image/Image.js +1 -0
  37. package/dist/cjs/components/builtin/Image/Image.js.map +1 -1
  38. package/dist/cjs/components/builtin/Image/register.js +4 -4
  39. package/dist/cjs/components/builtin/Image/register.js.map +1 -1
  40. package/dist/cjs/components/builtin/Navigation/Navigation.js +1 -0
  41. package/dist/cjs/components/builtin/Navigation/Navigation.js.map +1 -1
  42. package/dist/cjs/components/builtin/Navigation/components/DropDownButton/index.js.map +1 -1
  43. package/dist/cjs/components/builtin/Navigation/components/MobileMenu/components/MobileDropDownButton/index.js.map +1 -1
  44. package/dist/cjs/components/builtin/Navigation/register.js +4 -4
  45. package/dist/cjs/components/builtin/Navigation/register.js.map +1 -1
  46. package/dist/cjs/components/builtin/Root/register.js +2 -3
  47. package/dist/cjs/components/builtin/Root/register.js.map +1 -1
  48. package/dist/cjs/components/builtin/SocialLinks/register.js +2 -3
  49. package/dist/cjs/components/builtin/SocialLinks/register.js.map +1 -1
  50. package/dist/cjs/components/builtin/Text/register.js +2 -3
  51. package/dist/cjs/components/builtin/Text/register.js.map +1 -1
  52. package/dist/cjs/components/builtin/Video/Video.js +1 -0
  53. package/dist/cjs/components/builtin/Video/Video.js.map +1 -1
  54. package/dist/cjs/components/builtin/Video/register.js +2 -3
  55. package/dist/cjs/components/builtin/Video/register.js.map +1 -1
  56. package/dist/cjs/components/hooks/index.js +3 -1
  57. package/dist/cjs/components/hooks/index.js.map +1 -1
  58. package/dist/cjs/components/hooks/usePageSnippets.js +93 -0
  59. package/dist/cjs/components/hooks/usePageSnippets.js.map +1 -0
  60. package/dist/cjs/components/hooks/usePropControllerLinkData.js +34 -0
  61. package/dist/cjs/components/hooks/usePropControllerLinkData.js.map +1 -0
  62. package/dist/cjs/components/hooks/useRouterLocaleSync.js +49 -0
  63. package/dist/cjs/components/hooks/useRouterLocaleSync.js.map +1 -0
  64. package/dist/cjs/components/page/BodySnippet.js +1 -1
  65. package/dist/cjs/components/page/BodySnippet.js.map +1 -1
  66. package/dist/cjs/components/page/HeadSnippet.js +134 -0
  67. package/dist/cjs/components/page/HeadSnippet.js.map +1 -0
  68. package/dist/cjs/components/page/Page.js +9 -178
  69. package/dist/cjs/components/page/Page.js.map +1 -1
  70. package/dist/cjs/components/page/PageHead.js +109 -0
  71. package/dist/cjs/components/page/PageHead.js.map +1 -0
  72. package/dist/cjs/components/shared/BackgroundsContainer/index.js +1 -0
  73. package/dist/cjs/components/shared/BackgroundsContainer/index.js.map +1 -1
  74. package/dist/cjs/components/shared/Link/index.js +5 -1
  75. package/dist/cjs/components/shared/Link/index.js.map +1 -1
  76. package/dist/cjs/controls/control.js +2 -1
  77. package/dist/cjs/controls/control.js.map +1 -1
  78. package/dist/cjs/controls/rich-text/introspection.js +2 -9
  79. package/dist/cjs/controls/rich-text/introspection.js.map +1 -1
  80. package/dist/cjs/index.js +0 -2
  81. package/dist/cjs/index.js.map +1 -1
  82. package/dist/cjs/next/api-handler/handlers/element-tree.js +17 -8
  83. package/dist/cjs/next/api-handler/handlers/element-tree.js.map +1 -1
  84. package/dist/cjs/next/api-handler/handlers/fonts.js +7 -2
  85. package/dist/cjs/next/api-handler/handlers/fonts.js.map +1 -1
  86. package/dist/cjs/next/api-handler/handlers/manifest.js +20 -8
  87. package/dist/cjs/next/api-handler/handlers/manifest.js.map +1 -1
  88. package/dist/cjs/next/api-handler/handlers/merge-translated-data.js +17 -6
  89. package/dist/cjs/next/api-handler/handlers/merge-translated-data.js.map +1 -1
  90. package/dist/cjs/next/api-handler/handlers/proxy-draft-mode.js +69 -0
  91. package/dist/cjs/next/api-handler/handlers/proxy-draft-mode.js.map +1 -0
  92. package/dist/cjs/next/api-handler/handlers/proxy-preview-mode.js +55 -44
  93. package/dist/cjs/next/api-handler/handlers/proxy-preview-mode.js.map +1 -1
  94. package/dist/cjs/next/api-handler/handlers/revalidate.js +27 -16
  95. package/dist/cjs/next/api-handler/handlers/revalidate.js.map +1 -1
  96. package/dist/cjs/next/api-handler/handlers/translatable-data.js +16 -5
  97. package/dist/cjs/next/api-handler/handlers/translatable-data.js.map +1 -1
  98. package/dist/cjs/next/api-handler/index.js +68 -34
  99. package/dist/cjs/next/api-handler/index.js.map +1 -1
  100. package/dist/cjs/next/client.js +3 -2
  101. package/dist/cjs/next/client.js.map +1 -1
  102. package/dist/cjs/next/components/head-tags.js +77 -0
  103. package/dist/cjs/next/components/head-tags.js.map +1 -0
  104. package/dist/cjs/next/components/page.js +56 -0
  105. package/dist/cjs/next/components/page.js.map +1 -0
  106. package/dist/cjs/next/context/makeswift-host-api-client.js +46 -0
  107. package/dist/cjs/next/context/makeswift-host-api-client.js.map +1 -0
  108. package/dist/cjs/next/context/react-runtime.js +44 -0
  109. package/dist/cjs/next/context/react-runtime.js.map +1 -0
  110. package/dist/cjs/next/draft-mode/draft-mode-script.js +123 -0
  111. package/dist/cjs/next/draft-mode/draft-mode-script.js.map +1 -0
  112. package/dist/cjs/next/draft-mode/index.js +56 -0
  113. package/dist/cjs/next/draft-mode/index.js.map +1 -0
  114. package/dist/cjs/next/hooks/use-is-pages-router.js +37 -0
  115. package/dist/cjs/next/hooks/use-is-pages-router.js.map +1 -0
  116. package/dist/cjs/next/index.js +10 -36
  117. package/dist/cjs/next/index.js.map +1 -1
  118. package/dist/cjs/next/preview-mode.js +4 -2
  119. package/dist/cjs/next/preview-mode.js.map +1 -1
  120. package/dist/cjs/next/root-style-registry.js +90 -0
  121. package/dist/cjs/next/root-style-registry.js.map +1 -0
  122. package/dist/cjs/next/server.js +8 -2
  123. package/dist/cjs/next/server.js.map +1 -1
  124. package/dist/cjs/prop-controllers/copy/navigation-links.js +2 -2
  125. package/dist/cjs/prop-controllers/copy/navigation-links.js.map +1 -1
  126. package/dist/cjs/prop-controllers/copy.js +4 -3
  127. package/dist/cjs/prop-controllers/copy.js.map +1 -1
  128. package/dist/cjs/prop-controllers/descriptors.js +0 -6
  129. package/dist/cjs/prop-controllers/descriptors.js.map +1 -1
  130. package/dist/cjs/prop-controllers/index.js.map +1 -1
  131. package/dist/cjs/prop-controllers/introspection.js +3 -10
  132. package/dist/cjs/prop-controllers/introspection.js.map +1 -1
  133. package/dist/cjs/runtimes/react/components/Element.js +1 -0
  134. package/dist/cjs/runtimes/react/components/Element.js.map +1 -1
  135. package/dist/cjs/runtimes/react/components/LiveProvider.js +6 -13
  136. package/dist/cjs/runtimes/react/components/LiveProvider.js.map +1 -1
  137. package/dist/cjs/runtimes/react/components/PreviewProvider.js +6 -8
  138. package/dist/cjs/runtimes/react/components/PreviewProvider.js.map +1 -1
  139. package/dist/cjs/runtimes/react/components/RuntimeProvider.js +3 -3
  140. package/dist/cjs/runtimes/react/components/RuntimeProvider.js.map +1 -1
  141. package/dist/cjs/runtimes/react/controls/link.js +1 -1
  142. package/dist/cjs/runtimes/react/controls/link.js.map +1 -1
  143. package/dist/cjs/runtimes/react/controls/rich-text/rich-text.js +2 -4
  144. package/dist/cjs/runtimes/react/controls/rich-text/rich-text.js.map +1 -1
  145. package/dist/cjs/runtimes/react/controls/rich-text-v2/rich-text-v2.js +4 -11
  146. package/dist/cjs/runtimes/react/controls/rich-text-v2/rich-text-v2.js.map +1 -1
  147. package/dist/cjs/runtimes/react/controls.js +11 -0
  148. package/dist/cjs/runtimes/react/controls.js.map +1 -1
  149. package/dist/cjs/runtimes/react/hooks/makeswift-api.js +11 -10
  150. package/dist/cjs/runtimes/react/hooks/makeswift-api.js.map +1 -1
  151. package/dist/cjs/runtimes/react/hooks/use-document-key.js +1 -0
  152. package/dist/cjs/runtimes/react/hooks/use-document-key.js.map +1 -1
  153. package/dist/cjs/runtimes/react/hooks/use-page-id.js +1 -0
  154. package/dist/cjs/runtimes/react/hooks/use-page-id.js.map +1 -1
  155. package/dist/cjs/runtimes/react/hooks/use-store.js +1 -0
  156. package/dist/cjs/runtimes/react/hooks/use-store.js.map +1 -1
  157. package/dist/cjs/runtimes/react/use-global-style.js +15 -10
  158. package/dist/cjs/runtimes/react/use-global-style.js.map +1 -1
  159. package/dist/cjs/runtimes/react/use-style.js +7 -6
  160. package/dist/cjs/runtimes/react/use-style.js.map +1 -1
  161. package/dist/cjs/state/actions.js +0 -25
  162. package/dist/cjs/state/actions.js.map +1 -1
  163. package/dist/cjs/state/react-builder-preview.js +1 -24
  164. package/dist/cjs/state/react-builder-preview.js.map +1 -1
  165. package/dist/esm/api/react.js +2 -14
  166. package/dist/esm/api/react.js.map +1 -1
  167. package/dist/esm/api/resource-types.js +8 -0
  168. package/dist/esm/api/resource-types.js.map +1 -0
  169. package/dist/esm/builder/serialization/control-serialization.js +5 -2
  170. package/dist/esm/builder/serialization/control-serialization.js.map +1 -1
  171. package/dist/esm/components/builtin/Box/Box.js +1 -0
  172. package/dist/esm/components/builtin/Box/Box.js.map +1 -1
  173. package/dist/esm/components/builtin/Box/animations.js +1 -0
  174. package/dist/esm/components/builtin/Box/animations.js.map +1 -1
  175. package/dist/esm/components/builtin/Box/register.js +2 -3
  176. package/dist/esm/components/builtin/Box/register.js.map +1 -1
  177. package/dist/esm/components/builtin/Button/Button.js.map +1 -1
  178. package/dist/esm/components/builtin/Button/register.js +4 -4
  179. package/dist/esm/components/builtin/Button/register.js.map +1 -1
  180. package/dist/esm/components/builtin/Carousel/Carousel.js +1 -0
  181. package/dist/esm/components/builtin/Carousel/Carousel.js.map +1 -1
  182. package/dist/esm/components/builtin/Carousel/register.js +2 -3
  183. package/dist/esm/components/builtin/Carousel/register.js.map +1 -1
  184. package/dist/esm/components/builtin/Countdown/Countdown.js +1 -0
  185. package/dist/esm/components/builtin/Countdown/Countdown.js.map +1 -1
  186. package/dist/esm/components/builtin/Countdown/register.js +2 -3
  187. package/dist/esm/components/builtin/Countdown/register.js.map +1 -1
  188. package/dist/esm/components/builtin/Divider/register.js +2 -3
  189. package/dist/esm/components/builtin/Divider/register.js.map +1 -1
  190. package/dist/esm/components/builtin/Embed/Embed.js +1 -0
  191. package/dist/esm/components/builtin/Embed/Embed.js.map +1 -1
  192. package/dist/esm/components/builtin/Embed/register.js +2 -3
  193. package/dist/esm/components/builtin/Embed/register.js.map +1 -1
  194. package/dist/esm/components/builtin/Form/Form.js +3 -2
  195. package/dist/esm/components/builtin/Form/Form.js.map +1 -1
  196. package/dist/esm/components/builtin/Form/context/FormContext.js +1 -0
  197. package/dist/esm/components/builtin/Form/context/FormContext.js.map +1 -1
  198. package/dist/esm/components/builtin/Form/register.js +4 -4
  199. package/dist/esm/components/builtin/Form/register.js.map +1 -1
  200. package/dist/esm/components/builtin/Image/Image.js +1 -0
  201. package/dist/esm/components/builtin/Image/Image.js.map +1 -1
  202. package/dist/esm/components/builtin/Image/register.js +4 -4
  203. package/dist/esm/components/builtin/Image/register.js.map +1 -1
  204. package/dist/esm/components/builtin/Navigation/Navigation.js +1 -0
  205. package/dist/esm/components/builtin/Navigation/Navigation.js.map +1 -1
  206. package/dist/esm/components/builtin/Navigation/components/DropDownButton/index.js.map +1 -1
  207. package/dist/esm/components/builtin/Navigation/components/MobileMenu/components/MobileDropDownButton/index.js.map +1 -1
  208. package/dist/esm/components/builtin/Navigation/register.js +4 -4
  209. package/dist/esm/components/builtin/Navigation/register.js.map +1 -1
  210. package/dist/esm/components/builtin/Root/register.js +2 -3
  211. package/dist/esm/components/builtin/Root/register.js.map +1 -1
  212. package/dist/esm/components/builtin/SocialLinks/register.js +2 -3
  213. package/dist/esm/components/builtin/SocialLinks/register.js.map +1 -1
  214. package/dist/esm/components/builtin/Text/register.js +2 -3
  215. package/dist/esm/components/builtin/Text/register.js.map +1 -1
  216. package/dist/esm/components/builtin/Video/Video.js +1 -0
  217. package/dist/esm/components/builtin/Video/Video.js.map +1 -1
  218. package/dist/esm/components/builtin/Video/register.js +2 -3
  219. package/dist/esm/components/builtin/Video/register.js.map +1 -1
  220. package/dist/esm/components/hooks/index.js +1 -0
  221. package/dist/esm/components/hooks/index.js.map +1 -1
  222. package/dist/esm/components/hooks/usePageSnippets.js +59 -0
  223. package/dist/esm/components/hooks/usePageSnippets.js.map +1 -0
  224. package/dist/esm/components/hooks/usePropControllerLinkData.js +12 -0
  225. package/dist/esm/components/hooks/usePropControllerLinkData.js.map +1 -0
  226. package/dist/esm/components/hooks/useRouterLocaleSync.js +25 -0
  227. package/dist/esm/components/hooks/useRouterLocaleSync.js.map +1 -0
  228. package/dist/esm/components/page/BodySnippet.js +1 -1
  229. package/dist/esm/components/page/BodySnippet.js.map +1 -1
  230. package/dist/esm/components/page/HeadSnippet.js +100 -0
  231. package/dist/esm/components/page/HeadSnippet.js.map +1 -0
  232. package/dist/esm/components/page/Page.js +7 -166
  233. package/dist/esm/components/page/Page.js.map +1 -1
  234. package/dist/esm/components/page/PageHead.js +85 -0
  235. package/dist/esm/components/page/PageHead.js.map +1 -0
  236. package/dist/esm/components/shared/BackgroundsContainer/index.js +1 -0
  237. package/dist/esm/components/shared/BackgroundsContainer/index.js.map +1 -1
  238. package/dist/esm/components/shared/Link/index.js +5 -1
  239. package/dist/esm/components/shared/Link/index.js.map +1 -1
  240. package/dist/esm/controls/control.js +2 -1
  241. package/dist/esm/controls/control.js.map +1 -1
  242. package/dist/esm/controls/rich-text/introspection.js +2 -9
  243. package/dist/esm/controls/rich-text/introspection.js.map +1 -1
  244. package/dist/esm/index.js +0 -2
  245. package/dist/esm/index.js.map +1 -1
  246. package/dist/esm/next/api-handler/handlers/element-tree.js +17 -8
  247. package/dist/esm/next/api-handler/handlers/element-tree.js.map +1 -1
  248. package/dist/esm/next/api-handler/handlers/fonts.js +7 -2
  249. package/dist/esm/next/api-handler/handlers/fonts.js.map +1 -1
  250. package/dist/esm/next/api-handler/handlers/manifest.js +20 -8
  251. package/dist/esm/next/api-handler/handlers/manifest.js.map +1 -1
  252. package/dist/esm/next/api-handler/handlers/merge-translated-data.js +17 -6
  253. package/dist/esm/next/api-handler/handlers/merge-translated-data.js.map +1 -1
  254. package/dist/esm/next/api-handler/handlers/proxy-draft-mode.js +49 -0
  255. package/dist/esm/next/api-handler/handlers/proxy-draft-mode.js.map +1 -0
  256. package/dist/esm/next/api-handler/handlers/proxy-preview-mode.js +55 -44
  257. package/dist/esm/next/api-handler/handlers/proxy-preview-mode.js.map +1 -1
  258. package/dist/esm/next/api-handler/handlers/revalidate.js +27 -16
  259. package/dist/esm/next/api-handler/handlers/revalidate.js.map +1 -1
  260. package/dist/esm/next/api-handler/handlers/translatable-data.js +16 -5
  261. package/dist/esm/next/api-handler/handlers/translatable-data.js.map +1 -1
  262. package/dist/esm/next/api-handler/index.js +68 -34
  263. package/dist/esm/next/api-handler/index.js.map +1 -1
  264. package/dist/esm/next/client.js +3 -2
  265. package/dist/esm/next/client.js.map +1 -1
  266. package/dist/esm/next/components/head-tags.js +40 -0
  267. package/dist/esm/next/components/head-tags.js.map +1 -0
  268. package/dist/esm/next/components/page.js +32 -0
  269. package/dist/esm/next/components/page.js.map +1 -0
  270. package/dist/esm/next/context/makeswift-host-api-client.js +21 -0
  271. package/dist/esm/next/context/makeswift-host-api-client.js.map +1 -0
  272. package/dist/esm/next/context/react-runtime.js +19 -0
  273. package/dist/esm/next/context/react-runtime.js.map +1 -0
  274. package/dist/esm/next/draft-mode/draft-mode-script.js +99 -0
  275. package/dist/esm/next/draft-mode/draft-mode-script.js.map +1 -0
  276. package/dist/esm/next/draft-mode/index.js +30 -0
  277. package/dist/esm/next/draft-mode/index.js.map +1 -0
  278. package/dist/esm/next/hooks/use-is-pages-router.js +13 -0
  279. package/dist/esm/next/hooks/use-is-pages-router.js.map +1 -0
  280. package/dist/esm/next/index.js +5 -32
  281. package/dist/esm/next/index.js.map +1 -1
  282. package/dist/esm/next/preview-mode.js +2 -1
  283. package/dist/esm/next/preview-mode.js.map +1 -1
  284. package/dist/esm/next/root-style-registry.js +55 -0
  285. package/dist/esm/next/root-style-registry.js.map +1 -0
  286. package/dist/esm/next/server.js +5 -1
  287. package/dist/esm/next/server.js.map +1 -1
  288. package/dist/esm/prop-controllers/copy/navigation-links.js +2 -2
  289. package/dist/esm/prop-controllers/copy/navigation-links.js.map +1 -1
  290. package/dist/esm/prop-controllers/copy.js +4 -3
  291. package/dist/esm/prop-controllers/copy.js.map +1 -1
  292. package/dist/esm/prop-controllers/descriptors.js +0 -5
  293. package/dist/esm/prop-controllers/descriptors.js.map +1 -1
  294. package/dist/esm/prop-controllers/index.js.map +1 -1
  295. package/dist/esm/prop-controllers/introspection.js +6 -10
  296. package/dist/esm/prop-controllers/introspection.js.map +1 -1
  297. package/dist/esm/runtimes/react/components/Element.js +1 -0
  298. package/dist/esm/runtimes/react/components/Element.js.map +1 -1
  299. package/dist/esm/runtimes/react/components/LiveProvider.js +6 -13
  300. package/dist/esm/runtimes/react/components/LiveProvider.js.map +1 -1
  301. package/dist/esm/runtimes/react/components/PreviewProvider.js +6 -8
  302. package/dist/esm/runtimes/react/components/PreviewProvider.js.map +1 -1
  303. package/dist/esm/runtimes/react/components/RuntimeProvider.js +3 -3
  304. package/dist/esm/runtimes/react/components/RuntimeProvider.js.map +1 -1
  305. package/dist/esm/runtimes/react/controls/link.js +1 -1
  306. package/dist/esm/runtimes/react/controls/link.js.map +1 -1
  307. package/dist/esm/runtimes/react/controls/rich-text/rich-text.js +3 -5
  308. package/dist/esm/runtimes/react/controls/rich-text/rich-text.js.map +1 -1
  309. package/dist/esm/runtimes/react/controls/rich-text-v2/rich-text-v2.js +4 -11
  310. package/dist/esm/runtimes/react/controls/rich-text-v2/rich-text-v2.js.map +1 -1
  311. package/dist/esm/runtimes/react/controls.js +13 -1
  312. package/dist/esm/runtimes/react/controls.js.map +1 -1
  313. package/dist/esm/runtimes/react/hooks/makeswift-api.js +11 -10
  314. package/dist/esm/runtimes/react/hooks/makeswift-api.js.map +1 -1
  315. package/dist/esm/runtimes/react/hooks/use-document-key.js +1 -0
  316. package/dist/esm/runtimes/react/hooks/use-document-key.js.map +1 -1
  317. package/dist/esm/runtimes/react/hooks/use-page-id.js +1 -0
  318. package/dist/esm/runtimes/react/hooks/use-page-id.js.map +1 -1
  319. package/dist/esm/runtimes/react/hooks/use-store.js +1 -0
  320. package/dist/esm/runtimes/react/hooks/use-store.js.map +1 -1
  321. package/dist/esm/runtimes/react/use-global-style.js +8 -3
  322. package/dist/esm/runtimes/react/use-global-style.js.map +1 -1
  323. package/dist/esm/runtimes/react/use-style.js +2 -1
  324. package/dist/esm/runtimes/react/use-style.js.map +1 -1
  325. package/dist/esm/state/actions.js +0 -22
  326. package/dist/esm/state/actions.js.map +1 -1
  327. package/dist/esm/state/react-builder-preview.js +2 -28
  328. package/dist/esm/state/react-builder-preview.js.map +1 -1
  329. package/dist/types/api/react.d.ts +1 -9
  330. package/dist/types/api/react.d.ts.map +1 -1
  331. package/dist/types/api/resource-types.d.ts +20 -0
  332. package/dist/types/api/resource-types.d.ts.map +1 -0
  333. package/dist/types/builder/serialization/control-serialization.d.ts +9 -8
  334. package/dist/types/builder/serialization/control-serialization.d.ts.map +1 -1
  335. package/dist/types/components/builtin/Box/Box.d.ts.map +1 -1
  336. package/dist/types/components/builtin/Box/animations.d.ts.map +1 -1
  337. package/dist/types/components/builtin/Box/register.d.ts.map +1 -1
  338. package/dist/types/components/builtin/Button/Button.d.ts +3 -2
  339. package/dist/types/components/builtin/Button/Button.d.ts.map +1 -1
  340. package/dist/types/components/builtin/Button/register.d.ts.map +1 -1
  341. package/dist/types/components/builtin/Carousel/Carousel.d.ts.map +1 -1
  342. package/dist/types/components/builtin/Carousel/register.d.ts.map +1 -1
  343. package/dist/types/components/builtin/Countdown/Countdown.d.ts.map +1 -1
  344. package/dist/types/components/builtin/Countdown/register.d.ts.map +1 -1
  345. package/dist/types/components/builtin/Divider/register.d.ts.map +1 -1
  346. package/dist/types/components/builtin/Embed/Embed.d.ts.map +1 -1
  347. package/dist/types/components/builtin/Embed/register.d.ts.map +1 -1
  348. package/dist/types/components/builtin/Form/Form.d.ts +3 -2
  349. package/dist/types/components/builtin/Form/Form.d.ts.map +1 -1
  350. package/dist/types/components/builtin/Form/components/Field/components/Checkbox/index.d.ts +1 -1
  351. package/dist/types/components/builtin/Form/context/FormContext.d.ts.map +1 -1
  352. package/dist/types/components/builtin/Form/register.d.ts.map +1 -1
  353. package/dist/types/components/builtin/Image/Image.d.ts +3 -2
  354. package/dist/types/components/builtin/Image/Image.d.ts.map +1 -1
  355. package/dist/types/components/builtin/Image/register.d.ts.map +1 -1
  356. package/dist/types/components/builtin/Navigation/Navigation.d.ts +3 -2
  357. package/dist/types/components/builtin/Navigation/Navigation.d.ts.map +1 -1
  358. package/dist/types/components/builtin/Navigation/components/DropDownButton/index.d.ts +3 -2
  359. package/dist/types/components/builtin/Navigation/components/DropDownButton/index.d.ts.map +1 -1
  360. package/dist/types/components/builtin/Navigation/components/MobileMenu/components/MobileDropDownButton/index.d.ts +3 -2
  361. package/dist/types/components/builtin/Navigation/components/MobileMenu/components/MobileDropDownButton/index.d.ts.map +1 -1
  362. package/dist/types/components/builtin/Navigation/register.d.ts.map +1 -1
  363. package/dist/types/components/builtin/Root/register.d.ts.map +1 -1
  364. package/dist/types/components/builtin/SocialLinks/register.d.ts.map +1 -1
  365. package/dist/types/components/builtin/Text/register.d.ts.map +1 -1
  366. package/dist/types/components/builtin/Video/Video.d.ts.map +1 -1
  367. package/dist/types/components/builtin/Video/register.d.ts.map +1 -1
  368. package/dist/types/components/hooks/index.d.ts +1 -0
  369. package/dist/types/components/hooks/index.d.ts.map +1 -1
  370. package/dist/types/components/hooks/usePageSnippets.d.ts +36 -0
  371. package/dist/types/components/hooks/usePageSnippets.d.ts.map +1 -0
  372. package/dist/types/components/hooks/usePropControllerLinkData.d.ts +3 -0
  373. package/dist/types/components/hooks/usePropControllerLinkData.d.ts.map +1 -0
  374. package/dist/types/components/hooks/useRouterLocaleSync.d.ts +2 -0
  375. package/dist/types/components/hooks/useRouterLocaleSync.d.ts.map +1 -0
  376. package/dist/types/components/page/BodySnippet.d.ts.map +1 -1
  377. package/dist/types/components/page/HeadSnippet.d.ts +7 -0
  378. package/dist/types/components/page/HeadSnippet.d.ts.map +1 -0
  379. package/dist/types/components/page/Page.d.ts.map +1 -1
  380. package/dist/types/components/page/PageHead.d.ts +8 -0
  381. package/dist/types/components/page/PageHead.d.ts.map +1 -0
  382. package/dist/types/components/shared/BackgroundsContainer/index.d.ts.map +1 -1
  383. package/dist/types/components/shared/Link/index.d.ts +1 -1
  384. package/dist/types/components/shared/Link/index.d.ts.map +1 -1
  385. package/dist/types/controls/control.d.ts.map +1 -1
  386. package/dist/types/controls/rich-text/introspection.d.ts.map +1 -1
  387. package/dist/types/index.d.ts +1 -1
  388. package/dist/types/index.d.ts.map +1 -1
  389. package/dist/types/next/api-handler/handlers/element-tree.d.ts +9 -1
  390. package/dist/types/next/api-handler/handlers/element-tree.d.ts.map +1 -1
  391. package/dist/types/next/api-handler/handlers/fonts.d.ts +10 -1
  392. package/dist/types/next/api-handler/handlers/fonts.d.ts.map +1 -1
  393. package/dist/types/next/api-handler/handlers/manifest.d.ts +9 -0
  394. package/dist/types/next/api-handler/handlers/manifest.d.ts.map +1 -1
  395. package/dist/types/next/api-handler/handlers/merge-translated-data.d.ts +7 -0
  396. package/dist/types/next/api-handler/handlers/merge-translated-data.d.ts.map +1 -1
  397. package/dist/types/next/api-handler/handlers/proxy-draft-mode.d.ts +20 -0
  398. package/dist/types/next/api-handler/handlers/proxy-draft-mode.d.ts.map +1 -0
  399. package/dist/types/next/api-handler/handlers/proxy-preview-mode.d.ts +14 -2
  400. package/dist/types/next/api-handler/handlers/proxy-preview-mode.d.ts.map +1 -1
  401. package/dist/types/next/api-handler/handlers/revalidate.d.ts +9 -0
  402. package/dist/types/next/api-handler/handlers/revalidate.d.ts.map +1 -1
  403. package/dist/types/next/api-handler/handlers/translatable-data.d.ts +7 -0
  404. package/dist/types/next/api-handler/handlers/translatable-data.d.ts.map +1 -1
  405. package/dist/types/next/api-handler/index.d.ts +11 -3
  406. package/dist/types/next/api-handler/index.d.ts.map +1 -1
  407. package/dist/types/next/client.d.ts.map +1 -1
  408. package/dist/types/next/components/head-tags.d.ts +19 -0
  409. package/dist/types/next/components/head-tags.d.ts.map +1 -0
  410. package/dist/types/next/components/page.d.ts +7 -0
  411. package/dist/types/next/components/page.d.ts.map +1 -0
  412. package/dist/types/next/context/makeswift-host-api-client.d.ts +8 -0
  413. package/dist/types/next/context/makeswift-host-api-client.d.ts.map +1 -0
  414. package/dist/types/next/context/react-runtime.d.ts +8 -0
  415. package/dist/types/next/context/react-runtime.d.ts.map +1 -0
  416. package/dist/types/next/draft-mode/draft-mode-script.d.ts +6 -0
  417. package/dist/types/next/draft-mode/draft-mode-script.d.ts.map +1 -0
  418. package/dist/types/next/draft-mode/index.d.ts +15 -0
  419. package/dist/types/next/draft-mode/index.d.ts.map +1 -0
  420. package/dist/types/next/hooks/use-is-pages-router.d.ts +2 -0
  421. package/dist/types/next/hooks/use-is-pages-router.d.ts.map +1 -0
  422. package/dist/types/next/index.d.ts +4 -9
  423. package/dist/types/next/index.d.ts.map +1 -1
  424. package/dist/types/next/preview-mode.d.ts +1 -1
  425. package/dist/types/next/preview-mode.d.ts.map +1 -1
  426. package/dist/types/next/root-style-registry.d.ts +7 -0
  427. package/dist/types/next/root-style-registry.d.ts.map +1 -0
  428. package/dist/types/next/server.d.ts +2 -0
  429. package/dist/types/next/server.d.ts.map +1 -1
  430. package/dist/types/prop-controllers/copy/navigation-links.d.ts.map +1 -1
  431. package/dist/types/prop-controllers/copy.d.ts.map +1 -1
  432. package/dist/types/prop-controllers/descriptors.d.ts +7 -66
  433. package/dist/types/prop-controllers/descriptors.d.ts.map +1 -1
  434. package/dist/types/prop-controllers/index.d.ts +2 -1
  435. package/dist/types/prop-controllers/index.d.ts.map +1 -1
  436. package/dist/types/prop-controllers/introspection.d.ts.map +1 -1
  437. package/dist/types/runtimes/react/components/Element.d.ts.map +1 -1
  438. package/dist/types/runtimes/react/components/LiveProvider.d.ts +3 -5
  439. package/dist/types/runtimes/react/components/LiveProvider.d.ts.map +1 -1
  440. package/dist/types/runtimes/react/components/PreviewProvider.d.ts +3 -5
  441. package/dist/types/runtimes/react/components/PreviewProvider.d.ts.map +1 -1
  442. package/dist/types/runtimes/react/components/RuntimeProvider.d.ts +2 -2
  443. package/dist/types/runtimes/react/components/RuntimeProvider.d.ts.map +1 -1
  444. package/dist/types/runtimes/react/controls/link.d.ts.map +1 -1
  445. package/dist/types/runtimes/react/controls/rich-text/rich-text.d.ts.map +1 -1
  446. package/dist/types/runtimes/react/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
  447. package/dist/types/runtimes/react/controls.d.ts.map +1 -1
  448. package/dist/types/runtimes/react/hooks/makeswift-api.d.ts +2 -1
  449. package/dist/types/runtimes/react/hooks/makeswift-api.d.ts.map +1 -1
  450. package/dist/types/runtimes/react/hooks/use-document-key.d.ts.map +1 -1
  451. package/dist/types/runtimes/react/hooks/use-page-id.d.ts.map +1 -1
  452. package/dist/types/runtimes/react/hooks/use-store.d.ts.map +1 -1
  453. package/dist/types/runtimes/react/use-global-style.d.ts.map +1 -1
  454. package/dist/types/runtimes/react/use-style.d.ts.map +1 -1
  455. package/dist/types/state/actions.d.ts +1 -19
  456. package/dist/types/state/actions.d.ts.map +1 -1
  457. package/dist/types/state/react-builder-preview.d.ts +3 -3
  458. package/dist/types/state/react-builder-preview.d.ts.map +1 -1
  459. package/next/plugin/package.json +1 -0
  460. package/package.json +7 -10
  461. package/dist/cjs/next/dynamic.js +0 -52
  462. package/dist/cjs/next/dynamic.js.map +0 -1
  463. package/dist/cjs/prop-controllers/copy/link.js +0 -63
  464. package/dist/cjs/prop-controllers/copy/link.js.map +0 -1
  465. package/dist/esm/next/dynamic.js +0 -31
  466. package/dist/esm/next/dynamic.js.map +0 -1
  467. package/dist/esm/prop-controllers/copy/link.js +0 -39
  468. package/dist/esm/prop-controllers/copy/link.js.map +0 -1
  469. package/dist/types/next/dynamic.d.ts +0 -13
  470. package/dist/types/next/dynamic.d.ts.map +0 -1
  471. package/dist/types/prop-controllers/copy/link.d.ts +0 -4
  472. package/dist/types/prop-controllers/copy/link.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/controls/control.ts"],"sourcesContent":["import { CheckboxControlData, CheckboxControlDefinition } from './checkbox'\nimport { ColorControlData, ColorControlDefinition, ColorControlType, copyColorData } from './color'\nimport { ComboboxControlData, ComboboxControlDefinition } from './combobox'\nimport { ImageControlData, ImageControlDefinition, copyImageData, ImageControlType } from './image'\nimport { LinkControlData, LinkControlDefinition, copyLinkData, LinkControlType } from './link'\nimport {\n ListControlData,\n ListControlDefinition,\n copyListData,\n ListControlType,\n getListTranslatableData,\n mergeListTranslatedData,\n ListControlTranslationDto,\n} from './list'\nimport { NumberControlData, NumberControlDefinition } from './number'\nimport { SelectControlData, SelectControlDefinition } from './select'\nimport {\n ShapeControlData,\n ShapeControlDefinition,\n copyShapeData,\n ShapeControlType,\n getShapeTranslatableData,\n mergeShapeTranslatedData,\n ShapeControlTranslationDto,\n} from './shape'\nimport { TextAreaControlData, TextAreaControlDefinition, TextAreaControlType } from './text-area'\nimport {\n TextInputControlData,\n TextInputControlDefinition,\n TextInputControlType,\n} from './text-input'\nimport { copyStyleData, StyleControlData, StyleControlDefinition, StyleControlType } from './style'\nimport {\n copySlotData,\n mergeSlotControlTranslatedData,\n mergeSlotData,\n SlotControlData,\n SlotControlDefinition,\n SlotControlType,\n} from './slot'\n\nimport {\n Descriptor,\n GridValue,\n IndexSignatureHack,\n Types,\n mergeGridPropControllerTranslatedData,\n} from '../prop-controllers/descriptors'\nimport { copy as propControllerCopy } from '../prop-controllers/copy'\nimport { CopyContext, Data, MergeContext, MergeTranslatableDataContext } from '../state/react-page'\nimport {\n RichTextControlData,\n RichTextControlDefinition,\n RichTextControlType,\n copyRichTextData,\n richTextDTOtoDAO,\n} from './rich-text'\nimport { PropControllerDescriptor } from '../prop-controllers'\n\nimport { richTextV2DescendentsToData } from './rich-text-v2/dto'\nimport { copyRichTextV2Data } from './rich-text-v2/copy'\nimport {\n RichTextV2ControlData,\n RichTextV2ControlDefinition,\n RichTextV2ControlType,\n isRichTextV1Data,\n} from './rich-text-v2/rich-text-v2'\n\nimport { StyleV2ControlData, StyleV2ControlDefinition } from './style-v2'\nimport { IconRadioGroupControlData, IconRadioGroupControlDefinition } from './icon-radio-group'\nimport { TypographyControlData, TypographyControlDefinition } from './typography'\nimport {\n RichTextV2ControlTranslationDto,\n getRichTextV2TranslatableData,\n mergeRichTextV2TranslatedData,\n} from './rich-text-v2/translation'\n\nexport type ControlDefinition =\n | CheckboxControlDefinition\n | NumberControlDefinition\n | TextInputControlDefinition\n | TextAreaControlDefinition\n | SelectControlDefinition\n | ColorControlDefinition\n | IconRadioGroupControlDefinition\n | ImageControlDefinition\n | ComboboxControlDefinition\n | ShapeControlDefinition\n | ListControlDefinition<any>\n | LinkControlDefinition\n | SlotControlDefinition\n | ShapeControlDefinition\n | RichTextControlDefinition\n | RichTextV2ControlDefinition\n | StyleControlDefinition\n | StyleV2ControlDefinition\n | TypographyControlDefinition\n\nexport type ControlDefinitionData<T extends ControlDefinition> = T extends CheckboxControlDefinition\n ? CheckboxControlData\n : T extends NumberControlDefinition\n ? NumberControlData\n : T extends TextInputControlDefinition\n ? TextInputControlData\n : T extends TextAreaControlDefinition\n ? TextAreaControlData\n : T extends SelectControlDefinition\n ? SelectControlData<T>\n : T extends ColorControlDefinition\n ? ColorControlData\n : T extends IconRadioGroupControlDefinition\n ? IconRadioGroupControlData<T>\n : T extends ImageControlDefinition\n ? ImageControlData\n : T extends ComboboxControlDefinition\n ? ComboboxControlData<T>\n : T extends ShapeControlDefinition\n ? ShapeControlData<T>\n : T extends ListControlDefinition\n ? ListControlData<T>\n : T extends LinkControlDefinition\n ? LinkControlData\n : T extends RichTextControlDefinition\n ? IndexSignatureHack<RichTextControlData>\n : T extends RichTextV2ControlDefinition\n ? RichTextV2ControlData\n : T extends StyleControlDefinition\n ? StyleControlData\n : T extends StyleV2ControlDefinition\n ? StyleV2ControlData\n : T extends TypographyControlDefinition\n ? TypographyControlData\n : never\n\nexport function copy(definition: Descriptor | ControlDefinition, value: any, context: CopyContext) {\n switch (definition.type) {\n case Types.Backgrounds:\n case Types.Grid:\n case Types.NavigationLinks:\n case Types.Link:\n case Types.Shadows:\n case Types.Image:\n case Types.Images:\n case Types.ResponsiveColor:\n case Types.TableFormFields:\n case Types.Table:\n case Types.Border:\n case Types.RichText:\n case Types.ElementID:\n return propControllerCopy(definition, value, context)\n case RichTextControlType:\n return copyRichTextData(value, context)\n case RichTextV2ControlType:\n return copyRichTextV2Data(\n isRichTextV1Data(value) ? richTextV2DescendentsToData(richTextDTOtoDAO(value)) : value,\n context,\n )\n case ColorControlType:\n return copyColorData(value, context)\n case ImageControlType:\n return copyImageData(value, context)\n case LinkControlType:\n return copyLinkData(value, context)\n case ShapeControlType:\n return copyShapeData(definition, value, context)\n case ListControlType:\n return copyListData(definition, value, context)\n case StyleControlType:\n return copyStyleData(value, context)\n case SlotControlType:\n return copySlotData(value, context)\n default:\n return value\n }\n}\n\nexport function merge(\n definition: PropControllerDescriptor,\n a: Data,\n b: Data = a,\n context: MergeContext,\n): Data {\n switch (definition.type) {\n case SlotControlType:\n return mergeSlotData(a as SlotControlData, b as SlotControlData, context)\n\n default:\n return b\n }\n}\n\nexport function getTranslatableData(definition: Descriptor | ControlDefinition, data: Data): Data {\n switch (definition.type) {\n case Types.TextInput:\n case Types.TextArea:\n case TextInputControlType:\n case TextAreaControlType:\n return data\n\n case RichTextV2ControlType:\n const richTextData = data as RichTextV2ControlData | RichTextControlData\n\n if (isRichTextV1Data(richTextData)) return null\n\n return getRichTextV2TranslatableData(definition, richTextData as RichTextV2ControlData)\n\n case ListControlType:\n if (data == null) return null\n\n return getListTranslatableData(definition, data as ListControlData)\n\n case ShapeControlType:\n if (data == null) return null\n\n return getShapeTranslatableData(definition, data as ShapeControlData)\n\n default:\n return null\n }\n}\n\nexport function mergeTranslatedData(\n definition: PropControllerDescriptor,\n data: Data,\n translatedData: Data,\n context: MergeTranslatableDataContext,\n): Data {\n if (data == null) return data\n\n switch (definition.type) {\n case Types.TextInput:\n case Types.TextArea:\n case TextInputControlType:\n case TextAreaControlType:\n if (translatedData == null) return data\n\n return translatedData\n\n case Types.Grid:\n return mergeGridPropControllerTranslatedData(data as GridValue, context)\n\n case SlotControlType:\n return mergeSlotControlTranslatedData(data as SlotControlData, context)\n\n case RichTextV2ControlType:\n if (translatedData == null) return data\n\n return mergeRichTextV2TranslatedData(\n definition,\n data as RichTextV2ControlData,\n translatedData as RichTextV2ControlTranslationDto,\n )\n\n case ListControlType:\n if (translatedData == null) return data\n\n return mergeListTranslatedData(\n definition,\n data as ListControlData,\n translatedData as ListControlTranslationDto,\n context,\n )\n\n case ShapeControlType:\n if (translatedData == null) return data\n\n return mergeShapeTranslatedData(\n definition,\n data as ShapeControlData,\n translatedData as ShapeControlTranslationDto,\n context,\n )\n\n default:\n return data\n }\n}\n"],"mappings":"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","names":["import_copy","propControllerCopy"]}
1
+ {"version":3,"sources":["../../../src/controls/control.ts"],"sourcesContent":["import { CheckboxControlData, CheckboxControlDefinition } from './checkbox'\nimport { ColorControlData, ColorControlDefinition, ColorControlType, copyColorData } from './color'\nimport { ComboboxControlData, ComboboxControlDefinition } from './combobox'\nimport { ImageControlData, ImageControlDefinition, copyImageData, ImageControlType } from './image'\nimport { LinkControlData, LinkControlDefinition, copyLinkData, LinkControlType } from './link'\nimport {\n ListControlData,\n ListControlDefinition,\n copyListData,\n ListControlType,\n getListTranslatableData,\n mergeListTranslatedData,\n ListControlTranslationDto,\n} from './list'\nimport { NumberControlData, NumberControlDefinition } from './number'\nimport { SelectControlData, SelectControlDefinition } from './select'\nimport {\n ShapeControlData,\n ShapeControlDefinition,\n copyShapeData,\n ShapeControlType,\n getShapeTranslatableData,\n mergeShapeTranslatedData,\n ShapeControlTranslationDto,\n} from './shape'\nimport { TextAreaControlData, TextAreaControlDefinition, TextAreaControlType } from './text-area'\nimport {\n TextInputControlData,\n TextInputControlDefinition,\n TextInputControlType,\n} from './text-input'\nimport { copyStyleData, StyleControlData, StyleControlDefinition, StyleControlType } from './style'\nimport {\n copySlotData,\n mergeSlotControlTranslatedData,\n mergeSlotData,\n SlotControlData,\n SlotControlDefinition,\n SlotControlType,\n} from './slot'\n\nimport {\n Descriptor,\n GridValue,\n IndexSignatureHack,\n Types,\n mergeGridPropControllerTranslatedData,\n} from '../prop-controllers/descriptors'\nimport { Types as PropControllerTypes } from '@makeswift/prop-controllers'\nimport { copy as propControllerCopy } from '../prop-controllers/copy'\nimport { CopyContext, Data, MergeContext, MergeTranslatableDataContext } from '../state/react-page'\nimport {\n RichTextControlData,\n RichTextControlDefinition,\n RichTextControlType,\n copyRichTextData,\n richTextDTOtoDAO,\n} from './rich-text'\nimport { PropControllerDescriptor } from '../prop-controllers'\n\nimport { richTextV2DescendentsToData } from './rich-text-v2/dto'\nimport { copyRichTextV2Data } from './rich-text-v2/copy'\nimport {\n RichTextV2ControlData,\n RichTextV2ControlDefinition,\n RichTextV2ControlType,\n isRichTextV1Data,\n} from './rich-text-v2/rich-text-v2'\n\nimport { StyleV2ControlData, StyleV2ControlDefinition } from './style-v2'\nimport { IconRadioGroupControlData, IconRadioGroupControlDefinition } from './icon-radio-group'\nimport { TypographyControlData, TypographyControlDefinition } from './typography'\nimport {\n RichTextV2ControlTranslationDto,\n getRichTextV2TranslatableData,\n mergeRichTextV2TranslatedData,\n} from './rich-text-v2/translation'\n\nexport type ControlDefinition =\n | CheckboxControlDefinition\n | NumberControlDefinition\n | TextInputControlDefinition\n | TextAreaControlDefinition\n | SelectControlDefinition\n | ColorControlDefinition\n | IconRadioGroupControlDefinition\n | ImageControlDefinition\n | ComboboxControlDefinition\n | ShapeControlDefinition\n | ListControlDefinition<any>\n | LinkControlDefinition\n | SlotControlDefinition\n | ShapeControlDefinition\n | RichTextControlDefinition\n | RichTextV2ControlDefinition\n | StyleControlDefinition\n | StyleV2ControlDefinition\n | TypographyControlDefinition\n\nexport type ControlDefinitionData<T extends ControlDefinition> = T extends CheckboxControlDefinition\n ? CheckboxControlData\n : T extends NumberControlDefinition\n ? NumberControlData\n : T extends TextInputControlDefinition\n ? TextInputControlData\n : T extends TextAreaControlDefinition\n ? TextAreaControlData\n : T extends SelectControlDefinition\n ? SelectControlData<T>\n : T extends ColorControlDefinition\n ? ColorControlData\n : T extends IconRadioGroupControlDefinition\n ? IconRadioGroupControlData<T>\n : T extends ImageControlDefinition\n ? ImageControlData\n : T extends ComboboxControlDefinition\n ? ComboboxControlData<T>\n : T extends ShapeControlDefinition\n ? ShapeControlData<T>\n : T extends ListControlDefinition\n ? ListControlData<T>\n : T extends LinkControlDefinition\n ? LinkControlData\n : T extends RichTextControlDefinition\n ? IndexSignatureHack<RichTextControlData>\n : T extends RichTextV2ControlDefinition\n ? RichTextV2ControlData\n : T extends StyleControlDefinition\n ? StyleControlData\n : T extends StyleV2ControlDefinition\n ? StyleV2ControlData\n : T extends TypographyControlDefinition\n ? TypographyControlData\n : never\n\nexport function copy(definition: Descriptor | ControlDefinition, value: any, context: CopyContext) {\n switch (definition.type) {\n case Types.Backgrounds:\n case Types.Grid:\n case Types.NavigationLinks:\n case PropControllerTypes.Link:\n case Types.Shadows:\n case Types.Image:\n case Types.Images:\n case Types.ResponsiveColor:\n case Types.TableFormFields:\n case Types.Table:\n case Types.Border:\n case Types.RichText:\n case Types.ElementID:\n return propControllerCopy(definition, value, context)\n case RichTextControlType:\n return copyRichTextData(value, context)\n case RichTextV2ControlType:\n return copyRichTextV2Data(\n isRichTextV1Data(value) ? richTextV2DescendentsToData(richTextDTOtoDAO(value)) : value,\n context,\n )\n case ColorControlType:\n return copyColorData(value, context)\n case ImageControlType:\n return copyImageData(value, context)\n case LinkControlType:\n return copyLinkData(value, context)\n case ShapeControlType:\n return copyShapeData(definition, value, context)\n case ListControlType:\n return copyListData(definition, value, context)\n case StyleControlType:\n return copyStyleData(value, context)\n case SlotControlType:\n return copySlotData(value, context)\n default:\n return value\n }\n}\n\nexport function merge(\n definition: PropControllerDescriptor,\n a: Data,\n b: Data = a,\n context: MergeContext,\n): Data {\n switch (definition.type) {\n case SlotControlType:\n return mergeSlotData(a as SlotControlData, b as SlotControlData, context)\n\n default:\n return b\n }\n}\n\nexport function getTranslatableData(definition: Descriptor | ControlDefinition, data: Data): Data {\n switch (definition.type) {\n case Types.TextInput:\n case Types.TextArea:\n case TextInputControlType:\n case TextAreaControlType:\n return data\n\n case RichTextV2ControlType:\n const richTextData = data as RichTextV2ControlData | RichTextControlData\n\n if (isRichTextV1Data(richTextData)) return null\n\n return getRichTextV2TranslatableData(definition, richTextData as RichTextV2ControlData)\n\n case ListControlType:\n if (data == null) return null\n\n return getListTranslatableData(definition, data as ListControlData)\n\n case ShapeControlType:\n if (data == null) return null\n\n return getShapeTranslatableData(definition, data as ShapeControlData)\n\n default:\n return null\n }\n}\n\nexport function mergeTranslatedData(\n definition: PropControllerDescriptor,\n data: Data,\n translatedData: Data,\n context: MergeTranslatableDataContext,\n): Data {\n if (data == null) return data\n\n switch (definition.type) {\n case Types.TextInput:\n case Types.TextArea:\n case TextInputControlType:\n case TextAreaControlType:\n if (translatedData == null) return data\n\n return translatedData\n\n case Types.Grid:\n return mergeGridPropControllerTranslatedData(data as GridValue, context)\n\n case SlotControlType:\n return mergeSlotControlTranslatedData(data as SlotControlData, context)\n\n case RichTextV2ControlType:\n if (translatedData == null) return data\n\n return mergeRichTextV2TranslatedData(\n definition,\n data as RichTextV2ControlData,\n translatedData as RichTextV2ControlTranslationDto,\n )\n\n case ListControlType:\n if (translatedData == null) return data\n\n return mergeListTranslatedData(\n definition,\n data as ListControlData,\n translatedData as ListControlTranslationDto,\n context,\n )\n\n case ShapeControlType:\n if (translatedData == null) return data\n\n return mergeShapeTranslatedData(\n definition,\n data as ShapeControlData,\n translatedData as ShapeControlTranslationDto,\n context,\n )\n\n default:\n return data\n }\n}\n"],"mappings":"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","names":["import_copy","PropControllerTypes","propControllerCopy"]}
@@ -24,6 +24,7 @@ __export(introspection_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(introspection_exports);
26
26
  var import_isNonNullable = require("../../utils/isNonNullable");
27
+ var import_prop_controllers = require("@makeswift/prop-controllers");
27
28
  function getRichTextSwatchIds(value) {
28
29
  if (value == null || value.document == null)
29
30
  return [];
@@ -86,21 +87,13 @@ function getRichTextPageIds(value) {
86
87
  switch (inline.type) {
87
88
  case "link": {
88
89
  const nodePageIds = inline.nodes?.flatMap(getNodePageIds) ?? [];
89
- const dataPageIds = inline.data ? getLinkDataPageIds(inline.data) : [];
90
+ const dataPageIds = inline.data ? (0, import_prop_controllers.getLinkPropControllerPageIds)(inline.data) : [];
90
91
  return [...nodePageIds, ...dataPageIds];
91
92
  }
92
93
  default:
93
94
  return inline.nodes?.flatMap(getNodePageIds) ?? [];
94
95
  }
95
96
  }
96
- function getLinkDataPageIds(link) {
97
- switch (link.type) {
98
- case "OPEN_PAGE":
99
- return link.payload.pageId == null ? [] : [link.payload.pageId];
100
- default:
101
- return [];
102
- }
103
- }
104
97
  }
105
98
  // Annotate the CommonJS export names for ESM import in node:
106
99
  0 && (module.exports = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/controls/rich-text/introspection.ts"],"sourcesContent":["import { RichTextControlData } from './rich-text'\nimport { InlineJSON, MarkJSON, NodeJSON } from './dto-types'\nimport { Typography } from '../../api'\nimport { isNonNullable } from '../../utils/isNonNullable'\nimport { LinkValue } from '../../prop-controllers'\n\nexport function getRichTextSwatchIds(value: RichTextControlData) {\n if (value == null || value.document == null) return []\n\n return getNodeSwatchIds(value.document)\n\n function getNodeSwatchIds(node: NodeJSON): string[] {\n switch (node.object) {\n case 'document':\n case 'block':\n case 'inline':\n return node.nodes?.flatMap(getNodeSwatchIds) ?? []\n\n case 'text':\n return node.marks?.flatMap(getMarkSwatchIds) ?? []\n\n default:\n return []\n }\n }\n\n function getTypographyStyleSwatchIds(style: Typography['style'] | null | undefined): string[] {\n return (\n style\n ?.map(override => override.value)\n .flatMap(typographyStyle => typographyStyle.color?.swatchId)\n .filter(isNonNullable) ?? []\n )\n }\n\n function getMarkSwatchIds(mark: MarkJSON): string[] {\n return getTypographyStyleSwatchIds(mark.data?.value?.style)\n }\n}\n\nexport function getRichTextTypographyIds(value: RichTextControlData) {\n if (value == null || value.document == null) return []\n\n return getNodeSwatchIds(value.document)\n\n function getNodeSwatchIds(node: NodeJSON): string[] {\n switch (node.object) {\n case 'document':\n case 'block':\n case 'inline':\n return node.nodes?.flatMap(getNodeSwatchIds) ?? []\n\n case 'text':\n return node.marks?.flatMap(getMarkSwatchIds) ?? []\n\n default:\n return []\n }\n }\n\n function getMarkSwatchIds(mark: MarkJSON): string[] {\n return [mark.data?.value?.id].filter(isNonNullable)\n }\n}\n\nexport function getRichTextPageIds(value: RichTextControlData) {\n if (value == null || value.document == null) return []\n\n return getNodePageIds(value.document)\n\n function getNodePageIds(node: NodeJSON): string[] {\n switch (node.object) {\n case 'document':\n case 'block':\n return node.nodes?.flatMap(getNodePageIds) ?? []\n case 'inline':\n return getInlinePageIds(node)\n default:\n return []\n }\n }\n\n function getInlinePageIds(inline: InlineJSON): string[] {\n switch (inline.type) {\n case 'link': {\n const nodePageIds = inline.nodes?.flatMap(getNodePageIds) ?? []\n const dataPageIds = inline.data ? getLinkDataPageIds(inline.data as LinkValue) : []\n\n return [...nodePageIds, ...dataPageIds]\n }\n\n default:\n return inline.nodes?.flatMap(getNodePageIds) ?? []\n }\n }\n\n function getLinkDataPageIds(link: LinkValue): string[] {\n switch (link.type) {\n case 'OPEN_PAGE':\n return link.payload.pageId == null ? [] : [link.payload.pageId]\n\n default:\n return []\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,2BAA8B;AAGvB,SAAS,qBAAqB,OAA4B;AAC/D,MAAI,SAAS,QAAQ,MAAM,YAAY;AAAM,WAAO,CAAC;AAErD,SAAO,iBAAiB,MAAM,QAAQ;AAEtC,WAAS,iBAAiB,MAA0B;AAClD,YAAQ,KAAK,QAAQ;AAAA,MACnB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO,KAAK,OAAO,QAAQ,gBAAgB,KAAK,CAAC;AAAA,MAEnD,KAAK;AACH,eAAO,KAAK,OAAO,QAAQ,gBAAgB,KAAK,CAAC;AAAA,MAEnD;AACE,eAAO,CAAC;AAAA,IACZ;AAAA,EACF;AAEA,WAAS,4BAA4B,OAAyD;AAC5F,WACE,OACI,IAAI,cAAY,SAAS,KAAK,EAC/B,QAAQ,qBAAmB,gBAAgB,OAAO,QAAQ,EAC1D,OAAO,kCAAa,KAAK,CAAC;AAAA,EAEjC;AAEA,WAAS,iBAAiB,MAA0B;AAClD,WAAO,4BAA4B,KAAK,MAAM,OAAO,KAAK;AAAA,EAC5D;AACF;AAEO,SAAS,yBAAyB,OAA4B;AACnE,MAAI,SAAS,QAAQ,MAAM,YAAY;AAAM,WAAO,CAAC;AAErD,SAAO,iBAAiB,MAAM,QAAQ;AAEtC,WAAS,iBAAiB,MAA0B;AAClD,YAAQ,KAAK,QAAQ;AAAA,MACnB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO,KAAK,OAAO,QAAQ,gBAAgB,KAAK,CAAC;AAAA,MAEnD,KAAK;AACH,eAAO,KAAK,OAAO,QAAQ,gBAAgB,KAAK,CAAC;AAAA,MAEnD;AACE,eAAO,CAAC;AAAA,IACZ;AAAA,EACF;AAEA,WAAS,iBAAiB,MAA0B;AAClD,WAAO,CAAC,KAAK,MAAM,OAAO,EAAE,EAAE,OAAO,kCAAa;AAAA,EACpD;AACF;AAEO,SAAS,mBAAmB,OAA4B;AAC7D,MAAI,SAAS,QAAQ,MAAM,YAAY;AAAM,WAAO,CAAC;AAErD,SAAO,eAAe,MAAM,QAAQ;AAEpC,WAAS,eAAe,MAA0B;AAChD,YAAQ,KAAK,QAAQ;AAAA,MACnB,KAAK;AAAA,MACL,KAAK;AACH,eAAO,KAAK,OAAO,QAAQ,cAAc,KAAK,CAAC;AAAA,MACjD,KAAK;AACH,eAAO,iBAAiB,IAAI;AAAA,MAC9B;AACE,eAAO,CAAC;AAAA,IACZ;AAAA,EACF;AAEA,WAAS,iBAAiB,QAA8B;AACtD,YAAQ,OAAO,MAAM;AAAA,MACnB,KAAK,QAAQ;AACX,cAAM,cAAc,OAAO,OAAO,QAAQ,cAAc,KAAK,CAAC;AAC9D,cAAM,cAAc,OAAO,OAAO,mBAAmB,OAAO,IAAiB,IAAI,CAAC;AAElF,eAAO,CAAC,GAAG,aAAa,GAAG,WAAW;AAAA,MACxC;AAAA,MAEA;AACE,eAAO,OAAO,OAAO,QAAQ,cAAc,KAAK,CAAC;AAAA,IACrD;AAAA,EACF;AAEA,WAAS,mBAAmB,MAA2B;AACrD,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAK;AACH,eAAO,KAAK,QAAQ,UAAU,OAAO,CAAC,IAAI,CAAC,KAAK,QAAQ,MAAM;AAAA,MAEhE;AACE,eAAO,CAAC;AAAA,IACZ;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/controls/rich-text/introspection.ts"],"sourcesContent":["import { RichTextControlData } from './rich-text'\nimport { InlineJSON, MarkJSON, NodeJSON } from './dto-types'\nimport { Typography } from '../../api'\nimport { isNonNullable } from '../../utils/isNonNullable'\nimport { LinkData, getLinkPropControllerPageIds } from '@makeswift/prop-controllers'\n\nexport function getRichTextSwatchIds(value: RichTextControlData) {\n if (value == null || value.document == null) return []\n\n return getNodeSwatchIds(value.document)\n\n function getNodeSwatchIds(node: NodeJSON): string[] {\n switch (node.object) {\n case 'document':\n case 'block':\n case 'inline':\n return node.nodes?.flatMap(getNodeSwatchIds) ?? []\n\n case 'text':\n return node.marks?.flatMap(getMarkSwatchIds) ?? []\n\n default:\n return []\n }\n }\n\n function getTypographyStyleSwatchIds(style: Typography['style'] | null | undefined): string[] {\n return (\n style\n ?.map(override => override.value)\n .flatMap(typographyStyle => typographyStyle.color?.swatchId)\n .filter(isNonNullable) ?? []\n )\n }\n\n function getMarkSwatchIds(mark: MarkJSON): string[] {\n return getTypographyStyleSwatchIds(mark.data?.value?.style)\n }\n}\n\nexport function getRichTextTypographyIds(value: RichTextControlData) {\n if (value == null || value.document == null) return []\n\n return getNodeSwatchIds(value.document)\n\n function getNodeSwatchIds(node: NodeJSON): string[] {\n switch (node.object) {\n case 'document':\n case 'block':\n case 'inline':\n return node.nodes?.flatMap(getNodeSwatchIds) ?? []\n\n case 'text':\n return node.marks?.flatMap(getMarkSwatchIds) ?? []\n\n default:\n return []\n }\n }\n\n function getMarkSwatchIds(mark: MarkJSON): string[] {\n return [mark.data?.value?.id].filter(isNonNullable)\n }\n}\n\nexport function getRichTextPageIds(value: RichTextControlData) {\n if (value == null || value.document == null) return []\n\n return getNodePageIds(value.document)\n\n function getNodePageIds(node: NodeJSON): string[] {\n switch (node.object) {\n case 'document':\n case 'block':\n return node.nodes?.flatMap(getNodePageIds) ?? []\n case 'inline':\n return getInlinePageIds(node)\n default:\n return []\n }\n }\n\n function getInlinePageIds(inline: InlineJSON): string[] {\n switch (inline.type) {\n case 'link': {\n const nodePageIds = inline.nodes?.flatMap(getNodePageIds) ?? []\n const dataPageIds = inline.data ? getLinkPropControllerPageIds(inline.data as LinkData) : []\n\n return [...nodePageIds, ...dataPageIds]\n }\n\n default:\n return inline.nodes?.flatMap(getNodePageIds) ?? []\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,2BAA8B;AAC9B,8BAAuD;AAEhD,SAAS,qBAAqB,OAA4B;AAC/D,MAAI,SAAS,QAAQ,MAAM,YAAY;AAAM,WAAO,CAAC;AAErD,SAAO,iBAAiB,MAAM,QAAQ;AAEtC,WAAS,iBAAiB,MAA0B;AAClD,YAAQ,KAAK,QAAQ;AAAA,MACnB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO,KAAK,OAAO,QAAQ,gBAAgB,KAAK,CAAC;AAAA,MAEnD,KAAK;AACH,eAAO,KAAK,OAAO,QAAQ,gBAAgB,KAAK,CAAC;AAAA,MAEnD;AACE,eAAO,CAAC;AAAA,IACZ;AAAA,EACF;AAEA,WAAS,4BAA4B,OAAyD;AAC5F,WACE,OACI,IAAI,cAAY,SAAS,KAAK,EAC/B,QAAQ,qBAAmB,gBAAgB,OAAO,QAAQ,EAC1D,OAAO,kCAAa,KAAK,CAAC;AAAA,EAEjC;AAEA,WAAS,iBAAiB,MAA0B;AAClD,WAAO,4BAA4B,KAAK,MAAM,OAAO,KAAK;AAAA,EAC5D;AACF;AAEO,SAAS,yBAAyB,OAA4B;AACnE,MAAI,SAAS,QAAQ,MAAM,YAAY;AAAM,WAAO,CAAC;AAErD,SAAO,iBAAiB,MAAM,QAAQ;AAEtC,WAAS,iBAAiB,MAA0B;AAClD,YAAQ,KAAK,QAAQ;AAAA,MACnB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO,KAAK,OAAO,QAAQ,gBAAgB,KAAK,CAAC;AAAA,MAEnD,KAAK;AACH,eAAO,KAAK,OAAO,QAAQ,gBAAgB,KAAK,CAAC;AAAA,MAEnD;AACE,eAAO,CAAC;AAAA,IACZ;AAAA,EACF;AAEA,WAAS,iBAAiB,MAA0B;AAClD,WAAO,CAAC,KAAK,MAAM,OAAO,EAAE,EAAE,OAAO,kCAAa;AAAA,EACpD;AACF;AAEO,SAAS,mBAAmB,OAA4B;AAC7D,MAAI,SAAS,QAAQ,MAAM,YAAY;AAAM,WAAO,CAAC;AAErD,SAAO,eAAe,MAAM,QAAQ;AAEpC,WAAS,eAAe,MAA0B;AAChD,YAAQ,KAAK,QAAQ;AAAA,MACnB,KAAK;AAAA,MACL,KAAK;AACH,eAAO,KAAK,OAAO,QAAQ,cAAc,KAAK,CAAC;AAAA,MACjD,KAAK;AACH,eAAO,iBAAiB,IAAI;AAAA,MAC9B;AACE,eAAO,CAAC;AAAA,IACZ;AAAA,EACF;AAEA,WAAS,iBAAiB,QAA8B;AACtD,YAAQ,OAAO,MAAM;AAAA,MACnB,KAAK,QAAQ;AACX,cAAM,cAAc,OAAO,OAAO,QAAQ,cAAc,KAAK,CAAC;AAC9D,cAAM,cAAc,OAAO,WAAO,sDAA6B,OAAO,IAAgB,IAAI,CAAC;AAE3F,eAAO,CAAC,GAAG,aAAa,GAAG,WAAW;AAAA,MACxC;AAAA,MAEA;AACE,eAAO,OAAO,OAAO,QAAQ,cAAc,KAAK,CAAC;AAAA,IACrD;AAAA,EACF;AACF;","names":[]}
package/dist/cjs/index.js CHANGED
@@ -25,7 +25,6 @@ __export(src_exports, {
25
25
  changeApiResource: () => import_actions.changeApiResource,
26
26
  changeDocument: () => import_actions.changeDocument,
27
27
  changeDocumentElementScrollTop: () => import_actions.changeDocumentElementScrollTop,
28
- changePathname: () => import_actions.changePathname,
29
28
  cleanUp: () => import_actions.cleanUp,
30
29
  createDocument: () => import_react_page.createDocument,
31
30
  evictApiResource: () => import_actions.evictApiResource,
@@ -53,7 +52,6 @@ var import_constants = require("./components/builtin/constants");
53
52
  changeApiResource,
54
53
  changeDocument,
55
54
  changeDocumentElementScrollTop,
56
- changePathname,
57
55
  cleanUp,
58
56
  createDocument,
59
57
  evictApiResource,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["export type { Action, SetBreakpointsAction } from './state/actions'\nexport {\n ActionTypes,\n changeDocument,\n changeDocumentElementScrollTop,\n cleanUp,\n init,\n messageHostPropController,\n changeApiResource,\n evictApiResource,\n registerDocument,\n scrollDocumentElement,\n unregisterDocument,\n setBuilderEditMode,\n changePathname,\n builderPointerMove,\n setBreakpoints,\n setLocale,\n setLocalizedResourceId,\n} from './state/actions'\nexport type { Operation } from './state/modules/read-write-documents'\nexport type { ComponentMeta } from './state/modules/components-meta'\nexport { ComponentIcon } from './state/modules/components-meta'\nexport type {\n PropControllerDescriptor,\n PropControllerDescriptorValueType,\n} from './prop-controllers'\nexport type { Element } from './state/react-page'\nexport { createDocument } from './state/react-page'\nexport { MakeswiftComponentType } from './components/builtin/constants'\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAkBO;AAGP,6BAA8B;AAM9B,wBAA+B;AAC/B,uBAAuC;","names":[]}
1
+ {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["export type { Action, SetBreakpointsAction } from './state/actions'\nexport {\n ActionTypes,\n changeDocument,\n changeDocumentElementScrollTop,\n cleanUp,\n init,\n messageHostPropController,\n changeApiResource,\n evictApiResource,\n registerDocument,\n scrollDocumentElement,\n unregisterDocument,\n setBuilderEditMode,\n builderPointerMove,\n setBreakpoints,\n setLocale,\n setLocalizedResourceId,\n} from './state/actions'\nexport type { Operation } from './state/modules/read-write-documents'\nexport type { ComponentMeta } from './state/modules/components-meta'\nexport { ComponentIcon } from './state/modules/components-meta'\nexport type {\n PropControllerDescriptor,\n PropControllerDescriptorValueType,\n} from './prop-controllers'\nexport type { Element } from './state/react-page'\nexport { createDocument } from './state/react-page'\nexport { MakeswiftComponentType } from './components/builtin/constants'\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAiBO;AAGP,6BAA8B;AAM9B,wBAA+B;AAC/B,uBAAuC;","names":[]}
@@ -21,18 +21,27 @@ __export(element_tree_exports, {
21
21
  default: () => elementTree
22
22
  });
23
23
  module.exports = __toCommonJS(element_tree_exports);
24
- var import_react = require("../../../react");
25
- async function elementTree(req, res) {
26
- const elementTree2 = req.body.elementTree;
27
- const replacementContext = req.body.replacementContext;
24
+ var import_server = require("next/server");
25
+ var import_ts_pattern = require("ts-pattern");
26
+ const routeHandlerPattern = [import_ts_pattern.P.instanceOf(Request), import_ts_pattern.P.any, import_ts_pattern.P.any];
27
+ const apiRoutePattern = [import_ts_pattern.P.any, import_ts_pattern.P.any, import_ts_pattern.P.any];
28
+ async function elementTree(...args) {
29
+ const [, , runtime] = args;
30
+ const body = await (0, import_ts_pattern.match)(args).with(routeHandlerPattern, ([request]) => request.json()).with(apiRoutePattern, ([req]) => req.body).exhaustive();
31
+ const elementTree2 = body.elementTree;
32
+ const replacementContext = body.replacementContext;
28
33
  if (elementTree2 == null) {
29
- return res.status(400).json({ message: "elementTree must be defined" });
34
+ const status = 400;
35
+ const body2 = { message: "elementTree must be defined" };
36
+ return (0, import_ts_pattern.match)(args).with(routeHandlerPattern, () => import_server.NextResponse.json(body2, { status })).with(apiRoutePattern, ([, res]) => res.status(status).json(body2)).exhaustive();
30
37
  }
31
38
  if (replacementContext == null) {
32
- return res.status(400).json({ message: "replacementContext must be defined" });
39
+ const status = 400;
40
+ const body2 = { message: "replacementContext must be defined" };
41
+ return (0, import_ts_pattern.match)(args).with(routeHandlerPattern, () => import_server.NextResponse.json(body2, { status })).with(apiRoutePattern, ([, res]) => res.status(status).json(body2)).exhaustive();
33
42
  }
34
- const generatedElementTree = import_react.ReactRuntime.copyElementTree(elementTree2, replacementContext);
43
+ const generatedElementTree = runtime.copyElementTree(elementTree2, replacementContext);
35
44
  const response = { elementTree: generatedElementTree };
36
- return res.json(response);
45
+ return (0, import_ts_pattern.match)(args).with(routeHandlerPattern, () => import_server.NextResponse.json(response)).with(apiRoutePattern, ([, res]) => res.json(response)).exhaustive();
37
46
  }
38
47
  //# sourceMappingURL=element-tree.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/next/api-handler/handlers/element-tree.ts"],"sourcesContent":["import { NextApiRequest, NextApiResponse } from 'next'\nimport { ReactRuntime } from '../../../react'\nimport { Element } from '../../../state/react-page'\n\ntype ElementTreeResult = { elementTree: Element }\n\ntype ElementTreeError = { message: string }\n\nexport type ElementTreeResponse = ElementTreeResult | ElementTreeError\n\nexport default async function elementTree(\n req: NextApiRequest,\n res: NextApiResponse<ElementTreeResponse>,\n): Promise<void> {\n const elementTree = req.body.elementTree\n const replacementContext = req.body.replacementContext\n\n if (elementTree == null) {\n return res.status(400).json({ message: 'elementTree must be defined' })\n }\n\n if (replacementContext == null) {\n return res.status(400).json({ message: 'replacementContext must be defined' })\n }\n\n const generatedElementTree = ReactRuntime.copyElementTree(elementTree, replacementContext)\n\n const response = { elementTree: generatedElementTree }\n return res.json(response)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAA6B;AAS7B,eAAO,YACL,KACA,KACe;AACf,QAAMA,eAAc,IAAI,KAAK;AAC7B,QAAM,qBAAqB,IAAI,KAAK;AAEpC,MAAIA,gBAAe,MAAM;AACvB,WAAO,IAAI,OAAO,GAAG,EAAE,KAAK,EAAE,SAAS,8BAA8B,CAAC;AAAA,EACxE;AAEA,MAAI,sBAAsB,MAAM;AAC9B,WAAO,IAAI,OAAO,GAAG,EAAE,KAAK,EAAE,SAAS,qCAAqC,CAAC;AAAA,EAC/E;AAEA,QAAM,uBAAuB,0BAAa,gBAAgBA,cAAa,kBAAkB;AAEzF,QAAM,WAAW,EAAE,aAAa,qBAAqB;AACrD,SAAO,IAAI,KAAK,QAAQ;AAC1B;","names":["elementTree"]}
1
+ {"version":3,"sources":["../../../../../src/next/api-handler/handlers/element-tree.ts"],"sourcesContent":["import { NextApiRequest, NextApiResponse } from 'next'\nimport { ReactRuntime } from '../../../react'\nimport { Element } from '../../../state/react-page'\nimport { NextRequest, NextResponse } from 'next/server'\nimport { P, match } from 'ts-pattern'\n\ntype Context = { params: { [key: string]: string | string[] } }\n\ntype ElementTreeResult = { elementTree: Element }\n\ntype ElementTreeError = { message: string }\n\nexport type ElementTreeResponse = ElementTreeResult | ElementTreeError\n\ntype ElementTreeHandlerArgs =\n | [request: NextRequest, context: Context, runtime: ReactRuntime]\n | [req: NextApiRequest, res: NextApiResponse<ElementTreeResponse>, runtime: ReactRuntime]\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 elementTree(\n request: NextRequest,\n context: Context,\n runtime: ReactRuntime,\n): Promise<NextResponse<ElementTreeResponse>>\nexport default async function elementTree(\n req: NextApiRequest,\n res: NextApiResponse<ElementTreeResponse>,\n runtime: ReactRuntime,\n): Promise<void>\nexport default async function elementTree(\n ...args: ElementTreeHandlerArgs\n): Promise<NextResponse<ElementTreeResponse> | void> {\n const [, , runtime] = args\n\n const body = await match(args)\n .with(routeHandlerPattern, ([request]) => request.json())\n .with(apiRoutePattern, ([req]) => req.body)\n .exhaustive()\n const elementTree = body.elementTree\n const replacementContext = body.replacementContext\n\n if (elementTree == null) {\n const status = 400\n const body = { message: 'elementTree must be defined' }\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 (replacementContext == null) {\n const status = 400\n const body = { message: 'replacementContext must be defined' }\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 const generatedElementTree = runtime.copyElementTree(elementTree, replacementContext)\n\n const response = { elementTree: generatedElementTree }\n\n return match(args)\n .with(routeHandlerPattern, () => NextResponse.json(response))\n .with(apiRoutePattern, ([, res]) => res.json(response))\n .exhaustive()\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,oBAA0C;AAC1C,wBAAyB;AAczB,MAAM,sBAAsB,CAAC,oBAAE,WAAW,OAAO,GAAG,oBAAE,KAAK,oBAAE,GAAG;AAChE,MAAM,kBAAkB,CAAC,oBAAE,KAAK,oBAAE,KAAK,oBAAE,GAAG;AAY5C,eAAO,eACF,MACgD;AACnD,QAAM,CAAC,EAAE,EAAE,OAAO,IAAI;AAEtB,QAAM,OAAO,UAAM,yBAAM,IAAI,EAC1B,KAAK,qBAAqB,CAAC,CAAC,OAAO,MAAM,QAAQ,KAAK,CAAC,EACvD,KAAK,iBAAiB,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,EACzC,WAAW;AACd,QAAMA,eAAc,KAAK;AACzB,QAAM,qBAAqB,KAAK;AAEhC,MAAIA,gBAAe,MAAM;AACvB,UAAM,SAAS;AACf,UAAMC,QAAO,EAAE,SAAS,8BAA8B;AAEtD,eAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,MAAM,2BAAa,KAAKA,OAAM,EAAE,OAAO,CAAC,CAAC,EACnE,KAAK,iBAAiB,CAAC,CAAC,EAAE,GAAG,MAAM,IAAI,OAAO,MAAM,EAAE,KAAKA,KAAI,CAAC,EAChE,WAAW;AAAA,EAChB;AAEA,MAAI,sBAAsB,MAAM;AAC9B,UAAM,SAAS;AACf,UAAMA,QAAO,EAAE,SAAS,qCAAqC;AAE7D,eAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,MAAM,2BAAa,KAAKA,OAAM,EAAE,OAAO,CAAC,CAAC,EACnE,KAAK,iBAAiB,CAAC,CAAC,EAAE,GAAG,MAAM,IAAI,OAAO,MAAM,EAAE,KAAKA,KAAI,CAAC,EAChE,WAAW;AAAA,EAChB;AAEA,QAAM,uBAAuB,QAAQ,gBAAgBD,cAAa,kBAAkB;AAEpF,QAAM,WAAW,EAAE,aAAa,qBAAqB;AAErD,aAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,MAAM,2BAAa,KAAK,QAAQ,CAAC,EAC3D,KAAK,iBAAiB,CAAC,CAAC,EAAE,GAAG,MAAM,IAAI,KAAK,QAAQ,CAAC,EACrD,WAAW;AAChB;","names":["elementTree","body"]}
@@ -21,8 +21,13 @@ __export(fonts_exports, {
21
21
  default: () => fonts
22
22
  });
23
23
  module.exports = __toCommonJS(fonts_exports);
24
- async function fonts(_req, res, { getFonts } = {}) {
24
+ var import_server = require("next/server");
25
+ var import_ts_pattern = require("ts-pattern");
26
+ const routeHandlerPattern = [import_ts_pattern.P.instanceOf(Request), import_ts_pattern.P.any, import_ts_pattern.P.any];
27
+ const apiRoutePattern = [import_ts_pattern.P.any, import_ts_pattern.P.any, import_ts_pattern.P.any];
28
+ async function fonts(...args) {
29
+ const [, , { getFonts }] = args;
25
30
  const fonts2 = await getFonts?.() ?? [];
26
- return res.json(fonts2);
31
+ return (0, import_ts_pattern.match)(args).with(routeHandlerPattern, () => import_server.NextResponse.json(fonts2)).with(apiRoutePattern, ([, res]) => res.json(fonts2)).exhaustive();
27
32
  }
28
33
  //# sourceMappingURL=fonts.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/next/api-handler/handlers/fonts.ts"],"sourcesContent":["import { NextApiRequest, NextApiResponse } from 'next'\n\ntype FontVariant = { weight: string; style: 'italic' | 'normal'; src?: string }\n\nexport type Font = {\n family: string\n label?: string\n variants: FontVariant[]\n}\n\ntype Fonts = Font[]\n\nexport type GetFonts = () => Fonts | Promise<Fonts>\n\nexport type FontsResponse = Fonts\n\nexport default async function fonts(\n _req: NextApiRequest,\n res: NextApiResponse<FontsResponse>,\n { getFonts }: { getFonts?: GetFonts } = {},\n): Promise<void> {\n const fonts = (await getFonts?.()) ?? []\n\n return res.json(fonts)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA,eAAO,MACL,MACA,KACA,EAAE,SAAS,IAA6B,CAAC,GAC1B;AACf,QAAMA,SAAS,MAAM,WAAW,KAAM,CAAC;AAEvC,SAAO,IAAI,KAAKA,MAAK;AACvB;","names":["fonts"]}
1
+ {"version":3,"sources":["../../../../../src/next/api-handler/handlers/fonts.ts"],"sourcesContent":["import { NextApiRequest, NextApiResponse } from 'next'\nimport { NextRequest, NextResponse } from 'next/server'\nimport { P, match } from 'ts-pattern'\n\ntype Context = { params: { [key: string]: string | string[] } }\n\ntype FontVariant = { weight: string; style: 'italic' | 'normal'; src?: string }\n\nexport type Font = {\n family: string\n label?: string\n variants: FontVariant[]\n}\n\ntype Fonts = Font[]\n\nexport type GetFonts = () => Fonts | Promise<Fonts>\n\nexport type FontsResponse = Fonts\n\ntype FontsHandlerArgs =\n | [request: NextRequest, context: Context, params: { getFonts?: GetFonts }]\n | [req: NextApiRequest, res: NextApiResponse<FontsResponse>, params: { getFonts?: GetFonts }]\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 fonts(\n request: NextRequest,\n context: Context,\n { getFonts }: { getFonts?: GetFonts },\n): Promise<NextResponse<FontsResponse>>\nexport default async function fonts(\n _req: NextApiRequest,\n res: NextApiResponse<FontsResponse>,\n { getFonts }: { getFonts?: GetFonts },\n): Promise<void>\nexport default async function fonts(\n ...args: FontsHandlerArgs\n): Promise<NextResponse<FontsResponse> | void> {\n const [, , { getFonts }] = args\n\n const fonts = (await getFonts?.()) ?? []\n\n return match(args)\n .with(routeHandlerPattern, () => NextResponse.json(fonts))\n .with(apiRoutePattern, ([, res]) => res.json(fonts))\n .exhaustive()\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAA0C;AAC1C,wBAAyB;AAsBzB,MAAM,sBAAsB,CAAC,oBAAE,WAAW,OAAO,GAAG,oBAAE,KAAK,oBAAE,GAAG;AAChE,MAAM,kBAAkB,CAAC,oBAAE,KAAK,oBAAE,KAAK,oBAAE,GAAG;AAY5C,eAAO,SACF,MAC0C;AAC7C,QAAM,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,IAAI;AAE3B,QAAMA,SAAS,MAAM,WAAW,KAAM,CAAC;AAEvC,aAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,MAAM,2BAAa,KAAKA,MAAK,CAAC,EACxD,KAAK,iBAAiB,CAAC,CAAC,EAAE,GAAG,MAAM,IAAI,KAAKA,MAAK,CAAC,EAClD,WAAW;AAChB;","names":["fonts"]}
@@ -21,20 +21,32 @@ __export(manifest_exports, {
21
21
  default: () => handler
22
22
  });
23
23
  module.exports = __toCommonJS(manifest_exports);
24
- async function handler(req, res, { apiKey }) {
25
- if (req.query.secret !== apiKey) {
26
- return res.status(401).json({ message: "Unauthorized" });
24
+ var import_server = require("next/server");
25
+ var import_ts_pattern = require("ts-pattern");
26
+ const routeHandlerPattern = [import_ts_pattern.P.instanceOf(Request), import_ts_pattern.P.any, import_ts_pattern.P.any];
27
+ const apiRoutePattern = [import_ts_pattern.P.any, import_ts_pattern.P.any, import_ts_pattern.P.any];
28
+ async function handler(...args) {
29
+ const [, , { apiKey }] = args;
30
+ const secret = (0, import_ts_pattern.match)(args).with(routeHandlerPattern, ([request]) => request.nextUrl.searchParams.get("secret")).with(apiRoutePattern, ([req]) => req.query.secret).exhaustive();
31
+ if (secret !== apiKey) {
32
+ const status = 401;
33
+ const body2 = { message: "Unauthorized" };
34
+ return (0, import_ts_pattern.match)(args).with(routeHandlerPattern, () => import_server.NextResponse.json(body2, { status })).with(apiRoutePattern, ([, res]) => res.status(status).json(body2)).exhaustive();
27
35
  }
28
- return res.json({
29
- version: "0.14.5",
30
- previewMode: true,
36
+ const supportsPreviewMode = (0, import_ts_pattern.match)(args).with(routeHandlerPattern, () => false).with(apiRoutePattern, () => true).exhaustive();
37
+ const supportsDraftMode = (0, import_ts_pattern.match)(args).with(routeHandlerPattern, () => true).with(apiRoutePattern, () => false).exhaustive();
38
+ const body = {
39
+ version: "0.16.0-canary.0",
40
+ previewMode: supportsPreviewMode,
41
+ draftMode: supportsDraftMode,
31
42
  interactionMode: true,
32
- clientSideNavigation: true,
43
+ clientSideNavigation: false,
33
44
  elementFromPoint: false,
34
45
  customBreakpoints: true,
35
46
  siteVersions: true,
36
47
  unstable_siteVersions: true,
37
48
  localizedPageSSR: true
38
- });
49
+ };
50
+ return (0, import_ts_pattern.match)(args).with(routeHandlerPattern, () => import_server.NextResponse.json(body)).with(apiRoutePattern, ([, res]) => res.json(body)).exhaustive();
39
51
  }
40
52
  //# sourceMappingURL=manifest.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/next/api-handler/handlers/manifest.ts"],"sourcesContent":["import { NextApiRequest, NextApiResponse } from 'next'\n\nexport type Manifest = {\n version: string\n previewMode: boolean\n interactionMode: boolean\n clientSideNavigation: boolean\n elementFromPoint: boolean\n customBreakpoints: boolean\n siteVersions: boolean\n unstable_siteVersions: boolean\n localizedPageSSR: boolean\n}\n\ntype ManifestError = { message: string }\n\nexport type ManifestResponse = Manifest | ManifestError\n\nexport default async function handler(\n req: NextApiRequest,\n res: NextApiResponse<ManifestResponse>,\n { apiKey }: { apiKey: string },\n): Promise<void> {\n if (req.query.secret !== apiKey) {\n return res.status(401).json({ message: 'Unauthorized' })\n }\n\n return res.json({\n version: PACKAGE_VERSION,\n previewMode: true,\n interactionMode: true,\n clientSideNavigation: true,\n elementFromPoint: false,\n customBreakpoints: true,\n siteVersions: true,\n unstable_siteVersions: true,\n localizedPageSSR: true,\n })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBA,eAAO,QACL,KACA,KACA,EAAE,OAAO,GACM;AACf,MAAI,IAAI,MAAM,WAAW,QAAQ;AAC/B,WAAO,IAAI,OAAO,GAAG,EAAE,KAAK,EAAE,SAAS,eAAe,CAAC;AAAA,EACzD;AAEA,SAAO,IAAI,KAAK;AAAA,IACd,SAAS;AAAA,IACT,aAAa;AAAA,IACb,iBAAiB;AAAA,IACjB,sBAAsB;AAAA,IACtB,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,IACnB,cAAc;AAAA,IACd,uBAAuB;AAAA,IACvB,kBAAkB;AAAA,EACpB,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/next/api-handler/handlers/manifest.ts"],"sourcesContent":["import { NextApiRequest, NextApiResponse } from 'next'\nimport { NextRequest, NextResponse } from 'next/server'\nimport { P, match } from 'ts-pattern'\n\ntype Context = { params: { [key: string]: string | string[] } }\n\nexport type Manifest = {\n version: string\n previewMode: boolean\n interactionMode: boolean\n clientSideNavigation: boolean\n elementFromPoint: boolean\n customBreakpoints: boolean\n siteVersions: boolean\n unstable_siteVersions: boolean\n localizedPageSSR: boolean\n}\n\ntype ManifestError = { message: string }\n\nexport type ManifestResponse = Manifest | ManifestError\n\ntype ManifestHandlerArgs =\n | [request: NextRequest, context: Context, params: { apiKey: string }]\n | [req: NextApiRequest, res: NextApiResponse<ManifestResponse>, 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 handler(\n request: NextRequest,\n context: Context,\n { apiKey }: { apiKey: string },\n): Promise<NextResponse<ManifestResponse>>\nexport default async function handler(\n req: NextApiRequest,\n res: NextApiResponse<ManifestResponse>,\n { apiKey }: { apiKey: string },\n): Promise<void>\nexport default async function handler(\n ...args: ManifestHandlerArgs\n): Promise<NextResponse<ManifestResponse> | void> {\n const [, , { apiKey }] = args\n\n const secret = match(args)\n .with(routeHandlerPattern, ([request]) => request.nextUrl.searchParams.get('secret'))\n .with(apiRoutePattern, ([req]) => req.query.secret)\n .exhaustive()\n\n if (secret !== apiKey) {\n const status = 401\n const body = { message: 'Unauthorized' }\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 const supportsPreviewMode = match(args)\n .with(routeHandlerPattern, () => false)\n .with(apiRoutePattern, () => true)\n .exhaustive()\n\n const supportsDraftMode = match(args)\n .with(routeHandlerPattern, () => true)\n .with(apiRoutePattern, () => false)\n .exhaustive()\n\n const body = {\n version: PACKAGE_VERSION,\n previewMode: supportsPreviewMode,\n draftMode: supportsDraftMode,\n interactionMode: true,\n clientSideNavigation: false,\n elementFromPoint: false,\n customBreakpoints: true,\n siteVersions: true,\n unstable_siteVersions: true,\n localizedPageSSR: true,\n }\n\n return match(args)\n .with(routeHandlerPattern, () => NextResponse.json(body))\n .with(apiRoutePattern, ([, res]) => res.json(body))\n .exhaustive()\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAA0C;AAC1C,wBAAyB;AAwBzB,MAAM,sBAAsB,CAAC,oBAAE,WAAW,OAAO,GAAG,oBAAE,KAAK,oBAAE,GAAG;AAChE,MAAM,kBAAkB,CAAC,oBAAE,KAAK,oBAAE,KAAK,oBAAE,GAAG;AAY5C,eAAO,WACF,MAC6C;AAChD,QAAM,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI;AAEzB,QAAM,aAAS,yBAAM,IAAI,EACtB,KAAK,qBAAqB,CAAC,CAAC,OAAO,MAAM,QAAQ,QAAQ,aAAa,IAAI,QAAQ,CAAC,EACnF,KAAK,iBAAiB,CAAC,CAAC,GAAG,MAAM,IAAI,MAAM,MAAM,EACjD,WAAW;AAEd,MAAI,WAAW,QAAQ;AACrB,UAAM,SAAS;AACf,UAAMA,QAAO,EAAE,SAAS,eAAe;AAEvC,eAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,MAAM,2BAAa,KAAKA,OAAM,EAAE,OAAO,CAAC,CAAC,EACnE,KAAK,iBAAiB,CAAC,CAAC,EAAE,GAAG,MAAM,IAAI,OAAO,MAAM,EAAE,KAAKA,KAAI,CAAC,EAChE,WAAW;AAAA,EAChB;AAEA,QAAM,0BAAsB,yBAAM,IAAI,EACnC,KAAK,qBAAqB,MAAM,KAAK,EACrC,KAAK,iBAAiB,MAAM,IAAI,EAChC,WAAW;AAEd,QAAM,wBAAoB,yBAAM,IAAI,EACjC,KAAK,qBAAqB,MAAM,IAAI,EACpC,KAAK,iBAAiB,MAAM,KAAK,EACjC,WAAW;AAEd,QAAM,OAAO;AAAA,IACX,SAAS;AAAA,IACT,aAAa;AAAA,IACb,WAAW;AAAA,IACX,iBAAiB;AAAA,IACjB,sBAAsB;AAAA,IACtB,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,IACnB,cAAc;AAAA,IACd,uBAAuB;AAAA,IACvB,kBAAkB;AAAA,EACpB;AAEA,aAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,MAAM,2BAAa,KAAK,IAAI,CAAC,EACvD,KAAK,iBAAiB,CAAC,CAAC,EAAE,GAAG,MAAM,IAAI,KAAK,IAAI,CAAC,EACjD,WAAW;AAChB;","names":["body"]}
@@ -21,16 +21,27 @@ __export(merge_translated_data_exports, {
21
21
  default: () => mergeTranslatedData
22
22
  });
23
23
  module.exports = __toCommonJS(merge_translated_data_exports);
24
- async function mergeTranslatedData(req, res, client) {
25
- const translatedData = req.body.translatedData;
26
- const elementTree = req.body.elementTree;
24
+ var import_server = require("next/server");
25
+ var import_ts_pattern = require("ts-pattern");
26
+ const routeHandlerPattern = [import_ts_pattern.P.instanceOf(Request), import_ts_pattern.P.any, import_ts_pattern.P.any];
27
+ const apiRoutePattern = [import_ts_pattern.P.any, import_ts_pattern.P.any, import_ts_pattern.P.any];
28
+ async function mergeTranslatedData(...args) {
29
+ const [, , client] = args;
30
+ const body = await (0, import_ts_pattern.match)(args).with(routeHandlerPattern, ([request]) => request.json()).with(apiRoutePattern, ([req]) => req.body).exhaustive();
31
+ const translatedData = body.translatedData;
32
+ const elementTree = body.elementTree;
27
33
  if (translatedData == null) {
28
- return res.status(400).json({ message: "translatedData must be defined" });
34
+ const status = 400;
35
+ const body2 = { message: "translatedData must be defined" };
36
+ return (0, import_ts_pattern.match)(args).with(routeHandlerPattern, () => import_server.NextResponse.json(body2, { status })).with(apiRoutePattern, ([, res]) => res.status(status).json(body2)).exhaustive();
29
37
  }
30
38
  if (elementTree == null) {
31
- return res.status(400).json({ message: "elementTree must be defined" });
39
+ const status = 400;
40
+ const body2 = { message: "elementTree must be defined" };
41
+ return (0, import_ts_pattern.match)(args).with(routeHandlerPattern, () => import_server.NextResponse.json(body2, { status })).with(apiRoutePattern, ([, res]) => res.status(status).json(body2)).exhaustive();
32
42
  }
33
43
  const translatedElementTree = client.mergeTranslatedData(elementTree, translatedData);
34
- return res.json({ elementTree: translatedElementTree });
44
+ const responseBody = { elementTree: translatedElementTree };
45
+ return (0, import_ts_pattern.match)(args).with(routeHandlerPattern, () => import_server.NextResponse.json(responseBody)).with(apiRoutePattern, ([, res]) => res.json(responseBody)).exhaustive();
35
46
  }
36
47
  //# sourceMappingURL=merge-translated-data.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/next/api-handler/handlers/merge-translated-data.ts"],"sourcesContent":["import { NextApiRequest, NextApiResponse } from 'next'\nimport { Element } from '../../../state/react-page'\nimport { Makeswift } from '../../client'\n\ntype TranslatedDataResult = { elementTree: Element }\n\ntype TranslatedDataError = { message: string }\n\nexport type TranslatedDataResponse = TranslatedDataResult | TranslatedDataError\n\nexport default async function mergeTranslatedData(\n req: NextApiRequest,\n res: NextApiResponse<TranslatedDataResponse>,\n client: Makeswift,\n): Promise<void> {\n const translatedData = req.body.translatedData\n const elementTree = req.body.elementTree\n\n if (translatedData == null) {\n return res.status(400).json({ message: 'translatedData must be defined' })\n }\n\n if (elementTree == null) {\n return res.status(400).json({ message: 'elementTree must be defined' })\n }\n\n const translatedElementTree = client.mergeTranslatedData(elementTree, translatedData)\n\n return res.json({ elementTree: translatedElementTree })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA,eAAO,oBACL,KACA,KACA,QACe;AACf,QAAM,iBAAiB,IAAI,KAAK;AAChC,QAAM,cAAc,IAAI,KAAK;AAE7B,MAAI,kBAAkB,MAAM;AAC1B,WAAO,IAAI,OAAO,GAAG,EAAE,KAAK,EAAE,SAAS,iCAAiC,CAAC;AAAA,EAC3E;AAEA,MAAI,eAAe,MAAM;AACvB,WAAO,IAAI,OAAO,GAAG,EAAE,KAAK,EAAE,SAAS,8BAA8B,CAAC;AAAA,EACxE;AAEA,QAAM,wBAAwB,OAAO,oBAAoB,aAAa,cAAc;AAEpF,SAAO,IAAI,KAAK,EAAE,aAAa,sBAAsB,CAAC;AACxD;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/next/api-handler/handlers/merge-translated-data.ts"],"sourcesContent":["import { NextApiRequest, NextApiResponse } from 'next'\nimport { Element } from '../../../state/react-page'\nimport { Makeswift } from '../../client'\nimport { NextRequest, NextResponse } from 'next/server'\nimport { P, match } from 'ts-pattern'\n\ntype Context = { params: { [key: string]: string | string[] } }\n\ntype TranslatedDataResult = { elementTree: Element }\n\ntype TranslatedDataError = { message: string }\n\nexport type TranslatedDataResponse = TranslatedDataResult | TranslatedDataError\n\ntype MergeTranslatedDataHandlerArgs =\n | [request: NextRequest, context: Context, client: Makeswift]\n | [req: NextApiRequest, res: NextApiResponse<TranslatedDataResponse>, client: Makeswift]\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 mergeTranslatedData(\n request: NextRequest,\n context: Context,\n client: Makeswift,\n): Promise<NextResponse<TranslatedDataResponse>>\nexport default async function mergeTranslatedData(\n req: NextApiRequest,\n res: NextApiResponse<TranslatedDataResponse>,\n client: Makeswift,\n): Promise<void>\nexport default async function mergeTranslatedData(\n ...args: MergeTranslatedDataHandlerArgs\n): Promise<NextResponse<TranslatedDataResponse> | void> {\n const [, , client] = args\n\n const body = await match(args)\n .with(routeHandlerPattern, ([request]) => request.json())\n .with(apiRoutePattern, ([req]) => req.body)\n .exhaustive()\n\n const translatedData = body.translatedData\n const elementTree = body.elementTree\n\n if (translatedData == null) {\n const status = 400\n const body = { message: 'translatedData must be defined' }\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 (elementTree == null) {\n const status = 400\n const body = { message: 'elementTree must be defined' }\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 const translatedElementTree = client.mergeTranslatedData(elementTree, translatedData)\n\n const responseBody = { elementTree: translatedElementTree }\n\n return match(args)\n .with(routeHandlerPattern, () => NextResponse.json(responseBody))\n .with(apiRoutePattern, ([, res]) => res.json(responseBody))\n .exhaustive()\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,oBAA0C;AAC1C,wBAAyB;AAczB,MAAM,sBAAsB,CAAC,oBAAE,WAAW,OAAO,GAAG,oBAAE,KAAK,oBAAE,GAAG;AAChE,MAAM,kBAAkB,CAAC,oBAAE,KAAK,oBAAE,KAAK,oBAAE,GAAG;AAY5C,eAAO,uBACF,MACmD;AACtD,QAAM,CAAC,EAAE,EAAE,MAAM,IAAI;AAErB,QAAM,OAAO,UAAM,yBAAM,IAAI,EAC1B,KAAK,qBAAqB,CAAC,CAAC,OAAO,MAAM,QAAQ,KAAK,CAAC,EACvD,KAAK,iBAAiB,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,EACzC,WAAW;AAEd,QAAM,iBAAiB,KAAK;AAC5B,QAAM,cAAc,KAAK;AAEzB,MAAI,kBAAkB,MAAM;AAC1B,UAAM,SAAS;AACf,UAAMA,QAAO,EAAE,SAAS,iCAAiC;AAEzD,eAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,MAAM,2BAAa,KAAKA,OAAM,EAAE,OAAO,CAAC,CAAC,EACnE,KAAK,iBAAiB,CAAC,CAAC,EAAE,GAAG,MAAM,IAAI,OAAO,MAAM,EAAE,KAAKA,KAAI,CAAC,EAChE,WAAW;AAAA,EAChB;AAEA,MAAI,eAAe,MAAM;AACvB,UAAM,SAAS;AACf,UAAMA,QAAO,EAAE,SAAS,8BAA8B;AAEtD,eAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,MAAM,2BAAa,KAAKA,OAAM,EAAE,OAAO,CAAC,CAAC,EACnE,KAAK,iBAAiB,CAAC,CAAC,EAAE,GAAG,MAAM,IAAI,OAAO,MAAM,EAAE,KAAKA,KAAI,CAAC,EAChE,WAAW;AAAA,EAChB;AAEA,QAAM,wBAAwB,OAAO,oBAAoB,aAAa,cAAc;AAEpF,QAAM,eAAe,EAAE,aAAa,sBAAsB;AAE1D,aAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,MAAM,2BAAa,KAAK,YAAY,CAAC,EAC/D,KAAK,iBAAiB,CAAC,CAAC,EAAE,GAAG,MAAM,IAAI,KAAK,YAAY,CAAC,EACzD,WAAW;AAChB;","names":["body"]}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var proxy_draft_mode_exports = {};
20
+ __export(proxy_draft_mode_exports, {
21
+ default: () => proxyDraftMode
22
+ });
23
+ module.exports = __toCommonJS(proxy_draft_mode_exports);
24
+ var import_server = require("next/server");
25
+ var import_ts_pattern = require("ts-pattern");
26
+ var import_headers = require("next/headers");
27
+ var import_draft_mode = require("../../draft-mode");
28
+ var import_preview_mode = require("../../preview-mode");
29
+ const routeHandlerPattern = [import_ts_pattern.P.instanceOf(Request), import_ts_pattern.P.any, import_ts_pattern.P.any];
30
+ const apiRoutePattern = [import_ts_pattern.P.any, import_ts_pattern.P.any, import_ts_pattern.P.any];
31
+ async function proxyDraftMode(...args) {
32
+ return (0, import_ts_pattern.match)(args).with(routeHandlerPattern, (args2) => proxyDraftModeRouteHandler(...args2)).with(apiRoutePattern, (args2) => proxyDraftModeApiRouteHandler(...args2)).exhaustive();
33
+ }
34
+ async function proxyDraftModeRouteHandler(request, _context, { apiKey }) {
35
+ const secret = request.nextUrl.searchParams.get("x-makeswift-draft-mode") ?? request.headers.get("X-Makeswift-Draft-Mode");
36
+ if (secret !== apiKey)
37
+ return new import_server.NextResponse("Unauthorized", { status: 401 });
38
+ const draftModeData = {
39
+ makeswift: true,
40
+ siteVersion: import_preview_mode.MakeswiftSiteVersion.Working
41
+ };
42
+ (0, import_headers.draftMode)().enable();
43
+ const proxyUrl = request.nextUrl.clone();
44
+ proxyUrl.searchParams.delete("x-makeswift-draft-mode");
45
+ const proxyRequest = new import_server.NextRequest(proxyUrl, { headers: request.headers });
46
+ proxyRequest.headers.delete("x-makeswift-draft-mode");
47
+ const draftModeCookie = (0, import_headers.cookies)().get("__prerender_bypass");
48
+ if (draftModeCookie) {
49
+ proxyRequest.cookies.set(draftModeCookie);
50
+ proxyRequest.cookies.set(import_draft_mode.MAKESWIFT_DRAFT_MODE_DATA_COOKIE, JSON.stringify(draftModeData));
51
+ }
52
+ (0, import_headers.draftMode)().disable();
53
+ const proxyResponse = await fetch(proxyRequest);
54
+ const response = new import_server.NextResponse(proxyResponse.body, {
55
+ headers: proxyResponse.headers,
56
+ status: proxyResponse.status
57
+ });
58
+ if (response.headers.has("content-encoding")) {
59
+ response.headers.delete("content-encoding");
60
+ response.headers.delete("content-length");
61
+ }
62
+ return response;
63
+ }
64
+ async function proxyDraftModeApiRouteHandler(_req, res, {}) {
65
+ const message = "Cannot request draft endpoint from an API handler registered in `pages`. Move your Makeswift API handler to the `app` directory";
66
+ console.error(message);
67
+ return res.status(500).send(message);
68
+ }
69
+ //# sourceMappingURL=proxy-draft-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/next/api-handler/handlers/proxy-draft-mode.ts"],"sourcesContent":["import { NextApiRequest, NextApiResponse } from 'next'\nimport { NextRequest, NextResponse } from 'next/server'\nimport { P, match } from 'ts-pattern'\nimport { cookies, draftMode } from 'next/headers'\nimport { MAKESWIFT_DRAFT_MODE_DATA_COOKIE, MakeswiftDraftData } from '../../draft-mode'\nimport { MakeswiftSiteVersion } from '../../preview-mode'\n\ntype Context = { params: { [key: string]: string | string[] } }\n\ntype ProxyDraftModeError = string\n\ntype ProxyResponse = { __brand: 'ProxyResponse' }\n\nexport type ProxyDraftModeResponse = ProxyDraftModeError | ProxyResponse\n\ntype ProxyDraftModeHandlerArgs =\n | [request: NextRequest, context: Context, params: { apiKey: string }]\n | [req: NextApiRequest, res: NextApiResponse<ProxyDraftModeResponse>, 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 proxyDraftMode(\n request: NextRequest,\n context: Context,\n { apiKey }: { apiKey: string },\n): Promise<NextResponse<ProxyDraftModeResponse>>\nexport default async function proxyDraftMode(\n req: NextApiRequest,\n res: NextApiResponse<ProxyDraftModeResponse>,\n { apiKey }: { apiKey: string },\n): Promise<void>\nexport default async function proxyDraftMode(\n ...args: ProxyDraftModeHandlerArgs\n): Promise<NextResponse<ProxyDraftModeResponse> | void> {\n return match(args)\n .with(routeHandlerPattern, args => proxyDraftModeRouteHandler(...args))\n .with(apiRoutePattern, args => proxyDraftModeApiRouteHandler(...args))\n .exhaustive()\n}\n\nasync function proxyDraftModeRouteHandler(\n request: NextRequest,\n _context: Context,\n { apiKey }: { apiKey: string },\n): Promise<NextResponse<ProxyDraftModeResponse>> {\n const secret =\n request.nextUrl.searchParams.get('x-makeswift-draft-mode') ??\n request.headers.get('X-Makeswift-Draft-Mode')\n\n if (secret !== apiKey) return new NextResponse('Unauthorized', { status: 401 })\n\n const draftModeData: MakeswiftDraftData = {\n makeswift: true,\n siteVersion: MakeswiftSiteVersion.Working,\n }\n\n draftMode().enable()\n\n const proxyUrl = request.nextUrl.clone()\n proxyUrl.searchParams.delete('x-makeswift-draft-mode')\n\n const proxyRequest = new NextRequest(proxyUrl, { headers: request.headers })\n proxyRequest.headers.delete('x-makeswift-draft-mode')\n\n const draftModeCookie = cookies().get('__prerender_bypass')\n if (draftModeCookie) {\n proxyRequest.cookies.set(draftModeCookie)\n proxyRequest.cookies.set(MAKESWIFT_DRAFT_MODE_DATA_COOKIE, JSON.stringify(draftModeData))\n }\n\n draftMode().disable()\n\n const proxyResponse = await fetch(proxyRequest)\n\n const response = new NextResponse<ProxyResponse>(proxyResponse.body, {\n headers: proxyResponse.headers,\n status: proxyResponse.status,\n })\n\n // `fetch` automatically decompresses the response, but the response headers will keep the\n // `content-encoding` and `content-length` headers. This will cause decoding issues if the client\n // attempts to decompress the response again. To prevent this, we remove these headers.\n //\n // See https://github.com/nodejs/undici/issues/2514.\n if (response.headers.has('content-encoding')) {\n response.headers.delete('content-encoding')\n response.headers.delete('content-length')\n }\n\n return response\n}\n\nasync function proxyDraftModeApiRouteHandler(\n _req: NextApiRequest,\n res: NextApiResponse<ProxyDraftModeResponse>,\n {}: { apiKey: string },\n): Promise<void> {\n const message =\n 'Cannot request draft endpoint from an API handler registered in `pages`. Move your Makeswift API handler to the `app` directory'\n console.error(message)\n return res.status(500).send(message)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAA0C;AAC1C,wBAAyB;AACzB,qBAAmC;AACnC,wBAAqE;AACrE,0BAAqC;AAcrC,MAAM,sBAAsB,CAAC,oBAAE,WAAW,OAAO,GAAG,oBAAE,KAAK,oBAAE,GAAG;AAChE,MAAM,kBAAkB,CAAC,oBAAE,KAAK,oBAAE,KAAK,oBAAE,GAAG;AAY5C,eAAO,kBACF,MACmD;AACtD,aAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,CAAAA,UAAQ,2BAA2B,GAAGA,KAAI,CAAC,EACrE,KAAK,iBAAiB,CAAAA,UAAQ,8BAA8B,GAAGA,KAAI,CAAC,EACpE,WAAW;AAChB;AAEA,eAAe,2BACb,SACA,UACA,EAAE,OAAO,GACsC;AAC/C,QAAM,SACJ,QAAQ,QAAQ,aAAa,IAAI,wBAAwB,KACzD,QAAQ,QAAQ,IAAI,wBAAwB;AAE9C,MAAI,WAAW;AAAQ,WAAO,IAAI,2BAAa,gBAAgB,EAAE,QAAQ,IAAI,CAAC;AAE9E,QAAM,gBAAoC;AAAA,IACxC,WAAW;AAAA,IACX,aAAa,yCAAqB;AAAA,EACpC;AAEA,gCAAU,EAAE,OAAO;AAEnB,QAAM,WAAW,QAAQ,QAAQ,MAAM;AACvC,WAAS,aAAa,OAAO,wBAAwB;AAErD,QAAM,eAAe,IAAI,0BAAY,UAAU,EAAE,SAAS,QAAQ,QAAQ,CAAC;AAC3E,eAAa,QAAQ,OAAO,wBAAwB;AAEpD,QAAM,sBAAkB,wBAAQ,EAAE,IAAI,oBAAoB;AAC1D,MAAI,iBAAiB;AACnB,iBAAa,QAAQ,IAAI,eAAe;AACxC,iBAAa,QAAQ,IAAI,oDAAkC,KAAK,UAAU,aAAa,CAAC;AAAA,EAC1F;AAEA,gCAAU,EAAE,QAAQ;AAEpB,QAAM,gBAAgB,MAAM,MAAM,YAAY;AAE9C,QAAM,WAAW,IAAI,2BAA4B,cAAc,MAAM;AAAA,IACnE,SAAS,cAAc;AAAA,IACvB,QAAQ,cAAc;AAAA,EACxB,CAAC;AAOD,MAAI,SAAS,QAAQ,IAAI,kBAAkB,GAAG;AAC5C,aAAS,QAAQ,OAAO,kBAAkB;AAC1C,aAAS,QAAQ,OAAO,gBAAgB;AAAA,EAC1C;AAEA,SAAO;AACT;AAEA,eAAe,8BACb,MACA,KACA,CAAC,GACc;AACf,QAAM,UACJ;AACF,UAAQ,MAAM,OAAO;AACrB,SAAO,IAAI,OAAO,GAAG,EAAE,KAAK,OAAO;AACrC;","names":["args"]}
@@ -21,12 +21,37 @@ __export(proxy_preview_mode_exports, {
21
21
  default: () => proxyPreviewMode
22
22
  });
23
23
  module.exports = __toCommonJS(proxy_preview_mode_exports);
24
- var import_cookie = require("cookie");
25
- var import_http_proxy = require("http-proxy");
26
- var import_set_cookie_parser = require("set-cookie-parser");
27
24
  var import_preview_mode = require("../../preview-mode");
28
- async function proxyPreviewMode(req, res, { apiKey }) {
29
- const previewModeProxy = (0, import_http_proxy.createProxyServer)();
25
+ var import_server = require("next/server");
26
+ var import_ts_pattern = require("ts-pattern");
27
+ const routeHandlerPattern = [import_ts_pattern.P.instanceOf(Request), import_ts_pattern.P.any, import_ts_pattern.P.any];
28
+ const apiRoutePattern = [import_ts_pattern.P.any, import_ts_pattern.P.any, import_ts_pattern.P.any];
29
+ function mapRequestHeadersToHeaders(requestHeaders) {
30
+ const headers = new Headers();
31
+ Object.entries(requestHeaders).forEach(([key, value]) => {
32
+ (0, import_ts_pattern.match)(value).with(import_ts_pattern.P.array(import_ts_pattern.P.string), (value2) => value2.map((val) => headers.append(key, val))).with(import_ts_pattern.P.string, (value2) => headers.set(key, value2));
33
+ });
34
+ return headers;
35
+ }
36
+ function mapRequestToProxyUrl(req) {
37
+ const isForwardedProtoHttps = (0, import_ts_pattern.match)(req.headers["X-Forwarded-Proto"]).with(import_ts_pattern.P.string, (x) => x.split(",")).with(import_ts_pattern.P.array(import_ts_pattern.P.string), (x) => x).otherwise(() => []).includes("https");
38
+ const isForwardedSSL = (0, import_ts_pattern.match)(req.headers["X-Forwarded-SSL"]).with("on", () => true).otherwise(() => false);
39
+ const proto = isForwardedProtoHttps || isForwardedSSL ? "https" : "http";
40
+ return new URL(`${proto}://${req.headers.host}${req.url}`);
41
+ }
42
+ async function proxyPreviewMode(...args) {
43
+ return (0, import_ts_pattern.match)(args).with(routeHandlerPattern, (args2) => proxyPreviewModeRouteHandler(...args2)).with(apiRoutePattern, (args2) => proxyPreviewModeApiRouteHandler(...args2)).exhaustive();
44
+ }
45
+ async function proxyPreviewModeRouteHandler(_request, _context, {}) {
46
+ const message = "Cannot request preview endpoint from an API handler registered in `app`. Move your Makeswift API handler to the `pages/api` directory";
47
+ console.error(message);
48
+ return import_server.NextResponse.json(message, { status: 500 });
49
+ }
50
+ async function proxyPreviewModeApiRouteHandler(req, res, { apiKey }) {
51
+ if (req.query.secret !== apiKey)
52
+ return res.status(401).send("Unauthorized");
53
+ if (req.headers.host == null)
54
+ return res.status(400).send("Bad Request");
30
55
  const NextRequestMetaSymbol = Reflect.ownKeys(req).find(
31
56
  (key) => key.toString() === "Symbol(NextRequestMeta)" || key.toString() === "Symbol(NextInternalRequestMeta)"
32
57
  );
@@ -40,50 +65,36 @@ async function proxyPreviewMode(req, res, { apiKey }) {
40
65
  } catch {
41
66
  }
42
67
  }
43
- previewModeProxy.once("proxyReq", (proxyReq) => {
44
- proxyReq.removeHeader("X-Makeswift-Preview-Mode");
45
- proxyReq.removeHeader("X-Invoke-Path");
46
- proxyReq.removeHeader("X-Invoke-Query");
47
- const url = new URL(proxyReq.path, "http://n");
48
- url.searchParams.delete("x-makeswift-preview-mode");
49
- proxyReq.path = url.pathname + url.search;
50
- });
51
- if (req.query.secret !== apiKey)
52
- return res.status(401).send("Unauthorized");
53
- const host = req.headers.host;
54
- const originalCookies = req.headers.cookie;
55
- if (host == null)
56
- return res.status(400).send("Bad Request");
57
- const forwardedProtoHeader = req.headers["x-forwarded-proto"];
58
- let forwardedProto = [];
59
- if (Array.isArray(forwardedProtoHeader)) {
60
- forwardedProto = forwardedProtoHeader;
61
- } else if (typeof forwardedProtoHeader === "string") {
62
- forwardedProto = forwardedProtoHeader.split(",");
63
- }
64
- const isForwardedProtoHttps = forwardedProto.includes("https");
65
- const forwardedSSL = req.headers["x-forwarded-ssl"];
66
- const isForwardedSSL = typeof forwardedSSL === "string" && forwardedSSL === "on";
67
- const proto = isForwardedProtoHttps || isForwardedSSL ? "https" : "http";
68
- let target = `${proto}://${host}`;
69
- const secure = process.env["NODE_ENV"] === "production";
68
+ const proxyHeaders = mapRequestHeadersToHeaders(req.headers);
69
+ const proxyUrl = mapRequestToProxyUrl(req);
70
+ proxyUrl.searchParams.delete("x-makeswift-preview-mode");
71
+ proxyHeaders.delete("x-makeswift-preview-mode");
72
+ proxyHeaders.delete("x-invoke-path");
73
+ proxyHeaders.delete("x-invoke-query");
70
74
  const previewData = {
71
75
  makeswift: true,
76
+ // This will eventually be dynamic
72
77
  siteVersion: import_preview_mode.MakeswiftSiteVersion.Working
73
78
  };
74
- const setCookie = res.setPreviewData(previewData).getHeader("Set-Cookie");
75
- res.removeHeader("Set-Cookie");
79
+ const setCookie = res.setPreviewData(previewData).getHeader("set-cookie");
80
+ res.removeHeader("set-cookie");
76
81
  if (!Array.isArray(setCookie))
77
82
  return res.status(500).send("Internal Server Error");
78
- const additionalCookies = (0, import_set_cookie_parser.parse)(setCookie).map((cookie2) => (0, import_cookie.serialize)(cookie2.name, cookie2.value, cookie2)).join(";");
79
- const cookie = originalCookies ? `${originalCookies}; ${additionalCookies}` : additionalCookies;
80
- return await new Promise(
81
- (resolve, reject) => previewModeProxy.web(req, res, { target, headers: { cookie }, secure }, (err) => {
82
- if (err)
83
- reject(err);
84
- else
85
- resolve();
86
- })
87
- );
83
+ setCookie.forEach((cookie) => proxyHeaders.append("cookie", cookie));
84
+ const response = await fetch(proxyUrl, {
85
+ headers: proxyHeaders
86
+ });
87
+ response.headers.forEach((value, name) => {
88
+ res.setHeader(name, value);
89
+ });
90
+ res.statusCode = response.status;
91
+ res.statusMessage = response.statusText;
92
+ if (res.hasHeader("content-encoding")) {
93
+ res.removeHeader("content-encoding");
94
+ res.removeHeader("content-length");
95
+ }
96
+ const arrayBuffer = await response.arrayBuffer();
97
+ res.write(arrayBuffer);
98
+ res.end();
88
99
  }
89
100
  //# sourceMappingURL=proxy-preview-mode.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/next/api-handler/handlers/proxy-preview-mode.ts"],"sourcesContent":["import { CookieSerializeOptions, serialize } from 'cookie'\nimport { createProxyServer } from 'http-proxy'\nimport { NextApiRequest, NextApiResponse } from 'next'\nimport { parse } from 'set-cookie-parser'\nimport { MakeswiftPreviewData, MakeswiftSiteVersion } from '../../preview-mode'\n\ntype ProxyPreviewModeError = string\n\nexport type ProxyPreviewModeResponse = ProxyPreviewModeError\n\nexport default async function proxyPreviewMode(\n req: NextApiRequest,\n res: NextApiResponse<ProxyPreviewModeError>,\n { apiKey }: { apiKey: string },\n): Promise<void> {\n const previewModeProxy = createProxyServer()\n\n // TODO: This is a hack to get the locale from the request.\n // Next.js strips the locale from the req.url, and there's no official way to get the locale\n // from an API route: https://github.com/vercel/next.js/discussions/21798.\n // The current workaround is to get the locale from an internal object: RequestMeta,\n // https://github.com/vercel/next.js/blob/a0d1d728b9003f12c9df6c5e9a33bc4c33cef0ab/packages/next/src/server/request-meta.ts\n // One possible way to properly fix this is by updating how we do preview mode. For example,\n // by using partitioned cookies instead of a proxy.\n const NextRequestMetaSymbol = Reflect.ownKeys(req).find(\n key =>\n key.toString() === 'Symbol(NextRequestMeta)' ||\n key.toString() === 'Symbol(NextInternalRequestMeta)',\n ) as keyof NextApiRequest | undefined\n if (NextRequestMetaSymbol) {\n const nextRequestMeta = req[NextRequestMetaSymbol]\n const initUrl = nextRequestMeta?.__NEXT_INIT_URL ?? nextRequestMeta?.initURL\n const isLocaleStripped =\n nextRequestMeta?.__nextStrippedLocale ?? nextRequestMeta?.didStripLocale\n\n try {\n if (isLocaleStripped && initUrl) req.url = new URL(initUrl).pathname\n } catch {}\n }\n\n previewModeProxy.once('proxyReq', proxyReq => {\n proxyReq.removeHeader('X-Makeswift-Preview-Mode')\n\n // The following headers are Next.js-specific and are removed to prevent Next.js from\n // short-circuiting requests, breaking routing.\n proxyReq.removeHeader('X-Invoke-Path')\n proxyReq.removeHeader('X-Invoke-Query')\n\n const url = new URL(proxyReq.path, 'http://n')\n\n url.searchParams.delete('x-makeswift-preview-mode')\n\n proxyReq.path = url.pathname + url.search\n })\n\n if (req.query.secret !== apiKey) return res.status(401).send('Unauthorized')\n\n const host = req.headers.host\n const originalCookies = req.headers.cookie\n\n if (host == null) return res.status(400).send('Bad Request')\n\n const forwardedProtoHeader = req.headers['x-forwarded-proto']\n\n let forwardedProto: string[] = []\n if (Array.isArray(forwardedProtoHeader)) {\n forwardedProto = forwardedProtoHeader\n } else if (typeof forwardedProtoHeader === 'string') {\n forwardedProto = forwardedProtoHeader.split(',')\n }\n\n const isForwardedProtoHttps = forwardedProto.includes('https')\n\n const forwardedSSL = req.headers['x-forwarded-ssl']\n const isForwardedSSL = typeof forwardedSSL === 'string' && forwardedSSL === 'on'\n\n const proto = isForwardedProtoHttps || isForwardedSSL ? 'https' : 'http'\n let target = `${proto}://${host}`\n\n // If the user generates a locally-trusted CA for their SSL cert, it's likely that Node.js won't\n // trust this CA unless they used the `NODE_EXTRA_CA_CERTS` option\n // (see https://stackoverflow.com/a/68135600). To provide a better developer experience, instead\n // of requiring the user to provide the CA to Node.js, we don't enforce SSL during local\n // development.\n const secure = process.env['NODE_ENV'] === 'production'\n\n const previewData: MakeswiftPreviewData = {\n makeswift: true,\n siteVersion: MakeswiftSiteVersion.Working,\n }\n const setCookie = res.setPreviewData(previewData).getHeader('Set-Cookie')\n res.removeHeader('Set-Cookie')\n\n if (!Array.isArray(setCookie)) return res.status(500).send('Internal Server Error')\n\n const additionalCookies = parse(setCookie)\n .map(cookie => serialize(cookie.name, cookie.value, cookie as CookieSerializeOptions))\n .join(';')\n\n const cookie = originalCookies ? `${originalCookies}; ${additionalCookies}` : additionalCookies\n\n return await new Promise<void>((resolve, reject) =>\n previewModeProxy.web(req, res, { target, headers: { cookie }, secure }, err => {\n if (err) reject(err)\n else resolve()\n }),\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAkD;AAClD,wBAAkC;AAElC,+BAAsB;AACtB,0BAA2D;AAM3D,eAAO,iBACL,KACA,KACA,EAAE,OAAO,GACM;AACf,QAAM,uBAAmB,qCAAkB;AAS3C,QAAM,wBAAwB,QAAQ,QAAQ,GAAG,EAAE;AAAA,IACjD,SACE,IAAI,SAAS,MAAM,6BACnB,IAAI,SAAS,MAAM;AAAA,EACvB;AACA,MAAI,uBAAuB;AACzB,UAAM,kBAAkB,IAAI,qBAAqB;AACjD,UAAM,UAAU,iBAAiB,mBAAmB,iBAAiB;AACrE,UAAM,mBACJ,iBAAiB,wBAAwB,iBAAiB;AAE5D,QAAI;AACF,UAAI,oBAAoB;AAAS,YAAI,MAAM,IAAI,IAAI,OAAO,EAAE;AAAA,IAC9D,QAAQ;AAAA,IAAC;AAAA,EACX;AAEA,mBAAiB,KAAK,YAAY,cAAY;AAC5C,aAAS,aAAa,0BAA0B;AAIhD,aAAS,aAAa,eAAe;AACrC,aAAS,aAAa,gBAAgB;AAEtC,UAAM,MAAM,IAAI,IAAI,SAAS,MAAM,UAAU;AAE7C,QAAI,aAAa,OAAO,0BAA0B;AAElD,aAAS,OAAO,IAAI,WAAW,IAAI;AAAA,EACrC,CAAC;AAED,MAAI,IAAI,MAAM,WAAW;AAAQ,WAAO,IAAI,OAAO,GAAG,EAAE,KAAK,cAAc;AAE3E,QAAM,OAAO,IAAI,QAAQ;AACzB,QAAM,kBAAkB,IAAI,QAAQ;AAEpC,MAAI,QAAQ;AAAM,WAAO,IAAI,OAAO,GAAG,EAAE,KAAK,aAAa;AAE3D,QAAM,uBAAuB,IAAI,QAAQ,mBAAmB;AAE5D,MAAI,iBAA2B,CAAC;AAChC,MAAI,MAAM,QAAQ,oBAAoB,GAAG;AACvC,qBAAiB;AAAA,EACnB,WAAW,OAAO,yBAAyB,UAAU;AACnD,qBAAiB,qBAAqB,MAAM,GAAG;AAAA,EACjD;AAEA,QAAM,wBAAwB,eAAe,SAAS,OAAO;AAE7D,QAAM,eAAe,IAAI,QAAQ,iBAAiB;AAClD,QAAM,iBAAiB,OAAO,iBAAiB,YAAY,iBAAiB;AAE5E,QAAM,QAAQ,yBAAyB,iBAAiB,UAAU;AAClE,MAAI,SAAS,GAAG,KAAK,MAAM,IAAI;AAO/B,QAAM,SAAS,QAAQ,IAAI,UAAU,MAAM;AAE3C,QAAM,cAAoC;AAAA,IACxC,WAAW;AAAA,IACX,aAAa,yCAAqB;AAAA,EACpC;AACA,QAAM,YAAY,IAAI,eAAe,WAAW,EAAE,UAAU,YAAY;AACxE,MAAI,aAAa,YAAY;AAE7B,MAAI,CAAC,MAAM,QAAQ,SAAS;AAAG,WAAO,IAAI,OAAO,GAAG,EAAE,KAAK,uBAAuB;AAElF,QAAM,wBAAoB,gCAAM,SAAS,EACtC,IAAI,CAAAA,gBAAU,yBAAUA,QAAO,MAAMA,QAAO,OAAOA,OAAgC,CAAC,EACpF,KAAK,GAAG;AAEX,QAAM,SAAS,kBAAkB,GAAG,eAAe,KAAK,iBAAiB,KAAK;AAE9E,SAAO,MAAM,IAAI;AAAA,IAAc,CAAC,SAAS,WACvC,iBAAiB,IAAI,KAAK,KAAK,EAAE,QAAQ,SAAS,EAAE,OAAO,GAAG,OAAO,GAAG,SAAO;AAC7E,UAAI;AAAK,eAAO,GAAG;AAAA;AACd,gBAAQ;AAAA,IACf,CAAC;AAAA,EACH;AACF;","names":["cookie"]}
1
+ {"version":3,"sources":["../../../../../src/next/api-handler/handlers/proxy-preview-mode.ts"],"sourcesContent":["import { NextApiRequest, NextApiResponse } from 'next'\nimport { MakeswiftPreviewData, MakeswiftSiteVersion } from '../../preview-mode'\nimport { NextRequest, NextResponse } from 'next/server'\nimport { P, match } from 'ts-pattern'\n\ntype Context = { params: { [key: string]: string | string[] } }\n\ntype ProxyPreviewModeError = string\n\ntype ProxyResponse = { __brand: 'ProxyResponse' }\n\nexport type ProxyPreviewModeResponse = ProxyPreviewModeError | ProxyResponse\n\ntype ProxyPreviewModeHandlerArgs =\n | [request: NextRequest, context: Context, params: { apiKey: string }]\n | [\n req: NextApiRequest,\n res: NextApiResponse<ProxyPreviewModeResponse>,\n params: { apiKey: string },\n ]\n\nconst routeHandlerPattern = [P.instanceOf(Request), P.any, P.any] as const\nconst apiRoutePattern = [P.any, P.any, P.any] as const\n\nfunction mapRequestHeadersToHeaders(requestHeaders: NextApiRequest['headers']): Headers {\n const headers = new Headers()\n\n Object.entries(requestHeaders).forEach(([key, value]) => {\n match(value)\n .with(P.array(P.string), value => value.map(val => headers.append(key, val)))\n .with(P.string, value => headers.set(key, value))\n })\n\n return headers\n}\n\nfunction mapRequestToProxyUrl(req: NextApiRequest): URL {\n const isForwardedProtoHttps = match(req.headers['X-Forwarded-Proto'])\n .with(P.string, x => x.split(','))\n .with(P.array(P.string), x => x)\n .otherwise(() => [])\n .includes('https')\n\n const isForwardedSSL = match(req.headers['X-Forwarded-SSL'])\n .with('on', () => true)\n .otherwise(() => false)\n\n const proto = isForwardedProtoHttps || isForwardedSSL ? 'https' : 'http'\n\n return new URL(`${proto}://${req.headers.host}${req.url}`)\n}\n\nexport default async function proxyPreviewMode(\n request: NextRequest,\n context: Context,\n { apiKey }: { apiKey: string },\n): Promise<NextResponse<ProxyPreviewModeResponse>>\nexport default async function proxyPreviewMode(\n req: NextApiRequest,\n res: NextApiResponse<ProxyPreviewModeResponse>,\n { apiKey }: { apiKey: string },\n): Promise<void>\nexport default async function proxyPreviewMode(\n ...args: ProxyPreviewModeHandlerArgs\n): Promise<NextResponse<ProxyPreviewModeResponse> | void> {\n return match(args)\n .with(routeHandlerPattern, args => proxyPreviewModeRouteHandler(...args))\n .with(apiRoutePattern, args => proxyPreviewModeApiRouteHandler(...args))\n .exhaustive()\n}\n\nasync function proxyPreviewModeRouteHandler(\n _request: NextRequest,\n _context: Context,\n {}: { apiKey: string },\n): Promise<NextResponse<ProxyPreviewModeResponse>> {\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 proxyPreviewModeApiRouteHandler(\n req: NextApiRequest,\n res: NextApiResponse<ProxyPreviewModeResponse>,\n { apiKey }: { apiKey: string },\n): Promise<void> {\n if (req.query.secret !== apiKey) return res.status(401).send('Unauthorized')\n if (req.headers.host == null) return res.status(400).send('Bad Request')\n\n // TODO: This is a hack to get the locale from the request.\n // Next.js strips the locale from the req.url, and there's no official way to get the locale\n // from an API route: https://github.com/vercel/next.js/discussions/21798.\n // The current workaround is to get the locale from an internal object: RequestMeta,\n // https://github.com/vercel/next.js/blob/a0d1d728b9003f12c9df6c5e9a33bc4c33cef0ab/packages/next/src/server/request-meta.ts\n // One possible way to properly fix this is by updating how we do preview mode. For example,\n // by using partitioned cookies instead of a proxy.\n const NextRequestMetaSymbol = Reflect.ownKeys(req).find(\n key =>\n key.toString() === 'Symbol(NextRequestMeta)' ||\n key.toString() === 'Symbol(NextInternalRequestMeta)',\n ) as keyof NextApiRequest | undefined\n\n if (NextRequestMetaSymbol) {\n const nextRequestMeta = req[NextRequestMetaSymbol]\n const initUrl = nextRequestMeta?.__NEXT_INIT_URL ?? nextRequestMeta?.initURL\n const isLocaleStripped =\n nextRequestMeta?.__nextStrippedLocale ?? nextRequestMeta?.didStripLocale\n\n try {\n if (isLocaleStripped && initUrl) req.url = new URL(initUrl).pathname\n } catch {}\n }\n\n const proxyHeaders = mapRequestHeadersToHeaders(req.headers)\n const proxyUrl = mapRequestToProxyUrl(req)\n\n proxyUrl.searchParams.delete('x-makeswift-preview-mode')\n proxyHeaders.delete('x-makeswift-preview-mode')\n // The following headers are Next.js-specific and are removed to prevent Next.js from\n // short-circuiting requests, breaking routing.\n proxyHeaders.delete('x-invoke-path')\n proxyHeaders.delete('x-invoke-query')\n\n const previewData: MakeswiftPreviewData = {\n makeswift: true,\n // This will eventually be dynamic\n siteVersion: MakeswiftSiteVersion.Working,\n }\n\n const setCookie = res.setPreviewData(previewData).getHeader('set-cookie')\n res.removeHeader('set-cookie')\n\n if (!Array.isArray(setCookie)) return res.status(500).send('Internal Server Error')\n\n setCookie.forEach((cookie) => proxyHeaders.append('cookie', cookie))\n\n const response = await fetch(proxyUrl, {\n headers: proxyHeaders,\n });\n\n response.headers.forEach((value, name) => {\n res.setHeader(name, value);\n })\n\n res.statusCode = response.status;\n res.statusMessage = response.statusText\n\n // `fetch` automatically decompresses the response, but the response headers will keep the\n // `content-encoding` and `content-length` headers. This will cause decoding issues if the client\n // attempts to decompress the response again. To prevent this, we remove these headers.\n //\n // See https://github.com/nodejs/undici/issues/2514.\n if (res.hasHeader('content-encoding')) {\n res.removeHeader('content-encoding')\n res.removeHeader('content-length')\n }\n\n const arrayBuffer = await response.arrayBuffer()\n\n res.write(arrayBuffer)\n res.end()\n}\n"],"mappings":"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","names":["value","args"]}