@makeswift/runtime 0.26.4 → 0.26.5

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 (353) hide show
  1. package/dist/cjs/api/client.js +252 -0
  2. package/dist/cjs/api/client.js.map +1 -0
  3. package/dist/cjs/api-handler/handlers/manifest.js +1 -1
  4. package/dist/cjs/api-handler/handlers/webhook/diff-projection.js +62 -0
  5. package/dist/cjs/api-handler/handlers/webhook/diff-projection.js.map +1 -0
  6. package/dist/cjs/builder/serialization.js +78 -0
  7. package/dist/cjs/builder/serialization.js.map +1 -0
  8. package/dist/cjs/client/index.js +3 -3
  9. package/dist/cjs/controls/serialization/base/index.js +78 -0
  10. package/dist/cjs/controls/serialization/base/index.js.map +1 -0
  11. package/dist/cjs/controls/serialization/base/visitor.js +59 -0
  12. package/dist/cjs/controls/serialization/base/visitor.js.map +1 -0
  13. package/dist/cjs/controls/serialization/index.js +55 -0
  14. package/dist/cjs/controls/serialization/index.js.map +1 -0
  15. package/dist/cjs/controls/serialization/message-port/function-serialization.js +79 -0
  16. package/dist/cjs/controls/serialization/message-port/function-serialization.js.map +1 -0
  17. package/dist/cjs/controls/serialization/message-port/index.js +25 -0
  18. package/dist/cjs/controls/serialization/message-port/index.js.map +1 -0
  19. package/dist/cjs/controls/serialization/message-port/visitor.js +48 -0
  20. package/dist/cjs/controls/serialization/message-port/visitor.js.map +1 -0
  21. package/dist/cjs/next/api-handler/config/pages-router.js +1 -1
  22. package/dist/cjs/next/api-handler/config/pages-router.js.map +1 -1
  23. package/dist/cjs/next/fetch.js +30 -0
  24. package/dist/cjs/next/fetch.js.map +1 -0
  25. package/dist/cjs/next/runtime.js +35 -0
  26. package/dist/cjs/next/runtime.js.map +1 -0
  27. package/dist/cjs/next/testing/react-runtime.js +29 -0
  28. package/dist/cjs/next/testing/react-runtime.js.map +1 -0
  29. package/dist/cjs/prop-controllers/serialization.js +355 -0
  30. package/dist/cjs/prop-controllers/serialization.js.map +1 -0
  31. package/dist/cjs/runtimes/react/components/GoogleFontLink.js +55 -0
  32. package/dist/cjs/runtimes/react/components/GoogleFontLink.js.map +1 -0
  33. package/dist/cjs/runtimes/react/components/MakeswiftFonts.js +33 -0
  34. package/dist/cjs/runtimes/react/components/MakeswiftFonts.js.map +1 -0
  35. package/dist/cjs/runtimes/react/hooks/use-async-effect.js +55 -0
  36. package/dist/cjs/runtimes/react/hooks/use-async-effect.js.map +1 -0
  37. package/dist/cjs/runtimes/react/hooks/use-current-breakpoint.js +39 -0
  38. package/dist/cjs/runtimes/react/hooks/use-current-breakpoint.js.map +1 -0
  39. package/dist/cjs/runtimes/react/hooks/use-is-read-only.js +33 -0
  40. package/dist/cjs/runtimes/react/hooks/use-is-read-only.js.map +1 -0
  41. package/dist/cjs/runtimes/react/lib/resolved-style-to-css.js +59 -0
  42. package/dist/cjs/runtimes/react/lib/resolved-style-to-css.js.map +1 -0
  43. package/dist/cjs/runtimes/react/testing/react-runtime.js +33 -0
  44. package/dist/cjs/runtimes/react/testing/react-runtime.js.map +1 -0
  45. package/dist/cjs/runtimes/react/utils/google-fonts-url.js +49 -0
  46. package/dist/cjs/runtimes/react/utils/google-fonts-url.js.map +1 -0
  47. package/dist/cjs/state/actions/internal/index.js +34 -0
  48. package/dist/cjs/state/actions/internal/index.js.map +1 -0
  49. package/dist/cjs/state/actions/internal/read-only-actions.js +195 -0
  50. package/dist/cjs/state/actions/internal/read-only-actions.js.map +1 -0
  51. package/dist/cjs/state/actions/internal/read-write-actions.js +76 -0
  52. package/dist/cjs/state/actions/internal/read-write-actions.js.map +1 -0
  53. package/dist/cjs/state/builder-api/api.js +17 -0
  54. package/dist/cjs/state/builder-api/api.js.map +1 -0
  55. package/dist/cjs/state/builder-api/navigation-listener.js +110 -0
  56. package/dist/cjs/state/builder-api/navigation-listener.js.map +1 -0
  57. package/dist/cjs/state/middleware/makeswift-api-client-sync.js +37 -0
  58. package/dist/cjs/state/middleware/makeswift-api-client-sync.js.map +1 -0
  59. package/dist/cjs/state/middleware/read-only-element-tree.js +52 -0
  60. package/dist/cjs/state/middleware/read-only-element-tree.js.map +1 -0
  61. package/dist/cjs/state/middleware/read-write/builder-api/element-size.js +40 -0
  62. package/dist/cjs/state/middleware/read-write/builder-api/element-size.js.map +1 -0
  63. package/dist/cjs/state/middleware/read-write/builder-api/index.js +85 -0
  64. package/dist/cjs/state/middleware/read-write/builder-api/index.js.map +1 -0
  65. package/dist/cjs/state/middleware/read-write/builder-api/initialize-connection.js +281 -0
  66. package/dist/cjs/state/middleware/read-write/builder-api/initialize-connection.js.map +1 -0
  67. package/dist/cjs/state/middleware/read-write/index.js +40 -0
  68. package/dist/cjs/state/middleware/read-write/index.js.map +1 -0
  69. package/dist/cjs/state/middleware/read-write/measure-box-models.js +71 -0
  70. package/dist/cjs/state/middleware/read-write/measure-box-models.js.map +1 -0
  71. package/dist/cjs/state/middleware/read-write/prop-controller-handles.js +114 -0
  72. package/dist/cjs/state/middleware/read-write/prop-controller-handles.js.map +1 -0
  73. package/dist/cjs/state/middleware/read-write/update-element-tree.js +59 -0
  74. package/dist/cjs/state/middleware/read-write/update-element-tree.js.map +1 -0
  75. package/dist/cjs/state/mixins/breakpoint-watch.js +72 -0
  76. package/dist/cjs/state/mixins/breakpoint-watch.js.map +1 -0
  77. package/dist/cjs/state/modules/is-read-only.js +50 -0
  78. package/dist/cjs/state/modules/is-read-only.js.map +1 -0
  79. package/dist/cjs/state/modules/locale.js +50 -0
  80. package/dist/cjs/state/modules/locale.js.map +1 -0
  81. package/dist/cjs/state/modules/read-write/box-models.js +144 -0
  82. package/dist/cjs/state/modules/read-write/box-models.js.map +1 -0
  83. package/dist/cjs/state/modules/read-write/element-imperative-handles.js +61 -0
  84. package/dist/cjs/state/modules/read-write/element-imperative-handles.js.map +1 -0
  85. package/dist/cjs/state/modules/read-write/pointer.js +48 -0
  86. package/dist/cjs/state/modules/read-write/pointer.js.map +1 -0
  87. package/dist/cjs/state/modules/read-write/read-write-documents.js +98 -0
  88. package/dist/cjs/state/modules/read-write/read-write-documents.js.map +1 -0
  89. package/dist/cjs/state/modules/site-version.js +47 -0
  90. package/dist/cjs/state/modules/site-version.js.map +1 -0
  91. package/dist/cjs/state/ops/copy-element-tree.js +67 -0
  92. package/dist/cjs/state/ops/copy-element-tree.js.map +1 -0
  93. package/dist/cjs/state/ops/merge-element.js +73 -0
  94. package/dist/cjs/state/ops/merge-element.js.map +1 -0
  95. package/dist/cjs/state/read-only-state.js +231 -0
  96. package/dist/cjs/state/read-only-state.js.map +1 -0
  97. package/dist/cjs/state/read-write-state.js +128 -0
  98. package/dist/cjs/state/read-write-state.js.map +1 -0
  99. package/dist/cjs/state/store.js +219 -0
  100. package/dist/cjs/state/store.js.map +1 -0
  101. package/dist/cjs/state/unified-state.js +17 -0
  102. package/dist/cjs/state/unified-state.js.map +1 -0
  103. package/dist/cjs/translations/index.js +32 -0
  104. package/dist/cjs/translations/index.js.map +1 -0
  105. package/dist/cjs/utils/deferred.js +39 -0
  106. package/dist/cjs/utils/deferred.js.map +1 -0
  107. package/dist/cjs/utils/ref-counted-map.js +120 -0
  108. package/dist/cjs/utils/ref-counted-map.js.map +1 -0
  109. package/dist/esm/api/client.js +219 -0
  110. package/dist/esm/api/client.js.map +1 -0
  111. package/dist/esm/api-handler/handlers/manifest.js +1 -1
  112. package/dist/esm/api-handler/handlers/webhook/diff-projection.js +38 -0
  113. package/dist/esm/api-handler/handlers/webhook/diff-projection.js.map +1 -0
  114. package/dist/esm/builder/serialization.js +59 -0
  115. package/dist/esm/builder/serialization.js.map +1 -0
  116. package/dist/esm/client/index.js +3 -3
  117. package/dist/esm/controls/serialization/base/index.js +78 -0
  118. package/dist/esm/controls/serialization/base/index.js.map +1 -0
  119. package/dist/esm/controls/serialization/base/visitor.js +39 -0
  120. package/dist/esm/controls/serialization/base/visitor.js.map +1 -0
  121. package/dist/esm/controls/serialization/index.js +30 -0
  122. package/dist/esm/controls/serialization/index.js.map +1 -0
  123. package/dist/esm/controls/serialization/message-port/function-serialization.js +52 -0
  124. package/dist/esm/controls/serialization/message-port/function-serialization.js.map +1 -0
  125. package/dist/esm/controls/serialization/message-port/index.js +3 -0
  126. package/dist/esm/controls/serialization/message-port/index.js.map +1 -0
  127. package/dist/esm/controls/serialization/message-port/visitor.js +24 -0
  128. package/dist/esm/controls/serialization/message-port/visitor.js.map +1 -0
  129. package/dist/esm/next/api-handler/config/pages-router.js +1 -1
  130. package/dist/esm/next/api-handler/config/pages-router.js.map +1 -1
  131. package/dist/esm/next/fetch.js +6 -0
  132. package/dist/esm/next/fetch.js.map +1 -0
  133. package/dist/esm/next/runtime.js +11 -0
  134. package/dist/esm/next/runtime.js.map +1 -0
  135. package/dist/esm/next/testing/react-runtime.js +5 -0
  136. package/dist/esm/next/testing/react-runtime.js.map +1 -0
  137. package/dist/esm/prop-controllers/serialization.js +338 -0
  138. package/dist/esm/prop-controllers/serialization.js.map +1 -0
  139. package/dist/esm/runtimes/react/components/GoogleFontLink.js +35 -0
  140. package/dist/esm/runtimes/react/components/GoogleFontLink.js.map +1 -0
  141. package/dist/esm/runtimes/react/components/MakeswiftFonts.js +9 -0
  142. package/dist/esm/runtimes/react/components/MakeswiftFonts.js.map +1 -0
  143. package/dist/esm/runtimes/react/hooks/use-async-effect.js +31 -0
  144. package/dist/esm/runtimes/react/hooks/use-async-effect.js.map +1 -0
  145. package/dist/esm/runtimes/react/hooks/use-current-breakpoint.js +15 -0
  146. package/dist/esm/runtimes/react/hooks/use-current-breakpoint.js.map +1 -0
  147. package/dist/esm/runtimes/react/hooks/use-is-read-only.js +9 -0
  148. package/dist/esm/runtimes/react/hooks/use-is-read-only.js.map +1 -0
  149. package/dist/esm/runtimes/react/lib/resolved-style-to-css.js +38 -0
  150. package/dist/esm/runtimes/react/lib/resolved-style-to-css.js.map +1 -0
  151. package/dist/esm/runtimes/react/testing/react-runtime.js +9 -0
  152. package/dist/esm/runtimes/react/testing/react-runtime.js.map +1 -0
  153. package/dist/esm/runtimes/react/utils/google-fonts-url.js +23 -0
  154. package/dist/esm/runtimes/react/utils/google-fonts-url.js.map +1 -0
  155. package/dist/esm/state/actions/internal/index.js +10 -0
  156. package/dist/esm/state/actions/internal/index.js.map +1 -0
  157. package/dist/esm/state/actions/internal/read-only-actions.js +153 -0
  158. package/dist/esm/state/actions/internal/read-only-actions.js.map +1 -0
  159. package/dist/esm/state/actions/internal/read-write-actions.js +46 -0
  160. package/dist/esm/state/actions/internal/read-write-actions.js.map +1 -0
  161. package/dist/esm/state/builder-api/api.js +1 -0
  162. package/dist/esm/state/builder-api/api.js.map +1 -0
  163. package/dist/esm/state/builder-api/navigation-listener.js +86 -0
  164. package/dist/esm/state/builder-api/navigation-listener.js.map +1 -0
  165. package/dist/esm/state/middleware/makeswift-api-client-sync.js +13 -0
  166. package/dist/esm/state/middleware/makeswift-api-client-sync.js.map +1 -0
  167. package/dist/esm/state/middleware/read-only-element-tree.js +28 -0
  168. package/dist/esm/state/middleware/read-only-element-tree.js.map +1 -0
  169. package/dist/esm/state/middleware/read-write/builder-api/element-size.js +16 -0
  170. package/dist/esm/state/middleware/read-write/builder-api/element-size.js.map +1 -0
  171. package/dist/esm/state/middleware/read-write/builder-api/index.js +61 -0
  172. package/dist/esm/state/middleware/read-write/builder-api/index.js.map +1 -0
  173. package/dist/esm/state/middleware/read-write/builder-api/initialize-connection.js +254 -0
  174. package/dist/esm/state/middleware/read-write/builder-api/initialize-connection.js.map +1 -0
  175. package/dist/esm/state/middleware/read-write/index.js +16 -0
  176. package/dist/esm/state/middleware/read-write/index.js.map +1 -0
  177. package/dist/esm/state/middleware/read-write/measure-box-models.js +37 -0
  178. package/dist/esm/state/middleware/read-write/measure-box-models.js.map +1 -0
  179. package/dist/esm/state/middleware/read-write/prop-controller-handles.js +80 -0
  180. package/dist/esm/state/middleware/read-write/prop-controller-handles.js.map +1 -0
  181. package/dist/esm/state/middleware/read-write/update-element-tree.js +35 -0
  182. package/dist/esm/state/middleware/read-write/update-element-tree.js.map +1 -0
  183. package/dist/esm/state/mixins/breakpoint-watch.js +48 -0
  184. package/dist/esm/state/mixins/breakpoint-watch.js.map +1 -0
  185. package/dist/esm/state/modules/is-read-only.js +24 -0
  186. package/dist/esm/state/modules/is-read-only.js.map +1 -0
  187. package/dist/esm/state/modules/locale.js +24 -0
  188. package/dist/esm/state/modules/locale.js.map +1 -0
  189. package/dist/esm/state/modules/read-write/box-models.js +114 -0
  190. package/dist/esm/state/modules/read-write/box-models.js.map +1 -0
  191. package/dist/esm/state/modules/read-write/element-imperative-handles.js +36 -0
  192. package/dist/esm/state/modules/read-write/element-imperative-handles.js.map +1 -0
  193. package/dist/esm/state/modules/read-write/pointer.js +23 -0
  194. package/dist/esm/state/modules/read-write/pointer.js.map +1 -0
  195. package/dist/esm/state/modules/read-write/read-write-documents.js +60 -0
  196. package/dist/esm/state/modules/read-write/read-write-documents.js.map +1 -0
  197. package/dist/esm/state/modules/site-version.js +21 -0
  198. package/dist/esm/state/modules/site-version.js.map +1 -0
  199. package/dist/esm/state/ops/copy-element-tree.js +37 -0
  200. package/dist/esm/state/ops/copy-element-tree.js.map +1 -0
  201. package/dist/esm/state/ops/merge-element.js +39 -0
  202. package/dist/esm/state/ops/merge-element.js.map +1 -0
  203. package/dist/esm/state/read-only-state.js +176 -0
  204. package/dist/esm/state/read-only-state.js.map +1 -0
  205. package/dist/esm/state/read-write-state.js +82 -0
  206. package/dist/esm/state/read-write-state.js.map +1 -0
  207. package/dist/esm/state/store.js +188 -0
  208. package/dist/esm/state/store.js.map +1 -0
  209. package/dist/esm/state/unified-state.js +1 -0
  210. package/dist/esm/state/unified-state.js.map +1 -0
  211. package/dist/esm/translations/index.js +7 -0
  212. package/dist/esm/translations/index.js.map +1 -0
  213. package/dist/esm/utils/deferred.js +15 -0
  214. package/dist/esm/utils/deferred.js.map +1 -0
  215. package/dist/esm/utils/ref-counted-map.js +96 -0
  216. package/dist/esm/utils/ref-counted-map.js.map +1 -0
  217. package/dist/types/api/client.d.ts +81 -0
  218. package/dist/types/api/client.d.ts.map +1 -0
  219. package/dist/types/api-handler/handlers/webhook/diff-projection.d.ts +201 -0
  220. package/dist/types/api-handler/handlers/webhook/diff-projection.d.ts.map +1 -0
  221. package/dist/types/builder/serialization.d.ts +23 -0
  222. package/dist/types/builder/serialization.d.ts.map +1 -0
  223. package/dist/types/builder/serialization.test.d.ts +2 -0
  224. package/dist/types/builder/serialization.test.d.ts.map +1 -0
  225. package/dist/types/client/tests/client.get-component-snapshots.test.d.ts +2 -0
  226. package/dist/types/client/tests/client.get-component-snapshots.test.d.ts.map +1 -0
  227. package/dist/types/client/tests/client.get-fonts.test.d.ts +2 -0
  228. package/dist/types/client/tests/client.get-fonts.test.d.ts.map +1 -0
  229. package/dist/types/client/tests/client.introspect-many.test.d.ts +2 -0
  230. package/dist/types/client/tests/client.introspect-many.test.d.ts.map +1 -0
  231. package/dist/types/components/hooks/__tests__/useMediaQuery.test.d.ts +3 -0
  232. package/dist/types/components/hooks/__tests__/useMediaQuery.test.d.ts.map +1 -0
  233. package/dist/types/controls/serialization/base/index.d.ts +10 -0
  234. package/dist/types/controls/serialization/base/index.d.ts.map +1 -0
  235. package/dist/types/controls/serialization/base/visitor.d.ts +7 -0
  236. package/dist/types/controls/serialization/base/visitor.d.ts.map +1 -0
  237. package/dist/types/controls/serialization/index.d.ts +10 -0
  238. package/dist/types/controls/serialization/index.d.ts.map +1 -0
  239. package/dist/types/controls/serialization/message-port/function-serialization.d.ts +16 -0
  240. package/dist/types/controls/serialization/message-port/function-serialization.d.ts.map +1 -0
  241. package/dist/types/controls/serialization/message-port/function-serialization.test.d.ts +2 -0
  242. package/dist/types/controls/serialization/message-port/function-serialization.test.d.ts.map +1 -0
  243. package/dist/types/controls/serialization/message-port/index.d.ts +3 -0
  244. package/dist/types/controls/serialization/message-port/index.d.ts.map +1 -0
  245. package/dist/types/controls/serialization/message-port/visitor.d.ts +7 -0
  246. package/dist/types/controls/serialization/message-port/visitor.d.ts.map +1 -0
  247. package/dist/types/next/api-handler/config/pages-router.test.d.ts +2 -0
  248. package/dist/types/next/api-handler/config/pages-router.test.d.ts.map +1 -0
  249. package/dist/types/next/components/tests/controls/code-control.test.d.ts +2 -0
  250. package/dist/types/next/components/tests/controls/code-control.test.d.ts.map +1 -0
  251. package/dist/types/next/fetch.d.ts +3 -0
  252. package/dist/types/next/fetch.d.ts.map +1 -0
  253. package/dist/types/next/runtime.d.ts +10 -0
  254. package/dist/types/next/runtime.d.ts.map +1 -0
  255. package/dist/types/next/testing/react-runtime.d.ts +2 -0
  256. package/dist/types/next/testing/react-runtime.d.ts.map +1 -0
  257. package/dist/types/prop-controllers/serialization.d.ts +228 -0
  258. package/dist/types/prop-controllers/serialization.d.ts.map +1 -0
  259. package/dist/types/runtimes/react/components/GoogleFontLink.d.ts +14 -0
  260. package/dist/types/runtimes/react/components/GoogleFontLink.d.ts.map +1 -0
  261. package/dist/types/runtimes/react/components/MakeswiftFonts.d.ts +7 -0
  262. package/dist/types/runtimes/react/components/MakeswiftFonts.d.ts.map +1 -0
  263. package/dist/types/runtimes/react/hooks/__tests__/use-async-effect.test.d.ts +2 -0
  264. package/dist/types/runtimes/react/hooks/__tests__/use-async-effect.test.d.ts.map +1 -0
  265. package/dist/types/runtimes/react/hooks/use-async-effect.d.ts +3 -0
  266. package/dist/types/runtimes/react/hooks/use-async-effect.d.ts.map +1 -0
  267. package/dist/types/runtimes/react/hooks/use-current-breakpoint.d.ts +3 -0
  268. package/dist/types/runtimes/react/hooks/use-current-breakpoint.d.ts.map +1 -0
  269. package/dist/types/runtimes/react/hooks/use-is-read-only.d.ts +2 -0
  270. package/dist/types/runtimes/react/hooks/use-is-read-only.d.ts.map +1 -0
  271. package/dist/types/runtimes/react/lib/resolved-style-to-css.d.ts +4 -0
  272. package/dist/types/runtimes/react/lib/resolved-style-to-css.d.ts.map +1 -0
  273. package/dist/types/runtimes/react/testing/react-runtime.d.ts +6 -0
  274. package/dist/types/runtimes/react/testing/react-runtime.d.ts.map +1 -0
  275. package/dist/types/runtimes/react/utils/google-fonts-url.d.ts +6 -0
  276. package/dist/types/runtimes/react/utils/google-fonts-url.d.ts.map +1 -0
  277. package/dist/types/state/__tests__/fixtures/serialized-descriptors-from-builder.d.ts +5 -0
  278. package/dist/types/state/__tests__/fixtures/serialized-descriptors-from-builder.d.ts.map +1 -0
  279. package/dist/types/state/__tests__/fixtures/translatable-content-sample.d.ts +3 -0
  280. package/dist/types/state/__tests__/fixtures/translatable-content-sample.d.ts.map +1 -0
  281. package/dist/types/state/__tests__/get-translatable-content.test.d.ts +2 -0
  282. package/dist/types/state/__tests__/get-translatable-content.test.d.ts.map +1 -0
  283. package/dist/types/state/__tests__/merge-element.test.d.ts +2 -0
  284. package/dist/types/state/__tests__/merge-element.test.d.ts.map +1 -0
  285. package/dist/types/state/__tests__/store.read-write-state.test.d.ts +2 -0
  286. package/dist/types/state/__tests__/store.read-write-state.test.d.ts.map +1 -0
  287. package/dist/types/state/__tests__/test-store.d.ts +31 -0
  288. package/dist/types/state/__tests__/test-store.d.ts.map +1 -0
  289. package/dist/types/state/actions/internal/index.d.ts +29 -0
  290. package/dist/types/state/actions/internal/index.d.ts.map +1 -0
  291. package/dist/types/state/actions/internal/read-only-actions.d.ts +171 -0
  292. package/dist/types/state/actions/internal/read-only-actions.d.ts.map +1 -0
  293. package/dist/types/state/actions/internal/read-write-actions.d.ts +53 -0
  294. package/dist/types/state/actions/internal/read-write-actions.d.ts.map +1 -0
  295. package/dist/types/state/builder-api/api.d.ts +9 -0
  296. package/dist/types/state/builder-api/api.d.ts.map +1 -0
  297. package/dist/types/state/builder-api/navigation-listener.d.ts +3 -0
  298. package/dist/types/state/builder-api/navigation-listener.d.ts.map +1 -0
  299. package/dist/types/state/middleware/makeswift-api-client-sync.d.ts +5 -0
  300. package/dist/types/state/middleware/makeswift-api-client-sync.d.ts.map +1 -0
  301. package/dist/types/state/middleware/read-only-element-tree.d.ts +4 -0
  302. package/dist/types/state/middleware/read-only-element-tree.d.ts.map +1 -0
  303. package/dist/types/state/middleware/read-write/builder-api/element-size.d.ts +12 -0
  304. package/dist/types/state/middleware/read-write/builder-api/element-size.d.ts.map +1 -0
  305. package/dist/types/state/middleware/read-write/builder-api/index.d.ts +5 -0
  306. package/dist/types/state/middleware/read-write/builder-api/index.d.ts.map +1 -0
  307. package/dist/types/state/middleware/read-write/builder-api/initialize-connection.d.ts +6 -0
  308. package/dist/types/state/middleware/read-write/builder-api/initialize-connection.d.ts.map +1 -0
  309. package/dist/types/state/middleware/read-write/index.d.ts +5 -0
  310. package/dist/types/state/middleware/read-write/index.d.ts.map +1 -0
  311. package/dist/types/state/middleware/read-write/measure-box-models.d.ts +4 -0
  312. package/dist/types/state/middleware/read-write/measure-box-models.d.ts.map +1 -0
  313. package/dist/types/state/middleware/read-write/prop-controller-handles.d.ts +4 -0
  314. package/dist/types/state/middleware/read-write/prop-controller-handles.d.ts.map +1 -0
  315. package/dist/types/state/middleware/read-write/update-element-tree.d.ts +4 -0
  316. package/dist/types/state/middleware/read-write/update-element-tree.d.ts.map +1 -0
  317. package/dist/types/state/mixins/breakpoint-watch.d.ts +11 -0
  318. package/dist/types/state/mixins/breakpoint-watch.d.ts.map +1 -0
  319. package/dist/types/state/modules/is-read-only.d.ts +6 -0
  320. package/dist/types/state/modules/is-read-only.d.ts.map +1 -0
  321. package/dist/types/state/modules/locale.d.ts +6 -0
  322. package/dist/types/state/modules/locale.d.ts.map +1 -0
  323. package/dist/types/state/modules/read-write/box-models.d.ts +26 -0
  324. package/dist/types/state/modules/read-write/box-models.d.ts.map +1 -0
  325. package/dist/types/state/modules/read-write/element-imperative-handles.d.ts +6 -0
  326. package/dist/types/state/modules/read-write/element-imperative-handles.d.ts.map +1 -0
  327. package/dist/types/state/modules/read-write/pointer.d.ts +11 -0
  328. package/dist/types/state/modules/read-write/pointer.d.ts.map +1 -0
  329. package/dist/types/state/modules/read-write/read-write-documents.d.ts +14 -0
  330. package/dist/types/state/modules/read-write/read-write-documents.d.ts.map +1 -0
  331. package/dist/types/state/modules/site-version.d.ts +7 -0
  332. package/dist/types/state/modules/site-version.d.ts.map +1 -0
  333. package/dist/types/state/ops/copy-element-tree.d.ts +37 -0
  334. package/dist/types/state/ops/copy-element-tree.d.ts.map +1 -0
  335. package/dist/types/state/ops/merge-element.d.ts +4 -0
  336. package/dist/types/state/ops/merge-element.d.ts.map +1 -0
  337. package/dist/types/state/read-only-state.d.ts +131 -0
  338. package/dist/types/state/read-only-state.d.ts.map +1 -0
  339. package/dist/types/state/read-write-state.d.ts +62 -0
  340. package/dist/types/state/read-write-state.d.ts.map +1 -0
  341. package/dist/types/state/store.d.ts +86 -0
  342. package/dist/types/state/store.d.ts.map +1 -0
  343. package/dist/types/state/unified-state.d.ts +9 -0
  344. package/dist/types/state/unified-state.d.ts.map +1 -0
  345. package/dist/types/translations/index.d.ts +6 -0
  346. package/dist/types/translations/index.d.ts.map +1 -0
  347. package/dist/types/utils/__tests__/ref-counted-map.test.d.ts +2 -0
  348. package/dist/types/utils/__tests__/ref-counted-map.test.d.ts.map +1 -0
  349. package/dist/types/utils/deferred.d.ts +7 -0
  350. package/dist/types/utils/deferred.d.ts.map +1 -0
  351. package/dist/types/utils/ref-counted-map.d.ts +32 -0
  352. package/dist/types/utils/ref-counted-map.d.ts.map +1 -0
  353. package/package.json +2 -2
@@ -0,0 +1,82 @@
1
+ import { combineReducers } from "@reduxjs/toolkit";
2
+ import * as Documents from "./modules/read-write/read-write-documents";
3
+ import * as BoxModels from "./modules/read-write/box-models";
4
+ import * as Pointer from "./modules/read-write/pointer";
5
+ import * as ElementImperativeHandles from "./modules/read-write/element-imperative-handles";
6
+ import * as ReadOnlyState from "./read-only-state";
7
+ import { createBox, getBox, parse } from "./modules/read-write/box-models";
8
+ const reducers = {
9
+ ...ReadOnlyState.reducers,
10
+ documents: Documents.reducer,
11
+ boxModels: BoxModels.reducer,
12
+ pointer: Pointer.reducer,
13
+ elementImperativeHandles: ElementImperativeHandles.reducer
14
+ };
15
+ function createRootReducer() {
16
+ return combineReducers(reducers);
17
+ }
18
+ function getDocumentsStateSlice(state) {
19
+ return state.documents;
20
+ }
21
+ function getDocuments(state) {
22
+ return Documents.getDocuments(getDocumentsStateSlice(state));
23
+ }
24
+ function getDocument(state, documentKey) {
25
+ return Documents.getDocument(getDocumentsStateSlice(state), documentKey);
26
+ }
27
+ function getBoxModelsStateSlice(state) {
28
+ return state.boxModels;
29
+ }
30
+ function getMeasurables(state) {
31
+ return BoxModels.getMeasurables(getBoxModelsStateSlice(state));
32
+ }
33
+ function getBoxModels(state) {
34
+ return BoxModels.getBoxModels(getBoxModelsStateSlice(state));
35
+ }
36
+ function getBoxModel(state, documentKey, elementKey) {
37
+ return BoxModels.getBoxModel(getBoxModelsStateSlice(state), documentKey, elementKey);
38
+ }
39
+ function getPointer(state) {
40
+ return Pointer.getPointer(state.pointer);
41
+ }
42
+ function getElementImperativeHandles(state) {
43
+ return ElementImperativeHandles.getElementImperativeHandles(state.elementImperativeHandles);
44
+ }
45
+ function getElementImperativeHandlesContainingElement(state, element) {
46
+ const elementImperativeHandles = getElementImperativeHandles(state);
47
+ const filteredElementImperativeHandles = /* @__PURE__ */ new Map();
48
+ for (const [documentKey, byElementKey] of elementImperativeHandles) {
49
+ const filteredByElementKey = /* @__PURE__ */ new Map();
50
+ for (const [elementKey, elementImperativeHandle] of byElementKey) {
51
+ const handleElement = elementImperativeHandle.getDomNode();
52
+ if (handleElement?.contains(element)) {
53
+ filteredByElementKey.set(elementKey, elementImperativeHandle);
54
+ }
55
+ }
56
+ if (filteredByElementKey.size > 0) {
57
+ filteredElementImperativeHandles.set(documentKey, filteredByElementKey);
58
+ }
59
+ }
60
+ return filteredElementImperativeHandles;
61
+ }
62
+ function setupBuilderProxy(builderProxy) {
63
+ return (dispatch) => {
64
+ return builderProxy.setup({ onHostAction: (action) => dispatch(action) });
65
+ };
66
+ }
67
+ export {
68
+ createBox,
69
+ createRootReducer,
70
+ getBox,
71
+ getBoxModel,
72
+ getBoxModels,
73
+ getDocument,
74
+ getDocuments,
75
+ getElementImperativeHandles,
76
+ getElementImperativeHandlesContainingElement,
77
+ getMeasurables,
78
+ getPointer,
79
+ parse,
80
+ setupBuilderProxy
81
+ };
82
+ //# sourceMappingURL=read-write-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/state/read-write-state.ts"],"sourcesContent":["import { combineReducers, type ThunkAction, type ThunkDispatch } from '@reduxjs/toolkit'\n\nimport * as Documents from './modules/read-write/read-write-documents'\nimport * as BoxModels from './modules/read-write/box-models'\nimport * as Pointer from './modules/read-write/pointer'\nimport * as ElementImperativeHandles from './modules/read-write/element-imperative-handles'\n\nimport { type Action } from './actions'\n\nimport { ElementImperativeHandle } from '../runtimes/react/element-imperative-handle'\n\nimport { BuilderAPIProxy } from './builder-api/proxy'\nimport * as ReadOnlyState from './read-only-state'\n\nexport type { Operation } from './modules/read-write/read-write-documents'\nexport type { BoxModelHandle } from './modules/read-write/box-models'\nexport { createBox, getBox, parse } from './modules/read-write/box-models'\n\nconst reducers = {\n ...ReadOnlyState.reducers,\n documents: Documents.reducer,\n boxModels: BoxModels.reducer,\n pointer: Pointer.reducer,\n elementImperativeHandles: ElementImperativeHandles.reducer,\n}\n\nexport function createRootReducer() {\n return combineReducers(reducers)\n}\n\nexport type State = Omit<ReadOnlyState.State, 'documents'> & {\n documents: Documents.State\n boxModels: BoxModels.State\n pointer: Pointer.State\n elementImperativeHandles: ElementImperativeHandles.State\n}\n\nexport type Dispatch = ThunkDispatch<State, unknown, Action>\n\nfunction getDocumentsStateSlice(state: State): Documents.State {\n return state.documents\n}\n\nexport function getDocuments(state: State): Documents.State {\n return Documents.getDocuments(getDocumentsStateSlice(state))\n}\n\nexport function getDocument(state: State, documentKey: string): Documents.Document | null {\n return Documents.getDocument(getDocumentsStateSlice(state), documentKey)\n}\n\nfunction getBoxModelsStateSlice(state: State): BoxModels.State {\n return state.boxModels\n}\n\nexport function getMeasurables(state: State): Map<string, Map<string, BoxModels.Measurable>> {\n return BoxModels.getMeasurables(getBoxModelsStateSlice(state))\n}\n\nexport function getBoxModels(state: State): Map<string, Map<string, BoxModels.BoxDisplayModel>> {\n return BoxModels.getBoxModels(getBoxModelsStateSlice(state))\n}\n\nexport function getBoxModel(\n state: State,\n documentKey: string,\n elementKey: string,\n): BoxModels.BoxDisplayModel | null {\n return BoxModels.getBoxModel(getBoxModelsStateSlice(state), documentKey, elementKey)\n}\n\nexport function getPointer(state: State): Pointer.Point | null {\n return Pointer.getPointer(state.pointer)\n}\n\nexport function getElementImperativeHandles(\n state: State,\n): Map<string, Map<string, ElementImperativeHandle>> {\n return ElementImperativeHandles.getElementImperativeHandles(state.elementImperativeHandles)\n}\n\nexport function getElementImperativeHandlesContainingElement(\n state: State,\n element: Element,\n): Map<string, Map<string, ElementImperativeHandle>> {\n const elementImperativeHandles = getElementImperativeHandles(state)\n const filteredElementImperativeHandles = new Map<string, Map<string, ElementImperativeHandle>>()\n\n for (const [documentKey, byElementKey] of elementImperativeHandles) {\n const filteredByElementKey = new Map<string, ElementImperativeHandle>()\n\n for (const [elementKey, elementImperativeHandle] of byElementKey) {\n const handleElement = elementImperativeHandle.getDomNode()\n\n if (handleElement?.contains(element)) {\n filteredByElementKey.set(elementKey, elementImperativeHandle)\n }\n }\n\n if (filteredByElementKey.size > 0) {\n filteredElementImperativeHandles.set(documentKey, filteredByElementKey)\n }\n }\n\n return filteredElementImperativeHandles\n}\n\nexport function setupBuilderProxy(\n builderProxy: BuilderAPIProxy,\n): ThunkAction<VoidFunction, State, unknown, Action> {\n return dispatch => {\n return builderProxy.setup({ onHostAction: action => dispatch(action) })\n }\n}\n"],"mappings":"AAAA,SAAS,uBAA6D;AAEtE,YAAY,eAAe;AAC3B,YAAY,eAAe;AAC3B,YAAY,aAAa;AACzB,YAAY,8BAA8B;AAO1C,YAAY,mBAAmB;AAI/B,SAAS,WAAW,QAAQ,aAAa;AAEzC,MAAM,WAAW;AAAA,EACf,GAAG,cAAc;AAAA,EACjB,WAAW,UAAU;AAAA,EACrB,WAAW,UAAU;AAAA,EACrB,SAAS,QAAQ;AAAA,EACjB,0BAA0B,yBAAyB;AACrD;AAEO,SAAS,oBAAoB;AAClC,SAAO,gBAAgB,QAAQ;AACjC;AAWA,SAAS,uBAAuB,OAA+B;AAC7D,SAAO,MAAM;AACf;AAEO,SAAS,aAAa,OAA+B;AAC1D,SAAO,UAAU,aAAa,uBAAuB,KAAK,CAAC;AAC7D;AAEO,SAAS,YAAY,OAAc,aAAgD;AACxF,SAAO,UAAU,YAAY,uBAAuB,KAAK,GAAG,WAAW;AACzE;AAEA,SAAS,uBAAuB,OAA+B;AAC7D,SAAO,MAAM;AACf;AAEO,SAAS,eAAe,OAA8D;AAC3F,SAAO,UAAU,eAAe,uBAAuB,KAAK,CAAC;AAC/D;AAEO,SAAS,aAAa,OAAmE;AAC9F,SAAO,UAAU,aAAa,uBAAuB,KAAK,CAAC;AAC7D;AAEO,SAAS,YACd,OACA,aACA,YACkC;AAClC,SAAO,UAAU,YAAY,uBAAuB,KAAK,GAAG,aAAa,UAAU;AACrF;AAEO,SAAS,WAAW,OAAoC;AAC7D,SAAO,QAAQ,WAAW,MAAM,OAAO;AACzC;AAEO,SAAS,4BACd,OACmD;AACnD,SAAO,yBAAyB,4BAA4B,MAAM,wBAAwB;AAC5F;AAEO,SAAS,6CACd,OACA,SACmD;AACnD,QAAM,2BAA2B,4BAA4B,KAAK;AAClE,QAAM,mCAAmC,oBAAI,IAAkD;AAE/F,aAAW,CAAC,aAAa,YAAY,KAAK,0BAA0B;AAClE,UAAM,uBAAuB,oBAAI,IAAqC;AAEtE,eAAW,CAAC,YAAY,uBAAuB,KAAK,cAAc;AAChE,YAAM,gBAAgB,wBAAwB,WAAW;AAEzD,UAAI,eAAe,SAAS,OAAO,GAAG;AACpC,6BAAqB,IAAI,YAAY,uBAAuB;AAAA,MAC9D;AAAA,IACF;AAEA,QAAI,qBAAqB,OAAO,GAAG;AACjC,uCAAiC,IAAI,aAAa,oBAAoB;AAAA,IACxE;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,kBACd,cACmD;AACnD,SAAO,cAAY;AACjB,WAAO,aAAa,MAAM,EAAE,cAAc,YAAU,SAAS,MAAM,EAAE,CAAC;AAAA,EACxE;AACF;","names":[]}
@@ -0,0 +1,188 @@
1
+ import {
2
+ Tuple,
3
+ configureStore as configureReduxStore,
4
+ combineReducers,
5
+ compose
6
+ } from "@reduxjs/toolkit";
7
+ import { actionMiddleware, middlewareOptions, devToolsConfig } from "./toolkit";
8
+ import { BuilderActionTypes } from "./builder-api/actions";
9
+ import { HostActionTypes } from "./host-api";
10
+ import * as Breakpoints from "./modules/breakpoints";
11
+ import { readOnlyElementTreeMiddleware } from "./middleware/read-only-element-tree";
12
+ import { makeswiftApiClientSyncMiddleware } from "./middleware/makeswift-api-client-sync";
13
+ import { breakpointWatchMixin } from "./mixins/breakpoint-watch";
14
+ import * as ReadOnlyState from "./read-only-state";
15
+ const configureStore = ({
16
+ name,
17
+ preloadedState,
18
+ enhancers,
19
+ middleware
20
+ }) => {
21
+ const store = configureReduxStore({
22
+ reducer: combineReducers(ReadOnlyState.reducers),
23
+ preloadedState,
24
+ middleware: (getDefaultMiddleware) => getDefaultMiddleware(middlewareOptions).concat([
25
+ readOnlyElementTreeMiddleware(),
26
+ ...middleware ? middleware() : []
27
+ ]),
28
+ enhancers: (getDefaultEnhancers) => getDefaultEnhancers().concat(enhancers()),
29
+ devTools: devToolsConfig({
30
+ name: `${name} (${(/* @__PURE__ */ new Date()).toISOString()})`,
31
+ actionsDenylist: [
32
+ HostActionTypes.BUILDER_POINTER_MOVE,
33
+ BuilderActionTypes.HANDLE_POINTER_MOVE,
34
+ BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE
35
+ ]
36
+ })
37
+ });
38
+ return store;
39
+ };
40
+ function configureProtoStore({
41
+ name,
42
+ breakpoints
43
+ }) {
44
+ return configureStore({
45
+ name,
46
+ preloadedState: {
47
+ breakpoints: Breakpoints.getInitialState(breakpoints)
48
+ },
49
+ enhancers: () => new Tuple()
50
+ });
51
+ }
52
+ function conditionalReadWriteMiddleware(middlewareRef) {
53
+ let readWriteActionBuffer = [];
54
+ let middlewares = null;
55
+ let enhancedDispatch = null;
56
+ return actionMiddleware(({ dispatch, getState }) => (next) => {
57
+ return (action) => {
58
+ const state = getState();
59
+ if (middlewareRef.current == null) {
60
+ if (!state.isReadOnly) {
61
+ readWriteActionBuffer.push(action);
62
+ }
63
+ return next(action);
64
+ }
65
+ if (state.isReadOnly) {
66
+ console.error("Read-write state mismatch", {
67
+ isReadOnly: state.isReadOnly,
68
+ middlewareRef: middlewareRef.current,
69
+ siteVersion: state.siteVersion
70
+ });
71
+ }
72
+ if (enhancedDispatch == null || middlewares !== middlewareRef.current) {
73
+ middlewares = middlewareRef.current;
74
+ const middlewareApi = { dispatch, getState };
75
+ enhancedDispatch = compose(...middlewares.map((mw) => mw(middlewareApi)))(next);
76
+ }
77
+ if (readWriteActionBuffer.length > 0) {
78
+ const readWriteActions = [...readWriteActionBuffer];
79
+ readWriteActionBuffer = [];
80
+ for (const bufferedAction of readWriteActions) {
81
+ enhancedDispatch(bufferedAction);
82
+ }
83
+ }
84
+ return enhancedDispatch(action);
85
+ };
86
+ });
87
+ }
88
+ function withMixin(mixin) {
89
+ return (next) => (reducer, preloadedState) => ({
90
+ ...next(reducer, preloadedState),
91
+ ...mixin
92
+ });
93
+ }
94
+ function configureReadWriteStore({
95
+ name,
96
+ appOrigin,
97
+ hostApiClient,
98
+ preloadedState
99
+ }) {
100
+ const readWriteMiddlewareRef = {
101
+ current: null
102
+ };
103
+ let refCount = 0;
104
+ let readWriteCleanup = null;
105
+ let readWriteSetupPromise = null;
106
+ const loadReadWriteState = async () => {
107
+ if (readWriteCleanup != null) {
108
+ return;
109
+ }
110
+ if (readWriteSetupPromise != null) {
111
+ await readWriteSetupPromise;
112
+ return;
113
+ }
114
+ readWriteSetupPromise = (async () => {
115
+ const { BuilderAPIProxy } = await import("./builder-api/proxy");
116
+ const { createRootReducer, setupBuilderProxy } = await import("./read-write-state");
117
+ const { createReadWriteMiddleware } = await import("./middleware/read-write");
118
+ if (readWriteMiddlewareRef.current != null) {
119
+ return;
120
+ }
121
+ store.replaceReducer(createRootReducer());
122
+ const builderProxy = new BuilderAPIProxy({ appOrigin });
123
+ readWriteMiddlewareRef.current = createReadWriteMiddleware({ builderProxy });
124
+ const dispatch = store.dispatch;
125
+ const builderProxyCleanup = dispatch(setupBuilderProxy(builderProxy));
126
+ readWriteCleanup = () => {
127
+ readWriteMiddlewareRef.current = null;
128
+ builderProxyCleanup();
129
+ };
130
+ })();
131
+ try {
132
+ await readWriteSetupPromise;
133
+ } finally {
134
+ readWriteSetupPromise = null;
135
+ }
136
+ };
137
+ const store = configureStore({
138
+ name,
139
+ preloadedState,
140
+ middleware: () => [
141
+ makeswiftApiClientSyncMiddleware(hostApiClient),
142
+ conditionalReadWriteMiddleware(readWriteMiddlewareRef)
143
+ ],
144
+ enhancers: () => new Tuple(
145
+ withMixin(
146
+ breakpointWatchMixin({
147
+ dispatch: (...args) => store.dispatch(...args),
148
+ getState: () => store.getState(),
149
+ subscribe: (listener) => store.subscribe(listener)
150
+ })
151
+ ),
152
+ withMixin({
153
+ hostApiClient,
154
+ loadReadWriteStateIfNeeded: async () => {
155
+ const { isReadOnly } = store.getState();
156
+ if (isReadOnly) {
157
+ if (refCount > 0) {
158
+ console.error("Read-write state mismatch", { isReadOnly, refCount });
159
+ }
160
+ return () => {
161
+ };
162
+ }
163
+ await loadReadWriteState();
164
+ refCount += 1;
165
+ let didCleanup = false;
166
+ return () => {
167
+ if (didCleanup) {
168
+ return;
169
+ }
170
+ didCleanup = true;
171
+ refCount -= 1;
172
+ if (refCount === 0 && readWriteCleanup != null) {
173
+ readWriteCleanup();
174
+ readWriteCleanup = null;
175
+ }
176
+ };
177
+ }
178
+ })
179
+ )
180
+ });
181
+ return store;
182
+ }
183
+ export {
184
+ conditionalReadWriteMiddleware,
185
+ configureProtoStore,
186
+ configureReadWriteStore
187
+ };
188
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/state/store.ts"],"sourcesContent":["import {\n type Middleware,\n type StoreEnhancer,\n type MiddlewareAPI,\n Tuple,\n configureStore as configureReduxStore,\n combineReducers,\n compose,\n} from '@reduxjs/toolkit'\n\nimport { MakeswiftHostApiClient } from '../api/client'\n\nimport { actionMiddleware, middlewareOptions, devToolsConfig } from './toolkit'\nimport { BuilderActionTypes } from './builder-api/actions'\nimport { HostActionTypes } from './host-api'\n\nimport * as Breakpoints from './modules/breakpoints'\n\nimport { readOnlyElementTreeMiddleware } from './middleware/read-only-element-tree'\nimport { makeswiftApiClientSyncMiddleware } from './middleware/makeswift-api-client-sync'\nimport { type BreakpointWatch, breakpointWatchMixin } from './mixins/breakpoint-watch'\n\nimport { type Action } from './actions'\n\nimport { type State as ReadWriteState } from './read-write-state'\nimport * as ReadOnlyState from './read-only-state'\nimport {\n type State,\n type Dispatch,\n type ReadOnlyReducer,\n type ReadWriteDispatch,\n} from './unified-state'\n\nexport { type State } from './unified-state'\n\nconst configureStore = <Items extends readonly StoreEnhancer[] = []>({\n name,\n preloadedState,\n enhancers,\n middleware,\n}: {\n name: string\n preloadedState: Partial<State>\n enhancers: () => Tuple<Items>\n middleware?: () => Middleware[]\n}) => {\n const store = configureReduxStore({\n reducer: combineReducers(ReadOnlyState.reducers),\n preloadedState,\n\n middleware: getDefaultMiddleware =>\n getDefaultMiddleware(middlewareOptions).concat([\n readOnlyElementTreeMiddleware(),\n ...(middleware ? middleware() : []),\n ]),\n\n enhancers: getDefaultEnhancers => getDefaultEnhancers().concat(enhancers()),\n\n devTools: devToolsConfig({\n name: `${name} (${new Date().toISOString()})`,\n actionsDenylist: [\n HostActionTypes.BUILDER_POINTER_MOVE,\n BuilderActionTypes.HANDLE_POINTER_MOVE,\n BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE,\n ],\n }),\n })\n\n return store\n}\n\nexport function configureProtoStore({\n name,\n breakpoints,\n}: {\n name: string\n breakpoints: Breakpoints.Breakpoints | undefined\n}) {\n return configureStore({\n name,\n preloadedState: {\n breakpoints: Breakpoints.getInitialState(breakpoints),\n },\n enhancers: () => new Tuple(),\n })\n}\n\nexport type ProtoStore = ReturnType<typeof configureProtoStore>\n\ntype ReadWriteMiddleware = ReturnType<\n typeof import('./middleware/read-write').createReadWriteMiddleware\n>\n\ntype ReadWriteMiddlewareRef = {\n current: ReadWriteMiddleware | null\n}\n\nexport function conditionalReadWriteMiddleware(\n middlewareRef: ReadWriteMiddlewareRef,\n): Middleware<Dispatch, State, Dispatch> {\n let readWriteActionBuffer: Action[] = []\n let middlewares: ReadWriteMiddleware | null = null\n let enhancedDispatch: Dispatch | null = null\n\n return actionMiddleware(({ dispatch, getState }) => next => {\n return (action: Action) => {\n const state = getState()\n\n if (middlewareRef.current == null) {\n if (!state.isReadOnly) {\n // because switching to the read-write state is an asynchronous operation,\n // we need to buffer all actions dispatched after the isReadOnly state is\n // set to false but before the read-write middleware is installed\n readWriteActionBuffer.push(action)\n }\n\n return next(action)\n }\n\n if (state.isReadOnly) {\n console.error('Read-write state mismatch', {\n isReadOnly: state.isReadOnly,\n middlewareRef: middlewareRef.current,\n siteVersion: state.siteVersion,\n })\n }\n\n // build and cache the enhanced dispatch chain when read-write middleware is installed\n if (enhancedDispatch == null || middlewares !== middlewareRef.current) {\n middlewares = middlewareRef.current\n\n const middlewareApi = { dispatch, getState } as MiddlewareAPI<\n ReadWriteDispatch,\n ReadWriteState\n >\n\n enhancedDispatch = compose<Dispatch>(...middlewares.map(mw => mw(middlewareApi)))(next)\n }\n\n // dispatch buffered actions, if any\n if (readWriteActionBuffer.length > 0) {\n const readWriteActions = [...readWriteActionBuffer]\n readWriteActionBuffer = []\n\n // Note that we're rerunning the actions through the entire middleware chain,\n // including the read-only middleware and the reducers, some of which have\n // already processed these actions once. This is safe to do because actions that\n // are run as part of page initialization are idempotent.\n for (const bufferedAction of readWriteActions) {\n enhancedDispatch(bufferedAction)\n }\n }\n\n return enhancedDispatch(action)\n }\n })\n}\n\nexport interface ReadWriteStateMixin {\n readonly hostApiClient: MakeswiftHostApiClient\n\n loadReadWriteStateIfNeeded(): Promise<() => void>\n}\n\nfunction withMixin<M extends {}>(mixin: M): StoreEnhancer<M> {\n return next => (reducer, preloadedState?) => ({\n ...next(reducer, preloadedState),\n ...mixin,\n })\n}\n\nexport function configureReadWriteStore({\n name,\n appOrigin,\n hostApiClient,\n preloadedState,\n}: {\n name: string\n appOrigin: string\n hostApiClient: MakeswiftHostApiClient\n preloadedState: Partial<State>\n}) {\n const readWriteMiddlewareRef: ReadWriteMiddlewareRef = {\n current: null,\n }\n\n let refCount = 0\n let readWriteCleanup: (() => void) | null = null\n let readWriteSetupPromise: Promise<void> | null = null\n\n const loadReadWriteState = async (): Promise<void> => {\n if (readWriteCleanup != null) {\n return\n }\n\n if (readWriteSetupPromise != null) {\n await readWriteSetupPromise\n return\n }\n\n readWriteSetupPromise = (async () => {\n // import all the modules needed for read-write mode before proceeding with\n // the setup to avoid race conditions when `setup` is called concurrently\n // in two different page regions\n const { BuilderAPIProxy } = await import('./builder-api/proxy')\n const { createRootReducer, setupBuilderProxy } = await import('./read-write-state')\n const { createReadWriteMiddleware } = await import('./middleware/read-write')\n\n // IMPORTANT: only synchronous code after this point\n\n // with all modules imported, check if another concurrent setup already\n // initialized the read-write middleware\n if (readWriteMiddlewareRef.current != null) {\n return\n }\n\n store.replaceReducer(createRootReducer() as ReadOnlyReducer)\n\n const builderProxy = new BuilderAPIProxy({ appOrigin })\n readWriteMiddlewareRef.current = createReadWriteMiddleware({ builderProxy })\n\n const dispatch = store.dispatch as ReadWriteDispatch\n const builderProxyCleanup = dispatch(setupBuilderProxy(builderProxy))\n\n readWriteCleanup = () => {\n readWriteMiddlewareRef.current = null\n builderProxyCleanup()\n }\n })()\n\n try {\n await readWriteSetupPromise\n } finally {\n readWriteSetupPromise = null\n }\n }\n\n const store = configureStore({\n name,\n preloadedState,\n\n middleware: () => [\n makeswiftApiClientSyncMiddleware(hostApiClient),\n conditionalReadWriteMiddleware(readWriteMiddlewareRef),\n ],\n\n enhancers: () =>\n new Tuple(\n withMixin<BreakpointWatch>(\n breakpointWatchMixin({\n dispatch: (...args: Parameters<Dispatch>) => store.dispatch(...args),\n getState: (): State => store.getState(),\n subscribe: (listener): VoidFunction => store.subscribe(listener),\n }),\n ),\n\n withMixin<ReadWriteStateMixin>({\n hostApiClient,\n loadReadWriteStateIfNeeded: async () => {\n const { isReadOnly } = store.getState()\n\n if (isReadOnly) {\n if (refCount > 0) {\n console.error('Read-write state mismatch', { isReadOnly, refCount })\n }\n\n return () => {}\n }\n\n await loadReadWriteState()\n refCount += 1\n\n let didCleanup = false\n return () => {\n if (didCleanup) {\n return\n }\n\n didCleanup = true\n refCount -= 1\n if (refCount === 0 && readWriteCleanup != null) {\n readWriteCleanup()\n readWriteCleanup = null\n }\n }\n },\n }),\n ),\n })\n\n return store\n}\n\nexport type Store = ReturnType<typeof configureReadWriteStore>\n"],"mappings":"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","names":[]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=unified-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,7 @@
1
+ import { getTranslatableContent } from "../state/translations/get";
2
+ import { mergeTranslatedContent } from "../state/translations/merge";
3
+ export {
4
+ getTranslatableContent,
5
+ mergeTranslatedContent
6
+ };
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/translations/index.ts"],"sourcesContent":["export { getTranslatableContent } from '../state/translations/get'\nexport { mergeTranslatedContent } from '../state/translations/merge'\nexport type { DescriptorsByComponentType, DescriptorsByProp } from '../state/modules/prop-controllers'\nexport type { ElementData, Data, Element } from '../state/read-only-state'\nexport type { TranslationDto } from '@makeswift/controls'\n"],"mappings":"AAAA,SAAS,8BAA8B;AACvC,SAAS,8BAA8B;","names":[]}
@@ -0,0 +1,15 @@
1
+ function createDeferred() {
2
+ let resolve = () => {
3
+ };
4
+ let reject = () => {
5
+ };
6
+ const promise = new Promise((resolveFn, rejectFn) => {
7
+ resolve = resolveFn;
8
+ reject = rejectFn;
9
+ });
10
+ return { promise, resolve, reject };
11
+ }
12
+ export {
13
+ createDeferred
14
+ };
15
+ //# sourceMappingURL=deferred.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/deferred.ts"],"sourcesContent":["export type Deferred<T> = {\n promise: Promise<T>\n resolve: (value: T) => void\n reject: (reason?: unknown) => void\n}\n\nexport function createDeferred<T>(): Deferred<T> {\n let resolve: (value: T) => void = () => {}\n let reject: (reason?: unknown) => void = () => {}\n\n const promise = new Promise<T>((resolveFn, rejectFn) => {\n resolve = resolveFn\n reject = rejectFn\n })\n\n return { promise, resolve, reject }\n}\n"],"mappings":"AAMO,SAAS,iBAAiC;AAC/C,MAAI,UAA8B,MAAM;AAAA,EAAC;AACzC,MAAI,SAAqC,MAAM;AAAA,EAAC;AAEhD,QAAM,UAAU,IAAI,QAAW,CAAC,WAAW,aAAa;AACtD,cAAU;AACV,aAAS;AAAA,EACX,CAAC;AAED,SAAO,EAAE,SAAS,SAAS,OAAO;AACpC;","names":[]}
@@ -0,0 +1,96 @@
1
+ const TTLCheck = {
2
+ ON_GET: 1 << 0,
3
+ ON_RETAIN: 1 << 1,
4
+ ON_RELEASE: 1 << 2
5
+ };
6
+ class RefCountedMap {
7
+ map = /* @__PURE__ */ new Map();
8
+ unownedEntryTtlMs;
9
+ ttlCheck;
10
+ static TTLCheck = TTLCheck;
11
+ constructor({
12
+ unownedEntryTtlMs,
13
+ ttlCheck = TTLCheck.ON_GET | TTLCheck.ON_RETAIN | TTLCheck.ON_RELEASE
14
+ }) {
15
+ this.unownedEntryTtlMs = unownedEntryTtlMs;
16
+ this.ttlCheck = ttlCheck;
17
+ }
18
+ get size() {
19
+ return this.map.size;
20
+ }
21
+ get(key) {
22
+ return this.map.get(key)?.value;
23
+ }
24
+ getOrCreate(key, init) {
25
+ try {
26
+ const existing = this.map.get(key);
27
+ if (existing) {
28
+ if (isUnowned(existing))
29
+ existing.accessedAt = Date.now();
30
+ return existing.value;
31
+ }
32
+ const value = init();
33
+ this.map.set(key, { value, count: void 0, accessedAt: Date.now() });
34
+ return value;
35
+ } finally {
36
+ if (this.ttlCheck & TTLCheck.ON_GET)
37
+ this.removeExpired();
38
+ }
39
+ }
40
+ /**
41
+ * Returns true on transition from unowned to owned
42
+ */
43
+ retain(key, value) {
44
+ try {
45
+ const existing = this.map.get(key);
46
+ if (existing == null) {
47
+ this.map.set(key, { value, count: 1 });
48
+ return true;
49
+ }
50
+ if (existing.value === value) {
51
+ existing.count = (existing.count ?? 0) + 1;
52
+ return existing.count === 1;
53
+ }
54
+ return false;
55
+ } finally {
56
+ if (this.ttlCheck & TTLCheck.ON_RETAIN)
57
+ this.removeExpired();
58
+ }
59
+ }
60
+ /**
61
+ * Returns true on transition from owned to unowned
62
+ */
63
+ release(key, value) {
64
+ try {
65
+ const existing = this.map.get(key);
66
+ if (existing == null)
67
+ return false;
68
+ if (isUnowned(existing))
69
+ return false;
70
+ if (existing.value !== value)
71
+ return false;
72
+ if (existing.count === 1) {
73
+ this.map.delete(key);
74
+ return true;
75
+ }
76
+ existing.count -= 1;
77
+ return false;
78
+ } finally {
79
+ if (this.ttlCheck & TTLCheck.ON_RELEASE)
80
+ this.removeExpired();
81
+ }
82
+ }
83
+ removeExpired() {
84
+ const now = Date.now();
85
+ const isExpired = (entry) => isUnowned(entry) && now - entry.accessedAt > this.unownedEntryTtlMs;
86
+ this.map.forEach((entry, key) => {
87
+ if (isExpired(entry))
88
+ this.map.delete(key);
89
+ });
90
+ }
91
+ }
92
+ const isUnowned = (entry) => entry.count === void 0;
93
+ export {
94
+ RefCountedMap
95
+ };
96
+ //# sourceMappingURL=ref-counted-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/ref-counted-map.ts"],"sourcesContent":["type RefCountedMapEntry<V> = {\n value: V\n count: number\n}\n\ntype UnownedMapEntry<V> = {\n value: V\n count: undefined\n accessedAt: number\n}\n\ntype MapEntry<V> = RefCountedMapEntry<V> | UnownedMapEntry<V>\n\nconst TTLCheck = {\n ON_GET: 1 << 0,\n ON_RETAIN: 1 << 1,\n ON_RELEASE: 1 << 2,\n} as const\n\n/**\n * Ref-counted map with explicit retention semantics. Entries are unowned by default and may be evicted after their\n * TTL unless explicitly retained. This provides TTL-based caching for unowned entries, while allowing consumers to\n * opt into stronger lifetime control via explicit retention.\n */\nexport class RefCountedMap<K, V> {\n private readonly map = new Map<K, MapEntry<V>>()\n private readonly unownedEntryTtlMs: number\n private readonly ttlCheck: number\n\n static readonly TTLCheck = TTLCheck\n\n constructor({\n unownedEntryTtlMs,\n ttlCheck = TTLCheck.ON_GET | TTLCheck.ON_RETAIN | TTLCheck.ON_RELEASE,\n }: {\n unownedEntryTtlMs: number\n ttlCheck?: number\n }) {\n this.unownedEntryTtlMs = unownedEntryTtlMs\n this.ttlCheck = ttlCheck\n }\n\n get size(): number {\n return this.map.size\n }\n\n get(key: K): V | undefined {\n return this.map.get(key)?.value\n }\n\n getOrCreate(key: K, init: () => V): V {\n try {\n const existing = this.map.get(key)\n\n if (existing) {\n if (isUnowned(existing)) existing.accessedAt = Date.now()\n return existing.value\n }\n\n const value = init()\n this.map.set(key, { value, count: undefined, accessedAt: Date.now() })\n return value\n } finally {\n if (this.ttlCheck & TTLCheck.ON_GET) this.removeExpired()\n }\n }\n\n /**\n * Returns true on transition from unowned to owned\n */\n retain(key: K, value: V): boolean {\n try {\n const existing = this.map.get(key)\n\n if (existing == null) {\n this.map.set(key, { value, count: 1 })\n return true\n }\n\n // `retain` might be called on a unowned entry that has already been evicted from the map due to TTL expiration\n // *and* possibly replaced by a new unowned entry with the same key; handle this gracefully\n if (existing.value === value) {\n existing.count = (existing.count ?? 0) + 1\n return existing.count === 1\n }\n\n return false\n } finally {\n if (this.ttlCheck & TTLCheck.ON_RETAIN) this.removeExpired()\n }\n }\n\n /**\n * Returns true on transition from owned to unowned\n */\n release(key: K, value: V): boolean {\n try {\n const existing = this.map.get(key)\n\n // `release` might be called on an entry that remained unowned due being superseded by a new entry with the same\n // key after TTL expiration of the original entry; handle this gracefully\n if (existing == null) return false\n if (isUnowned(existing)) return false\n if (existing.value !== value) return false\n\n if (existing.count === 1) {\n this.map.delete(key)\n return true\n }\n\n existing.count -= 1\n return false\n } finally {\n if (this.ttlCheck & TTLCheck.ON_RELEASE) this.removeExpired()\n }\n }\n\n private removeExpired(): void {\n const now = Date.now()\n const isExpired = (entry: MapEntry<V>): boolean =>\n isUnowned(entry) && now - entry.accessedAt > this.unownedEntryTtlMs\n\n this.map.forEach((entry, key) => {\n if (isExpired(entry)) this.map.delete(key)\n })\n }\n}\n\nconst isUnowned = <V>(entry: MapEntry<V>): entry is UnownedMapEntry<V> => entry.count === undefined\n"],"mappings":"AAaA,MAAM,WAAW;AAAA,EACf,QAAQ,KAAK;AAAA,EACb,WAAW,KAAK;AAAA,EAChB,YAAY,KAAK;AACnB;AAOO,MAAM,cAAoB;AAAA,EACd,MAAM,oBAAI,IAAoB;AAAA,EAC9B;AAAA,EACA;AAAA,EAEjB,OAAgB,WAAW;AAAA,EAE3B,YAAY;AAAA,IACV;AAAA,IACA,WAAW,SAAS,SAAS,SAAS,YAAY,SAAS;AAAA,EAC7D,GAGG;AACD,SAAK,oBAAoB;AACzB,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,IAAI,OAAe;AACjB,WAAO,KAAK,IAAI;AAAA,EAClB;AAAA,EAEA,IAAI,KAAuB;AACzB,WAAO,KAAK,IAAI,IAAI,GAAG,GAAG;AAAA,EAC5B;AAAA,EAEA,YAAY,KAAQ,MAAkB;AACpC,QAAI;AACF,YAAM,WAAW,KAAK,IAAI,IAAI,GAAG;AAEjC,UAAI,UAAU;AACZ,YAAI,UAAU,QAAQ;AAAG,mBAAS,aAAa,KAAK,IAAI;AACxD,eAAO,SAAS;AAAA,MAClB;AAEA,YAAM,QAAQ,KAAK;AACnB,WAAK,IAAI,IAAI,KAAK,EAAE,OAAO,OAAO,QAAW,YAAY,KAAK,IAAI,EAAE,CAAC;AACrE,aAAO;AAAA,IACT,UAAE;AACA,UAAI,KAAK,WAAW,SAAS;AAAQ,aAAK,cAAc;AAAA,IAC1D;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,KAAQ,OAAmB;AAChC,QAAI;AACF,YAAM,WAAW,KAAK,IAAI,IAAI,GAAG;AAEjC,UAAI,YAAY,MAAM;AACpB,aAAK,IAAI,IAAI,KAAK,EAAE,OAAO,OAAO,EAAE,CAAC;AACrC,eAAO;AAAA,MACT;AAIA,UAAI,SAAS,UAAU,OAAO;AAC5B,iBAAS,SAAS,SAAS,SAAS,KAAK;AACzC,eAAO,SAAS,UAAU;AAAA,MAC5B;AAEA,aAAO;AAAA,IACT,UAAE;AACA,UAAI,KAAK,WAAW,SAAS;AAAW,aAAK,cAAc;AAAA,IAC7D;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQ,KAAQ,OAAmB;AACjC,QAAI;AACF,YAAM,WAAW,KAAK,IAAI,IAAI,GAAG;AAIjC,UAAI,YAAY;AAAM,eAAO;AAC7B,UAAI,UAAU,QAAQ;AAAG,eAAO;AAChC,UAAI,SAAS,UAAU;AAAO,eAAO;AAErC,UAAI,SAAS,UAAU,GAAG;AACxB,aAAK,IAAI,OAAO,GAAG;AACnB,eAAO;AAAA,MACT;AAEA,eAAS,SAAS;AAClB,aAAO;AAAA,IACT,UAAE;AACA,UAAI,KAAK,WAAW,SAAS;AAAY,aAAK,cAAc;AAAA,IAC9D;AAAA,EACF;AAAA,EAEQ,gBAAsB;AAC5B,UAAM,MAAM,KAAK,IAAI;AACrB,UAAM,YAAY,CAAC,UACjB,UAAU,KAAK,KAAK,MAAM,MAAM,aAAa,KAAK;AAEpD,SAAK,IAAI,QAAQ,CAAC,OAAO,QAAQ;AAC/B,UAAI,UAAU,KAAK;AAAG,aAAK,IAAI,OAAO,GAAG;AAAA,IAC3C,CAAC;AAAA,EACH;AACF;AAEA,MAAM,YAAY,CAAI,UAAoD,MAAM,UAAU;","names":[]}
@@ -0,0 +1,81 @@
1
+ import { type FetchableValue } from '@makeswift/controls';
2
+ import * as MakeswiftApiClient from '../state/makeswift-api-client';
3
+ import { APIResourceType, File, GlobalElement, LocalizedGlobalElement, Page, PagePathnameSlice, Site, Snippet, Swatch, Table, Typography } from './types';
4
+ import { GraphQLClient } from './graphql/client';
5
+ export type CacheData = MakeswiftApiClient.SerializedState;
6
+ export declare const CacheData: {
7
+ empty(): CacheData;
8
+ };
9
+ /**
10
+ * NOTE(miguel): This "client" is used to fetch Makeswift API resources needed for the host. For
11
+ * example, swatches, files, typographies, etc. Ideally it's internal to the runtime and is only
12
+ * used by controls to transform API references to API resources.
13
+ *
14
+ * Moreover, its use should be reserved for the builder only, since for live pages all Makeswift
15
+ * API resources should be embedded in the "page snapshot". In the builder, this client serves the
16
+ * purpose of sending requests for API resources and keeping a cache so that changes that happen in
17
+ * the builder, like modifying a swatch, can be sent via `postMessage` to the host and the cache can
18
+ * immediately update the value and re-render.
19
+ *
20
+ * Furthermore, the API resources requested shouldn't be requested directly from the Makeswift API
21
+ * as that would require those resources to not be authenticated since the requests come from the
22
+ * browser when running the host. Instead, the requests should go to the host directly, at the
23
+ * Makeswift API endpoint (i.g., `/api/makeswift/[...makeswift]` dynamic route) where the host's
24
+ * API key can be used, securely, in the server. For this reason, this client should really be a
25
+ * client of the host's API, not Makeswift's, intended to build and continuously maintain a realtime
26
+ * snapshot for use in the builder, not the lives pages.
27
+ */
28
+ export declare class MakeswiftHostApiClient {
29
+ graphqlClient: GraphQLClient;
30
+ makeswiftApiClient: MakeswiftApiClient.Store;
31
+ subscribe: MakeswiftApiClient.Store['subscribe'];
32
+ fetch: MakeswiftApiClient.HttpFetch;
33
+ constructor({ uri, fetch, preloadedState, }: {
34
+ uri: string;
35
+ fetch: MakeswiftApiClient.HttpFetch;
36
+ preloadedState: Partial<MakeswiftApiClient.State>;
37
+ });
38
+ readSwatch(swatchId: string): Swatch | null;
39
+ fetchSwatch(swatchId: string): Promise<Swatch | null>;
40
+ resolveSwatch(swatchId: string | undefined): FetchableValue<Swatch | null>;
41
+ readFile(fileId: string): File | null;
42
+ fetchFile(fileId: string): Promise<File | null>;
43
+ resolveFile(fileId: string | undefined): FetchableValue<File | null>;
44
+ readTypography(typographyId: string): Typography | null;
45
+ fetchTypography(typographyId: string): Promise<Typography | null>;
46
+ resolveTypography(typographyId: string | undefined): FetchableValue<Typography | null>;
47
+ readGlobalElement(globalElementId: string): GlobalElement | null;
48
+ fetchGlobalElement(globalElementId: string): Promise<GlobalElement | null>;
49
+ readLocalizedGlobalElement({ globalElementId, locale, }: {
50
+ globalElementId: string;
51
+ locale: string;
52
+ }): LocalizedGlobalElement | null;
53
+ fetchLocalizedGlobalElement({ globalElementId, locale, }: {
54
+ globalElementId: string;
55
+ locale: string;
56
+ }): Promise<LocalizedGlobalElement | null>;
57
+ readPagePathnameSlice({ pageId, locale, }: {
58
+ pageId: string;
59
+ locale: string | null;
60
+ }): PagePathnameSlice | null;
61
+ fetchPagePathnameSlice({ pageId, locale, }: {
62
+ pageId: string;
63
+ locale: string | null;
64
+ }): Promise<PagePathnameSlice | null>;
65
+ resolvePagePathnameSlice({ pageId, locale, }: {
66
+ pageId: string | undefined;
67
+ locale: string | null;
68
+ }): FetchableValue<PagePathnameSlice | null>;
69
+ resolveResource<R>(type: APIResourceType, { id, read, fetch, }: {
70
+ id: string | undefined;
71
+ read: (id: string) => R | null;
72
+ fetch: (id: string) => Promise<R | null>;
73
+ }): FetchableValue<R | null>;
74
+ readTable(tableId: string): Table | null;
75
+ fetchTable(tableId: string): Promise<Table | null>;
76
+ createTableRecord(tableId: string, columns: any): Promise<void>;
77
+ readSite(siteId: string): Site | null;
78
+ readPage(pageId: string): Page | null;
79
+ readSnippet(snippetId: string): Snippet | null;
80
+ }
81
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/client.ts"],"names":[],"mappings":"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"}