@makeswift/runtime 0.28.8-canary.9 → 0.28.9-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 (514) hide show
  1. package/dist/cjs/api/api-resources-client.js +3 -0
  2. package/dist/cjs/api/api-resources-client.js.map +1 -1
  3. package/dist/cjs/api/graphql-api-client.js +1 -1
  4. package/dist/cjs/api/ky.js +862 -0
  5. package/dist/cjs/api/ky.js.map +1 -0
  6. package/dist/cjs/api/rest-api-client.js +85 -43
  7. package/dist/cjs/api/rest-api-client.js.map +1 -1
  8. package/dist/cjs/api/types.js.map +1 -1
  9. package/dist/cjs/api-handler/handlers/manifest.js +1 -1
  10. package/dist/cjs/builder/host-to-builder-actions.js +5 -5
  11. package/dist/cjs/builder/host-to-builder-actions.js.map +1 -1
  12. package/dist/cjs/client/index.js +40 -44
  13. package/dist/cjs/client/index.js.map +1 -1
  14. package/dist/cjs/components/builtin/Form/Form.js.map +1 -1
  15. package/dist/cjs/controls/rich-text/control.js +16 -3
  16. package/dist/cjs/controls/rich-text/control.js.map +1 -1
  17. package/dist/cjs/controls/rich-text/rich-text.js +2 -2
  18. package/dist/cjs/controls/rich-text/rich-text.js.map +1 -1
  19. package/dist/cjs/controls/rich-text-v2/control.js +15 -2
  20. package/dist/cjs/controls/rich-text-v2/control.js.map +1 -1
  21. package/dist/cjs/controls/rich-text-v2/rich-text-v2.js +2 -2
  22. package/dist/cjs/controls/rich-text-v2/rich-text-v2.js.map +1 -1
  23. package/dist/cjs/controls/slot.js.map +1 -1
  24. package/dist/cjs/next/testing/breakpoints.js +3 -15
  25. package/dist/cjs/next/testing/breakpoints.js.map +1 -1
  26. package/dist/cjs/next/testing/element-data.js +3 -82
  27. package/dist/cjs/next/testing/element-data.js.map +1 -1
  28. package/dist/cjs/next/testing/react-runtime.js.map +1 -1
  29. package/dist/cjs/prop-controllers/instances.js +20 -4
  30. package/dist/cjs/prop-controllers/instances.js.map +1 -1
  31. package/dist/cjs/runtimes/react/components/Element.js +53 -24
  32. package/dist/cjs/runtimes/react/components/Element.js.map +1 -1
  33. package/dist/cjs/runtimes/react/components/ElementRegistration.js +32 -11
  34. package/dist/cjs/runtimes/react/components/ElementRegistration.js.map +1 -1
  35. package/dist/cjs/runtimes/react/components/control-instances-context.js +38 -0
  36. package/dist/cjs/runtimes/react/components/control-instances-context.js.map +1 -0
  37. package/dist/cjs/runtimes/react/components/framework-context.js +1 -0
  38. package/dist/cjs/runtimes/react/components/framework-context.js.map +1 -1
  39. package/dist/cjs/runtimes/react/components/resolve-props.js +5 -1
  40. package/dist/cjs/runtimes/react/components/resolve-props.js.map +1 -1
  41. package/dist/cjs/runtimes/react/controls/node-value/editable-node-value.js +42 -0
  42. package/dist/cjs/runtimes/react/controls/node-value/editable-node-value.js.map +1 -0
  43. package/dist/cjs/runtimes/react/controls/node-value/index.js +51 -0
  44. package/dist/cjs/runtimes/react/controls/node-value/index.js.map +1 -0
  45. package/dist/cjs/runtimes/react/controls/rich-text/EditableText/editable-text.js.map +1 -1
  46. package/dist/cjs/runtimes/react/controls/rich-text/rich-text.js +2 -2
  47. package/dist/cjs/runtimes/react/controls/rich-text/rich-text.js.map +1 -1
  48. package/dist/cjs/runtimes/react/controls/slot/index.js +29 -0
  49. package/dist/cjs/runtimes/react/controls/slot/index.js.map +1 -0
  50. package/dist/cjs/runtimes/react/controls/slot/render-slot.js +37 -0
  51. package/dist/cjs/runtimes/react/controls/slot/render-slot.js.map +1 -0
  52. package/dist/cjs/runtimes/react/controls/{slot.js → slot/slot-value.js} +31 -26
  53. package/dist/cjs/runtimes/react/controls/slot/slot-value.js.map +1 -0
  54. package/dist/cjs/runtimes/react/element-imperative-handle.js +2 -2
  55. package/dist/cjs/runtimes/react/element-imperative-handle.js.map +1 -1
  56. package/dist/cjs/runtimes/react/hooks/use-control-instance.js +88 -0
  57. package/dist/cjs/runtimes/react/hooks/use-control-instance.js.map +1 -0
  58. package/dist/cjs/runtimes/react/hooks/use-control-instances.js +2 -12
  59. package/dist/cjs/runtimes/react/hooks/use-control-instances.js.map +1 -1
  60. package/dist/cjs/runtimes/react/hooks/use-disable-register-element.js +3 -3
  61. package/dist/cjs/runtimes/react/hooks/use-disable-register-element.js.map +1 -1
  62. package/dist/cjs/runtimes/react/hooks/use-resolved-props.js +10 -9
  63. package/dist/cjs/runtimes/react/hooks/use-resolved-props.js.map +1 -1
  64. package/dist/cjs/runtimes/react/hooks/use-resolved-value-override.js +58 -0
  65. package/dist/cjs/runtimes/react/hooks/use-resolved-value-override.js.map +1 -0
  66. package/dist/cjs/runtimes/react/hooks/use-selector.js +8 -2
  67. package/dist/cjs/runtimes/react/hooks/use-selector.js.map +1 -1
  68. package/dist/cjs/runtimes/react/testing/index.js +25 -0
  69. package/dist/cjs/runtimes/react/testing/index.js.map +1 -0
  70. package/dist/cjs/runtimes/react/testing/react-provider.js +38 -0
  71. package/dist/cjs/runtimes/react/testing/react-provider.js.map +1 -0
  72. package/dist/cjs/state/actions/index.js +4 -4
  73. package/dist/cjs/state/actions/index.js.map +1 -1
  74. package/dist/cjs/state/actions/internal/action-types.js +34 -0
  75. package/dist/cjs/state/actions/internal/action-types.js.map +1 -0
  76. package/dist/cjs/state/actions/internal/index.js +0 -17
  77. package/dist/cjs/state/actions/internal/index.js.map +1 -1
  78. package/dist/cjs/state/actions/internal/read-only-action-types.js +44 -0
  79. package/dist/cjs/state/actions/internal/read-only-action-types.js.map +1 -0
  80. package/dist/cjs/state/actions/internal/read-only-actions.js +13 -92
  81. package/dist/cjs/state/actions/internal/read-only-actions.js.map +1 -1
  82. package/dist/cjs/state/actions/internal/read-write-action-types.js +44 -0
  83. package/dist/cjs/state/actions/internal/read-write-action-types.js.map +1 -0
  84. package/dist/cjs/state/actions/internal/read-write-actions.js +135 -14
  85. package/dist/cjs/state/actions/internal/read-write-actions.js.map +1 -1
  86. package/dist/cjs/state/api-client/state.js +8 -0
  87. package/dist/cjs/state/api-client/state.js.map +1 -1
  88. package/dist/cjs/state/builder-api/action-types.js +49 -0
  89. package/dist/cjs/state/builder-api/action-types.js.map +1 -0
  90. package/dist/cjs/state/builder-api/actions.js +14 -36
  91. package/dist/cjs/state/builder-api/actions.js.map +1 -1
  92. package/dist/cjs/state/builder-api/proxy.js +2 -1
  93. package/dist/cjs/state/builder-api/proxy.js.map +1 -1
  94. package/dist/cjs/state/host-api/action-types.js +43 -0
  95. package/dist/cjs/state/host-api/action-types.js.map +1 -0
  96. package/dist/cjs/state/{host-api.js → host-api/actions.js} +17 -33
  97. package/dist/cjs/state/host-api/actions.js.map +1 -0
  98. package/dist/cjs/state/host-api/index.js +25 -0
  99. package/dist/cjs/state/host-api/index.js.map +1 -0
  100. package/dist/cjs/state/middleware/read-write/builder-api/index.js +2 -58
  101. package/dist/cjs/state/middleware/read-write/builder-api/index.js.map +1 -1
  102. package/dist/cjs/state/middleware/read-write/builder-api/initialize-connection.js +3 -0
  103. package/dist/cjs/state/middleware/read-write/builder-api/initialize-connection.js.map +1 -1
  104. package/dist/cjs/state/middleware/read-write/builder-api/middleware.js +89 -0
  105. package/dist/cjs/state/middleware/read-write/builder-api/middleware.js.map +1 -0
  106. package/dist/cjs/state/middleware/read-write/builder-api/mount-change-action-buffer.js +72 -0
  107. package/dist/cjs/state/middleware/read-write/builder-api/mount-change-action-buffer.js.map +1 -0
  108. package/dist/cjs/state/middleware/read-write/measure-box-models.js +3 -3
  109. package/dist/cjs/state/middleware/read-write/measure-box-models.js.map +1 -1
  110. package/dist/cjs/state/middleware/read-write/prop-controller-handles.js +10 -47
  111. package/dist/cjs/state/middleware/read-write/prop-controller-handles.js.map +1 -1
  112. package/dist/cjs/state/modules/api-resources.js +5 -5
  113. package/dist/cjs/state/modules/api-resources.js.map +1 -1
  114. package/dist/cjs/state/modules/breakpoints.js +4 -4
  115. package/dist/cjs/state/modules/breakpoints.js.map +1 -1
  116. package/dist/cjs/state/modules/components-meta.js +3 -3
  117. package/dist/cjs/state/modules/components-meta.js.map +1 -1
  118. package/dist/cjs/state/modules/element-trees.js +5 -5
  119. package/dist/cjs/state/modules/element-trees.js.map +1 -1
  120. package/dist/cjs/state/modules/is-in-builder.js +2 -2
  121. package/dist/cjs/state/modules/is-in-builder.js.map +1 -1
  122. package/dist/cjs/state/modules/is-read-only.js +2 -2
  123. package/dist/cjs/state/modules/is-read-only.js.map +1 -1
  124. package/dist/cjs/state/modules/locale.js +2 -2
  125. package/dist/cjs/state/modules/locale.js.map +1 -1
  126. package/dist/cjs/state/modules/localized-resources-map.js +3 -3
  127. package/dist/cjs/state/modules/localized-resources-map.js.map +1 -1
  128. package/dist/cjs/state/modules/{prop-controllers.js → prop-controller-descriptors.js} +7 -7
  129. package/dist/cjs/state/modules/prop-controller-descriptors.js.map +1 -0
  130. package/dist/cjs/state/modules/react-components.js +3 -3
  131. package/dist/cjs/state/modules/react-components.js.map +1 -1
  132. package/dist/cjs/state/modules/read-write/box-models.js +5 -5
  133. package/dist/cjs/state/modules/read-write/box-models.js.map +1 -1
  134. package/dist/cjs/state/modules/read-write/element-imperative-handles.js +3 -3
  135. package/dist/cjs/state/modules/read-write/element-imperative-handles.js.map +1 -1
  136. package/dist/cjs/state/modules/{prop-controller-handles.js → read-write/prop-controllers.js} +5 -5
  137. package/dist/cjs/state/modules/read-write/prop-controllers.js.map +1 -0
  138. package/dist/cjs/state/modules/read-write/resolved-value-overrides.js +70 -0
  139. package/dist/cjs/state/modules/read-write/resolved-value-overrides.js.map +1 -0
  140. package/dist/cjs/state/read-only-state.js +9 -44
  141. package/dist/cjs/state/read-only-state.js.map +1 -1
  142. package/dist/cjs/state/read-write-state.js +61 -1
  143. package/dist/cjs/state/read-write-state.js.map +1 -1
  144. package/dist/cjs/state/shared-api/action-types.js +33 -0
  145. package/dist/cjs/state/shared-api/action-types.js.map +1 -0
  146. package/dist/cjs/state/{shared-api.js → shared-api/actions.js} +8 -14
  147. package/dist/cjs/state/shared-api/actions.js.map +1 -0
  148. package/dist/cjs/state/shared-api/index.js +25 -0
  149. package/dist/cjs/state/shared-api/index.js.map +1 -0
  150. package/dist/cjs/state/store.js +5 -3
  151. package/dist/cjs/state/store.js.map +1 -1
  152. package/dist/cjs/state/translations/get.js.map +1 -1
  153. package/dist/cjs/state/translations/merge.js.map +1 -1
  154. package/dist/cjs/state/unified-state.js +12 -0
  155. package/dist/cjs/state/unified-state.js.map +1 -1
  156. package/dist/cjs/testing/breakpoints.js +35 -0
  157. package/dist/cjs/testing/breakpoints.js.map +1 -0
  158. package/dist/cjs/testing/element-data.js +102 -0
  159. package/dist/cjs/testing/element-data.js.map +1 -0
  160. package/dist/cjs/testing/read-write-state.js +32 -0
  161. package/dist/cjs/testing/read-write-state.js.map +1 -0
  162. package/dist/cjs/translations/index.js.map +1 -1
  163. package/dist/esm/api/api-resources-client.js +3 -0
  164. package/dist/esm/api/api-resources-client.js.map +1 -1
  165. package/dist/esm/api/graphql-api-client.js +1 -1
  166. package/dist/esm/api/ky.js +7 -0
  167. package/dist/esm/api/ky.js.map +1 -0
  168. package/dist/esm/api/rest-api-client.js +84 -43
  169. package/dist/esm/api/rest-api-client.js.map +1 -1
  170. package/dist/esm/api/types.js.map +1 -1
  171. package/dist/esm/api-handler/handlers/manifest.js +1 -1
  172. package/dist/esm/builder/host-to-builder-actions.js +2 -4
  173. package/dist/esm/builder/host-to-builder-actions.js.map +1 -1
  174. package/dist/esm/client/index.js +45 -45
  175. package/dist/esm/client/index.js.map +1 -1
  176. package/dist/esm/components/builtin/Form/Form.js.map +1 -1
  177. package/dist/esm/controls/rich-text/control.js +16 -3
  178. package/dist/esm/controls/rich-text/control.js.map +1 -1
  179. package/dist/esm/controls/rich-text/rich-text.js +2 -2
  180. package/dist/esm/controls/rich-text/rich-text.js.map +1 -1
  181. package/dist/esm/controls/rich-text-v2/control.js +15 -2
  182. package/dist/esm/controls/rich-text-v2/control.js.map +1 -1
  183. package/dist/esm/controls/rich-text-v2/rich-text-v2.js +2 -2
  184. package/dist/esm/controls/rich-text-v2/rich-text-v2.js.map +1 -1
  185. package/dist/esm/controls/slot.js.map +1 -1
  186. package/dist/esm/next/testing/breakpoints.js +1 -8
  187. package/dist/esm/next/testing/breakpoints.js.map +1 -1
  188. package/dist/esm/next/testing/element-data.js +1 -75
  189. package/dist/esm/next/testing/element-data.js.map +1 -1
  190. package/dist/esm/next/testing/react-runtime.js.map +1 -1
  191. package/dist/esm/prop-controllers/instances.js +20 -4
  192. package/dist/esm/prop-controllers/instances.js.map +1 -1
  193. package/dist/esm/runtimes/react/components/Element.js +51 -25
  194. package/dist/esm/runtimes/react/components/Element.js.map +1 -1
  195. package/dist/esm/runtimes/react/components/ElementRegistration.js +37 -12
  196. package/dist/esm/runtimes/react/components/ElementRegistration.js.map +1 -1
  197. package/dist/esm/runtimes/react/components/control-instances-context.js +13 -0
  198. package/dist/esm/runtimes/react/components/control-instances-context.js.map +1 -0
  199. package/dist/esm/runtimes/react/components/framework-context.js +1 -0
  200. package/dist/esm/runtimes/react/components/framework-context.js.map +1 -1
  201. package/dist/esm/runtimes/react/components/resolve-props.js +5 -1
  202. package/dist/esm/runtimes/react/components/resolve-props.js.map +1 -1
  203. package/dist/esm/runtimes/react/controls/node-value/editable-node-value.js +21 -0
  204. package/dist/esm/runtimes/react/controls/node-value/editable-node-value.js.map +1 -0
  205. package/dist/esm/runtimes/react/controls/node-value/index.js +17 -0
  206. package/dist/esm/runtimes/react/controls/node-value/index.js.map +1 -0
  207. package/dist/esm/runtimes/react/controls/rich-text/EditableText/editable-text.js.map +1 -1
  208. package/dist/esm/runtimes/react/controls/rich-text/rich-text.js +1 -1
  209. package/dist/esm/runtimes/react/controls/rich-text/rich-text.js.map +1 -1
  210. package/dist/esm/runtimes/react/controls/slot/index.js +5 -0
  211. package/dist/esm/runtimes/react/controls/slot/index.js.map +1 -0
  212. package/dist/esm/runtimes/react/controls/slot/render-slot.js +13 -0
  213. package/dist/esm/runtimes/react/controls/slot/render-slot.js.map +1 -0
  214. package/dist/esm/runtimes/react/controls/{slot.js → slot/slot-value.js} +34 -23
  215. package/dist/esm/runtimes/react/controls/slot/slot-value.js.map +1 -0
  216. package/dist/esm/runtimes/react/element-imperative-handle.js +1 -1
  217. package/dist/esm/runtimes/react/element-imperative-handle.js.map +1 -1
  218. package/dist/esm/runtimes/react/hooks/use-control-instance.js +62 -0
  219. package/dist/esm/runtimes/react/hooks/use-control-instance.js.map +1 -0
  220. package/dist/esm/runtimes/react/hooks/use-control-instances.js +1 -11
  221. package/dist/esm/runtimes/react/hooks/use-control-instances.js.map +1 -1
  222. package/dist/esm/runtimes/react/hooks/use-disable-register-element.js +2 -2
  223. package/dist/esm/runtimes/react/hooks/use-disable-register-element.js.map +1 -1
  224. package/dist/esm/runtimes/react/hooks/use-resolved-props.js +10 -9
  225. package/dist/esm/runtimes/react/hooks/use-resolved-props.js.map +1 -1
  226. package/dist/esm/runtimes/react/hooks/use-resolved-value-override.js +35 -0
  227. package/dist/esm/runtimes/react/hooks/use-resolved-value-override.js.map +1 -0
  228. package/dist/esm/runtimes/react/hooks/use-selector.js +8 -2
  229. package/dist/esm/runtimes/react/hooks/use-selector.js.map +1 -1
  230. package/dist/esm/runtimes/react/testing/index.js +3 -0
  231. package/dist/esm/runtimes/react/testing/index.js.map +1 -0
  232. package/dist/esm/runtimes/react/testing/react-provider.js +14 -0
  233. package/dist/esm/runtimes/react/testing/react-provider.js.map +1 -0
  234. package/dist/esm/state/actions/index.js +2 -2
  235. package/dist/esm/state/actions/index.js.map +1 -1
  236. package/dist/esm/state/actions/internal/action-types.js +10 -0
  237. package/dist/esm/state/actions/internal/action-types.js.map +1 -0
  238. package/dist/esm/state/actions/internal/index.js +0 -9
  239. package/dist/esm/state/actions/internal/index.js.map +1 -1
  240. package/dist/esm/state/actions/internal/read-only-action-types.js +20 -0
  241. package/dist/esm/state/actions/internal/read-only-action-types.js.map +1 -0
  242. package/dist/esm/state/actions/internal/read-only-actions.js +1 -73
  243. package/dist/esm/state/actions/internal/read-only-actions.js.map +1 -1
  244. package/dist/esm/state/actions/internal/read-write-action-types.js +20 -0
  245. package/dist/esm/state/actions/internal/read-write-action-types.js.map +1 -0
  246. package/dist/esm/state/actions/internal/read-write-actions.js +108 -8
  247. package/dist/esm/state/actions/internal/read-write-actions.js.map +1 -1
  248. package/dist/esm/state/api-client/state.js +7 -0
  249. package/dist/esm/state/api-client/state.js.map +1 -1
  250. package/dist/esm/state/builder-api/action-types.js +25 -0
  251. package/dist/esm/state/builder-api/action-types.js.map +1 -0
  252. package/dist/esm/state/builder-api/actions.js +1 -24
  253. package/dist/esm/state/builder-api/actions.js.map +1 -1
  254. package/dist/esm/state/builder-api/proxy.js +2 -1
  255. package/dist/esm/state/builder-api/proxy.js.map +1 -1
  256. package/dist/esm/state/host-api/action-types.js +19 -0
  257. package/dist/esm/state/host-api/action-types.js.map +1 -0
  258. package/dist/esm/state/{host-api.js → host-api/actions.js} +2 -17
  259. package/dist/esm/state/host-api/actions.js.map +1 -0
  260. package/dist/esm/state/host-api/index.js +3 -0
  261. package/dist/esm/state/host-api/index.js.map +1 -0
  262. package/dist/esm/state/middleware/read-write/builder-api/index.js +1 -57
  263. package/dist/esm/state/middleware/read-write/builder-api/index.js.map +1 -1
  264. package/dist/esm/state/middleware/read-write/builder-api/initialize-connection.js +3 -0
  265. package/dist/esm/state/middleware/read-write/builder-api/initialize-connection.js.map +1 -1
  266. package/dist/esm/state/middleware/read-write/builder-api/middleware.js +65 -0
  267. package/dist/esm/state/middleware/read-write/builder-api/middleware.js.map +1 -0
  268. package/dist/esm/state/middleware/read-write/builder-api/mount-change-action-buffer.js +48 -0
  269. package/dist/esm/state/middleware/read-write/builder-api/mount-change-action-buffer.js.map +1 -0
  270. package/dist/esm/state/middleware/read-write/measure-box-models.js +3 -3
  271. package/dist/esm/state/middleware/read-write/measure-box-models.js.map +1 -1
  272. package/dist/esm/state/middleware/read-write/prop-controller-handles.js +13 -47
  273. package/dist/esm/state/middleware/read-write/prop-controller-handles.js.map +1 -1
  274. package/dist/esm/state/modules/api-resources.js +2 -2
  275. package/dist/esm/state/modules/api-resources.js.map +1 -1
  276. package/dist/esm/state/modules/breakpoints.js +2 -2
  277. package/dist/esm/state/modules/breakpoints.js.map +1 -1
  278. package/dist/esm/state/modules/components-meta.js +1 -1
  279. package/dist/esm/state/modules/components-meta.js.map +1 -1
  280. package/dist/esm/state/modules/element-trees.js +2 -2
  281. package/dist/esm/state/modules/element-trees.js.map +1 -1
  282. package/dist/esm/state/modules/is-in-builder.js +1 -1
  283. package/dist/esm/state/modules/is-in-builder.js.map +1 -1
  284. package/dist/esm/state/modules/is-read-only.js +1 -1
  285. package/dist/esm/state/modules/is-read-only.js.map +1 -1
  286. package/dist/esm/state/modules/locale.js +1 -1
  287. package/dist/esm/state/modules/locale.js.map +1 -1
  288. package/dist/esm/state/modules/localized-resources-map.js +1 -1
  289. package/dist/esm/state/modules/localized-resources-map.js.map +1 -1
  290. package/dist/esm/state/modules/{prop-controllers.js → prop-controller-descriptors.js} +2 -2
  291. package/dist/esm/state/modules/prop-controller-descriptors.js.map +1 -0
  292. package/dist/esm/state/modules/react-components.js +1 -1
  293. package/dist/esm/state/modules/react-components.js.map +1 -1
  294. package/dist/esm/state/modules/read-write/box-models.js +2 -2
  295. package/dist/esm/state/modules/read-write/box-models.js.map +1 -1
  296. package/dist/esm/state/modules/read-write/element-imperative-handles.js +3 -3
  297. package/dist/esm/state/modules/read-write/element-imperative-handles.js.map +1 -1
  298. package/dist/esm/state/modules/{prop-controller-handles.js → read-write/prop-controllers.js} +2 -2
  299. package/dist/esm/state/modules/read-write/prop-controllers.js.map +1 -0
  300. package/dist/esm/state/modules/read-write/resolved-value-overrides.js +43 -0
  301. package/dist/esm/state/modules/read-write/resolved-value-overrides.js.map +1 -0
  302. package/dist/esm/state/read-only-state.js +9 -41
  303. package/dist/esm/state/read-only-state.js.map +1 -1
  304. package/dist/esm/state/read-write-state.js +56 -1
  305. package/dist/esm/state/read-write-state.js.map +1 -1
  306. package/dist/esm/state/shared-api/action-types.js +9 -0
  307. package/dist/esm/state/shared-api/action-types.js.map +1 -0
  308. package/dist/esm/state/{shared-api.js → shared-api/actions.js} +2 -7
  309. package/dist/esm/state/shared-api/actions.js.map +1 -0
  310. package/dist/esm/state/shared-api/index.js +3 -0
  311. package/dist/esm/state/shared-api/index.js.map +1 -0
  312. package/dist/esm/state/store.js +3 -1
  313. package/dist/esm/state/store.js.map +1 -1
  314. package/dist/esm/state/translations/get.js.map +1 -1
  315. package/dist/esm/state/translations/merge.js +3 -1
  316. package/dist/esm/state/translations/merge.js.map +1 -1
  317. package/dist/esm/state/unified-state.js +4 -0
  318. package/dist/esm/state/unified-state.js.map +1 -1
  319. package/dist/esm/testing/breakpoints.js +9 -0
  320. package/dist/esm/testing/breakpoints.js.map +1 -0
  321. package/dist/esm/testing/element-data.js +76 -0
  322. package/dist/esm/testing/element-data.js.map +1 -0
  323. package/dist/esm/testing/read-write-state.js +8 -0
  324. package/dist/esm/testing/read-write-state.js.map +1 -0
  325. package/dist/esm/translations/index.js.map +1 -1
  326. package/dist/types/api/__tests__/rest-api-client.retries.test.d.ts +2 -0
  327. package/dist/types/api/__tests__/rest-api-client.retries.test.d.ts.map +1 -0
  328. package/dist/types/api/api-resources-client.d.ts +1 -0
  329. package/dist/types/api/api-resources-client.d.ts.map +1 -1
  330. package/dist/types/api/ky.d.ts +3 -0
  331. package/dist/types/api/ky.d.ts.map +1 -0
  332. package/dist/types/api/rest-api-client.d.ts +4 -0
  333. package/dist/types/api/rest-api-client.d.ts.map +1 -1
  334. package/dist/types/api/schema/page-pathname-slice.d.ts +2 -2
  335. package/dist/types/api/types.d.ts +1 -1
  336. package/dist/types/api/types.d.ts.map +1 -1
  337. package/dist/types/api-handler/handlers/webhook/diff-projection.d.ts +6 -6
  338. package/dist/types/api-handler/handlers/webhook/types.d.ts +20 -20
  339. package/dist/types/builder/host-to-builder-actions.d.ts.map +1 -1
  340. package/dist/types/client/index.d.ts.map +1 -1
  341. package/dist/types/components/builtin/Form/Form.d.ts +1 -1
  342. package/dist/types/components/builtin/Form/Form.d.ts.map +1 -1
  343. package/dist/types/components/hooks/useIsomorphicLayoutEffect.d.ts +2 -2
  344. package/dist/types/components/hooks/useIsomorphicLayoutEffect.d.ts.map +1 -1
  345. package/dist/types/controls/__tests__/slot.test.d.ts +3 -0
  346. package/dist/types/controls/__tests__/slot.test.d.ts.map +1 -0
  347. package/dist/types/controls/rich-text/control.d.ts +5 -1
  348. package/dist/types/controls/rich-text/control.d.ts.map +1 -1
  349. package/dist/types/controls/rich-text/rich-text.d.ts +2 -2
  350. package/dist/types/controls/rich-text/rich-text.d.ts.map +1 -1
  351. package/dist/types/controls/rich-text-v2/control.d.ts +6 -2
  352. package/dist/types/controls/rich-text-v2/control.d.ts.map +1 -1
  353. package/dist/types/controls/rich-text-v2/rich-text-v2.d.ts +2 -2
  354. package/dist/types/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
  355. package/dist/types/controls/slot.d.ts +1 -1
  356. package/dist/types/controls/slot.d.ts.map +1 -1
  357. package/dist/types/locale.d.ts +1 -1
  358. package/dist/types/next/testing/breakpoints.d.ts +1 -3
  359. package/dist/types/next/testing/breakpoints.d.ts.map +1 -1
  360. package/dist/types/next/testing/element-data.d.ts +1 -54
  361. package/dist/types/next/testing/element-data.d.ts.map +1 -1
  362. package/dist/types/next/testing/react-runtime.d.ts.map +1 -1
  363. package/dist/types/prop-controllers/instances.d.ts +9 -3
  364. package/dist/types/prop-controllers/instances.d.ts.map +1 -1
  365. package/dist/types/runtimes/react/components/Element.d.ts.map +1 -1
  366. package/dist/types/runtimes/react/components/ElementRegistration.d.ts +4 -4
  367. package/dist/types/runtimes/react/components/ElementRegistration.d.ts.map +1 -1
  368. package/dist/types/runtimes/react/components/__tests__/element-registration.test.d.ts +3 -0
  369. package/dist/types/runtimes/react/components/__tests__/element-registration.test.d.ts.map +1 -0
  370. package/dist/types/runtimes/react/components/control-instances-context.d.ts +9 -0
  371. package/dist/types/runtimes/react/components/control-instances-context.d.ts.map +1 -0
  372. package/dist/types/runtimes/react/components/framework-context.d.ts.map +1 -1
  373. package/dist/types/runtimes/react/components/resolve-props.d.ts.map +1 -1
  374. package/dist/types/runtimes/react/controls/node-value/editable-node-value.d.ts +7 -0
  375. package/dist/types/runtimes/react/controls/node-value/editable-node-value.d.ts.map +1 -0
  376. package/dist/types/runtimes/react/controls/node-value/index.d.ts +6 -0
  377. package/dist/types/runtimes/react/controls/node-value/index.d.ts.map +1 -0
  378. package/dist/types/runtimes/react/controls/rich-text/EditableText/editable-text.d.ts +1 -1
  379. package/dist/types/runtimes/react/controls/rich-text/EditableText/editable-text.d.ts.map +1 -1
  380. package/dist/types/runtimes/react/controls/slot/index.d.ts +2 -0
  381. package/dist/types/runtimes/react/controls/slot/index.d.ts.map +1 -0
  382. package/dist/types/runtimes/react/controls/slot/render-slot.d.ts +9 -0
  383. package/dist/types/runtimes/react/controls/slot/render-slot.d.ts.map +1 -0
  384. package/dist/types/runtimes/react/controls/{slot.d.ts → slot/slot-value.d.ts} +7 -7
  385. package/dist/types/runtimes/react/controls/slot/slot-value.d.ts.map +1 -0
  386. package/dist/types/runtimes/react/element-imperative-handle.d.ts +1 -1
  387. package/dist/types/runtimes/react/element-imperative-handle.d.ts.map +1 -1
  388. package/dist/types/runtimes/react/hooks/__tests__/use-control-instance.test.d.ts +3 -0
  389. package/dist/types/runtimes/react/hooks/__tests__/use-control-instance.test.d.ts.map +1 -0
  390. package/dist/types/runtimes/react/hooks/use-control-instance.d.ts +7 -0
  391. package/dist/types/runtimes/react/hooks/use-control-instance.d.ts.map +1 -0
  392. package/dist/types/runtimes/react/hooks/use-control-instances.d.ts +1 -2
  393. package/dist/types/runtimes/react/hooks/use-control-instances.d.ts.map +1 -1
  394. package/dist/types/runtimes/react/hooks/use-disable-register-element.d.ts +1 -1
  395. package/dist/types/runtimes/react/hooks/use-disable-register-element.d.ts.map +1 -1
  396. package/dist/types/runtimes/react/hooks/use-resolved-props.d.ts +4 -3
  397. package/dist/types/runtimes/react/hooks/use-resolved-props.d.ts.map +1 -1
  398. package/dist/types/runtimes/react/hooks/use-resolved-value-override.d.ts +5 -0
  399. package/dist/types/runtimes/react/hooks/use-resolved-value-override.d.ts.map +1 -0
  400. package/dist/types/runtimes/react/hooks/use-selector.d.ts +2 -5
  401. package/dist/types/runtimes/react/hooks/use-selector.d.ts.map +1 -1
  402. package/dist/types/runtimes/react/hooks/use-store.d.ts +2 -4
  403. package/dist/types/runtimes/react/hooks/use-store.d.ts.map +1 -1
  404. package/dist/types/runtimes/react/testing/index.d.ts +3 -0
  405. package/dist/types/runtimes/react/testing/index.d.ts.map +1 -0
  406. package/dist/types/runtimes/react/testing/react-provider.d.ts +8 -0
  407. package/dist/types/runtimes/react/testing/react-provider.d.ts.map +1 -0
  408. package/dist/types/slate/InlineModePlugin/index.d.ts +1 -1
  409. package/dist/types/slate/LinkPlugin/getValue.d.ts.map +1 -1
  410. package/dist/types/slate/LinkPlugin/index.d.ts.map +1 -1
  411. package/dist/types/slate/TypographyPlugin/getValue.d.ts.map +1 -1
  412. package/dist/types/slate/TypographyPlugin/index.d.ts.map +1 -1
  413. package/dist/types/state/__tests__/test-store.d.ts +2 -4
  414. package/dist/types/state/__tests__/test-store.d.ts.map +1 -1
  415. package/dist/types/state/actions/index.d.ts +9 -6
  416. package/dist/types/state/actions/index.d.ts.map +1 -1
  417. package/dist/types/state/actions/internal/action-types.d.ts +29 -0
  418. package/dist/types/state/actions/internal/action-types.d.ts.map +1 -0
  419. package/dist/types/state/actions/internal/index.d.ts +0 -25
  420. package/dist/types/state/actions/internal/index.d.ts.map +1 -1
  421. package/dist/types/state/actions/internal/read-only-action-types.d.ts +15 -0
  422. package/dist/types/state/actions/internal/read-only-action-types.d.ts.map +1 -0
  423. package/dist/types/state/actions/internal/read-only-actions.d.ts +3 -76
  424. package/dist/types/state/actions/internal/read-only-actions.d.ts.map +1 -1
  425. package/dist/types/state/actions/internal/read-write-action-types.d.ts +17 -0
  426. package/dist/types/state/actions/internal/read-write-action-types.d.ts.map +1 -0
  427. package/dist/types/state/actions/internal/read-write-actions.d.ts +89 -8
  428. package/dist/types/state/actions/internal/read-write-actions.d.ts.map +1 -1
  429. package/dist/types/state/api-client/state.d.ts +1 -0
  430. package/dist/types/state/api-client/state.d.ts.map +1 -1
  431. package/dist/types/state/builder-api/action-types.d.ts +22 -0
  432. package/dist/types/state/builder-api/action-types.d.ts.map +1 -0
  433. package/dist/types/state/builder-api/actions.d.ts +3 -23
  434. package/dist/types/state/builder-api/actions.d.ts.map +1 -1
  435. package/dist/types/state/builder-api/proxy.d.ts.map +1 -1
  436. package/dist/types/state/host-api/action-types.d.ts +17 -0
  437. package/dist/types/state/host-api/action-types.d.ts.map +1 -0
  438. package/dist/types/state/{host-api.d.ts → host-api/actions.d.ts} +7 -22
  439. package/dist/types/state/host-api/actions.d.ts.map +1 -0
  440. package/dist/types/state/host-api/index.d.ts +3 -0
  441. package/dist/types/state/host-api/index.d.ts.map +1 -0
  442. package/dist/types/state/middleware/read-write/__tests__/fixtures/operations.d.ts.map +1 -0
  443. package/dist/types/state/middleware/read-write/__tests__/fixtures/root-elements.d.ts.map +1 -0
  444. package/dist/types/state/middleware/read-write/__tests__/prop-controller-handles.test.d.ts +2 -0
  445. package/dist/types/state/middleware/read-write/__tests__/prop-controller-handles.test.d.ts.map +1 -0
  446. package/dist/types/state/middleware/read-write/__tests__/update-element-tree.test.d.ts +2 -0
  447. package/dist/types/state/middleware/read-write/__tests__/update-element-tree.test.d.ts.map +1 -0
  448. package/dist/types/state/middleware/read-write/builder-api/__tests__/middleware.test.d.ts +2 -0
  449. package/dist/types/state/middleware/read-write/builder-api/__tests__/middleware.test.d.ts.map +1 -0
  450. package/dist/types/state/middleware/read-write/builder-api/__tests__/mount-change-action-buffer.test.d.ts +2 -0
  451. package/dist/types/state/middleware/read-write/builder-api/__tests__/mount-change-action-buffer.test.d.ts.map +1 -0
  452. package/dist/types/state/middleware/read-write/builder-api/index.d.ts +1 -4
  453. package/dist/types/state/middleware/read-write/builder-api/index.d.ts.map +1 -1
  454. package/dist/types/state/middleware/read-write/builder-api/initialize-connection.d.ts.map +1 -1
  455. package/dist/types/state/middleware/read-write/builder-api/middleware.d.ts +5 -0
  456. package/dist/types/state/middleware/read-write/builder-api/middleware.d.ts.map +1 -0
  457. package/dist/types/state/middleware/read-write/builder-api/mount-change-action-buffer.d.ts +28 -0
  458. package/dist/types/state/middleware/read-write/builder-api/mount-change-action-buffer.d.ts.map +1 -0
  459. package/dist/types/state/middleware/read-write/prop-controller-handles.d.ts.map +1 -1
  460. package/dist/types/state/modules/element-trees.d.ts +1 -1
  461. package/dist/types/state/modules/element-trees.d.ts.map +1 -1
  462. package/dist/types/state/modules/{prop-controllers.d.ts → prop-controller-descriptors.d.ts} +1 -1
  463. package/dist/types/state/modules/prop-controller-descriptors.d.ts.map +1 -0
  464. package/dist/types/state/modules/{prop-controller-handles.d.ts → read-write/prop-controllers.d.ts} +4 -4
  465. package/dist/types/state/modules/{prop-controller-handles.d.ts.map → read-write/prop-controllers.d.ts.map} +1 -1
  466. package/dist/types/state/modules/read-write/resolved-value-overrides.d.ts +15 -0
  467. package/dist/types/state/modules/read-write/resolved-value-overrides.d.ts.map +1 -0
  468. package/dist/types/state/read-only-state.d.ts +6 -70
  469. package/dist/types/state/read-only-state.d.ts.map +1 -1
  470. package/dist/types/state/read-write-state.d.ts +74 -4
  471. package/dist/types/state/read-write-state.d.ts.map +1 -1
  472. package/dist/types/state/shared-api/action-types.d.ts +6 -0
  473. package/dist/types/state/shared-api/action-types.d.ts.map +1 -0
  474. package/dist/types/state/{shared-api.d.ts → shared-api/actions.d.ts} +3 -7
  475. package/dist/types/state/shared-api/actions.d.ts.map +1 -0
  476. package/dist/types/state/shared-api/index.d.ts +3 -0
  477. package/dist/types/state/shared-api/index.d.ts.map +1 -0
  478. package/dist/types/state/store.d.ts +4 -8
  479. package/dist/types/state/store.d.ts.map +1 -1
  480. package/dist/types/state/translations/get.d.ts +1 -1
  481. package/dist/types/state/translations/get.d.ts.map +1 -1
  482. package/dist/types/state/translations/merge.d.ts +1 -1
  483. package/dist/types/state/translations/merge.d.ts.map +1 -1
  484. package/dist/types/state/unified-state.d.ts +2 -0
  485. package/dist/types/state/unified-state.d.ts.map +1 -1
  486. package/dist/types/testing/breakpoints.d.ts +4 -0
  487. package/dist/types/testing/breakpoints.d.ts.map +1 -0
  488. package/dist/types/testing/element-data.d.ts +59 -0
  489. package/dist/types/testing/element-data.d.ts.map +1 -0
  490. package/dist/types/testing/read-write-state.d.ts +3 -0
  491. package/dist/types/testing/read-write-state.d.ts.map +1 -0
  492. package/dist/types/translations/index.d.ts +1 -1
  493. package/dist/types/translations/index.d.ts.map +1 -1
  494. package/package.json +7 -5
  495. package/dist/cjs/runtimes/react/controls/slot.js.map +0 -1
  496. package/dist/cjs/state/host-api.js.map +0 -1
  497. package/dist/cjs/state/modules/prop-controller-handles.js.map +0 -1
  498. package/dist/cjs/state/modules/prop-controllers.js.map +0 -1
  499. package/dist/cjs/state/shared-api.js.map +0 -1
  500. package/dist/esm/runtimes/react/controls/slot.js.map +0 -1
  501. package/dist/esm/state/host-api.js.map +0 -1
  502. package/dist/esm/state/modules/prop-controller-handles.js.map +0 -1
  503. package/dist/esm/state/modules/prop-controllers.js.map +0 -1
  504. package/dist/esm/state/shared-api.js.map +0 -1
  505. package/dist/types/runtimes/react/controls/slot.d.ts.map +0 -1
  506. package/dist/types/state/__tests__/fixtures/operations.d.ts.map +0 -1
  507. package/dist/types/state/__tests__/fixtures/root-elements.d.ts.map +0 -1
  508. package/dist/types/state/__tests__/react-builder-preview.test.d.ts +0 -2
  509. package/dist/types/state/__tests__/react-builder-preview.test.d.ts.map +0 -1
  510. package/dist/types/state/host-api.d.ts.map +0 -1
  511. package/dist/types/state/modules/prop-controllers.d.ts.map +0 -1
  512. package/dist/types/state/shared-api.d.ts.map +0 -1
  513. /package/dist/types/state/{__tests__ → middleware/read-write/__tests__}/fixtures/operations.d.ts +0 -0
  514. /package/dist/types/state/{__tests__ → middleware/read-write/__tests__}/fixtures/root-elements.d.ts +0 -0
@@ -0,0 +1,102 @@
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 element_data_exports = {};
20
+ __export(element_data_exports, {
21
+ createMakeswiftComponentSnapshot: () => createMakeswiftComponentSnapshot,
22
+ createMakeswiftPageSnapshot: () => createMakeswiftPageSnapshot,
23
+ createRootComponent: () => createRootComponent
24
+ });
25
+ module.exports = __toCommonJS(element_data_exports);
26
+ var import_uuid = require("uuid");
27
+ var import_api_resources_client = require("../api/api-resources-client");
28
+ var import_constants = require("../components/builtin/constants");
29
+ function createRootComponent(elements, rootId) {
30
+ return {
31
+ key: rootId ?? (0, import_uuid.v4)(),
32
+ type: import_constants.MakeswiftComponentType.Root,
33
+ props: {
34
+ children: {
35
+ columns: [
36
+ {
37
+ deviceId: "desktop",
38
+ value: {
39
+ count: 12,
40
+ spans: elements?.map(() => [12])
41
+ }
42
+ }
43
+ ],
44
+ elements
45
+ }
46
+ }
47
+ };
48
+ }
49
+ const isDocument = (elementOrDocument) => "snippets" in elementOrDocument || "fonts" in elementOrDocument || "meta" in elementOrDocument || "seo" in elementOrDocument;
50
+ function createMakeswiftPageSnapshot(elementOrDocument, {
51
+ cacheData = {},
52
+ locale = null
53
+ } = {}) {
54
+ return {
55
+ document: isDocument(elementOrDocument) ? elementOrDocument : {
56
+ id: "test-page-id",
57
+ site: { id: "test-site-id" },
58
+ data: elementOrDocument,
59
+ snippets: [],
60
+ fonts: [],
61
+ meta: {},
62
+ seo: {},
63
+ localizedPages: [],
64
+ locale
65
+ },
66
+ cacheData: {
67
+ ...import_api_resources_client.CacheData.empty(),
68
+ ...cacheData
69
+ }
70
+ };
71
+ }
72
+ function createMakeswiftComponentSnapshot(elementData, {
73
+ cacheData = {},
74
+ locale = null
75
+ } = {}) {
76
+ return {
77
+ key: (0, import_uuid.v4)(),
78
+ document: {
79
+ id: "test-component-id",
80
+ name: "Test Component Document",
81
+ siteId: "test-site-id",
82
+ data: elementData,
83
+ inheritsFromParent: false,
84
+ locale
85
+ },
86
+ meta: {
87
+ allowLocaleFallback: false,
88
+ requestedLocale: locale
89
+ },
90
+ cacheData: {
91
+ ...import_api_resources_client.CacheData.empty(),
92
+ ...cacheData
93
+ }
94
+ };
95
+ }
96
+ // Annotate the CommonJS export names for ESM import in node:
97
+ 0 && (module.exports = {
98
+ createMakeswiftComponentSnapshot,
99
+ createMakeswiftPageSnapshot,
100
+ createRootComponent
101
+ });
102
+ //# sourceMappingURL=element-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/testing/element-data.ts"],"sourcesContent":["import { v4 as uuid } from 'uuid'\n\nimport {\n type MakeswiftPageSnapshot,\n type MakeswiftPageDocument,\n type MakeswiftComponentSnapshot,\n} from '../client'\nimport { CacheData } from '../api/api-resources-client'\nimport { type Element, type ElementData } from '../state/read-only-state'\nimport { MakeswiftComponentType } from '../components/builtin/constants'\n\nexport function createRootComponent(elements: Element[], rootId?: string) {\n return {\n key: rootId ?? uuid(),\n type: MakeswiftComponentType.Root,\n props: {\n children: {\n columns: [\n {\n deviceId: 'desktop',\n value: {\n count: 12,\n spans: elements?.map(() => [12]),\n },\n },\n ],\n elements,\n },\n },\n }\n}\n\nconst isDocument = (\n elementOrDocument: Element | MakeswiftPageDocument,\n): elementOrDocument is MakeswiftPageDocument =>\n 'snippets' in elementOrDocument ||\n 'fonts' in elementOrDocument ||\n 'meta' in elementOrDocument ||\n 'seo' in elementOrDocument\n\nexport function createMakeswiftPageSnapshot(\n elementOrDocument: Element | MakeswiftPageDocument,\n {\n cacheData = {},\n locale = null,\n }: { cacheData?: Partial<MakeswiftPageSnapshot['cacheData']>; locale?: string | null } = {},\n): MakeswiftPageSnapshot {\n return {\n document: isDocument(elementOrDocument)\n ? elementOrDocument\n : {\n id: 'test-page-id',\n site: { id: 'test-site-id' },\n data: elementOrDocument,\n snippets: [],\n fonts: [],\n meta: {},\n seo: {},\n localizedPages: [],\n locale,\n },\n cacheData: {\n ...CacheData.empty(),\n ...cacheData,\n },\n }\n}\n\nexport function createMakeswiftComponentSnapshot(\n elementData: ElementData | null,\n {\n cacheData = {},\n locale = null,\n }: { cacheData?: Partial<MakeswiftComponentSnapshot['cacheData']>; locale?: string | null } = {},\n): MakeswiftComponentSnapshot {\n return {\n key: uuid(),\n document: {\n id: 'test-component-id',\n name: 'Test Component Document',\n siteId: 'test-site-id',\n data: elementData,\n inheritsFromParent: false,\n locale,\n },\n meta: {\n allowLocaleFallback: false,\n requestedLocale: locale,\n },\n cacheData: {\n ...CacheData.empty(),\n ...cacheData,\n },\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA2B;AAO3B,kCAA0B;AAE1B,uBAAuC;AAEhC,SAAS,oBAAoB,UAAqB,QAAiB;AACxE,SAAO;AAAA,IACL,KAAK,cAAU,YAAAA,IAAK;AAAA,IACpB,MAAM,wCAAuB;AAAA,IAC7B,OAAO;AAAA,MACL,UAAU;AAAA,QACR,SAAS;AAAA,UACP;AAAA,YACE,UAAU;AAAA,YACV,OAAO;AAAA,cACL,OAAO;AAAA,cACP,OAAO,UAAU,IAAI,MAAM,CAAC,EAAE,CAAC;AAAA,YACjC;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,MAAM,aAAa,CACjB,sBAEA,cAAc,qBACd,WAAW,qBACX,UAAU,qBACV,SAAS;AAEJ,SAAS,4BACd,mBACA;AAAA,EACE,YAAY,CAAC;AAAA,EACb,SAAS;AACX,IAAyF,CAAC,GACnE;AACvB,SAAO;AAAA,IACL,UAAU,WAAW,iBAAiB,IAClC,oBACA;AAAA,MACE,IAAI;AAAA,MACJ,MAAM,EAAE,IAAI,eAAe;AAAA,MAC3B,MAAM;AAAA,MACN,UAAU,CAAC;AAAA,MACX,OAAO,CAAC;AAAA,MACR,MAAM,CAAC;AAAA,MACP,KAAK,CAAC;AAAA,MACN,gBAAgB,CAAC;AAAA,MACjB;AAAA,IACF;AAAA,IACJ,WAAW;AAAA,MACT,GAAG,sCAAU,MAAM;AAAA,MACnB,GAAG;AAAA,IACL;AAAA,EACF;AACF;AAEO,SAAS,iCACd,aACA;AAAA,EACE,YAAY,CAAC;AAAA,EACb,SAAS;AACX,IAA8F,CAAC,GACnE;AAC5B,SAAO;AAAA,IACL,SAAK,YAAAA,IAAK;AAAA,IACV,UAAU;AAAA,MACR,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,oBAAoB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,MAAM;AAAA,MACJ,qBAAqB;AAAA,MACrB,iBAAiB;AAAA,IACnB;AAAA,IACA,WAAW;AAAA,MACT,GAAG,sCAAU,MAAM;AAAA,MACnB,GAAG;AAAA,IACL;AAAA,EACF;AACF;","names":["uuid"]}
@@ -0,0 +1,32 @@
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 read_write_state_exports = {};
20
+ __export(read_write_state_exports, {
21
+ expectReadWriteState: () => expectReadWriteState
22
+ });
23
+ module.exports = __toCommonJS(read_write_state_exports);
24
+ var import_unified_state = require("../state/unified-state");
25
+ function expectReadWriteState(state) {
26
+ expect((0, import_unified_state.isReadWriteState)(state)).toBe(true);
27
+ }
28
+ // Annotate the CommonJS export names for ESM import in node:
29
+ 0 && (module.exports = {
30
+ expectReadWriteState
31
+ });
32
+ //# sourceMappingURL=read-write-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/testing/read-write-state.ts"],"sourcesContent":["import { type State, type ReadWriteState, isReadWriteState } from '../state/unified-state'\n\nexport function expectReadWriteState(state: State): asserts state is ReadWriteState {\n expect(isReadWriteState(state)).toBe(true)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAAkE;AAE3D,SAAS,qBAAqB,OAA+C;AAClF,aAAO,uCAAiB,KAAK,CAAC,EAAE,KAAK,IAAI;AAC3C;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/translations/index.ts"],"sourcesContent":["export { getTranslatableContent } from '../state/translations/get'\nexport { mergeTranslatedContent } from '../state/translations/merge'\nexport type {\n DescriptorsByComponentType,\n DescriptorsByProp,\n} from '../state/modules/prop-controllers'\nexport type { ElementData, Data, Element } from '../state/read-only-state'\nexport type { TranslationDto } from '@makeswift/controls'\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAuC;AACvC,mBAAuC;","names":[]}
1
+ {"version":3,"sources":["../../../src/translations/index.ts"],"sourcesContent":["export { getTranslatableContent } from '../state/translations/get'\nexport { mergeTranslatedContent } from '../state/translations/merge'\nexport type {\n DescriptorsByComponentType,\n DescriptorsByProp,\n} from '../state/modules/prop-controller-descriptors'\nexport type { ElementData, Data, Element } from '../state/read-only-state'\nexport type { TranslationDto } from '@makeswift/controls'\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAuC;AACvC,mBAAuC;","names":[]}
@@ -18,6 +18,9 @@ class ApiResourcesClient {
18
18
  this.store = store;
19
19
  this.subscribe = this.store.subscribe;
20
20
  }
21
+ get cacheData() {
22
+ return ApiClientState.getSerializedState(this.store.getState());
23
+ }
21
24
  async fetchSwatch(swatchId) {
22
25
  const fetch = (id, version) => this.fetchSwatchImpl(id, version);
23
26
  return await this.store.dispatch(fetchAPIResource(APIResourceType.Swatch, swatchId, fetch));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/api-resources-client.ts"],"sourcesContent":["import { type FetchableValue } from '@makeswift/controls'\n\nimport { type Store as ApiClientStore } from '../state/api-client/store'\nimport * as ApiClientState from '../state/api-client/state'\nimport { fetchAPIResource } from '../state/api-client/fetch-api-resource'\n\nimport {\n type File,\n type GlobalElement,\n type LocalizedGlobalElement,\n type Page,\n type PagePathnameSlice,\n type Site,\n type Snippet,\n type Swatch,\n type Table,\n type Typography,\n APIResourceType,\n} from './types'\n\nimport { type SiteVersion } from './site-version'\n\nexport type CacheData = ApiClientState.SerializedState\n\nexport const CacheData = {\n empty(): CacheData {\n return {\n apiResources: {},\n localizedResourcesMap: {},\n }\n },\n}\n\nexport abstract class ApiResourcesClient {\n readonly store: ApiClientStore\n readonly subscribe: ApiClientStore['subscribe']\n\n constructor({ store }: { store: ApiClientStore }) {\n this.store = store\n this.subscribe = this.store.subscribe\n }\n\n async fetchSwatch(swatchId: string): Promise<Swatch | null> {\n const fetch = (id: string, version: SiteVersion | null) => this.fetchSwatchImpl(id, version)\n\n return await this.store.dispatch(fetchAPIResource(APIResourceType.Swatch, swatchId, fetch))\n }\n\n readSwatch(swatchId: string): Swatch | null {\n return ApiClientState.getAPIResource(this.store.getState(), APIResourceType.Swatch, swatchId)\n }\n\n resolveSwatch(swatchId: string | undefined): FetchableValue<Swatch | null> {\n return this.resolveResource(APIResourceType.Swatch, {\n id: swatchId,\n read: id => this.readSwatch(id),\n fetch: id => this.fetchSwatch(id),\n })\n }\n\n async fetchFile(fileId: string): Promise<File | null> {\n const fetch = (id: string, version: SiteVersion | null) => this.fetchFileImpl(id, version)\n\n return await this.store.dispatch(fetchAPIResource(APIResourceType.File, fileId, fetch))\n }\n\n readFile(fileId: string): File | null {\n return ApiClientState.getAPIResource(this.store.getState(), APIResourceType.File, fileId)\n }\n\n resolveFile(fileId: string | undefined): FetchableValue<File | null> {\n return this.resolveResource(APIResourceType.File, {\n id: fileId,\n read: id => this.readFile(id),\n fetch: id => this.fetchFile(id),\n })\n }\n\n async fetchTypography(typographyId: string): Promise<Typography | null> {\n const fetch = (id: string, version: SiteVersion | null) => this.fetchTypographyImpl(id, version)\n\n return await this.store.dispatch(\n fetchAPIResource(APIResourceType.Typography, typographyId, fetch),\n )\n }\n\n readTypography(typographyId: string): Typography | null {\n return ApiClientState.getAPIResource(\n this.store.getState(),\n APIResourceType.Typography,\n typographyId,\n )\n }\n\n resolveTypography(typographyId: string | undefined): FetchableValue<Typography | null> {\n return this.resolveResource(APIResourceType.Typography, {\n id: typographyId,\n read: id => this.readTypography(id),\n fetch: id => this.fetchTypography(id),\n })\n }\n\n async fetchGlobalElement(globalElementId: string): Promise<GlobalElement | null> {\n const fetch = (id: string, version: SiteVersion | null) =>\n this.fetchGlobalElementImpl(id, version)\n\n return await this.store.dispatch(\n fetchAPIResource(APIResourceType.GlobalElement, globalElementId, fetch),\n )\n }\n\n readGlobalElement(globalElementId: string): GlobalElement | null {\n return ApiClientState.getAPIResource(\n this.store.getState(),\n APIResourceType.GlobalElement,\n globalElementId,\n )\n }\n\n async fetchLocalizedGlobalElement({\n globalElementId,\n locale,\n }: {\n globalElementId: string\n locale: string\n }): Promise<LocalizedGlobalElement | null> {\n const fetch = (id: string, version: SiteVersion | null, locale: string | null | undefined) => {\n if (locale == null) throw new Error('Locale is required to fetch LocalizedGlobalElement')\n return this.fetchLocalizedGlobalElementImpl(id, version, locale)\n }\n\n return await this.store.dispatch(\n fetchAPIResource(APIResourceType.LocalizedGlobalElement, globalElementId, fetch, locale),\n )\n }\n\n readLocalizedGlobalElement({\n globalElementId,\n locale,\n }: {\n globalElementId: string\n locale: string\n }): LocalizedGlobalElement | null {\n return ApiClientState.getAPIResource(\n this.store.getState(),\n APIResourceType.LocalizedGlobalElement,\n globalElementId,\n locale,\n )\n }\n\n async fetchPagePathnameSlice({\n pageId,\n locale,\n }: {\n pageId: string\n locale: string | null\n }): Promise<PagePathnameSlice | null> {\n const fetch = (id: string, version: SiteVersion | null, locale: string | null | undefined) =>\n this.fetchPagePathnameSliceImpl(id, version, locale)\n\n return await this.store.dispatch(\n fetchAPIResource(APIResourceType.PagePathnameSlice, pageId, fetch, locale),\n )\n }\n\n readPagePathnameSlice({\n pageId,\n locale,\n }: {\n pageId: string\n locale: string | null\n }): PagePathnameSlice | null {\n return ApiClientState.getAPIResource(\n this.store.getState(),\n APIResourceType.PagePathnameSlice,\n pageId,\n locale,\n )\n }\n\n resolvePagePathnameSlice({\n pageId,\n locale,\n }: {\n pageId: string | undefined\n locale: string | null\n }): FetchableValue<PagePathnameSlice | null> {\n return this.resolveResource(APIResourceType.PagePathnameSlice, {\n id: pageId,\n read: id => this.readPagePathnameSlice({ pageId: id, locale }),\n fetch: id => this.fetchPagePathnameSlice({ pageId: id, locale }),\n })\n }\n\n resolveResource<R>(\n type: APIResourceType,\n {\n id,\n read,\n fetch,\n }: {\n id: string | undefined\n read: (id: string) => R | null\n fetch: (id: string) => Promise<R | null>\n },\n ): FetchableValue<R | null> {\n const _read = () => (id != null ? read(id) : null)\n let lastValue: R | null = null\n return {\n name: `${type}:${id}`,\n readStable: () => (lastValue = _read()),\n subscribe: (onUpdate: () => void) =>\n this.subscribe(() => {\n if (_read() !== lastValue) onUpdate()\n }),\n fetch: async () => (id != null ? fetch(id) : null),\n }\n }\n\n async fetchTable(tableId: string): Promise<Table | null> {\n const fetch = (id: string, version: SiteVersion | null) => this.fetchTableImpl(id, version)\n\n return await this.store.dispatch(fetchAPIResource(APIResourceType.Table, tableId, fetch))\n }\n\n readTable(tableId: string): Table | null {\n return ApiClientState.getAPIResource(this.store.getState(), APIResourceType.Table, tableId)\n }\n\n readSite(siteId: string): Site | null {\n return ApiClientState.getAPIResource(this.store.getState(), APIResourceType.Site, siteId)\n }\n\n readPage(pageId: string): Page | null {\n return ApiClientState.getAPIResource(this.store.getState(), APIResourceType.Page, pageId)\n }\n\n readSnippet(snippetId: string): Snippet | null {\n return ApiClientState.getAPIResource(this.store.getState(), APIResourceType.Snippet, snippetId)\n }\n\n protected abstract fetchSwatchImpl(\n id: string,\n version: SiteVersion | null,\n ): Promise<Swatch | null>\n\n protected abstract fetchFileImpl(id: string, version: SiteVersion | null): Promise<File | null>\n protected abstract fetchTypographyImpl(\n id: string,\n version: SiteVersion | null,\n ): Promise<Typography | null>\n\n protected abstract fetchGlobalElementImpl(\n id: string,\n version: SiteVersion | null,\n ): Promise<GlobalElement | null>\n\n protected abstract fetchLocalizedGlobalElementImpl(\n id: string,\n version: SiteVersion | null,\n locale: string,\n ): Promise<LocalizedGlobalElement | null>\n\n protected abstract fetchPagePathnameSliceImpl(\n id: string,\n version: SiteVersion | null,\n locale: string | null | undefined,\n ): Promise<PagePathnameSlice | null>\n\n protected abstract fetchTableImpl(id: string, version: SiteVersion | null): Promise<Table | null>\n}\n"],"mappings":"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","names":["locale"]}
1
+ {"version":3,"sources":["../../../src/api/api-resources-client.ts"],"sourcesContent":["import { type FetchableValue } from '@makeswift/controls'\n\nimport { type Store as ApiClientStore } from '../state/api-client/store'\nimport * as ApiClientState from '../state/api-client/state'\nimport { fetchAPIResource } from '../state/api-client/fetch-api-resource'\n\nimport {\n type File,\n type GlobalElement,\n type LocalizedGlobalElement,\n type Page,\n type PagePathnameSlice,\n type Site,\n type Snippet,\n type Swatch,\n type Table,\n type Typography,\n APIResourceType,\n} from './types'\n\nimport { type SiteVersion } from './site-version'\n\nexport type CacheData = ApiClientState.SerializedState\n\nexport const CacheData = {\n empty(): CacheData {\n return {\n apiResources: {},\n localizedResourcesMap: {},\n }\n },\n}\n\nexport abstract class ApiResourcesClient {\n readonly store: ApiClientStore\n readonly subscribe: ApiClientStore['subscribe']\n\n constructor({ store }: { store: ApiClientStore }) {\n this.store = store\n this.subscribe = this.store.subscribe\n }\n\n get cacheData(): CacheData {\n return ApiClientState.getSerializedState(this.store.getState())\n }\n\n async fetchSwatch(swatchId: string): Promise<Swatch | null> {\n const fetch = (id: string, version: SiteVersion | null) => this.fetchSwatchImpl(id, version)\n\n return await this.store.dispatch(fetchAPIResource(APIResourceType.Swatch, swatchId, fetch))\n }\n\n readSwatch(swatchId: string): Swatch | null {\n return ApiClientState.getAPIResource(this.store.getState(), APIResourceType.Swatch, swatchId)\n }\n\n resolveSwatch(swatchId: string | undefined): FetchableValue<Swatch | null> {\n return this.resolveResource(APIResourceType.Swatch, {\n id: swatchId,\n read: id => this.readSwatch(id),\n fetch: id => this.fetchSwatch(id),\n })\n }\n\n async fetchFile(fileId: string): Promise<File | null> {\n const fetch = (id: string, version: SiteVersion | null) => this.fetchFileImpl(id, version)\n\n return await this.store.dispatch(fetchAPIResource(APIResourceType.File, fileId, fetch))\n }\n\n readFile(fileId: string): File | null {\n return ApiClientState.getAPIResource(this.store.getState(), APIResourceType.File, fileId)\n }\n\n resolveFile(fileId: string | undefined): FetchableValue<File | null> {\n return this.resolveResource(APIResourceType.File, {\n id: fileId,\n read: id => this.readFile(id),\n fetch: id => this.fetchFile(id),\n })\n }\n\n async fetchTypography(typographyId: string): Promise<Typography | null> {\n const fetch = (id: string, version: SiteVersion | null) => this.fetchTypographyImpl(id, version)\n\n return await this.store.dispatch(\n fetchAPIResource(APIResourceType.Typography, typographyId, fetch),\n )\n }\n\n readTypography(typographyId: string): Typography | null {\n return ApiClientState.getAPIResource(\n this.store.getState(),\n APIResourceType.Typography,\n typographyId,\n )\n }\n\n resolveTypography(typographyId: string | undefined): FetchableValue<Typography | null> {\n return this.resolveResource(APIResourceType.Typography, {\n id: typographyId,\n read: id => this.readTypography(id),\n fetch: id => this.fetchTypography(id),\n })\n }\n\n async fetchGlobalElement(globalElementId: string): Promise<GlobalElement | null> {\n const fetch = (id: string, version: SiteVersion | null) =>\n this.fetchGlobalElementImpl(id, version)\n\n return await this.store.dispatch(\n fetchAPIResource(APIResourceType.GlobalElement, globalElementId, fetch),\n )\n }\n\n readGlobalElement(globalElementId: string): GlobalElement | null {\n return ApiClientState.getAPIResource(\n this.store.getState(),\n APIResourceType.GlobalElement,\n globalElementId,\n )\n }\n\n async fetchLocalizedGlobalElement({\n globalElementId,\n locale,\n }: {\n globalElementId: string\n locale: string\n }): Promise<LocalizedGlobalElement | null> {\n const fetch = (id: string, version: SiteVersion | null, locale: string | null | undefined) => {\n if (locale == null) throw new Error('Locale is required to fetch LocalizedGlobalElement')\n return this.fetchLocalizedGlobalElementImpl(id, version, locale)\n }\n\n return await this.store.dispatch(\n fetchAPIResource(APIResourceType.LocalizedGlobalElement, globalElementId, fetch, locale),\n )\n }\n\n readLocalizedGlobalElement({\n globalElementId,\n locale,\n }: {\n globalElementId: string\n locale: string\n }): LocalizedGlobalElement | null {\n return ApiClientState.getAPIResource(\n this.store.getState(),\n APIResourceType.LocalizedGlobalElement,\n globalElementId,\n locale,\n )\n }\n\n async fetchPagePathnameSlice({\n pageId,\n locale,\n }: {\n pageId: string\n locale: string | null\n }): Promise<PagePathnameSlice | null> {\n const fetch = (id: string, version: SiteVersion | null, locale: string | null | undefined) =>\n this.fetchPagePathnameSliceImpl(id, version, locale)\n\n return await this.store.dispatch(\n fetchAPIResource(APIResourceType.PagePathnameSlice, pageId, fetch, locale),\n )\n }\n\n readPagePathnameSlice({\n pageId,\n locale,\n }: {\n pageId: string\n locale: string | null\n }): PagePathnameSlice | null {\n return ApiClientState.getAPIResource(\n this.store.getState(),\n APIResourceType.PagePathnameSlice,\n pageId,\n locale,\n )\n }\n\n resolvePagePathnameSlice({\n pageId,\n locale,\n }: {\n pageId: string | undefined\n locale: string | null\n }): FetchableValue<PagePathnameSlice | null> {\n return this.resolveResource(APIResourceType.PagePathnameSlice, {\n id: pageId,\n read: id => this.readPagePathnameSlice({ pageId: id, locale }),\n fetch: id => this.fetchPagePathnameSlice({ pageId: id, locale }),\n })\n }\n\n resolveResource<R>(\n type: APIResourceType,\n {\n id,\n read,\n fetch,\n }: {\n id: string | undefined\n read: (id: string) => R | null\n fetch: (id: string) => Promise<R | null>\n },\n ): FetchableValue<R | null> {\n const _read = () => (id != null ? read(id) : null)\n let lastValue: R | null = null\n return {\n name: `${type}:${id}`,\n readStable: () => (lastValue = _read()),\n subscribe: (onUpdate: () => void) =>\n this.subscribe(() => {\n if (_read() !== lastValue) onUpdate()\n }),\n fetch: async () => (id != null ? fetch(id) : null),\n }\n }\n\n async fetchTable(tableId: string): Promise<Table | null> {\n const fetch = (id: string, version: SiteVersion | null) => this.fetchTableImpl(id, version)\n\n return await this.store.dispatch(fetchAPIResource(APIResourceType.Table, tableId, fetch))\n }\n\n readTable(tableId: string): Table | null {\n return ApiClientState.getAPIResource(this.store.getState(), APIResourceType.Table, tableId)\n }\n\n readSite(siteId: string): Site | null {\n return ApiClientState.getAPIResource(this.store.getState(), APIResourceType.Site, siteId)\n }\n\n readPage(pageId: string): Page | null {\n return ApiClientState.getAPIResource(this.store.getState(), APIResourceType.Page, pageId)\n }\n\n readSnippet(snippetId: string): Snippet | null {\n return ApiClientState.getAPIResource(this.store.getState(), APIResourceType.Snippet, snippetId)\n }\n\n protected abstract fetchSwatchImpl(\n id: string,\n version: SiteVersion | null,\n ): Promise<Swatch | null>\n\n protected abstract fetchFileImpl(id: string, version: SiteVersion | null): Promise<File | null>\n protected abstract fetchTypographyImpl(\n id: string,\n version: SiteVersion | null,\n ): Promise<Typography | null>\n\n protected abstract fetchGlobalElementImpl(\n id: string,\n version: SiteVersion | null,\n ): Promise<GlobalElement | null>\n\n protected abstract fetchLocalizedGlobalElementImpl(\n id: string,\n version: SiteVersion | null,\n locale: string,\n ): Promise<LocalizedGlobalElement | null>\n\n protected abstract fetchPagePathnameSliceImpl(\n id: string,\n version: SiteVersion | null,\n locale: string | null | undefined,\n ): Promise<PagePathnameSlice | null>\n\n protected abstract fetchTableImpl(id: string, version: SiteVersion | null): Promise<Table | null>\n}\n"],"mappings":"AAGA,YAAY,oBAAoB;AAChC,SAAS,wBAAwB;AAEjC;AAAA,EAWE;AAAA,OACK;AAMA,MAAM,YAAY;AAAA,EACvB,QAAmB;AACjB,WAAO;AAAA,MACL,cAAc,CAAC;AAAA,MACf,uBAAuB,CAAC;AAAA,IAC1B;AAAA,EACF;AACF;AAEO,MAAe,mBAAmB;AAAA,EAC9B;AAAA,EACA;AAAA,EAET,YAAY,EAAE,MAAM,GAA8B;AAChD,SAAK,QAAQ;AACb,SAAK,YAAY,KAAK,MAAM;AAAA,EAC9B;AAAA,EAEA,IAAI,YAAuB;AACzB,WAAO,eAAe,mBAAmB,KAAK,MAAM,SAAS,CAAC;AAAA,EAChE;AAAA,EAEA,MAAM,YAAY,UAA0C;AAC1D,UAAM,QAAQ,CAAC,IAAY,YAAgC,KAAK,gBAAgB,IAAI,OAAO;AAE3F,WAAO,MAAM,KAAK,MAAM,SAAS,iBAAiB,gBAAgB,QAAQ,UAAU,KAAK,CAAC;AAAA,EAC5F;AAAA,EAEA,WAAW,UAAiC;AAC1C,WAAO,eAAe,eAAe,KAAK,MAAM,SAAS,GAAG,gBAAgB,QAAQ,QAAQ;AAAA,EAC9F;AAAA,EAEA,cAAc,UAA6D;AACzE,WAAO,KAAK,gBAAgB,gBAAgB,QAAQ;AAAA,MAClD,IAAI;AAAA,MACJ,MAAM,QAAM,KAAK,WAAW,EAAE;AAAA,MAC9B,OAAO,QAAM,KAAK,YAAY,EAAE;AAAA,IAClC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,UAAU,QAAsC;AACpD,UAAM,QAAQ,CAAC,IAAY,YAAgC,KAAK,cAAc,IAAI,OAAO;AAEzF,WAAO,MAAM,KAAK,MAAM,SAAS,iBAAiB,gBAAgB,MAAM,QAAQ,KAAK,CAAC;AAAA,EACxF;AAAA,EAEA,SAAS,QAA6B;AACpC,WAAO,eAAe,eAAe,KAAK,MAAM,SAAS,GAAG,gBAAgB,MAAM,MAAM;AAAA,EAC1F;AAAA,EAEA,YAAY,QAAyD;AACnE,WAAO,KAAK,gBAAgB,gBAAgB,MAAM;AAAA,MAChD,IAAI;AAAA,MACJ,MAAM,QAAM,KAAK,SAAS,EAAE;AAAA,MAC5B,OAAO,QAAM,KAAK,UAAU,EAAE;AAAA,IAChC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,gBAAgB,cAAkD;AACtE,UAAM,QAAQ,CAAC,IAAY,YAAgC,KAAK,oBAAoB,IAAI,OAAO;AAE/F,WAAO,MAAM,KAAK,MAAM;AAAA,MACtB,iBAAiB,gBAAgB,YAAY,cAAc,KAAK;AAAA,IAClE;AAAA,EACF;AAAA,EAEA,eAAe,cAAyC;AACtD,WAAO,eAAe;AAAA,MACpB,KAAK,MAAM,SAAS;AAAA,MACpB,gBAAgB;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,kBAAkB,cAAqE;AACrF,WAAO,KAAK,gBAAgB,gBAAgB,YAAY;AAAA,MACtD,IAAI;AAAA,MACJ,MAAM,QAAM,KAAK,eAAe,EAAE;AAAA,MAClC,OAAO,QAAM,KAAK,gBAAgB,EAAE;AAAA,IACtC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,mBAAmB,iBAAwD;AAC/E,UAAM,QAAQ,CAAC,IAAY,YACzB,KAAK,uBAAuB,IAAI,OAAO;AAEzC,WAAO,MAAM,KAAK,MAAM;AAAA,MACtB,iBAAiB,gBAAgB,eAAe,iBAAiB,KAAK;AAAA,IACxE;AAAA,EACF;AAAA,EAEA,kBAAkB,iBAA+C;AAC/D,WAAO,eAAe;AAAA,MACpB,KAAK,MAAM,SAAS;AAAA,MACpB,gBAAgB;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,4BAA4B;AAAA,IAChC;AAAA,IACA;AAAA,EACF,GAG2C;AACzC,UAAM,QAAQ,CAAC,IAAY,SAA6BA,YAAsC;AAC5F,UAAIA,WAAU;AAAM,cAAM,IAAI,MAAM,oDAAoD;AACxF,aAAO,KAAK,gCAAgC,IAAI,SAASA,OAAM;AAAA,IACjE;AAEA,WAAO,MAAM,KAAK,MAAM;AAAA,MACtB,iBAAiB,gBAAgB,wBAAwB,iBAAiB,OAAO,MAAM;AAAA,IACzF;AAAA,EACF;AAAA,EAEA,2BAA2B;AAAA,IACzB;AAAA,IACA;AAAA,EACF,GAGkC;AAChC,WAAO,eAAe;AAAA,MACpB,KAAK,MAAM,SAAS;AAAA,MACpB,gBAAgB;AAAA,MAChB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,uBAAuB;AAAA,IAC3B;AAAA,IACA;AAAA,EACF,GAGsC;AACpC,UAAM,QAAQ,CAAC,IAAY,SAA6BA,YACtD,KAAK,2BAA2B,IAAI,SAASA,OAAM;AAErD,WAAO,MAAM,KAAK,MAAM;AAAA,MACtB,iBAAiB,gBAAgB,mBAAmB,QAAQ,OAAO,MAAM;AAAA,IAC3E;AAAA,EACF;AAAA,EAEA,sBAAsB;AAAA,IACpB;AAAA,IACA;AAAA,EACF,GAG6B;AAC3B,WAAO,eAAe;AAAA,MACpB,KAAK,MAAM,SAAS;AAAA,MACpB,gBAAgB;AAAA,MAChB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,yBAAyB;AAAA,IACvB;AAAA,IACA;AAAA,EACF,GAG6C;AAC3C,WAAO,KAAK,gBAAgB,gBAAgB,mBAAmB;AAAA,MAC7D,IAAI;AAAA,MACJ,MAAM,QAAM,KAAK,sBAAsB,EAAE,QAAQ,IAAI,OAAO,CAAC;AAAA,MAC7D,OAAO,QAAM,KAAK,uBAAuB,EAAE,QAAQ,IAAI,OAAO,CAAC;AAAA,IACjE,CAAC;AAAA,EACH;AAAA,EAEA,gBACE,MACA;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAK0B;AAC1B,UAAM,QAAQ,MAAO,MAAM,OAAO,KAAK,EAAE,IAAI;AAC7C,QAAI,YAAsB;AAC1B,WAAO;AAAA,MACL,MAAM,GAAG,IAAI,IAAI,EAAE;AAAA,MACnB,YAAY,MAAO,YAAY,MAAM;AAAA,MACrC,WAAW,CAAC,aACV,KAAK,UAAU,MAAM;AACnB,YAAI,MAAM,MAAM;AAAW,mBAAS;AAAA,MACtC,CAAC;AAAA,MACH,OAAO,YAAa,MAAM,OAAO,MAAM,EAAE,IAAI;AAAA,IAC/C;AAAA,EACF;AAAA,EAEA,MAAM,WAAW,SAAwC;AACvD,UAAM,QAAQ,CAAC,IAAY,YAAgC,KAAK,eAAe,IAAI,OAAO;AAE1F,WAAO,MAAM,KAAK,MAAM,SAAS,iBAAiB,gBAAgB,OAAO,SAAS,KAAK,CAAC;AAAA,EAC1F;AAAA,EAEA,UAAU,SAA+B;AACvC,WAAO,eAAe,eAAe,KAAK,MAAM,SAAS,GAAG,gBAAgB,OAAO,OAAO;AAAA,EAC5F;AAAA,EAEA,SAAS,QAA6B;AACpC,WAAO,eAAe,eAAe,KAAK,MAAM,SAAS,GAAG,gBAAgB,MAAM,MAAM;AAAA,EAC1F;AAAA,EAEA,SAAS,QAA6B;AACpC,WAAO,eAAe,eAAe,KAAK,MAAM,SAAS,GAAG,gBAAgB,MAAM,MAAM;AAAA,EAC1F;AAAA,EAEA,YAAY,WAAmC;AAC7C,WAAO,eAAe,eAAe,KAAK,MAAM,SAAS,GAAG,gBAAgB,SAAS,SAAS;AAAA,EAChG;AA+BF;","names":["locale"]}
@@ -9,7 +9,7 @@ class MakeswiftGraphQLApiClient {
9
9
  graphqlClient;
10
10
  constructor({ endpoint }) {
11
11
  this.graphqlClient = new GraphQLClient(endpoint, {
12
- "makeswift-runtime-version": "0.28.8-canary.9"
12
+ "makeswift-runtime-version": "0.28.9-canary.0"
13
13
  });
14
14
  }
15
15
  async createTableRecord(tableId, columns) {
@@ -0,0 +1,7 @@
1
+ import { default as default2, HTTPError, isHTTPError } from "ky";
2
+ export {
3
+ HTTPError,
4
+ default2 as default,
5
+ isHTTPError
6
+ };
7
+ //# sourceMappingURL=ky.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/api/ky.ts"],"sourcesContent":["// `ky` is an ESM-only package: it has no `require` condition in its exports map\n// and ships no CommonJS build. Because we build with `bundle: false`, importing\n// it directly would leave a bare `require('ky')` in our CommonJS output, which\n// throws `ERR_REQUIRE_ESM` on any host whose loader doesn't implement\n// `require(esm)` — older Node, or a platform that patches `Module._load` (some\n// serverless runtimes do).\n//\n// Routing every `ky` import through this module lets us bundle `ky` into the\n// CommonJS build, so the shipped `dist/cjs` output never requires it. See the\n// `ky` entry in `tsup.config.ts`.\nexport { default, HTTPError, isHTTPError } from 'ky'\nexport type { KyInstance } from 'ky'\n"],"mappings":"AAUA,SAAS,WAAAA,UAAS,WAAW,mBAAmB;","names":["default"]}
@@ -1,4 +1,9 @@
1
+ import ky, { HTTPError, isHTTPError } from "./ky";
1
2
  import * as Schema from "./schema";
3
+ const RetryBackoffConfig = {
4
+ MaxAttempts: 3,
5
+ MaxDelayMs: 5e3
6
+ };
2
7
  class MakeswiftRestAPIClient {
3
8
  _fetch;
4
9
  apiKey;
@@ -8,7 +13,28 @@ class MakeswiftRestAPIClient {
8
13
  apiKey,
9
14
  apiOrigin
10
15
  }) {
11
- this._fetch = fetch;
16
+ this._fetch = ky.create({
17
+ fetch,
18
+ timeout: false,
19
+ retry: {
20
+ statusCodes: [429],
21
+ limit: RetryBackoffConfig.MaxAttempts,
22
+ backoffLimit: RetryBackoffConfig.MaxDelayMs,
23
+ delay: (attemptCount) => 2 ** (attemptCount - 1) * 1e3,
24
+ jitter: true
25
+ },
26
+ hooks: {
27
+ beforeRetry: [
28
+ async ({ request, error, retryCount }) => {
29
+ console.warn(
30
+ `Request to ${request.url} failed with ${error}. Retrying (${retryCount}/${RetryBackoffConfig.MaxAttempts})`
31
+ );
32
+ if (isHTTPError(error))
33
+ await failedResponseBody(error.response);
34
+ }
35
+ ]
36
+ }
37
+ });
12
38
  this.apiKey = apiKey;
13
39
  this.apiOrigin = apiOrigin;
14
40
  }
@@ -16,13 +42,12 @@ class MakeswiftRestAPIClient {
16
42
  const response = await this.fetch(`v3/swatches/${swatchId}`, siteVersion);
17
43
  if (!response.ok) {
18
44
  const failedBody = await failedResponseBody(response);
19
- if (response.status !== 404) {
20
- console.error(`Failed to get swatch '${swatchId}'`, {
21
- response: failedBody,
22
- siteVersion
23
- });
24
- }
25
- return null;
45
+ if (response.status === 404)
46
+ return null;
47
+ throw new RestApiClientError(`Failed to get swatch '${swatchId}'`, response, {
48
+ body: failedBody,
49
+ siteVersion
50
+ });
26
51
  }
27
52
  const swatch = await response.json();
28
53
  return swatch;
@@ -31,13 +56,12 @@ class MakeswiftRestAPIClient {
31
56
  const response = await this.fetch(`v3/typographies/${typographyId}`, siteVersion);
32
57
  if (!response.ok) {
33
58
  const failedBody = await failedResponseBody(response);
34
- if (response.status !== 404) {
35
- console.error(`Failed to get typography '${typographyId}'`, {
36
- response: failedBody,
37
- siteVersion
38
- });
39
- }
40
- return null;
59
+ if (response.status === 404)
60
+ return null;
61
+ throw new RestApiClientError(`Failed to get typography '${typographyId}'`, response, {
62
+ body: failedBody,
63
+ siteVersion
64
+ });
41
65
  }
42
66
  const typography = await response.json();
43
67
  return typography;
@@ -46,13 +70,12 @@ class MakeswiftRestAPIClient {
46
70
  const response = await this.fetch(`v3/global-elements/${globalElementId}`, siteVersion);
47
71
  if (!response.ok) {
48
72
  const failedBody = await failedResponseBody(response);
49
- if (response.status !== 404) {
50
- console.error(`Failed to get global element '${globalElementId}'`, {
51
- response: failedBody,
52
- siteVersion
53
- });
54
- }
55
- return null;
73
+ if (response.status === 404)
74
+ return null;
75
+ throw new RestApiClientError(`Failed to get global element '${globalElementId}'`, response, {
76
+ body: failedBody,
77
+ siteVersion
78
+ });
56
79
  }
57
80
  const globalElement = await response.json();
58
81
  return globalElement;
@@ -64,14 +87,13 @@ class MakeswiftRestAPIClient {
64
87
  );
65
88
  if (!response.ok) {
66
89
  const failedBody = await failedResponseBody(response);
67
- if (response.status !== 404) {
68
- console.error(`Failed to get localized global element '${globalElementId}'`, {
69
- response: failedBody,
70
- siteVersion,
71
- locale
72
- });
73
- }
74
- return null;
90
+ if (response.status === 404)
91
+ return null;
92
+ throw new RestApiClientError(
93
+ `Failed to get localized global element '${globalElementId}'`,
94
+ response,
95
+ { body: failedBody, siteVersion, locale }
96
+ );
75
97
  }
76
98
  const localizedGlobalElement = await response.json();
77
99
  return localizedGlobalElement;
@@ -85,12 +107,14 @@ class MakeswiftRestAPIClient {
85
107
  url.searchParams.set("locale", locale);
86
108
  const response = await this.fetch(url.pathname + url.search, siteVersion);
87
109
  if (!response.ok) {
88
- console.error(`Failed to get page pathname slice(s) for ${pageIds.join(", ")}`, {
89
- response: await failedResponseBody(response),
90
- siteVersion,
91
- locale
92
- });
93
- return [];
110
+ const failedBody = await failedResponseBody(response);
111
+ if (response.status === 404)
112
+ return [];
113
+ throw new RestApiClientError(
114
+ `Failed to get page pathname slice(s) for ${pageIds.join(", ")}`,
115
+ response,
116
+ { body: failedBody, siteVersion, locale }
117
+ );
94
118
  }
95
119
  const json = await response.json();
96
120
  const pagePathnameSlices = Schema.pagePathnameSlices.parse(json);
@@ -113,7 +137,7 @@ class MakeswiftRestAPIClient {
113
137
  const requestHeaders = new Headers({
114
138
  "x-api-key": this.apiKey,
115
139
  "makeswift-site-api-key": this.apiKey,
116
- "makeswift-runtime-version": "0.28.8-canary.9"
140
+ "makeswift-runtime-version": "0.28.9-canary.0"
117
141
  });
118
142
  if (siteVersion?.token) {
119
143
  requestUrl.searchParams.set("version", siteVersion.version);
@@ -124,12 +148,17 @@ class MakeswiftRestAPIClient {
124
148
  requestHeaders.set(key, value);
125
149
  });
126
150
  }
127
- const response = await this._fetch(requestUrl.toString(), {
128
- ...init,
129
- headers: requestHeaders,
130
- ...siteVersion != null ? { cache: "no-store" } : {}
131
- });
132
- return response;
151
+ try {
152
+ return await this._fetch(requestUrl.toString(), {
153
+ ...init,
154
+ headers: requestHeaders,
155
+ ...siteVersion != null ? { cache: "no-store" } : {}
156
+ });
157
+ } catch (error) {
158
+ if (error instanceof HTTPError)
159
+ return error.response;
160
+ throw error;
161
+ }
133
162
  }
134
163
  }
135
164
  async function failedResponseBody(response) {
@@ -144,8 +173,20 @@ async function failedResponseBody(response) {
144
173
  return `Failed to extract response body: ${e}`;
145
174
  }
146
175
  }
176
+ function responseError(response) {
177
+ return `${response.status} ${response.statusText}`;
178
+ }
179
+ class RestApiClientError extends Error {
180
+ status;
181
+ constructor(message, response, cause) {
182
+ super(`${message}: ${responseError(response)}`, { cause });
183
+ this.name = "RestApiClientError";
184
+ this.status = response.status;
185
+ }
186
+ }
147
187
  export {
148
188
  MakeswiftRestAPIClient,
189
+ RestApiClientError,
149
190
  failedResponseBody
150
191
  };
151
192
  //# sourceMappingURL=rest-api-client.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/rest-api-client.ts"],"sourcesContent":["import {\n type GlobalElement,\n type LocalizedGlobalElement,\n type PagePathnameSlice,\n type Swatch,\n type Typography,\n type HttpFetch,\n} from './types'\n\nimport { type SiteVersion } from './site-version'\nimport * as Schema from './schema'\n\nexport class MakeswiftRestAPIClient {\n private _fetch: HttpFetch\n\n readonly apiKey: string\n readonly apiOrigin: string\n\n constructor({\n fetch,\n apiKey,\n apiOrigin,\n }: {\n fetch: HttpFetch\n apiKey: string\n apiOrigin: string\n }) {\n this._fetch = fetch\n this.apiKey = apiKey\n this.apiOrigin = apiOrigin\n }\n\n async getSwatch(swatchId: string, siteVersion: SiteVersion | null): Promise<Swatch | null> {\n const response = await this.fetch(`v3/swatches/${swatchId}`, siteVersion)\n\n if (!response.ok) {\n const failedBody = await failedResponseBody(response)\n if (response.status !== 404) {\n console.error(`Failed to get swatch '${swatchId}'`, {\n response: failedBody,\n siteVersion,\n })\n }\n\n return null\n }\n\n const swatch = await response.json()\n\n return swatch\n }\n\n async getTypography(\n typographyId: string,\n siteVersion: SiteVersion | null,\n ): Promise<Typography | null> {\n const response = await this.fetch(`v3/typographies/${typographyId}`, siteVersion)\n\n if (!response.ok) {\n const failedBody = await failedResponseBody(response)\n if (response.status !== 404) {\n console.error(`Failed to get typography '${typographyId}'`, {\n response: failedBody,\n siteVersion,\n })\n }\n\n return null\n }\n\n const typography = await response.json()\n\n return typography\n }\n\n async getGlobalElement(\n globalElementId: string,\n siteVersion: SiteVersion | null,\n ): Promise<GlobalElement | null> {\n const response = await this.fetch(`v3/global-elements/${globalElementId}`, siteVersion)\n\n if (!response.ok) {\n const failedBody = await failedResponseBody(response)\n if (response.status !== 404) {\n console.error(`Failed to get global element '${globalElementId}'`, {\n response: failedBody,\n siteVersion,\n })\n }\n\n return null\n }\n\n const globalElement = await response.json()\n\n return globalElement\n }\n\n async getLocalizedGlobalElement(\n globalElementId: string,\n locale: string,\n siteVersion: SiteVersion | null,\n ): Promise<LocalizedGlobalElement | null> {\n const response = await this.fetch(\n `v3/localized-global-elements/${globalElementId}?locale=${locale}`,\n siteVersion,\n )\n\n if (!response.ok) {\n const failedBody = await failedResponseBody(response)\n if (response.status !== 404) {\n console.error(`Failed to get localized global element '${globalElementId}'`, {\n response: failedBody,\n siteVersion,\n locale,\n })\n }\n\n return null\n }\n\n const localizedGlobalElement = await response.json()\n\n return localizedGlobalElement\n }\n\n async getPagePathnameSlices(\n pageIds: string[],\n siteVersion: SiteVersion | null,\n { locale }: { locale?: string | null },\n ): Promise<(PagePathnameSlice | null)[]> {\n if (pageIds.length === 0) return []\n\n const url = new URL(`v3/page-pathname-slices/bulk`, this.apiOrigin)\n\n pageIds.forEach(id => url.searchParams.append('ids', id))\n if (locale != null) url.searchParams.set('locale', locale)\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n console.error(`Failed to get page pathname slice(s) for ${pageIds.join(', ')}`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n return []\n }\n\n const json = await response.json()\n\n const pagePathnameSlices = Schema.pagePathnameSlices.parse(json)\n\n // We're mapping the basePageId to be the id, because we're still using the GraphQL\n // fragment as our APIResource. The id on the APIResource needs to match the pageId\n // so that we can find the corresponding page pathname slice when we call getPagePathnameSlice(pageId).\n // TODO: Update this once we move away from the GraphQL fragments.\n return pagePathnameSlices.map(pagePathnameSlice => {\n if (pagePathnameSlice == null) return null\n\n return {\n ...pagePathnameSlice,\n id: pagePathnameSlice.basePageId,\n localizedPathname: pagePathnameSlice.localizedPathname ?? null,\n }\n })\n }\n\n async getPagePathnameSlice(\n pageId: string,\n siteVersion: SiteVersion | null,\n { locale }: { locale?: string | null } = {},\n ): Promise<PagePathnameSlice | null> {\n const pagePathnameSlices = await this.getPagePathnameSlices([pageId], siteVersion, { locale })\n\n return pagePathnameSlices.at(0) ?? null\n }\n\n protected async fetch(\n path: string,\n siteVersion: SiteVersion | null,\n init?: RequestInit,\n ): Promise<Response> {\n const requestUrl = new URL(path, this.apiOrigin)\n\n const requestHeaders = new Headers({\n 'x-api-key': this.apiKey,\n 'makeswift-site-api-key': this.apiKey,\n 'makeswift-runtime-version': PACKAGE_VERSION,\n })\n\n if (siteVersion?.token) {\n requestUrl.searchParams.set('version', siteVersion.version)\n requestHeaders.set('makeswift-preview-token', siteVersion.token)\n }\n\n if (init?.headers) {\n new Headers(init.headers).forEach((value, key) => {\n requestHeaders.set(key, value)\n })\n }\n\n const response = await this._fetch(requestUrl.toString(), {\n ...init,\n headers: requestHeaders,\n ...(siteVersion != null ? { cache: 'no-store' } : {}),\n })\n\n return response\n }\n}\n\n// This function attempts to consume the response body of a failed response, and\n// returns either the parsed JSON or raw text. This is useful for logging more\n// detailed error information when an API request fails.\n//\n// Cloudflare Worker Note: The Cloudflare Worker runtime has automatic deadlock\n// prevention (in the form of auto-cancelling responses) that triggers when too\n// many response bodies are unconsumed. This applies for error responses as\n// well. As such, in this client we use this function to consume the response\n// body whenever the request fails, even if we don't end up logging the body\n// itself, to avoid hitting the deadlock prevention.\nexport async function failedResponseBody(response: Response): Promise<unknown> {\n try {\n const text = await response.text()\n try {\n return JSON.parse(text)\n } catch {\n return text\n }\n } catch (e) {\n return `Failed to extract response body: ${e}`\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/api/rest-api-client.ts"],"sourcesContent":["import ky, { HTTPError, isHTTPError, type KyInstance } from './ky'\n\nimport {\n type GlobalElement,\n type LocalizedGlobalElement,\n type PagePathnameSlice,\n type Swatch,\n type Typography,\n type HttpFetch,\n} from './types'\n\nimport { type SiteVersion } from './site-version'\nimport * as Schema from './schema'\n\nconst RetryBackoffConfig = {\n MaxAttempts: 3,\n MaxDelayMs: 5_000,\n}\n\nexport class MakeswiftRestAPIClient {\n private _fetch: KyInstance\n\n readonly apiKey: string\n readonly apiOrigin: string\n\n constructor({\n fetch,\n apiKey,\n apiOrigin,\n }: {\n fetch: HttpFetch\n apiKey: string\n apiOrigin: string\n }) {\n this._fetch = ky.create({\n fetch,\n timeout: false,\n retry: {\n statusCodes: [429],\n limit: RetryBackoffConfig.MaxAttempts,\n backoffLimit: RetryBackoffConfig.MaxDelayMs,\n delay: attemptCount => 2 ** (attemptCount - 1) * 1000,\n jitter: true,\n },\n hooks: {\n beforeRetry: [\n async ({ request, error, retryCount }) => {\n console.warn(\n `Request to ${request.url} failed with ${error}. Retrying (${retryCount}/${RetryBackoffConfig.MaxAttempts})`,\n )\n // Drain the response body before retrying so we don't leak unconsumed\n // response bodies (see the comment on `failedResponseBody` below).\n if (isHTTPError(error)) await failedResponseBody(error.response)\n },\n ],\n },\n })\n\n this.apiKey = apiKey\n this.apiOrigin = apiOrigin\n }\n\n async getSwatch(swatchId: string, siteVersion: SiteVersion | null): Promise<Swatch | null> {\n const response = await this.fetch(`v3/swatches/${swatchId}`, siteVersion)\n\n if (!response.ok) {\n const failedBody = await failedResponseBody(response)\n if (response.status === 404) return null\n\n throw new RestApiClientError(`Failed to get swatch '${swatchId}'`, response, {\n body: failedBody,\n siteVersion,\n })\n }\n\n const swatch = await response.json()\n\n return swatch\n }\n\n async getTypography(\n typographyId: string,\n siteVersion: SiteVersion | null,\n ): Promise<Typography | null> {\n const response = await this.fetch(`v3/typographies/${typographyId}`, siteVersion)\n\n if (!response.ok) {\n const failedBody = await failedResponseBody(response)\n if (response.status === 404) return null\n\n throw new RestApiClientError(`Failed to get typography '${typographyId}'`, response, {\n body: failedBody,\n siteVersion,\n })\n }\n\n const typography = await response.json()\n\n return typography\n }\n\n async getGlobalElement(\n globalElementId: string,\n siteVersion: SiteVersion | null,\n ): Promise<GlobalElement | null> {\n const response = await this.fetch(`v3/global-elements/${globalElementId}`, siteVersion)\n\n if (!response.ok) {\n const failedBody = await failedResponseBody(response)\n if (response.status === 404) return null\n\n throw new RestApiClientError(`Failed to get global element '${globalElementId}'`, response, {\n body: failedBody,\n siteVersion,\n })\n }\n\n const globalElement = await response.json()\n\n return globalElement\n }\n\n async getLocalizedGlobalElement(\n globalElementId: string,\n locale: string,\n siteVersion: SiteVersion | null,\n ): Promise<LocalizedGlobalElement | null> {\n const response = await this.fetch(\n `v3/localized-global-elements/${globalElementId}?locale=${locale}`,\n siteVersion,\n )\n\n if (!response.ok) {\n const failedBody = await failedResponseBody(response)\n if (response.status === 404) return null\n\n throw new RestApiClientError(\n `Failed to get localized global element '${globalElementId}'`,\n response,\n { body: failedBody, siteVersion, locale },\n )\n }\n\n const localizedGlobalElement = await response.json()\n\n return localizedGlobalElement\n }\n\n async getPagePathnameSlices(\n pageIds: string[],\n siteVersion: SiteVersion | null,\n { locale }: { locale?: string | null },\n ): Promise<(PagePathnameSlice | null)[]> {\n if (pageIds.length === 0) return []\n\n const url = new URL(`v3/page-pathname-slices/bulk`, this.apiOrigin)\n\n pageIds.forEach(id => url.searchParams.append('ids', id))\n if (locale != null) url.searchParams.set('locale', locale)\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n const failedBody = await failedResponseBody(response)\n if (response.status === 404) return []\n\n throw new RestApiClientError(\n `Failed to get page pathname slice(s) for ${pageIds.join(', ')}`,\n response,\n { body: failedBody, siteVersion, locale },\n )\n }\n\n const json = await response.json()\n\n const pagePathnameSlices = Schema.pagePathnameSlices.parse(json)\n\n // We're mapping the basePageId to be the id, because we're still using the GraphQL\n // fragment as our APIResource. The id on the APIResource needs to match the pageId\n // so that we can find the corresponding page pathname slice when we call getPagePathnameSlice(pageId).\n // TODO: Update this once we move away from the GraphQL fragments.\n return pagePathnameSlices.map(pagePathnameSlice => {\n if (pagePathnameSlice == null) return null\n\n return {\n ...pagePathnameSlice,\n id: pagePathnameSlice.basePageId,\n localizedPathname: pagePathnameSlice.localizedPathname ?? null,\n }\n })\n }\n\n async getPagePathnameSlice(\n pageId: string,\n siteVersion: SiteVersion | null,\n { locale }: { locale?: string | null } = {},\n ): Promise<PagePathnameSlice | null> {\n const pagePathnameSlices = await this.getPagePathnameSlices([pageId], siteVersion, { locale })\n\n return pagePathnameSlices.at(0) ?? null\n }\n\n protected async fetch(\n path: string,\n siteVersion: SiteVersion | null,\n init?: RequestInit,\n ): Promise<Response> {\n const requestUrl = new URL(path, this.apiOrigin)\n\n const requestHeaders = new Headers({\n 'x-api-key': this.apiKey,\n 'makeswift-site-api-key': this.apiKey,\n 'makeswift-runtime-version': PACKAGE_VERSION,\n })\n\n if (siteVersion?.token) {\n requestUrl.searchParams.set('version', siteVersion.version)\n requestHeaders.set('makeswift-preview-token', siteVersion.token)\n }\n\n if (init?.headers) {\n new Headers(init.headers).forEach((value, key) => {\n requestHeaders.set(key, value)\n })\n }\n\n try {\n return await this._fetch(requestUrl.toString(), {\n ...init,\n headers: requestHeaders,\n ...(siteVersion != null ? { cache: 'no-store' } : {}),\n })\n } catch (error) {\n if (error instanceof HTTPError) return error.response\n throw error\n }\n }\n}\n\n// This function attempts to consume the response body of a failed response, and\n// returns either the parsed JSON or raw text. This is useful for logging more\n// detailed error information when an API request fails.\n//\n// Cloudflare Worker Note: The Cloudflare Worker runtime has automatic deadlock\n// prevention (in the form of auto-cancelling responses) that triggers when too\n// many response bodies are unconsumed. This applies for error responses as\n// well. As such, in this client we use this function to consume the response\n// body whenever the request fails, even if we don't end up logging the body\n// itself, to avoid hitting the deadlock prevention.\nexport async function failedResponseBody(response: Response): Promise<unknown> {\n try {\n const text = await response.text()\n try {\n return JSON.parse(text)\n } catch {\n return text\n }\n } catch (e) {\n return `Failed to extract response body: ${e}`\n }\n}\n\nfunction responseError(response: Response): string {\n return `${response.status} ${response.statusText}`\n}\n\nexport class RestApiClientError extends Error {\n readonly status: number\n\n constructor(message: string, response: Response, cause: Record<string, unknown>) {\n super(`${message}: ${responseError(response)}`, { cause })\n\n this.name = 'RestApiClientError'\n this.status = response.status\n }\n}\n"],"mappings":"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","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/types.ts"],"sourcesContent":["import {\n SwatchFragment as Swatch,\n FileFragment as File,\n TypographyFragment as Typography,\n PagePathnameSliceFragment,\n GlobalElementFragment as GlobalElement,\n LocalizedGlobalElementFragment as LocalizedGlobalElement,\n TableFragment as Table,\n SnippetFragment as Snippet,\n PageFragment as Page,\n SiteFragment as Site,\n} from './graphql/generated/types'\n\ntype PagePathnameSlice = PagePathnameSliceFragment & {\n basePageId?: string\n localizedPathname?: string | null\n}\n\nexport type {\n Swatch,\n File,\n Typography,\n PagePathnameSlice,\n GlobalElement,\n LocalizedGlobalElement,\n Table,\n Snippet,\n Page,\n Site,\n}\n\nexport type LocalizableAPIResource = PagePathnameSlice | LocalizedGlobalElement\n\nexport const LocalizableAPIResourceType: {\n [R in LocalizableAPIResource as R['__typename']]: R['__typename']\n} = {\n PagePathnameSlice: 'PagePathnameSlice',\n LocalizedGlobalElement: 'LocalizedGlobalElement',\n}\n\nexport type LocalizableAPIResourceType =\n (typeof LocalizableAPIResourceType)[keyof typeof LocalizableAPIResourceType]\n\nexport type APIResource =\n | LocalizableAPIResource\n | Swatch\n | File\n | Typography\n | GlobalElement\n | Table\n | Snippet\n | Page\n | Site\n\nexport const APIResourceType: { [R in APIResource as R['__typename']]: R['__typename'] } = {\n ...LocalizableAPIResourceType,\n Swatch: 'Swatch',\n File: 'File',\n Typography: 'Typography',\n GlobalElement: 'GlobalElement',\n Table: 'Table',\n Snippet: 'Snippet',\n Page: 'Page',\n Site: 'Site',\n}\n\nexport type APIResourceType = (typeof APIResourceType)[keyof typeof APIResourceType]\n\nexport type APIResourceByType<T extends APIResourceType> = Extract<APIResource, { __typename: T }>\n\nexport type APIResourceLocale<R extends APIResource | APIResourceType> = R extends\n | LocalizableAPIResource\n | LocalizableAPIResourceType\n ? string | null\n : never\n\nexport type HttpFetch = (url: string | URL, init?: RequestInit) => Promise<Response>\n"],"mappings":"AAiCO,MAAM,6BAET;AAAA,EACF,mBAAmB;AAAA,EACnB,wBAAwB;AAC1B;AAgBO,MAAM,kBAA8E;AAAA,EACzF,GAAG;AAAA,EACH,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,OAAO;AAAA,EACP,SAAS;AAAA,EACT,MAAM;AAAA,EACN,MAAM;AACR;","names":[]}
1
+ {"version":3,"sources":["../../../src/api/types.ts"],"sourcesContent":["import {\n SwatchFragment as Swatch,\n FileFragment as File,\n TypographyFragment as Typography,\n PagePathnameSliceFragment,\n GlobalElementFragment as GlobalElement,\n LocalizedGlobalElementFragment as LocalizedGlobalElement,\n TableFragment as Table,\n SnippetFragment as Snippet,\n PageFragment as Page,\n SiteFragment as Site,\n} from './graphql/generated/types'\n\ntype PagePathnameSlice = PagePathnameSliceFragment & {\n basePageId?: string\n localizedPathname?: string | null\n}\n\nexport type {\n Swatch,\n File,\n Typography,\n PagePathnameSlice,\n GlobalElement,\n LocalizedGlobalElement,\n Table,\n Snippet,\n Page,\n Site,\n}\n\nexport type LocalizableAPIResource = PagePathnameSlice | LocalizedGlobalElement\n\nexport const LocalizableAPIResourceType: {\n [R in LocalizableAPIResource as R['__typename']]: R['__typename']\n} = {\n PagePathnameSlice: 'PagePathnameSlice',\n LocalizedGlobalElement: 'LocalizedGlobalElement',\n}\n\nexport type LocalizableAPIResourceType =\n (typeof LocalizableAPIResourceType)[keyof typeof LocalizableAPIResourceType]\n\nexport type APIResource =\n | LocalizableAPIResource\n | Swatch\n | File\n | Typography\n | GlobalElement\n | Table\n | Snippet\n | Page\n | Site\n\nexport const APIResourceType: { [R in APIResource as R['__typename']]: R['__typename'] } = {\n ...LocalizableAPIResourceType,\n Swatch: 'Swatch',\n File: 'File',\n Typography: 'Typography',\n GlobalElement: 'GlobalElement',\n Table: 'Table',\n Snippet: 'Snippet',\n Page: 'Page',\n Site: 'Site',\n}\n\nexport type APIResourceType = (typeof APIResourceType)[keyof typeof APIResourceType]\n\nexport type APIResourceByType<T extends APIResourceType> = Extract<APIResource, { __typename: T }>\n\nexport type APIResourceLocale<R extends APIResource | APIResourceType> = R extends\n | LocalizableAPIResource\n | LocalizableAPIResourceType\n ? string | null\n : never\n\nexport type HttpFetch = (input: string | URL | Request, init?: RequestInit) => Promise<Response>\n"],"mappings":"AAiCO,MAAM,6BAET;AAAA,EACF,mBAAmB;AAAA,EACnB,wBAAwB;AAC1B;AAgBO,MAAM,kBAA8E;AAAA,EACzF,GAAG;AAAA,EACH,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,OAAO;AAAA,EACP,SAAS;AAAA,EACT,MAAM;AAAA,EACN,MAAM;AACR;","names":[]}
@@ -8,7 +8,7 @@ async function manifestHandler(req, { apiKey, manifest }) {
8
8
  return ApiResponse.json({ message: "Unauthorized" }, { status: 401 });
9
9
  }
10
10
  return ApiResponse.json({
11
- version: "0.28.8-canary.9",
11
+ version: "0.28.9-canary.0",
12
12
  interactionMode: true,
13
13
  clientSideNavigation: false,
14
14
  elementFromPoint: false,
@@ -1,8 +1,6 @@
1
1
  import { isAction } from "@reduxjs/toolkit";
2
- import {
3
- ReadOnlyActionTypes
4
- } from "../state/actions/internal/read-only-actions";
5
- import { BuilderActionTypes } from "../state/builder-api/actions";
2
+ import { ReadOnlyActionTypes } from "../state/actions/internal/read-only-action-types";
3
+ import { BuilderActionTypes } from "../state/builder-api/action-types";
6
4
  const HostToBuilderActionTypes = {
7
5
  ...BuilderActionTypes,
8
6
  REGISTER_COMPONENT: ReadOnlyActionTypes.REGISTER_COMPONENT,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/builder/host-to-builder-actions.ts"],"sourcesContent":["import { isAction } from '@reduxjs/toolkit'\n\n// in the past, we reused the same action type for registering components both internally\n// and in the builder; they have been since split into two separate action types,\n// REGISTER_COMPONENT and REGISTER_BUILDER_COMPONENT, but we still have to expose what\n// are now internal actions to the builder for backward compatibility with the older runtimes\nimport {\n type RegisterComponentAction,\n type UnregisterComponentAction,\n ReadOnlyActionTypes,\n} from '../state/actions/internal/read-only-actions'\n\nimport { type BuilderAction, BuilderActionTypes } from '../state/builder-api/actions'\n\nexport const HostToBuilderActionTypes = {\n ...BuilderActionTypes,\n REGISTER_COMPONENT: ReadOnlyActionTypes.REGISTER_COMPONENT,\n UNREGISTER_COMPONENT: ReadOnlyActionTypes.UNREGISTER_COMPONENT,\n} as const\n\nexport type HostToBuilderAction =\n | BuilderAction\n | RegisterComponentAction\n | UnregisterComponentAction\n\nexport function isHostToBuilderAction(action: unknown): action is HostToBuilderAction {\n return isAction(action) && Object.hasOwn(HostToBuilderActionTypes, action.type)\n}\n"],"mappings":"AAAA,SAAS,gBAAgB;AAMzB;AAAA,EAGE;AAAA,OACK;AAEP,SAA6B,0BAA0B;AAEhD,MAAM,2BAA2B;AAAA,EACtC,GAAG;AAAA,EACH,oBAAoB,oBAAoB;AAAA,EACxC,sBAAsB,oBAAoB;AAC5C;AAOO,SAAS,sBAAsB,QAAgD;AACpF,SAAO,SAAS,MAAM,KAAK,OAAO,OAAO,0BAA0B,OAAO,IAAI;AAChF;","names":[]}
1
+ {"version":3,"sources":["../../../src/builder/host-to-builder-actions.ts"],"sourcesContent":["import { isAction } from '@reduxjs/toolkit'\n\n// in the past, we reused the same action type for registering components both internally\n// and in the builder; they have been since split into two separate action types,\n// REGISTER_COMPONENT and REGISTER_BUILDER_COMPONENT, but we still have to expose what\n// are now internal actions to the builder for backward compatibility with the older runtimes\nimport { ReadOnlyActionTypes } from '../state/actions/internal/read-only-action-types'\nimport {\n type RegisterComponentAction,\n type UnregisterComponentAction,\n} from '../state/actions/internal/read-only-actions'\n\nimport { BuilderActionTypes } from '../state/builder-api/action-types'\nimport { type BuilderAction } from '../state/builder-api/actions'\n\nexport const HostToBuilderActionTypes = {\n ...BuilderActionTypes,\n REGISTER_COMPONENT: ReadOnlyActionTypes.REGISTER_COMPONENT,\n UNREGISTER_COMPONENT: ReadOnlyActionTypes.UNREGISTER_COMPONENT,\n} as const\n\nexport type HostToBuilderAction =\n | BuilderAction\n | RegisterComponentAction\n | UnregisterComponentAction\n\nexport function isHostToBuilderAction(action: unknown): action is HostToBuilderAction {\n return isAction(action) && Object.hasOwn(HostToBuilderActionTypes, action.type)\n}\n"],"mappings":"AAAA,SAAS,gBAAgB;AAMzB,SAAS,2BAA2B;AAMpC,SAAS,0BAA0B;AAG5B,MAAM,2BAA2B;AAAA,EACtC,GAAG;AAAA,EACH,oBAAoB,oBAAoB;AAAA,EACxC,sBAAsB,oBAAoB;AAC5C;AAOO,SAAS,sBAAsB,QAAgD;AACpF,SAAO,SAAS,MAAM,KAAK,OAAO,OAAO,0BAA0B,OAAO,IAAI;AAChF;","names":[]}