@builder.io/sdk-svelte 0.4.5 → 0.5.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 (382) hide show
  1. package/package/--package.json +40 -29
  2. package/package/CHANGELOG.md +4 -0
  3. package/package/blocks/BaseText.svelte +1 -1
  4. package/package/blocks/button/button.svelte +18 -33
  5. package/package/blocks/button/button.svelte.d.ts +3 -1
  6. package/package/blocks/button/component-info.d.ts +1 -1
  7. package/package/blocks/button/component-info.js +9 -13
  8. package/package/blocks/columns/columns.svelte +12 -18
  9. package/package/blocks/columns/columns.svelte.d.ts +11 -7
  10. package/package/blocks/columns/component-info.d.ts +1 -1
  11. package/package/blocks/columns/component-info.js +62 -83
  12. package/package/blocks/custom-code/component-info.d.ts +1 -1
  13. package/package/blocks/custom-code/component-info.js +7 -11
  14. package/package/blocks/embed/component-info.d.ts +1 -1
  15. package/package/blocks/embed/component-info.js +8 -15
  16. package/package/blocks/embed/helpers.js +1 -5
  17. package/package/blocks/form/component-info.d.ts +1 -1
  18. package/package/blocks/form/component-info.js +94 -129
  19. package/package/blocks/form/form.svelte +2 -289
  20. package/package/blocks/form/form.svelte.d.ts +1 -57
  21. package/package/blocks/fragment/component-info.d.ts +1 -1
  22. package/package/blocks/fragment/component-info.js +1 -1
  23. package/package/blocks/helpers.d.ts +13 -0
  24. package/package/blocks/helpers.js +40 -0
  25. package/package/blocks/image/component-info.d.ts +1 -1
  26. package/package/blocks/image/component-info.js +33 -63
  27. package/package/blocks/image/image.helpers.js +2 -11
  28. package/package/blocks/image/image.svelte.d.ts +0 -1
  29. package/package/blocks/img/component-info.d.ts +1 -1
  30. package/package/blocks/img/component-info.js +4 -6
  31. package/package/blocks/img/img.svelte +4 -29
  32. package/package/blocks/img/img.svelte.d.ts +3 -1
  33. package/package/blocks/input/component-info.d.ts +1 -1
  34. package/package/blocks/input/component-info.js +15 -40
  35. package/package/blocks/input/input.svelte +4 -29
  36. package/package/blocks/input/input.svelte.d.ts +3 -1
  37. package/package/blocks/raw-text/component-info.d.ts +1 -1
  38. package/package/blocks/raw-text/component-info.js +3 -5
  39. package/package/blocks/raw-text/raw-text.svelte +3 -5
  40. package/package/blocks/raw-text/raw-text.svelte.d.ts +1 -1
  41. package/package/blocks/section/component-info.d.ts +1 -1
  42. package/package/blocks/section/component-info.js +13 -18
  43. package/package/blocks/section/section.svelte +4 -29
  44. package/package/blocks/section/section.svelte.d.ts +3 -1
  45. package/package/blocks/select/component-info.d.ts +1 -1
  46. package/package/blocks/select/component-info.js +22 -34
  47. package/package/blocks/select/select.svelte +4 -29
  48. package/package/blocks/select/select.svelte.d.ts +3 -1
  49. package/package/blocks/submit-button/component-info.d.ts +1 -1
  50. package/package/blocks/submit-button/component-info.js +5 -7
  51. package/package/blocks/submit-button/submit-button.svelte +4 -29
  52. package/package/blocks/submit-button/submit-button.svelte.d.ts +3 -1
  53. package/package/blocks/symbol/component-info.d.ts +1 -1
  54. package/package/blocks/symbol/component-info.js +12 -17
  55. package/package/blocks/symbol/symbol.helpers.d.ts +14 -0
  56. package/package/blocks/symbol/symbol.helpers.js +31 -0
  57. package/package/blocks/symbol/symbol.svelte +37 -87
  58. package/package/blocks/symbol/symbol.svelte.d.ts +13 -7
  59. package/package/blocks/text/component-info.d.ts +1 -1
  60. package/package/blocks/text/component-info.js +6 -7
  61. package/package/blocks/text/text.svelte +1 -1
  62. package/package/blocks/textarea/component-info.d.ts +1 -1
  63. package/package/blocks/textarea/component-info.js +13 -19
  64. package/package/blocks/textarea/textarea.svelte +4 -29
  65. package/package/blocks/textarea/textarea.svelte.d.ts +3 -1
  66. package/package/blocks/video/component-info.d.ts +1 -1
  67. package/package/blocks/video/component-info.js +35 -55
  68. package/package/blocks/video/video.svelte +4 -30
  69. package/package/blocks/video/video.svelte.d.ts +2 -0
  70. package/package/components/block/block.helpers.d.ts +13 -0
  71. package/package/components/{render-block/render-block.helpers.js → block/block.helpers.js} +12 -29
  72. package/package/components/block/block.svelte +135 -0
  73. package/package/components/block/block.svelte.d.ts +26 -0
  74. package/package/components/{render-block → block/components}/block-styles.svelte +20 -22
  75. package/package/components/{render-block → block/components}/block-styles.svelte.d.ts +2 -2
  76. package/package/components/block/components/block-wrapper.svelte +53 -0
  77. package/package/components/block/components/block-wrapper.svelte.d.ts +33 -0
  78. package/package/components/block/components/component-ref/component-ref.helpers.d.ts +36 -0
  79. package/package/components/block/components/component-ref/component-ref.helpers.js +22 -0
  80. package/package/components/block/components/component-ref/component-ref.svelte +37 -0
  81. package/package/components/block/components/component-ref/component-ref.svelte.d.ts +24 -0
  82. package/package/components/block/components/interactive-element.svelte +29 -0
  83. package/package/components/block/components/interactive-element.svelte.d.ts +31 -0
  84. package/package/components/{render-block/render-repeated-block.svelte → block/components/repeated-block.svelte} +4 -3
  85. package/package/components/block/components/repeated-block.svelte.d.ts +25 -0
  86. package/package/components/{render-blocks.svelte → blocks/blocks-wrapper.svelte} +3 -20
  87. package/package/components/blocks/blocks-wrapper.svelte.d.ts +29 -0
  88. package/package/components/blocks/blocks.svelte +26 -0
  89. package/package/components/blocks/blocks.svelte.d.ts +28 -0
  90. package/package/components/{render-content/render-content.svelte → content/components/enable-editor.svelte} +47 -166
  91. package/package/components/content/components/enable-editor.svelte.d.ts +36 -0
  92. package/package/components/{render-content/components/render-styles.helpers.d.ts → content/components/styles.helpers.d.ts} +1 -1
  93. package/package/components/{render-content/components/render-styles.helpers.js → content/components/styles.helpers.js} +3 -4
  94. package/package/components/{render-content/components/render-styles.svelte → content/components/styles.svelte} +2 -2
  95. package/package/components/{render-content/components/render-styles.svelte.d.ts → content/components/styles.svelte.d.ts} +5 -5
  96. package/package/components/content/content.helpers.d.ts +7 -0
  97. package/package/components/content/content.helpers.js +30 -0
  98. package/package/components/content/content.svelte +113 -0
  99. package/package/components/content/content.svelte.d.ts +30 -0
  100. package/package/components/{render-content/render-content.types.d.ts → content/content.types.d.ts} +4 -4
  101. package/package/components/content/index.d.ts +1 -0
  102. package/package/components/content/index.js +1 -0
  103. package/package/components/{render-content-variants/render-content-variants.svelte → content-variants/content-variants.svelte} +20 -19
  104. package/package/components/{render-content-variants/render-content-variants.svelte.d.ts → content-variants/content-variants.svelte.d.ts} +6 -6
  105. package/package/components/{render-content-variants/render-content-variants.types.d.ts → content-variants/content-variants.types.d.ts} +5 -5
  106. package/package/components/{render-content-variants → content-variants}/helpers.d.ts +7 -7
  107. package/package/components/{render-content-variants → content-variants}/helpers.js +13 -22
  108. package/package/constants/builder-registered-components.js +34 -13
  109. package/package/constants/device-sizes.js +9 -8
  110. package/package/constants/sdk-version.d.ts +1 -1
  111. package/package/constants/sdk-version.js +1 -1
  112. package/package/constants/target.d.ts +1 -1
  113. package/package/context/builder.context.d.ts +1 -1
  114. package/package/context/builder.context.js +1 -1
  115. package/package/context/types.d.ts +1 -1
  116. package/package/functions/apply-patch-with-mutation.d.ts +10 -0
  117. package/package/functions/apply-patch-with-mutation.js +54 -0
  118. package/package/functions/evaluate/acorn.d.ts +0 -0
  119. package/package/functions/evaluate/acorn.js +2433 -0
  120. package/package/functions/{evaluate.d.ts → evaluate/evaluate.d.ts} +5 -2
  121. package/package/functions/{evaluate.js → evaluate/evaluate.js} +34 -13
  122. package/package/functions/evaluate/index.d.ts +1 -0
  123. package/package/functions/evaluate/index.js +1 -0
  124. package/package/functions/evaluate/interpreter.d.ts +2 -0
  125. package/package/functions/evaluate/interpreter.js +3853 -0
  126. package/package/functions/evaluate/non-node-runtime.d.ts +2 -0
  127. package/package/functions/evaluate/non-node-runtime.js +84 -0
  128. package/package/functions/evaluate/types.d.ts +10 -0
  129. package/package/functions/extract-text-styles.js +2 -14
  130. package/package/functions/get-block-actions-handler.js +3 -3
  131. package/package/functions/get-block-actions.d.ts +1 -0
  132. package/package/functions/get-block-actions.js +14 -1
  133. package/package/functions/get-block-component-options.js +1 -1
  134. package/package/functions/get-block-properties.d.ts +5 -1
  135. package/package/functions/get-block-properties.js +15 -9
  136. package/package/functions/get-builder-search-params/index.js +3 -7
  137. package/package/functions/get-content/generate-content-url.js +7 -5
  138. package/package/functions/get-content/index.d.ts +2 -6
  139. package/package/functions/get-content/index.js +26 -6
  140. package/package/functions/get-processed-block.d.ts +1 -1
  141. package/package/functions/get-processed-block.js +11 -7
  142. package/package/functions/get-react-native-block-styles.d.ts +1 -1
  143. package/package/functions/get-react-native-block-styles.js +2 -2
  144. package/package/functions/if-target.d.ts +1 -1
  145. package/package/functions/if-target.js +1 -1
  146. package/package/functions/is-editing.js +1 -3
  147. package/package/functions/is-non-node-server.d.ts +4 -0
  148. package/package/functions/is-non-node-server.js +8 -0
  149. package/package/functions/on-change.js +1 -1
  150. package/package/functions/register-component.d.ts +2 -1
  151. package/package/functions/register-component.js +20 -8
  152. package/package/functions/register.js +2 -2
  153. package/package/functions/sanitize-react-native-block-styles.js +13 -5
  154. package/package/functions/set-editor-settings.js +1 -1
  155. package/package/functions/set.js +2 -9
  156. package/package/functions/track/helpers.js +6 -11
  157. package/package/functions/track/index.js +26 -14
  158. package/package/functions/track/interaction.js +15 -16
  159. package/package/helpers/ab-tests.d.ts +2 -2
  160. package/package/helpers/ab-tests.js +42 -30
  161. package/package/helpers/canTrack.js +1 -1
  162. package/package/helpers/cookie.d.ts +2 -2
  163. package/package/helpers/cookie.js +13 -26
  164. package/package/helpers/css.d.ts +1 -1
  165. package/package/helpers/css.js +1 -1
  166. package/package/helpers/flatten.js +8 -8
  167. package/package/helpers/localStorage.d.ts +2 -2
  168. package/package/helpers/localStorage.js +2 -2
  169. package/package/helpers/logger.js +1 -1
  170. package/package/helpers/preview-lru-cache/get.d.ts +1 -0
  171. package/package/helpers/preview-lru-cache/get.js +7 -0
  172. package/package/helpers/preview-lru-cache/helpers.d.ts +1 -0
  173. package/package/helpers/preview-lru-cache/helpers.js +9 -0
  174. package/package/helpers/preview-lru-cache/init.d.ts +6 -0
  175. package/package/helpers/preview-lru-cache/init.js +15 -0
  176. package/package/helpers/preview-lru-cache/set.d.ts +7 -0
  177. package/package/helpers/preview-lru-cache/set.js +9 -0
  178. package/package/helpers/preview-lru-cache/types.d.ts +12 -0
  179. package/package/helpers/preview-lru-cache/types.js +6 -0
  180. package/package/helpers/sessionId.d.ts +2 -2
  181. package/package/helpers/sessionId.js +11 -4
  182. package/package/helpers/uuid.js +1 -1
  183. package/package/helpers/visitorId.d.ts +1 -1
  184. package/package/helpers/visitorId.js +7 -4
  185. package/package/index-helpers/blocks-exports.d.ts +2 -2
  186. package/package/index-helpers/blocks-exports.js +2 -2
  187. package/package/index.d.ts +2 -2
  188. package/package/index.js +1 -1
  189. package/package/scripts/init-editing.js +65 -57
  190. package/package/types/builder-props.d.ts +10 -0
  191. package/package/types/components.d.ts +8 -2
  192. package/package/types/enforced-partials.d.ts +1 -1
  193. package/package/types/targets.d.ts +1 -3
  194. package/package/types/typescript.d.ts +3 -0
  195. package/package.json +2 -2
  196. package/src/blocks/BaseText.svelte +1 -1
  197. package/src/blocks/button/button.svelte +21 -34
  198. package/src/blocks/button/component-info.ts +20 -27
  199. package/src/blocks/columns/columns.svelte +26 -30
  200. package/src/blocks/columns/component-info.ts +205 -240
  201. package/src/blocks/custom-code/component-info.ts +20 -27
  202. package/src/blocks/embed/component-info.ts +34 -51
  203. package/src/blocks/embed/helpers.ts +2 -8
  204. package/src/blocks/form/component-info.ts +204 -253
  205. package/src/blocks/form/form.svelte +1 -368
  206. package/src/blocks/fragment/component-info.ts +3 -5
  207. package/src/blocks/helpers.ts +43 -0
  208. package/src/blocks/image/component-info.ts +113 -161
  209. package/src/blocks/image/image.helpers.ts +5 -33
  210. package/src/blocks/img/component-info.ts +11 -16
  211. package/src/blocks/img/img.svelte +7 -31
  212. package/src/blocks/input/component-info.ts +35 -66
  213. package/src/blocks/input/input.svelte +7 -31
  214. package/src/blocks/raw-text/component-info.ts +8 -12
  215. package/src/blocks/raw-text/raw-text.svelte +2 -5
  216. package/src/blocks/section/component-info.ts +28 -37
  217. package/src/blocks/section/section.svelte +7 -30
  218. package/src/blocks/select/component-info.ts +38 -55
  219. package/src/blocks/select/select.svelte +7 -31
  220. package/src/blocks/submit-button/component-info.ts +10 -15
  221. package/src/blocks/submit-button/submit-button.svelte +7 -30
  222. package/src/blocks/symbol/component-info.ts +31 -39
  223. package/src/blocks/symbol/symbol.helpers.ts +47 -0
  224. package/src/blocks/symbol/symbol.svelte +50 -97
  225. package/src/blocks/text/component-info.ts +14 -18
  226. package/src/blocks/text/text.svelte +1 -1
  227. package/src/blocks/textarea/component-info.ts +26 -36
  228. package/src/blocks/textarea/textarea.svelte +7 -30
  229. package/src/blocks/video/component-info.ts +77 -103
  230. package/src/blocks/video/video.svelte +4 -31
  231. package/src/components/{render-block/render-block.helpers.ts → block/block.helpers.ts} +22 -49
  232. package/src/components/block/block.svelte +158 -0
  233. package/src/components/{render-block → block/components}/block-styles.svelte +23 -24
  234. package/src/components/block/components/block-wrapper.svelte +70 -0
  235. package/src/components/block/components/component-ref/component-ref.helpers.ts +53 -0
  236. package/src/components/block/components/component-ref/component-ref.svelte +41 -0
  237. package/src/components/block/components/interactive-element.svelte +42 -0
  238. package/src/components/block/components/repeated-block.svelte +30 -0
  239. package/src/components/{render-block → block}/types.ts +1 -2
  240. package/src/components/{render-blocks.svelte → blocks/blocks-wrapper.svelte} +14 -32
  241. package/src/components/blocks/blocks.svelte +39 -0
  242. package/src/components/{render-content/render-content.svelte → content/components/enable-editor.svelte} +71 -199
  243. package/src/components/{render-content/components/render-styles.helpers.ts → content/components/styles.helpers.ts} +9 -11
  244. package/src/components/{render-content/components/render-styles.svelte → content/components/styles.svelte} +3 -3
  245. package/src/components/content/content.helpers.ts +42 -0
  246. package/src/components/content/content.svelte +138 -0
  247. package/src/components/{render-content/render-content.types.ts → content/content.types.ts} +5 -9
  248. package/src/components/content/index.ts +1 -0
  249. package/src/components/{render-content → content}/wrap-component-ref.ts +1 -1
  250. package/src/components/{render-content-variants/render-content-variants.svelte → content-variants/content-variants.svelte} +26 -24
  251. package/src/components/{render-content-variants/render-content-variants.types.ts → content-variants/content-variants.types.ts} +9 -11
  252. package/src/components/{render-content-variants → content-variants}/helpers.ts +27 -73
  253. package/src/constants/builder-registered-components.ts +34 -14
  254. package/src/constants/device-sizes.ts +16 -22
  255. package/src/constants/sdk-version.ts +1 -1
  256. package/src/constants/target.ts +3 -1
  257. package/src/context/builder.context.ts +1 -1
  258. package/src/context/types.ts +2 -7
  259. package/src/functions/apply-patch-with-mutation.ts +61 -0
  260. package/src/functions/camel-to-kebab-case.ts +1 -2
  261. package/src/functions/evaluate/acorn.ts +2501 -0
  262. package/src/functions/evaluate/evaluate.ts +90 -0
  263. package/src/functions/evaluate/index.ts +1 -0
  264. package/src/functions/evaluate/interpreter.ts +3887 -0
  265. package/src/functions/evaluate/non-node-runtime.ts +94 -0
  266. package/src/functions/evaluate/types.ts +10 -0
  267. package/src/functions/extract-text-styles.ts +3 -18
  268. package/src/functions/fast-clone.ts +1 -2
  269. package/src/functions/get-block-actions-handler.ts +11 -20
  270. package/src/functions/get-block-actions.ts +22 -14
  271. package/src/functions/get-block-component-options.ts +2 -3
  272. package/src/functions/get-block-properties.ts +24 -17
  273. package/src/functions/get-builder-search-params/index.ts +5 -21
  274. package/src/functions/get-content/generate-content-url.ts +10 -25
  275. package/src/functions/get-content/index.ts +34 -37
  276. package/src/functions/get-content/types.ts +4 -2
  277. package/src/functions/get-fetch.ts +3 -10
  278. package/src/functions/get-global-this.ts +1 -2
  279. package/src/functions/get-processed-block.ts +14 -21
  280. package/src/functions/get-react-native-block-styles.ts +6 -12
  281. package/src/functions/if-target.ts +2 -3
  282. package/src/functions/is-browser.ts +1 -1
  283. package/src/functions/is-editing.ts +2 -7
  284. package/src/functions/is-iframe.ts +1 -2
  285. package/src/functions/is-non-node-server.ts +9 -0
  286. package/src/functions/is-previewing.ts +1 -4
  287. package/src/functions/on-change.ts +2 -2
  288. package/src/functions/register-component.ts +24 -26
  289. package/src/functions/register.ts +6 -8
  290. package/src/functions/sanitize-react-native-block-styles.ts +17 -24
  291. package/src/functions/set-editor-settings.ts +5 -6
  292. package/src/functions/set.ts +3 -15
  293. package/src/functions/track/helpers.ts +8 -24
  294. package/src/functions/track/index.ts +37 -42
  295. package/src/functions/track/interaction.ts +21 -38
  296. package/src/functions/transform-block-properties.ts +1 -1
  297. package/src/functions/transform-block.ts +1 -1
  298. package/src/helpers/ab-tests.ts +64 -79
  299. package/src/helpers/canTrack.ts +2 -4
  300. package/src/helpers/cookie.ts +15 -46
  301. package/src/helpers/css.ts +4 -13
  302. package/src/helpers/flatten.ts +11 -16
  303. package/src/helpers/localStorage.ts +4 -8
  304. package/src/helpers/logger.ts +2 -2
  305. package/src/helpers/nullable.ts +1 -3
  306. package/src/helpers/preview-lru-cache/get.ts +8 -0
  307. package/src/helpers/preview-lru-cache/helpers.ts +9 -0
  308. package/src/helpers/preview-lru-cache/init.ts +17 -0
  309. package/src/helpers/preview-lru-cache/set.ts +18 -0
  310. package/src/helpers/preview-lru-cache/types.ts +12 -0
  311. package/src/helpers/sessionId.ts +12 -13
  312. package/src/helpers/time.ts +1 -3
  313. package/src/helpers/url.ts +1 -2
  314. package/src/helpers/uuid.ts +3 -3
  315. package/src/helpers/visitorId.ts +14 -17
  316. package/src/index-helpers/blocks-exports.ts +2 -2
  317. package/src/index-helpers/top-of-file.ts +1 -1
  318. package/src/index.ts +2 -13
  319. package/src/scripts/init-editing.ts +85 -98
  320. package/src/types/api-version.ts +1 -1
  321. package/src/types/builder-block.ts +1 -3
  322. package/src/types/builder-content.ts +7 -4
  323. package/src/types/builder-props.ts +10 -0
  324. package/src/types/can-track.ts +1 -1
  325. package/src/types/components.ts +17 -13
  326. package/src/types/deep-partial.ts +1 -7
  327. package/src/types/element.ts +1 -3
  328. package/src/types/enforced-partials.ts +6 -20
  329. package/src/types/input.ts +6 -9
  330. package/src/types/targets.ts +1 -6
  331. package/src/types/typescript.ts +9 -9
  332. package/package/blocks/util.d.ts +0 -4
  333. package/package/blocks/util.js +0 -13
  334. package/package/components/render-block/render-block.helpers.d.ts +0 -12
  335. package/package/components/render-block/render-block.svelte +0 -152
  336. package/package/components/render-block/render-block.svelte.d.ts +0 -24
  337. package/package/components/render-block/render-component.svelte +0 -21
  338. package/package/components/render-block/render-component.svelte.d.ts +0 -34
  339. package/package/components/render-block/render-repeated-block.svelte.d.ts +0 -23
  340. package/package/components/render-blocks.svelte.d.ts +0 -26
  341. package/package/components/render-content/builder-editing.svelte +0 -4
  342. package/package/components/render-content/builder-editing.svelte.d.ts +0 -14
  343. package/package/components/render-content/index.d.ts +0 -1
  344. package/package/components/render-content/index.js +0 -1
  345. package/package/components/render-content/render-content.helpers.d.ts +0 -7
  346. package/package/components/render-content/render-content.helpers.js +0 -30
  347. package/package/components/render-content/render-content.svelte.d.ts +0 -30
  348. package/package/functions/evaluate.test.js +0 -17
  349. package/package/functions/get-builder-search-params/fn.test.js +0 -13
  350. package/package/functions/get-content/generate-content-url.test.d.ts +0 -1
  351. package/package/functions/get-content/generate-content-url.test.js +0 -97
  352. package/package/functions/get-processed-block.test.d.ts +0 -1
  353. package/package/functions/get-processed-block.test.js +0 -33
  354. package/package/functions/on-change.test.d.ts +0 -1
  355. package/package/functions/on-change.test.js +0 -20
  356. package/package/functions/set.test.d.ts +0 -1
  357. package/package/functions/set.test.js +0 -16
  358. package/package/helpers/url.test.d.ts +0 -1
  359. package/package/helpers/url.test.js +0 -21
  360. package/src/blocks/util.ts +0 -18
  361. package/src/components/render-block/render-block.svelte +0 -173
  362. package/src/components/render-block/render-component.svelte +0 -40
  363. package/src/components/render-block/render-repeated-block.svelte +0 -25
  364. package/src/components/render-content/builder-editing.svelte +0 -4
  365. package/src/components/render-content/index.ts +0 -1
  366. package/src/components/render-content/render-content.helpers.ts +0 -48
  367. package/src/functions/evaluate.test.ts +0 -21
  368. package/src/functions/evaluate.ts +0 -99
  369. package/src/functions/get-builder-search-params/fn.test.ts +0 -19
  370. package/src/functions/get-content/generate-content-url.test.ts +0 -112
  371. package/src/functions/get-processed-block.test.ts +0 -35
  372. package/src/functions/on-change.test.ts +0 -23
  373. package/src/functions/set.test.ts +0 -19
  374. package/src/helpers/url.test.ts +0 -23
  375. /package/package/components/{render-block → block}/types.d.ts +0 -0
  376. /package/package/components/{render-block → block}/types.js +0 -0
  377. /package/package/components/{render-content/render-content.types.js → content/content.types.js} +0 -0
  378. /package/package/components/{render-content → content}/wrap-component-ref.d.ts +0 -0
  379. /package/package/components/{render-content → content}/wrap-component-ref.js +0 -0
  380. /package/package/components/{render-content-variants/render-content-variants.types.js → content-variants/content-variants.types.js} +0 -0
  381. /package/package/functions/{evaluate.test.d.ts → evaluate/types.js} +0 -0
  382. /package/package/{functions/get-builder-search-params/fn.test.d.ts → types/builder-props.js} +0 -0
@@ -1,11 +1,7 @@
1
1
  function round(num: number) {
2
2
  return Math.round(num * 1000) / 1000;
3
3
  }
4
- const findParentElement = (
5
- target: HTMLElement,
6
- callback: (element: HTMLElement) => boolean,
7
- checkElement = true
8
- ): HTMLElement | null => {
4
+ const findParentElement = (target: HTMLElement, callback: (element: HTMLElement) => boolean, checkElement = true): HTMLElement | null => {
9
5
  if (!(target instanceof HTMLElement)) {
10
6
  return null;
11
7
  }
@@ -14,30 +10,24 @@ const findParentElement = (
14
10
  if (!parent) {
15
11
  return null;
16
12
  }
17
-
18
13
  const matches = callback(parent);
19
14
  if (matches) {
20
15
  return parent;
21
16
  }
22
- } while ((parent = parent.parentElement));
23
-
17
+ } while (parent = parent.parentElement);
24
18
  return null;
25
19
  };
26
-
27
- const findBuilderParent = (target: HTMLElement) =>
28
- findParentElement(target, (el) => {
29
- const id = el.getAttribute('builder-id') || el.id;
30
- return Boolean(id?.indexOf('builder-') === 0);
31
- });
32
-
20
+ const findBuilderParent = (target: HTMLElement) => findParentElement(target, el => {
21
+ const id = el.getAttribute('builder-id') || el.id;
22
+ return Boolean(id?.indexOf('builder-') === 0);
23
+ });
33
24
  type Offset = {
34
25
  x: number;
35
26
  y: number;
36
27
  };
37
-
38
28
  const computeOffset = ({
39
29
  event,
40
- target,
30
+ target
41
31
  }: {
42
32
  event: MouseEvent;
43
33
  target: HTMLElement;
@@ -45,36 +35,29 @@ const computeOffset = ({
45
35
  const targetRect = target.getBoundingClientRect();
46
36
  const xOffset = event.clientX - targetRect.left;
47
37
  const yOffset = event.clientY - targetRect.top;
48
-
49
38
  const xRatio = round(xOffset / targetRect.width);
50
39
  const yRatio = round(yOffset / targetRect.height);
51
-
52
40
  return {
53
41
  x: xRatio,
54
- y: yRatio,
42
+ y: yRatio
55
43
  };
56
44
  };
57
-
58
45
  export const getInteractionPropertiesForEvent = (event: MouseEvent) => {
59
- const target = event.target as HTMLElement | null;
46
+ const target = (event.target as HTMLElement | null);
60
47
  const targetBuilderElement = target && findBuilderParent(target);
61
- const builderId =
62
- targetBuilderElement?.getAttribute('builder-id') ||
63
- targetBuilderElement?.id;
64
-
48
+ const builderId = targetBuilderElement?.getAttribute('builder-id') || targetBuilderElement?.id;
65
49
  return {
66
50
  targetBuilderElement: builderId || undefined,
67
51
  metadata: {
68
- targetOffset: target ? computeOffset({ event, target }) : undefined,
69
- builderTargetOffset: targetBuilderElement
70
- ? computeOffset({ event, target: targetBuilderElement })
71
- : undefined,
72
- builderElementIndex:
73
- targetBuilderElement && builderId
74
- ? ([] as Element[]).slice
75
- .call(document.getElementsByClassName(builderId))
76
- .indexOf(targetBuilderElement)
77
- : undefined,
78
- },
52
+ targetOffset: target ? computeOffset({
53
+ event,
54
+ target
55
+ }) : undefined,
56
+ builderTargetOffset: targetBuilderElement ? computeOffset({
57
+ event,
58
+ target: targetBuilderElement
59
+ }) : undefined,
60
+ builderElementIndex: targetBuilderElement && builderId ? ([] as Element[]).slice.call(document.getElementsByClassName(builderId)).indexOf(targetBuilderElement) : undefined
61
+ }
79
62
  };
80
- };
63
+ }
@@ -1,3 +1,3 @@
1
1
  export function transformBlockProperties<T>(properties: T) {
2
2
  return properties;
3
- }
3
+ }
@@ -3,4 +3,4 @@ import type { BuilderBlock } from '../types/builder-block.js';
3
3
  // Noope way for targets to make modifications to the block object if/as needed
4
4
  export function transformBlock(block: BuilderBlock): BuilderBlock {
5
5
  return block;
6
- }
6
+ }
@@ -1,50 +1,48 @@
1
1
  import type { CanTrack } from '../types/can-track.js';
2
2
  import { getCookie, getCookieSync, setCookie } from './cookie.js';
3
- import type {
4
- BuilderContent,
5
- BuilderContentVariation,
6
- } from '../types/builder-content.js';
3
+ import type { BuilderContent, BuilderContentVariation } from '../types/builder-content.js';
7
4
  import type { Nullable, Overwrite } from '../types/typescript.js';
8
5
  import { checkIsDefined } from '../helpers/nullable.js';
9
6
  import { logger } from './logger.js';
10
7
  import { TARGET } from '../constants/target.js';
11
-
12
8
  const BUILDER_STORE_PREFIX = 'builder.tests';
13
-
14
9
  const getContentTestKey = (id: string) => `${BUILDER_STORE_PREFIX}.${id}`;
15
-
16
- const getContentVariationCookie = ({ contentId }: { contentId: string }) =>
17
- getCookie({ name: getContentTestKey(contentId), canTrack: true });
18
-
19
- const getContentVariationCookieSync = ({ contentId }: { contentId: string }) =>
20
- getCookieSync({ name: getContentTestKey(contentId), canTrack: true });
21
-
10
+ const getContentVariationCookie = ({
11
+ contentId
12
+ }: {
13
+ contentId: string;
14
+ }) => getCookie({
15
+ name: getContentTestKey(contentId),
16
+ canTrack: true
17
+ });
18
+ const getContentVariationCookieSync = ({
19
+ contentId
20
+ }: {
21
+ contentId: string;
22
+ }) => getCookieSync({
23
+ name: getContentTestKey(contentId),
24
+ canTrack: true
25
+ });
22
26
  const setContentVariationCookie = ({
23
27
  contentId,
24
- value,
28
+ value
25
29
  }: {
26
30
  contentId: string;
27
31
  value: string;
28
- }) => setCookie({ name: getContentTestKey(contentId), value, canTrack: true });
29
-
30
- type BuilderContentWithVariations = Overwrite<
31
- BuilderContent,
32
- Required<Pick<BuilderContent, 'variations' | 'id'>>
33
- >;
34
-
35
- const checkIsBuilderContentWithVariations = (
36
- item: BuilderContent
37
- ): item is BuilderContentWithVariations =>
38
- checkIsDefined(item.id) &&
39
- checkIsDefined(item.variations) &&
40
- Object.keys(item.variations).length > 0;
32
+ }) => setCookie({
33
+ name: getContentTestKey(contentId),
34
+ value,
35
+ canTrack: true
36
+ });
37
+ type BuilderContentWithVariations = Overwrite<BuilderContent, Required<Pick<BuilderContent, 'variations' | 'id'>>>;
38
+ const checkIsBuilderContentWithVariations = (item: BuilderContent): item is BuilderContentWithVariations => checkIsDefined(item.id) && checkIsDefined(item.variations) && Object.keys(item.variations).length > 0;
41
39
 
42
40
  /**
43
41
  * Randomly assign a variation to a user
44
42
  */
45
43
  const getRandomVariationId = ({
46
44
  id,
47
- variations,
45
+ variations
48
46
  }: BuilderContentWithVariations) => {
49
47
  let n = 0;
50
48
  const random = Math.random();
@@ -54,7 +52,6 @@ const getRandomVariationId = ({
54
52
  for (const id in variations) {
55
53
  const testRatio = variations[id]?.testRatio;
56
54
  n += testRatio!;
57
-
58
55
  if (random < n) {
59
56
  return id;
60
57
  }
@@ -64,7 +61,6 @@ const getRandomVariationId = ({
64
61
  // if we arrive here, then it means that the random number fits in the default variation bucket.
65
62
  return id;
66
63
  };
67
-
68
64
  const getAndSetVariantId = (args: BuilderContentWithVariations) => {
69
65
  // if variation not found in storage, assign a random variation to this user
70
66
  const randomVariationId = getRandomVariationId(args);
@@ -72,110 +68,99 @@ const getAndSetVariantId = (args: BuilderContentWithVariations) => {
72
68
  // store variation in cookies/storage
73
69
  setContentVariationCookie({
74
70
  contentId: args.id,
75
- value: randomVariationId,
76
- }).catch((err) => {
71
+ value: randomVariationId
72
+ }).catch(err => {
77
73
  logger.error('could not store A/B test variation: ', err);
78
74
  });
79
-
80
75
  return randomVariationId;
81
76
  };
82
-
83
77
  type TestFields = {
84
78
  data?: BuilderContentVariation['data'];
85
79
  testVariationId?: string;
86
80
  testVariationName: string;
87
81
  };
88
-
89
82
  const getTestFields = ({
90
83
  item,
91
- testGroupId,
84
+ testGroupId
92
85
  }: {
93
86
  item: BuilderContentWithVariations;
94
87
  testGroupId: string;
95
88
  }): TestFields => {
96
89
  const variationValue = item.variations[testGroupId];
97
- if (
98
- testGroupId === item.id ||
99
- // handle edge-case where `testGroupId` points to non-existing variation
100
- !variationValue
101
- ) {
90
+ if (testGroupId === item.id ||
91
+ // handle edge-case where `testGroupId` points to non-existing variation
92
+ !variationValue) {
102
93
  return {
103
94
  testVariationId: item.id,
104
- testVariationName: 'Default',
95
+ testVariationName: 'Default'
105
96
  };
106
97
  } else {
107
98
  return {
108
99
  data: variationValue.data,
109
100
  testVariationId: variationValue.id,
110
- testVariationName:
111
- variationValue.name || (variationValue.id === item.id ? 'Default' : ''),
101
+ testVariationName: variationValue.name || (variationValue.id === item.id ? 'Default' : '')
112
102
  };
113
103
  }
114
104
  };
115
-
116
105
  export const handleABTestingSync = ({
117
106
  item,
118
- canTrack,
119
- }: { item: Nullable<BuilderContent> } & CanTrack): Nullable<BuilderContent> => {
107
+ canTrack
108
+ }: {
109
+ item: Nullable<BuilderContent>;
110
+ } & CanTrack): Nullable<BuilderContent> => {
120
111
  /**
121
112
  * We cannot SSR in React-Native.
122
113
  */
123
114
  if (TARGET === 'reactNative') return item;
124
-
125
115
  if (!canTrack) {
126
116
  return item;
127
117
  }
128
-
129
118
  if (!item) {
130
119
  return undefined;
131
120
  }
132
-
133
121
  if (!checkIsBuilderContentWithVariations(item)) {
134
122
  return item;
135
123
  }
136
-
137
- const testGroupId =
138
- getContentVariationCookieSync({
139
- contentId: item.id,
140
- }) ||
141
- getAndSetVariantId({
142
- variations: item.variations,
143
- id: item.id,
144
- });
145
-
146
- const variationValue = getTestFields({ item, testGroupId });
124
+ const testGroupId = getContentVariationCookieSync({
125
+ contentId: item.id
126
+ }) || getAndSetVariantId({
127
+ variations: item.variations,
128
+ id: item.id
129
+ });
130
+ const variationValue = getTestFields({
131
+ item,
132
+ testGroupId
133
+ });
147
134
  return {
148
135
  ...item,
149
- ...variationValue,
136
+ ...variationValue
150
137
  };
151
138
  };
152
-
153
139
  export const handleABTesting = async ({
154
140
  item,
155
- canTrack,
156
- }: { item: BuilderContent } & CanTrack): Promise<BuilderContent> => {
141
+ canTrack
142
+ }: {
143
+ item: BuilderContent;
144
+ } & CanTrack): Promise<BuilderContent> => {
157
145
  if (!canTrack) {
158
146
  return item;
159
147
  }
160
-
161
148
  if (!checkIsBuilderContentWithVariations(item)) {
162
149
  return item;
163
150
  }
164
-
165
151
  const cookieValue = await getContentVariationCookie({
166
- contentId: item.id,
152
+ contentId: item.id
153
+ });
154
+ const testGroupId = cookieValue || getAndSetVariantId({
155
+ variations: item.variations,
156
+ id: item.id
157
+ });
158
+ const variationValue = getTestFields({
159
+ item,
160
+ testGroupId
167
161
  });
168
-
169
- const testGroupId =
170
- cookieValue ||
171
- getAndSetVariantId({
172
- variations: item.variations,
173
- id: item.id,
174
- });
175
-
176
- const variationValue = getTestFields({ item, testGroupId });
177
162
  return {
178
163
  ...item,
179
- ...variationValue,
164
+ ...variationValue
180
165
  };
181
- };
166
+ }
@@ -1,4 +1,2 @@
1
- import { checkIsDefined } from './nullable';
2
-
3
- export const getDefaultCanTrack = (canTrack?: boolean) =>
4
- checkIsDefined(canTrack) ? canTrack : true;
1
+ import { checkIsDefined } from './nullable.js';
2
+ export const getDefaultCanTrack = (canTrack?: boolean) => checkIsDefined(canTrack) ? canTrack : true
@@ -3,14 +3,12 @@ import type { CanTrack } from '../types/can-track.js';
3
3
  import { logger } from './logger.js';
4
4
  import { checkIsDefined } from './nullable.js';
5
5
  import { getTopLevelDomain } from './url.js';
6
-
7
6
  type GetCookieArgs = {
8
7
  name: string;
9
8
  } & CanTrack;
10
-
11
9
  export const getCookieSync = ({
12
10
  name,
13
- canTrack,
11
+ canTrack
14
12
  }: GetCookieArgs): string | undefined => {
15
13
  try {
16
14
  if (!canTrack) {
@@ -21,10 +19,7 @@ export const getCookieSync = ({
21
19
  * Extracted from MDN docs
22
20
  * https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie#example_2_get_a_sample_cookie_named_test2
23
21
  */
24
- return document.cookie
25
- .split('; ')
26
- .find((row) => row.startsWith(`${name}=`))
27
- ?.split('=')[1];
22
+ return document.cookie.split('; ').find(row => row.startsWith(`${name}=`))?.split('=')[1];
28
23
  } catch (err: any) {
29
24
  logger.warn('[COOKIE] GET error: ', err?.message || err);
30
25
  return undefined;
@@ -35,55 +30,25 @@ export const getCookieSync = ({
35
30
  * The sync version is only safe to use in code blocks that `react-native` is guaranteed not to not run.
36
31
  */
37
32
  export const getCookie = async (args: GetCookieArgs) => getCookieSync(args);
38
-
39
- type CookieConfiguration = Array<
40
- | ['expires', string]
41
- | ['path', '/']
42
- | ['domain', string]
43
- | ['secure', '']
44
- | ['SameSite', 'None']
45
- | [string, string]
46
- | []
47
- >;
48
-
49
- const stringifyCookie = (cookie: CookieConfiguration): string =>
50
- cookie
51
- .map(([key, value]) => (value ? `${key}=${value}` : key))
52
- .filter(checkIsDefined)
53
- .join('; ');
54
-
55
- const SECURE_CONFIG: CookieConfiguration = [
56
- ['secure', ''],
57
- ['SameSite', 'None'],
58
- ];
59
-
33
+ type CookieConfiguration = Array<['expires', string] | ['path', '/'] | ['domain', string] | ['secure', ''] | ['SameSite', 'None'] | [string, string] | []>;
34
+ const stringifyCookie = (cookie: CookieConfiguration): string => cookie.map(([key, value]) => value ? `${key}=${value}` : key).filter(checkIsDefined).join('; ');
35
+ const SECURE_CONFIG: CookieConfiguration = [['secure', ''], ['SameSite', 'None']];
60
36
  const createCookieString = ({
61
37
  name,
62
38
  value,
63
- expires,
39
+ expires
64
40
  }: {
65
41
  name: string;
66
42
  value: string;
67
43
  expires?: Date;
68
44
  }) => {
69
45
  const secure = isBrowser() ? location.protocol === 'https:' : true;
70
-
71
46
  const secureObj: CookieConfiguration = secure ? SECURE_CONFIG : [[]];
72
47
 
73
48
  // TODO: need to know if secure server side
74
- const expiresObj: CookieConfiguration = expires
75
- ? [['expires', expires.toUTCString()]]
76
- : [[]];
77
-
78
- const cookieValue: CookieConfiguration = [
79
- [name, value],
80
- ...expiresObj,
81
- ['path', '/'],
82
- ['domain', getTopLevelDomain(window.location.hostname)],
83
- ...secureObj,
84
- ];
49
+ const expiresObj: CookieConfiguration = expires ? [['expires', expires.toUTCString()]] : [[]];
50
+ const cookieValue: CookieConfiguration = [[name, value], ...expiresObj, ['path', '/'], ['domain', getTopLevelDomain(window.location.hostname)], ...secureObj];
85
51
  const cookie = stringifyCookie(cookieValue);
86
-
87
52
  return cookie;
88
53
  };
89
54
 
@@ -94,7 +59,7 @@ export const setCookie = async ({
94
59
  name,
95
60
  value,
96
61
  expires,
97
- canTrack,
62
+ canTrack
98
63
  }: {
99
64
  name: string;
100
65
  value: string;
@@ -104,9 +69,13 @@ export const setCookie = async ({
104
69
  if (!canTrack) {
105
70
  return;
106
71
  }
107
- const cookie = createCookieString({ name, value, expires });
72
+ const cookie = createCookieString({
73
+ name,
74
+ value,
75
+ expires
76
+ });
108
77
  document.cookie = cookie;
109
78
  } catch (err: any) {
110
79
  logger.warn('[COOKIE] SET error: ', err?.message || err);
111
80
  }
112
- };
81
+ }
@@ -1,9 +1,6 @@
1
1
  import { camelToKebabCase } from '../functions/camel-to-kebab-case.js';
2
2
  import { checkIsDefined } from './nullable.js';
3
-
4
- export const convertStyleMapToCSSArray = (
5
- style: Partial<CSSStyleDeclaration>
6
- ): string[] => {
3
+ export const convertStyleMapToCSSArray = (style: Partial<CSSStyleDeclaration>): string[] => {
7
4
  const cssProps = Object.entries(style).map(([key, value]) => {
8
5
  if (typeof value === 'string') {
9
6
  return `${camelToKebabCase(key)}: ${value};`;
@@ -11,18 +8,13 @@ export const convertStyleMapToCSSArray = (
11
8
  return undefined;
12
9
  }
13
10
  });
14
-
15
11
  return cssProps.filter(checkIsDefined);
16
12
  };
17
-
18
- export const convertStyleMapToCSS = (
19
- style: Partial<CSSStyleDeclaration>
20
- ): string => convertStyleMapToCSSArray(style).join('\n');
21
-
13
+ export const convertStyleMapToCSS = (style: Partial<CSSStyleDeclaration>): string => convertStyleMapToCSSArray(style).join('\n');
22
14
  export const createCssClass = ({
23
15
  mediaQuery,
24
16
  className,
25
- styles,
17
+ styles
26
18
  }: {
27
19
  mediaQuery?: string;
28
20
  className: string;
@@ -31,7 +23,6 @@ export const createCssClass = ({
31
23
  const cssClass = `.${className} {
32
24
  ${convertStyleMapToCSS(styles)}
33
25
  }`;
34
-
35
26
  if (mediaQuery) {
36
27
  return `${mediaQuery} {
37
28
  ${cssClass}
@@ -39,4 +30,4 @@ export const createCssClass = ({
39
30
  } else {
40
31
  return cssClass;
41
32
  }
42
- };
33
+ }
@@ -3,22 +3,17 @@
3
3
  *
4
4
  * { foo: { bar: 'baz' }} -> { 'foo.bar': 'baz' }
5
5
  */
6
- export function flatten<T extends Record<string, any>>(
7
- object: T,
8
- path: string | null = null,
9
- separator = '.'
10
- ): T {
6
+ export function flatten<T extends Record<string, any>>(object: T, path: string | null = null, separator = '.'): T {
11
7
  return Object.keys(object).reduce((acc: T, key: string): T => {
12
8
  const value = object[key];
13
9
  const newPath = [path, key].filter(Boolean).join(separator);
14
- const isObject = [
15
- typeof value === 'object',
16
- value !== null,
17
- !(Array.isArray(value) && value.length === 0),
18
- ].every(Boolean);
19
-
20
- return isObject
21
- ? { ...acc, ...flatten(value, newPath, separator) }
22
- : { ...acc, [newPath]: value };
23
- }, {} as T);
24
- }
10
+ const isObject = [typeof value === 'object', value !== null, !(Array.isArray(value) && value.length === 0)].every(Boolean);
11
+ return isObject ? {
12
+ ...acc,
13
+ ...flatten(value, newPath, separator)
14
+ } : {
15
+ ...acc,
16
+ [newPath]: value
17
+ };
18
+ }, ({} as T));
19
+ }
@@ -1,13 +1,10 @@
1
1
  import { isBrowser } from '../functions/is-browser.js';
2
2
  import type { CanTrack } from '../types/can-track.js';
3
3
  import type { Nullable } from './nullable.js';
4
-
5
- const getLocalStorage = () =>
6
- isBrowser() && typeof localStorage !== 'undefined' ? localStorage : undefined;
7
-
4
+ const getLocalStorage = () => isBrowser() && typeof localStorage !== 'undefined' ? localStorage : undefined;
8
5
  export const getLocalStorageItem = ({
9
6
  key,
10
- canTrack,
7
+ canTrack
11
8
  }: {
12
9
  key: string;
13
10
  } & CanTrack): Nullable<string> => {
@@ -21,11 +18,10 @@ export const getLocalStorageItem = ({
21
18
  return undefined;
22
19
  }
23
20
  };
24
-
25
21
  export const setLocalStorageItem = ({
26
22
  key,
27
23
  canTrack,
28
- value,
24
+ value
29
25
  }: {
30
26
  key: string;
31
27
  value: string;
@@ -37,4 +33,4 @@ export const setLocalStorageItem = ({
37
33
  } catch (err) {
38
34
  console.debug('[LocalStorage] SET error: ', err);
39
35
  }
40
- };
36
+ }
@@ -3,5 +3,5 @@ export const logger = {
3
3
  log: (...message: any[]) => console.log(MSG_PREFIX, ...message),
4
4
  error: (...message: any[]) => console.error(MSG_PREFIX, ...message),
5
5
  warn: (...message: any[]) => console.warn(MSG_PREFIX, ...message),
6
- debug: (...message: any[]) => console.debug(MSG_PREFIX, ...message),
7
- };
6
+ debug: (...message: any[]) => console.debug(MSG_PREFIX, ...message)
7
+ }
@@ -1,4 +1,2 @@
1
1
  export type Nullable<T> = T | null | undefined;
2
-
3
- export const checkIsDefined = <T>(maybeT: Nullable<T>): maybeT is T =>
4
- maybeT !== null && maybeT !== undefined;
2
+ export const checkIsDefined = <T,>(maybeT: Nullable<T>): maybeT is T => maybeT !== null && maybeT !== undefined
@@ -0,0 +1,8 @@
1
+ import { getIdFromSearchParams } from './helpers';
2
+ import { init } from './init';
3
+ import type { GlobalWCache } from './types';
4
+ export function getPreviewContent(searchParams: URLSearchParams) {
5
+ init();
6
+ const id = getIdFromSearchParams(searchParams);
7
+ return typeof id === 'string' ? (globalThis as GlobalWCache)._BUILDER_PREVIEW_LRU_CACHE.get(id) : undefined;
8
+ }
@@ -0,0 +1,9 @@
1
+ import { logger } from '../logger';
2
+ export const getIdFromSearchParams = (searchParams: URLSearchParams) => {
3
+ const previewedModel = searchParams.get('preview');
4
+ const previewedId = searchParams.get('overrides.' + previewedModel);
5
+ if (!previewedId) {
6
+ logger.warn('No previewed ID found in search params.');
7
+ }
8
+ return previewedId;
9
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * This is an LRU cache to hold preview content on the server-side.
3
+ *
4
+ * Note: This logic is only used by the NextJS SDK.
5
+ */
6
+
7
+ import { LRUCache } from 'lru-cache';
8
+ import type { GlobalWCache } from './types';
9
+ export function init() {
10
+ if (!(globalThis as GlobalWCache)._BUILDER_PREVIEW_LRU_CACHE) {
11
+ (globalThis as GlobalWCache)._BUILDER_PREVIEW_LRU_CACHE = new LRUCache({
12
+ max: 500,
13
+ // how long to live in ms
14
+ ttl: 1000 * 60 * 5
15
+ });
16
+ }
17
+ }
@@ -0,0 +1,18 @@
1
+ 'use server';
2
+
3
+ import type { BuilderContent } from '../../types/builder-content';
4
+ import { init } from './init';
5
+ import type { GlobalWCache } from './types';
6
+ export async function postPreviewContent({
7
+ key,
8
+ value
9
+ }: {
10
+ key: string;
11
+ value: BuilderContent;
12
+ }) {
13
+ init();
14
+ (globalThis as GlobalWCache)._BUILDER_PREVIEW_LRU_CACHE.set(key, value);
15
+ return {
16
+ [key]: value
17
+ };
18
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * This is an LRU cache to hold preview content on the server-side.
3
+ *
4
+ * Note: This logic is only used by the NextJS SDK.
5
+ */
6
+
7
+ import type { LRUCache } from 'lru-cache';
8
+ import type { BuilderContent } from '../../types/builder-content';
9
+ type BuilderLRUCache = LRUCache<string, BuilderContent>;
10
+ export type GlobalWCache = typeof globalThis & {
11
+ _BUILDER_PREVIEW_LRU_CACHE: BuilderLRUCache;
12
+ }