@shopify/ui-extensions-server-kit 5.2.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 (367) hide show
  1. package/CHANGELOG.md +121 -0
  2. package/README.md +74 -0
  3. package/dist/ExtensionServerClient/ExtensionServerClient.cjs.js +1 -0
  4. package/dist/ExtensionServerClient/ExtensionServerClient.d.ts +28 -0
  5. package/dist/ExtensionServerClient/ExtensionServerClient.es.js +133 -0
  6. package/dist/ExtensionServerClient/ExtensionServerClient.test.d.ts +1 -0
  7. package/dist/ExtensionServerClient/index.d.ts +2 -0
  8. package/dist/ExtensionServerClient/types.cjs.js +1 -0
  9. package/dist/ExtensionServerClient/types.d.ts +124 -0
  10. package/dist/ExtensionServerClient/types.es.js +4 -0
  11. package/dist/context/ExtensionServerProvider.cjs.js +1 -0
  12. package/dist/context/ExtensionServerProvider.d.ts +2 -0
  13. package/dist/context/ExtensionServerProvider.es.js +29 -0
  14. package/dist/context/ExtensionServerProvider.test.d.ts +1 -0
  15. package/dist/context/constants.cjs.js +1 -0
  16. package/dist/context/constants.d.ts +3 -0
  17. package/dist/context/constants.es.js +14 -0
  18. package/dist/context/index.d.ts +3 -0
  19. package/dist/context/types.d.ts +11 -0
  20. package/dist/hooks/index.d.ts +5 -0
  21. package/dist/hooks/useExtensionClient.cjs.js +1 -0
  22. package/dist/hooks/useExtensionClient.d.ts +1 -0
  23. package/dist/hooks/useExtensionClient.es.js +8 -0
  24. package/dist/hooks/useExtensionServerContext.cjs.js +1 -0
  25. package/dist/hooks/useExtensionServerContext.d.ts +1 -0
  26. package/dist/hooks/useExtensionServerContext.es.js +6 -0
  27. package/dist/hooks/useExtensionServerEvent.cjs.js +1 -0
  28. package/dist/hooks/useExtensionServerEvent.d.ts +1 -0
  29. package/dist/hooks/useExtensionServerEvent.es.js +9 -0
  30. package/dist/hooks/useExtensionServerState.cjs.js +1 -0
  31. package/dist/hooks/useExtensionServerState.d.ts +1 -0
  32. package/dist/hooks/useExtensionServerState.es.js +9 -0
  33. package/dist/hooks/useIsomorphicLayoutEffect.cjs.js +1 -0
  34. package/dist/hooks/useIsomorphicLayoutEffect.d.ts +2 -0
  35. package/dist/hooks/useIsomorphicLayoutEffect.es.js +5 -0
  36. package/dist/i18n.cjs.js +1 -0
  37. package/dist/i18n.d.ts +93 -0
  38. package/dist/i18n.es.js +61 -0
  39. package/dist/i18n.test.d.ts +1 -0
  40. package/dist/index.cjs.js +1 -0
  41. package/dist/index.cjs2.js +1 -0
  42. package/dist/index.d.ts +7 -0
  43. package/dist/index.es.js +54 -0
  44. package/dist/index.es2.js +8 -0
  45. package/dist/state/actions/actions.cjs.js +1 -0
  46. package/dist/state/actions/actions.d.ts +6 -0
  47. package/dist/state/actions/actions.es.js +37 -0
  48. package/dist/state/actions/index.d.ts +2 -0
  49. package/dist/state/actions/types.d.ts +21 -0
  50. package/dist/state/index.d.ts +2 -0
  51. package/dist/state/reducers/constants.cjs.js +1 -0
  52. package/dist/state/reducers/constants.d.ts +2 -0
  53. package/dist/state/reducers/constants.es.js +7 -0
  54. package/dist/state/reducers/extensionServerReducer.cjs.js +1 -0
  55. package/dist/state/reducers/extensionServerReducer.d.ts +3 -0
  56. package/dist/state/reducers/extensionServerReducer.es.js +57 -0
  57. package/dist/state/reducers/extensionServerReducer.test.d.ts +1 -0
  58. package/dist/state/reducers/index.d.ts +3 -0
  59. package/dist/state/reducers/types.d.ts +6 -0
  60. package/dist/testing/MockExtensionServerProvider.cjs.js +1 -0
  61. package/dist/testing/MockExtensionServerProvider.d.ts +7 -0
  62. package/dist/testing/MockExtensionServerProvider.es.js +24 -0
  63. package/dist/testing/app.cjs.js +1 -0
  64. package/dist/testing/app.d.ts +2 -0
  65. package/dist/testing/app.es.js +16 -0
  66. package/dist/testing/extensions.cjs.js +1 -0
  67. package/dist/testing/extensions.d.ts +6 -0
  68. package/dist/testing/extensions.es.js +65 -0
  69. package/dist/testing/index.d.ts +3 -0
  70. package/dist/types.cjs.js +1 -0
  71. package/dist/types.d.ts +169 -0
  72. package/dist/types.es.js +4 -0
  73. package/dist/utilities/assetToString.cjs.js +1 -0
  74. package/dist/utilities/assetToString.d.ts +2 -0
  75. package/dist/utilities/assetToString.es.js +7 -0
  76. package/dist/utilities/assetToString.test.d.ts +1 -0
  77. package/dist/utilities/groupByKey.cjs.js +1 -0
  78. package/dist/utilities/groupByKey.d.ts +3 -0
  79. package/dist/utilities/groupByKey.es.js +6 -0
  80. package/dist/utilities/index.d.ts +7 -0
  81. package/dist/utilities/isUIExtension.cjs.js +1 -0
  82. package/dist/utilities/isUIExtension.d.ts +1 -0
  83. package/dist/utilities/isUIExtension.es.js +6 -0
  84. package/dist/utilities/isValidSurface.cjs.js +1 -0
  85. package/dist/utilities/isValidSurface.d.ts +2 -0
  86. package/dist/utilities/isValidSurface.es.js +7 -0
  87. package/dist/utilities/noop.cjs.js +1 -0
  88. package/dist/utilities/noop.d.ts +1 -0
  89. package/dist/utilities/noop.es.js +5 -0
  90. package/dist/utilities/replaceUpdated.cjs.js +1 -0
  91. package/dist/utilities/replaceUpdated.d.ts +1 -0
  92. package/dist/utilities/replaceUpdated.es.js +14 -0
  93. package/dist/utilities/replaceUpdated.test.d.ts +1 -0
  94. package/dist/utilities/set.cjs.js +1 -0
  95. package/dist/utilities/set.d.ts +4 -0
  96. package/dist/utilities/set.es.js +18 -0
  97. package/dist/utilities/set.test.d.ts +1 -0
  98. package/index.d.ts +1 -0
  99. package/index.js +1 -0
  100. package/index.mjs +1 -0
  101. package/node_modules/@shopify/react-testing/LICENSE.md +21 -0
  102. package/node_modules/@shopify/react-testing/README.md +711 -0
  103. package/node_modules/@shopify/react-testing/build/cjs/TestWrapper.js +52 -0
  104. package/node_modules/@shopify/react-testing/build/cjs/_virtual/_rollupPluginBabelHelpers.js +47 -0
  105. package/node_modules/@shopify/react-testing/build/cjs/compat.js +14 -0
  106. package/node_modules/@shopify/react-testing/build/cjs/destroy.js +13 -0
  107. package/node_modules/@shopify/react-testing/build/cjs/element.js +225 -0
  108. package/node_modules/@shopify/react-testing/build/cjs/index.js +21 -0
  109. package/node_modules/@shopify/react-testing/build/cjs/matchers/components.js +46 -0
  110. package/node_modules/@shopify/react-testing/build/cjs/matchers/context.js +25 -0
  111. package/node_modules/@shopify/react-testing/build/cjs/matchers/index.js +16 -0
  112. package/node_modules/@shopify/react-testing/build/cjs/matchers/props.js +38 -0
  113. package/node_modules/@shopify/react-testing/build/cjs/matchers/strings.js +42 -0
  114. package/node_modules/@shopify/react-testing/build/cjs/matchers/utilities.js +110 -0
  115. package/node_modules/@shopify/react-testing/build/cjs/mount.js +76 -0
  116. package/node_modules/@shopify/react-testing/build/cjs/root.js +284 -0
  117. package/node_modules/@shopify/react-testing/build/cjs/toReactString.js +86 -0
  118. package/node_modules/@shopify/react-testing/build/cjs/types.js +28 -0
  119. package/node_modules/@shopify/react-testing/build/esm/TestWrapper.mjs +44 -0
  120. package/node_modules/@shopify/react-testing/build/esm/_virtual/_rollupPluginBabelHelpers.mjs +42 -0
  121. package/node_modules/@shopify/react-testing/build/esm/compat.mjs +10 -0
  122. package/node_modules/@shopify/react-testing/build/esm/destroy.mjs +9 -0
  123. package/node_modules/@shopify/react-testing/build/esm/element.mjs +221 -0
  124. package/node_modules/@shopify/react-testing/build/esm/index.mjs +5 -0
  125. package/node_modules/@shopify/react-testing/build/esm/matchers/components.mjs +41 -0
  126. package/node_modules/@shopify/react-testing/build/esm/matchers/context.mjs +21 -0
  127. package/node_modules/@shopify/react-testing/build/esm/matchers/index.mjs +14 -0
  128. package/node_modules/@shopify/react-testing/build/esm/matchers/props.mjs +33 -0
  129. package/node_modules/@shopify/react-testing/build/esm/matchers/strings.mjs +37 -0
  130. package/node_modules/@shopify/react-testing/build/esm/matchers/utilities.mjs +101 -0
  131. package/node_modules/@shopify/react-testing/build/esm/mount.mjs +70 -0
  132. package/node_modules/@shopify/react-testing/build/esm/root.mjs +275 -0
  133. package/node_modules/@shopify/react-testing/build/esm/toReactString.mjs +80 -0
  134. package/node_modules/@shopify/react-testing/build/esm/types.mjs +26 -0
  135. package/node_modules/@shopify/react-testing/build/esnext/TestWrapper.esnext +44 -0
  136. package/node_modules/@shopify/react-testing/build/esnext/compat.esnext +10 -0
  137. package/node_modules/@shopify/react-testing/build/esnext/destroy.esnext +9 -0
  138. package/node_modules/@shopify/react-testing/build/esnext/element.esnext +221 -0
  139. package/node_modules/@shopify/react-testing/build/esnext/index.esnext +5 -0
  140. package/node_modules/@shopify/react-testing/build/esnext/matchers/components.esnext +41 -0
  141. package/node_modules/@shopify/react-testing/build/esnext/matchers/context.esnext +21 -0
  142. package/node_modules/@shopify/react-testing/build/esnext/matchers/index.esnext +14 -0
  143. package/node_modules/@shopify/react-testing/build/esnext/matchers/props.esnext +33 -0
  144. package/node_modules/@shopify/react-testing/build/esnext/matchers/strings.esnext +37 -0
  145. package/node_modules/@shopify/react-testing/build/esnext/matchers/utilities.esnext +99 -0
  146. package/node_modules/@shopify/react-testing/build/esnext/mount.esnext +71 -0
  147. package/node_modules/@shopify/react-testing/build/esnext/root.esnext +275 -0
  148. package/node_modules/@shopify/react-testing/build/esnext/toReactString.esnext +80 -0
  149. package/node_modules/@shopify/react-testing/build/esnext/types.esnext +26 -0
  150. package/node_modules/@shopify/react-testing/build/ts/TestWrapper.d.ts +17 -0
  151. package/node_modules/@shopify/react-testing/build/ts/TestWrapper.d.ts.map +1 -0
  152. package/node_modules/@shopify/react-testing/build/ts/compat.d.ts +3 -0
  153. package/node_modules/@shopify/react-testing/build/ts/compat.d.ts.map +1 -0
  154. package/node_modules/@shopify/react-testing/build/ts/destroy.d.ts +2 -0
  155. package/node_modules/@shopify/react-testing/build/ts/destroy.d.ts.map +1 -0
  156. package/node_modules/@shopify/react-testing/build/ts/element.d.ts +42 -0
  157. package/node_modules/@shopify/react-testing/build/ts/element.d.ts.map +1 -0
  158. package/node_modules/@shopify/react-testing/build/ts/index.d.ts +7 -0
  159. package/node_modules/@shopify/react-testing/build/ts/index.d.ts.map +1 -0
  160. package/node_modules/@shopify/react-testing/build/ts/matchers/components.d.ts +12 -0
  161. package/node_modules/@shopify/react-testing/build/ts/matchers/components.d.ts.map +1 -0
  162. package/node_modules/@shopify/react-testing/build/ts/matchers/context.d.ts +8 -0
  163. package/node_modules/@shopify/react-testing/build/ts/matchers/context.d.ts.map +1 -0
  164. package/node_modules/@shopify/react-testing/build/ts/matchers/index.d.ts +20 -0
  165. package/node_modules/@shopify/react-testing/build/ts/matchers/index.d.ts.map +1 -0
  166. package/node_modules/@shopify/react-testing/build/ts/matchers/props.d.ts +10 -0
  167. package/node_modules/@shopify/react-testing/build/ts/matchers/props.d.ts.map +1 -0
  168. package/node_modules/@shopify/react-testing/build/ts/matchers/strings.d.ts +11 -0
  169. package/node_modules/@shopify/react-testing/build/ts/matchers/strings.d.ts.map +1 -0
  170. package/node_modules/@shopify/react-testing/build/ts/matchers/utilities.d.ts +17 -0
  171. package/node_modules/@shopify/react-testing/build/ts/matchers/utilities.d.ts.map +1 -0
  172. package/node_modules/@shopify/react-testing/build/ts/mount.d.ts +39 -0
  173. package/node_modules/@shopify/react-testing/build/ts/mount.d.ts.map +1 -0
  174. package/node_modules/@shopify/react-testing/build/ts/root.d.ts +55 -0
  175. package/node_modules/@shopify/react-testing/build/ts/root.d.ts.map +1 -0
  176. package/node_modules/@shopify/react-testing/build/ts/toReactString.d.ts +5 -0
  177. package/node_modules/@shopify/react-testing/build/ts/toReactString.d.ts.map +1 -0
  178. package/node_modules/@shopify/react-testing/build/ts/types.d.ts +89 -0
  179. package/node_modules/@shopify/react-testing/build/ts/types.d.ts.map +1 -0
  180. package/node_modules/@shopify/react-testing/index.esnext +1 -0
  181. package/node_modules/@shopify/react-testing/index.js +1 -0
  182. package/node_modules/@shopify/react-testing/index.mjs +1 -0
  183. package/node_modules/@shopify/react-testing/matchers.esnext +1 -0
  184. package/node_modules/@shopify/react-testing/matchers.js +1 -0
  185. package/node_modules/@shopify/react-testing/matchers.mjs +1 -0
  186. package/node_modules/@shopify/react-testing/package.json +69 -0
  187. package/node_modules/@shopify/ui-extensions-test-utils/CHANGELOG.md +66 -0
  188. package/node_modules/@shopify/ui-extensions-test-utils/dist/index.js +3 -0
  189. package/node_modules/@shopify/ui-extensions-test-utils/dist/render.js +5 -0
  190. package/node_modules/@shopify/ui-extensions-test-utils/dist/renderHook.js +20 -0
  191. package/node_modules/@shopify/ui-extensions-test-utils/dist/withProviders.js +6 -0
  192. package/node_modules/@shopify/ui-extensions-test-utils/package.json +41 -0
  193. package/node_modules/@shopify/ui-extensions-test-utils/project.json +39 -0
  194. package/node_modules/@types/node/LICENSE +21 -0
  195. package/node_modules/@types/node/README.md +15 -0
  196. package/node_modules/@types/node/assert/strict.d.ts +8 -0
  197. package/node_modules/@types/node/assert.d.ts +985 -0
  198. package/node_modules/@types/node/async_hooks.d.ts +522 -0
  199. package/node_modules/@types/node/buffer.d.ts +2321 -0
  200. package/node_modules/@types/node/child_process.d.ts +1544 -0
  201. package/node_modules/@types/node/cluster.d.ts +432 -0
  202. package/node_modules/@types/node/console.d.ts +412 -0
  203. package/node_modules/@types/node/constants.d.ts +19 -0
  204. package/node_modules/@types/node/crypto.d.ts +4451 -0
  205. package/node_modules/@types/node/dgram.d.ts +586 -0
  206. package/node_modules/@types/node/diagnostics_channel.d.ts +192 -0
  207. package/node_modules/@types/node/dns/promises.d.ts +381 -0
  208. package/node_modules/@types/node/dns.d.ts +809 -0
  209. package/node_modules/@types/node/dom-events.d.ts +122 -0
  210. package/node_modules/@types/node/domain.d.ts +170 -0
  211. package/node_modules/@types/node/events.d.ts +803 -0
  212. package/node_modules/@types/node/fs/promises.d.ts +1205 -0
  213. package/node_modules/@types/node/fs.d.ts +4211 -0
  214. package/node_modules/@types/node/globals.d.ts +377 -0
  215. package/node_modules/@types/node/globals.global.d.ts +1 -0
  216. package/node_modules/@types/node/http.d.ts +1801 -0
  217. package/node_modules/@types/node/http2.d.ts +2386 -0
  218. package/node_modules/@types/node/https.d.ts +544 -0
  219. package/node_modules/@types/node/index.d.ts +88 -0
  220. package/node_modules/@types/node/inspector.d.ts +2739 -0
  221. package/node_modules/@types/node/module.d.ts +298 -0
  222. package/node_modules/@types/node/net.d.ts +913 -0
  223. package/node_modules/@types/node/os.d.ts +473 -0
  224. package/node_modules/@types/node/package.json +235 -0
  225. package/node_modules/@types/node/path.d.ts +191 -0
  226. package/node_modules/@types/node/perf_hooks.d.ts +626 -0
  227. package/node_modules/@types/node/process.d.ts +1531 -0
  228. package/node_modules/@types/node/punycode.d.ts +117 -0
  229. package/node_modules/@types/node/querystring.d.ts +141 -0
  230. package/node_modules/@types/node/readline/promises.d.ts +143 -0
  231. package/node_modules/@types/node/readline.d.ts +666 -0
  232. package/node_modules/@types/node/repl.d.ts +430 -0
  233. package/node_modules/@types/node/stream/consumers.d.ts +12 -0
  234. package/node_modules/@types/node/stream/promises.d.ts +83 -0
  235. package/node_modules/@types/node/stream/web.d.ts +336 -0
  236. package/node_modules/@types/node/stream.d.ts +1731 -0
  237. package/node_modules/@types/node/string_decoder.d.ts +67 -0
  238. package/node_modules/@types/node/test.d.ts +1113 -0
  239. package/node_modules/@types/node/timers/promises.d.ts +93 -0
  240. package/node_modules/@types/node/timers.d.ts +126 -0
  241. package/node_modules/@types/node/tls.d.ts +1203 -0
  242. package/node_modules/@types/node/trace_events.d.ts +171 -0
  243. package/node_modules/@types/node/ts4.8/assert/strict.d.ts +8 -0
  244. package/node_modules/@types/node/ts4.8/assert.d.ts +985 -0
  245. package/node_modules/@types/node/ts4.8/async_hooks.d.ts +522 -0
  246. package/node_modules/@types/node/ts4.8/buffer.d.ts +2321 -0
  247. package/node_modules/@types/node/ts4.8/child_process.d.ts +1544 -0
  248. package/node_modules/@types/node/ts4.8/cluster.d.ts +432 -0
  249. package/node_modules/@types/node/ts4.8/console.d.ts +412 -0
  250. package/node_modules/@types/node/ts4.8/constants.d.ts +19 -0
  251. package/node_modules/@types/node/ts4.8/crypto.d.ts +4450 -0
  252. package/node_modules/@types/node/ts4.8/dgram.d.ts +586 -0
  253. package/node_modules/@types/node/ts4.8/diagnostics_channel.d.ts +192 -0
  254. package/node_modules/@types/node/ts4.8/dns/promises.d.ts +381 -0
  255. package/node_modules/@types/node/ts4.8/dns.d.ts +809 -0
  256. package/node_modules/@types/node/ts4.8/dom-events.d.ts +122 -0
  257. package/node_modules/@types/node/ts4.8/domain.d.ts +170 -0
  258. package/node_modules/@types/node/ts4.8/events.d.ts +754 -0
  259. package/node_modules/@types/node/ts4.8/fs/promises.d.ts +1205 -0
  260. package/node_modules/@types/node/ts4.8/fs.d.ts +4211 -0
  261. package/node_modules/@types/node/ts4.8/globals.d.ts +377 -0
  262. package/node_modules/@types/node/ts4.8/globals.global.d.ts +1 -0
  263. package/node_modules/@types/node/ts4.8/http.d.ts +1801 -0
  264. package/node_modules/@types/node/ts4.8/http2.d.ts +2386 -0
  265. package/node_modules/@types/node/ts4.8/https.d.ts +544 -0
  266. package/node_modules/@types/node/ts4.8/index.d.ts +88 -0
  267. package/node_modules/@types/node/ts4.8/inspector.d.ts +2739 -0
  268. package/node_modules/@types/node/ts4.8/module.d.ts +298 -0
  269. package/node_modules/@types/node/ts4.8/net.d.ts +913 -0
  270. package/node_modules/@types/node/ts4.8/os.d.ts +473 -0
  271. package/node_modules/@types/node/ts4.8/path.d.ts +191 -0
  272. package/node_modules/@types/node/ts4.8/perf_hooks.d.ts +626 -0
  273. package/node_modules/@types/node/ts4.8/process.d.ts +1531 -0
  274. package/node_modules/@types/node/ts4.8/punycode.d.ts +117 -0
  275. package/node_modules/@types/node/ts4.8/querystring.d.ts +141 -0
  276. package/node_modules/@types/node/ts4.8/readline/promises.d.ts +143 -0
  277. package/node_modules/@types/node/ts4.8/readline.d.ts +666 -0
  278. package/node_modules/@types/node/ts4.8/repl.d.ts +430 -0
  279. package/node_modules/@types/node/ts4.8/stream/consumers.d.ts +12 -0
  280. package/node_modules/@types/node/ts4.8/stream/promises.d.ts +83 -0
  281. package/node_modules/@types/node/ts4.8/stream/web.d.ts +336 -0
  282. package/node_modules/@types/node/ts4.8/stream.d.ts +1731 -0
  283. package/node_modules/@types/node/ts4.8/string_decoder.d.ts +67 -0
  284. package/node_modules/@types/node/ts4.8/test.d.ts +1113 -0
  285. package/node_modules/@types/node/ts4.8/timers/promises.d.ts +93 -0
  286. package/node_modules/@types/node/ts4.8/timers.d.ts +126 -0
  287. package/node_modules/@types/node/ts4.8/tls.d.ts +1203 -0
  288. package/node_modules/@types/node/ts4.8/trace_events.d.ts +171 -0
  289. package/node_modules/@types/node/ts4.8/tty.d.ts +206 -0
  290. package/node_modules/@types/node/ts4.8/url.d.ts +937 -0
  291. package/node_modules/@types/node/ts4.8/util.d.ts +2075 -0
  292. package/node_modules/@types/node/ts4.8/v8.d.ts +541 -0
  293. package/node_modules/@types/node/ts4.8/vm.d.ts +667 -0
  294. package/node_modules/@types/node/ts4.8/wasi.d.ts +158 -0
  295. package/node_modules/@types/node/ts4.8/worker_threads.d.ts +692 -0
  296. package/node_modules/@types/node/ts4.8/zlib.d.ts +517 -0
  297. package/node_modules/@types/node/tty.d.ts +206 -0
  298. package/node_modules/@types/node/url.d.ts +937 -0
  299. package/node_modules/@types/node/util.d.ts +2075 -0
  300. package/node_modules/@types/node/v8.d.ts +541 -0
  301. package/node_modules/@types/node/vm.d.ts +667 -0
  302. package/node_modules/@types/node/wasi.d.ts +158 -0
  303. package/node_modules/@types/node/worker_threads.d.ts +692 -0
  304. package/node_modules/@types/node/zlib.d.ts +517 -0
  305. package/node_modules/@types/react/LICENSE +21 -0
  306. package/node_modules/@types/react/README.md +16 -0
  307. package/node_modules/@types/react/experimental.d.ts +192 -0
  308. package/node_modules/@types/react/global.d.ts +151 -0
  309. package/node_modules/@types/react/index.d.ts +3175 -0
  310. package/node_modules/@types/react/jsx-dev-runtime.d.ts +2 -0
  311. package/node_modules/@types/react/jsx-runtime.d.ts +2 -0
  312. package/node_modules/@types/react/package.json +149 -0
  313. package/node_modules/@vitejs/plugin-react-refresh/LICENSE +21 -0
  314. package/node_modules/@vitejs/plugin-react-refresh/README.md +73 -0
  315. package/node_modules/@vitejs/plugin-react-refresh/index.d.ts +14 -0
  316. package/node_modules/@vitejs/plugin-react-refresh/index.js +239 -0
  317. package/node_modules/@vitejs/plugin-react-refresh/package.json +35 -0
  318. package/package.json +65 -0
  319. package/project.json +74 -0
  320. package/scripts/create-entry-files.ts +44 -0
  321. package/src/ExtensionServerClient/ExtensionServerClient.test.ts +730 -0
  322. package/src/ExtensionServerClient/ExtensionServerClient.ts +310 -0
  323. package/src/ExtensionServerClient/index.ts +2 -0
  324. package/src/ExtensionServerClient/types.ts +159 -0
  325. package/src/context/ExtensionServerProvider.test.tsx +173 -0
  326. package/src/context/ExtensionServerProvider.tsx +46 -0
  327. package/src/context/constants.ts +15 -0
  328. package/src/context/index.ts +3 -0
  329. package/src/context/types.ts +13 -0
  330. package/src/hooks/index.ts +5 -0
  331. package/src/hooks/useExtensionClient.ts +6 -0
  332. package/src/hooks/useExtensionServerContext.ts +4 -0
  333. package/src/hooks/useExtensionServerEvent.ts +11 -0
  334. package/src/hooks/useExtensionServerState.ts +6 -0
  335. package/src/hooks/useIsomorphicLayoutEffect.ts +6 -0
  336. package/src/i18n.test.ts +417 -0
  337. package/src/i18n.ts +208 -0
  338. package/src/index.ts +7 -0
  339. package/src/state/actions/actions.ts +36 -0
  340. package/src/state/actions/index.ts +2 -0
  341. package/src/state/actions/types.ts +26 -0
  342. package/src/state/index.ts +2 -0
  343. package/src/state/reducers/constants.ts +6 -0
  344. package/src/state/reducers/extensionServerReducer.test.ts +160 -0
  345. package/src/state/reducers/extensionServerReducer.ts +87 -0
  346. package/src/state/reducers/index.ts +3 -0
  347. package/src/state/reducers/types.ts +7 -0
  348. package/src/testing/MockExtensionServerProvider.tsx +36 -0
  349. package/src/testing/app.ts +15 -0
  350. package/src/testing/extensions.ts +70 -0
  351. package/src/testing/index.ts +3 -0
  352. package/src/types.ts +172 -0
  353. package/src/utilities/assetToString.test.ts +16 -0
  354. package/src/utilities/assetToString.ts +8 -0
  355. package/src/utilities/groupByKey.ts +3 -0
  356. package/src/utilities/index.ts +7 -0
  357. package/src/utilities/isUIExtension.ts +7 -0
  358. package/src/utilities/isValidSurface.ts +7 -0
  359. package/src/utilities/noop.ts +1 -0
  360. package/src/utilities/replaceUpdated.test.ts +26 -0
  361. package/src/utilities/replaceUpdated.ts +16 -0
  362. package/src/utilities/set.test.ts +19 -0
  363. package/src/utilities/set.ts +29 -0
  364. package/testing.d.ts +1 -0
  365. package/testing.js +1 -0
  366. package/testing.mjs +1 -0
  367. package/tests/setup.ts +6 -0
@@ -0,0 +1,221 @@
1
+ import { toReactString, nodeName } from './toReactString.mjs';
2
+ import { Tag } from './types.mjs';
3
+
4
+ class Element {
5
+ get props() {
6
+ return this.tree.props;
7
+ }
8
+
9
+ get type() {
10
+ return this.tree.type;
11
+ }
12
+
13
+ get isDOM() {
14
+ return this.tree.tag === Tag.HostComponent;
15
+ }
16
+
17
+ get instance() {
18
+ return this.tree.instance;
19
+ }
20
+
21
+ get children() {
22
+ return this.elementChildren;
23
+ }
24
+
25
+ get elementDescendants() {
26
+ if (!this.descendantsCache) {
27
+ this.descendantsCache = getDescendants(this);
28
+ }
29
+
30
+ return this.descendantsCache;
31
+ }
32
+
33
+ get elementChildren() {
34
+ if (!this.elementChildrenCache) {
35
+ this.elementChildrenCache = this.allChildren.filter(element => typeof element !== 'string');
36
+ }
37
+
38
+ return this.elementChildrenCache;
39
+ }
40
+
41
+ get descendants() {
42
+ return this.elementDescendants;
43
+ }
44
+
45
+ get domNodes() {
46
+ if (this.isDOM) {
47
+ return [this.instance];
48
+ }
49
+
50
+ return this.elementChildren.filter(element => element.isDOM).map(element => element.instance);
51
+ }
52
+
53
+ get domNode() {
54
+ const {
55
+ domNodes
56
+ } = this;
57
+
58
+ if (domNodes.length > 1) {
59
+ throw new Error('You can’t call getDOMNode() on an element that returns multiple HTML elements. Call getDOMNodes() to retrieve all of the elements instead.');
60
+ }
61
+
62
+ return domNodes[0] || null;
63
+ }
64
+
65
+ constructor(tree, allChildren, root) {
66
+ this.tree = tree;
67
+ this.allChildren = allChildren;
68
+ this.root = root;
69
+ this.descendantsCache = null;
70
+ this.elementChildrenCache = null;
71
+ }
72
+
73
+ data(key) {
74
+ return this.props[key.startsWith('data-') ? key : `data-${key}`];
75
+ }
76
+
77
+ prop(key) {
78
+ return this.props[key];
79
+ }
80
+
81
+ text() {
82
+ const {
83
+ instance,
84
+ allChildren,
85
+ tree: {
86
+ tag
87
+ }
88
+ } = this;
89
+
90
+ if (tag === Tag.HostPortal) {
91
+ return '';
92
+ }
93
+
94
+ if (instance instanceof HTMLElement) {
95
+ return instance.textContent || '';
96
+ }
97
+
98
+ return allChildren.reduce((text, child) => text + (typeof child === 'string' ? child : child.text()), '');
99
+ }
100
+
101
+ html() {
102
+ const {
103
+ instance,
104
+ allChildren,
105
+ tree: {
106
+ tag
107
+ }
108
+ } = this;
109
+
110
+ if (tag === Tag.HostPortal) {
111
+ return '';
112
+ }
113
+
114
+ if (instance instanceof HTMLElement) {
115
+ return instance.outerHTML;
116
+ }
117
+
118
+ return allChildren.reduce((text, child) => text + (typeof child === 'string' ? child : child.html()), '');
119
+ }
120
+
121
+ is(type) {
122
+ return isMatchingType(this.type, type);
123
+ }
124
+
125
+ find(type, props) {
126
+ return this.elementDescendants.find(element => isMatchingType(element.type, type) && (props == null || equalSubset(props, element.props))) || null;
127
+ }
128
+
129
+ findAll(type, props) {
130
+ return this.elementDescendants.filter(element => isMatchingType(element.type, type) && (props == null || equalSubset(props, element.props)));
131
+ }
132
+
133
+ findWhere(predicate) {
134
+ return this.elementDescendants.find(element => predicate(element)) || null;
135
+ }
136
+
137
+ findAllWhere(predicate) {
138
+ return this.elementDescendants.filter(element => predicate(element));
139
+ }
140
+
141
+ trigger(prop, ...args) {
142
+ return this.root.act(() => {
143
+ const propValue = this.props[prop];
144
+
145
+ if (propValue == null) {
146
+ throw new Error(`Attempted to call prop ${prop} but it was not defined.`);
147
+ }
148
+
149
+ return propValue(...args);
150
+ });
151
+ }
152
+
153
+ triggerKeypath(keypath, ...args) {
154
+ return this.root.act(() => {
155
+ const {
156
+ props
157
+ } = this;
158
+ const parts = keypath.split(/[.[\]]/g).filter(Boolean);
159
+ let currentProp = props;
160
+ const currentKeypath = [];
161
+
162
+ for (const part of parts) {
163
+ if (currentProp == null || typeof currentProp !== 'object') {
164
+ throw new Error(`Attempted to access field keypath '${currentKeypath.join('.')}', but it was not an object.`);
165
+ }
166
+
167
+ currentProp = currentProp[part];
168
+ currentKeypath.push(part);
169
+ }
170
+
171
+ if (typeof currentProp !== 'function') {
172
+ throw new Error(`Value at keypath '${keypath}' is not a function.`);
173
+ }
174
+
175
+ return currentProp(...args);
176
+ });
177
+ }
178
+
179
+ debug(options) {
180
+ return toReactString(this, options);
181
+ }
182
+
183
+ toString() {
184
+ return `<${nodeName(this)} />`;
185
+ }
186
+
187
+ }
188
+
189
+ function isMatchingType(type, test) {
190
+ if (type === test) {
191
+ return true;
192
+ }
193
+
194
+ if (test == null) {
195
+ return false;
196
+ }
197
+
198
+ return test.type != null && isMatchingType(type, test.type);
199
+ }
200
+
201
+ function equalSubset(subset, full) {
202
+ return Object.keys(subset).every(key => key in full && full[key] === subset[key]);
203
+ }
204
+
205
+ function getDescendants(element) {
206
+ const descendants = []; // eslint-disable-next-line @typescript-eslint/prefer-for-of
207
+
208
+ for (let i = 0; i < element.allChildren.length; i++) {
209
+ const child = element.allChildren[i];
210
+
211
+ if (typeof child !== 'string') {
212
+ descendants.push(child); // eslint-disable-next-line prefer-spread
213
+
214
+ descendants.push.apply(descendants, child.elementDescendants);
215
+ }
216
+ }
217
+
218
+ return descendants;
219
+ }
220
+
221
+ export { Element };
@@ -0,0 +1,5 @@
1
+ export { Root } from './root.mjs';
2
+ export { Element } from './element.mjs';
3
+ export { CustomRoot, createMount, mount } from './mount.mjs';
4
+ export { destroyAll } from './destroy.mjs';
5
+ export { nodeName, toPropString, toReactString } from './toReactString.mjs';
@@ -0,0 +1,41 @@
1
+ import { matcherHint, RECEIVED_COLOR, EXPECTED_COLOR, printExpected } from 'jest-matcher-utils';
2
+ import { assertIsNode, assertIsType, printType, diffs, pluralize } from './utilities.mjs';
3
+
4
+ function toContainReactComponent(node, type, props) {
5
+ assertIsNode(node, {
6
+ expectation: 'toContainReactComponent',
7
+ isNot: this.isNot
8
+ });
9
+ assertIsType(type, {
10
+ expectation: 'toContainReactComponent',
11
+ isNot: this.isNot
12
+ });
13
+ const foundByType = node.findAll(type);
14
+ const foundByProps = props == null ? foundByType : foundByType.filter(element => Object.keys(props).every(key => this.equals(props[key], element.props[key])));
15
+ const pass = foundByProps.length > 0;
16
+ const message = pass ? () => `${matcherHint('.not.toContainReactComponent')}\n\n` + `Expected the React element:\n ${RECEIVED_COLOR(node.toString())}\n` + `Not to contain component:\n ${EXPECTED_COLOR(printType(type))}\n${props ? `With props matching:\n ${printExpected(props)}\n` : ''}` + `But ${foundByProps.length} matching ${printType(type)} ${foundByProps.length === 1 ? 'elements were' : 'element was'} found.\n` : () => `${`${matcherHint('.toContainReactComponent')}\n\n` + `Expected the React element:\n ${RECEIVED_COLOR(node.toString())}\n` + `To contain component:\n ${EXPECTED_COLOR(printType(type))}\n${props ? `With props matching:\n ${printExpected(props)}\n` : ''}`}${foundByType.length === 0 ? `But no matching ${printType(type)} elements were found.\n` : `But the ${foundByType.length === 1 ? 'found element has' : 'found elements have'} the following prop differences:\n\n${diffs(foundByType, props, this.expand)}`}`;
17
+ return {
18
+ pass,
19
+ message
20
+ };
21
+ }
22
+ function toContainReactComponentTimes(node, type, times, props) {
23
+ assertIsNode(node, {
24
+ expectation: 'toContainReactComponentTimes',
25
+ isNot: this.isNot
26
+ });
27
+ assertIsType(type, {
28
+ expectation: 'toContainReactComponent',
29
+ isNot: this.isNot
30
+ });
31
+ const foundByType = node.findAll(type);
32
+ const foundByProps = props == null ? foundByType : foundByType.filter(element => Object.keys(props).every(key => this.equals(props[key], element.props[key])));
33
+ const pass = foundByProps.length === times;
34
+ const message = pass ? () => [`${matcherHint('.not.toContainReactComponentTimes')}\n`, `Expected the React element:\n ${RECEIVED_COLOR(node.toString())}`, `Not to contain component:\n ${EXPECTED_COLOR(printType(type))}`, `${times} ${pluralize('time', times)}, but it did.`].join('\n') : () => [`${matcherHint('.toContainReactComponentTimes')}\n`, `Expected the React element:\n ${RECEIVED_COLOR(node.toString())}`, `To contain component:\n ${EXPECTED_COLOR(printType(type))}`, `${times} ${pluralize('time', times)}, but it was found ${foundByProps.length}.`].join('\n');
35
+ return {
36
+ pass,
37
+ message
38
+ };
39
+ }
40
+
41
+ export { toContainReactComponent, toContainReactComponentTimes };
@@ -0,0 +1,21 @@
1
+ import { matcherHint, RECEIVED_COLOR, EXPECTED_COLOR, printExpected } from 'jest-matcher-utils';
2
+ import { assertIsNode, printType, diffs } from './utilities.mjs';
3
+
4
+ function toProvideReactContext(node, Context, value) {
5
+ assertIsNode(node, {
6
+ expectation: 'toProvideReactContext',
7
+ isNot: this.isNot
8
+ });
9
+ const foundByType = node.findAll(Context.Provider);
10
+ const foundByValue = value == null ? foundByType : foundByType.filter(element => this.equals(value, element.prop('value')));
11
+ const pass = foundByValue.length > 0;
12
+ const message = pass ? () => `${matcherHint('.not.toProvideReactContext')}\n\n` + `Expected the React element:\n ${RECEIVED_COLOR(node.toString())}\n` + `Not to contain context provider:\n ${EXPECTED_COLOR(printType(Context.Provider))}\n${value ? `With value matching:\n ${printExpected(value)}\n` : ''}` + `But ${foundByValue.length} matching ${printType(Context.Provider)}${foundByValue.length === 1 ? 's were' : ' was'} found.\n` : () => `${`${matcherHint('.toProvideReactContext')}\n\n` + `Expected the React element:\n ${RECEIVED_COLOR(node.toString())}\n` + `To contain context provider:\n ${EXPECTED_COLOR(printType(Context.Provider))}\n${value ? `With value matching:\n ${printExpected(value)}\n` : ''}`}${foundByType.length === 0 ? `But no matching ${printType(Context.Provider)}s were found.\n` : `But the ${foundByType.length === 1 ? 'found provider has' : 'found provider have'} had different values:\n\n${diffs(foundByType, {
13
+ value
14
+ }, this.expand)}`}`;
15
+ return {
16
+ pass,
17
+ message
18
+ };
19
+ }
20
+
21
+ export { toProvideReactContext };
@@ -0,0 +1,14 @@
1
+ import { toHaveReactProps, toHaveReactDataProps } from './props.mjs';
2
+ import { toContainReactComponent, toContainReactComponentTimes } from './components.mjs';
3
+ import { toProvideReactContext } from './context.mjs';
4
+ import { toContainReactText, toContainReactHtml } from './strings.mjs';
5
+
6
+ expect.extend({
7
+ toHaveReactProps,
8
+ toHaveReactDataProps,
9
+ toContainReactComponent,
10
+ toContainReactComponentTimes,
11
+ toContainReactText,
12
+ toContainReactHtml,
13
+ toProvideReactContext
14
+ });
@@ -0,0 +1,33 @@
1
+ import { matcherHint, RECEIVED_COLOR, printExpected, printReceived } from 'jest-matcher-utils';
2
+ import { assertIsNode, diffPropsForNode } from './utilities.mjs';
3
+
4
+ function toHaveReactProps(node, props) {
5
+ assertIsNode(node, {
6
+ expectation: 'toHaveReactProps',
7
+ isNot: this.isNot
8
+ });
9
+
10
+ if (props == null || typeof props !== 'object') {
11
+ return {
12
+ pass: false,
13
+ message: () => `You passed ${props == null ? String(props) : `a ${typeof props}`} as props, but it must be an object.`
14
+ };
15
+ }
16
+
17
+ const pass = Object.keys(props).every(key => this.equals(props[key], node.props[key]));
18
+ const message = pass ? () => `${matcherHint('.not.toHaveReactProps', node.toString())}\n\n` + `Expected the React element:\n ${RECEIVED_COLOR(node.toString())}\n` + `Not to have props:\n ${printExpected(props)}\n` + `Received:\n ${printReceived(node.props)}\n` : () => {
19
+ const diffString = diffPropsForNode(node, props, {
20
+ expand: this.expand
21
+ });
22
+ return `${matcherHint('.toHaveReactProps', node.toString())}\n\n` + `Expected the React element:\n ${RECEIVED_COLOR(node.toString())}\n` + `To have props:\n ${printExpected(props)}\n` + `Received:\n ${printReceived(node.props)}\n${diffString ? `Difference:\n${diffString}\n` : ''}`;
23
+ };
24
+ return {
25
+ pass,
26
+ message
27
+ };
28
+ }
29
+ function toHaveReactDataProps(node, data) {
30
+ return toHaveReactProps.call(this, node, data);
31
+ }
32
+
33
+ export { toHaveReactDataProps, toHaveReactProps };
@@ -0,0 +1,37 @@
1
+ import { matcherHint, RECEIVED_COLOR, printExpected, INVERTED_COLOR, printReceived } from 'jest-matcher-utils';
2
+ import { assertIsNode } from './utilities.mjs';
3
+
4
+ function toContainReactText(node, text) {
5
+ assertIsNode(node, {
6
+ expectation: 'toContainReactText',
7
+ isNot: this.isNot
8
+ });
9
+ const nodeText = node.text();
10
+ const matchIndex = nodeText.indexOf(text);
11
+ const pass = matchIndex >= 0;
12
+ const message = pass ? () => `${matcherHint('.not.toContainReactText', node.toString())}\n\n` + `Expected the React element:\n ${RECEIVED_COLOR(node.toString())}\n` + `Not to contain text:\n ${printExpected(text)}\n` + `But it did:\n ${printReceivedWithHighlight(nodeText, matchIndex, text.length)}\n` : () => `${matcherHint('.not.toContainReactText', node.toString())}\n\n` + `Expected the React element:\n ${RECEIVED_COLOR(node.toString())}\n` + `With text content:\n ${printReceived(nodeText)}\n` + `To contain string:\n ${printExpected(text)}\n`;
13
+ return {
14
+ pass,
15
+ message
16
+ };
17
+ }
18
+ function toContainReactHtml(node, text) {
19
+ assertIsNode(node, {
20
+ expectation: 'toContainReactHtml',
21
+ isNot: this.isNot
22
+ });
23
+ const nodeHtml = node.html();
24
+ const matchIndex = nodeHtml.indexOf(text);
25
+ const pass = matchIndex >= 0;
26
+ const message = pass ? () => `${matcherHint('.not.toContainReactHtml', node.toString())}\n\n` + `Expected the React element:\n ${RECEIVED_COLOR(node.toString())}\n` + `Not to contain HTML:\n ${printExpected(text)}\n` + `But it did:\n ${printReceivedWithHighlight(nodeHtml, matchIndex, text.length)}\n` : () => `${matcherHint('.not.toContainReactHtml', node.toString())}\n\n` + `Expected the React element:\n ${RECEIVED_COLOR(node.toString())}\n` + `With HTML content:\n ${printReceived(nodeHtml)}\n` + `To contain HTML:\n ${printExpected(text)}\n`;
27
+ return {
28
+ pass,
29
+ message
30
+ };
31
+ }
32
+
33
+ function printReceivedWithHighlight(text, start, length) {
34
+ return RECEIVED_COLOR(`"${text.slice(0, start)}${INVERTED_COLOR(text.slice(start, start + length))}${text.slice(start + length)}"`);
35
+ }
36
+
37
+ export { toContainReactHtml, toContainReactText };
@@ -0,0 +1,101 @@
1
+ import { diff, matcherErrorMessage, matcherHint, RECEIVED_COLOR, printWithType, printReceived, printExpected } from 'jest-matcher-utils';
2
+ import { Root } from '../root.mjs';
3
+ import { Element } from '../element.mjs';
4
+
5
+ function assertIsNode(node, {
6
+ expectation,
7
+ isNot
8
+ }) {
9
+ if (node == null) {
10
+ throw new Error(matcherErrorMessage(matcherHint(`.${expectation}`, undefined, undefined, {
11
+ isNot
12
+ }), `${RECEIVED_COLOR('received')} value must be an @shopify/react-testing Root or Element object`, `Received ${RECEIVED_COLOR('null')}.\nThis usually means that your \`.findX\` method failed to find any matching elements.`));
13
+ }
14
+
15
+ if (Array.isArray(node) && node.length > 1 && (node[0] instanceof Root || node[0] instanceof Element)) {
16
+ throw new Error(matcherErrorMessage(matcherHint(`.${expectation}`, undefined, undefined, {
17
+ isNot
18
+ }), `${RECEIVED_COLOR('received')} value must be an @shopify/react-testing Root or Element object`, `Received an ${RECEIVED_COLOR('array of Root or Element objects')}.\nThis usually means that you passed in the result of \`.findAllX\`. Pass the result of \`.findX\` instead.`));
19
+ }
20
+
21
+ if (!(node instanceof Root) && !(node instanceof Element)) {
22
+ throw new Error(matcherErrorMessage(matcherHint(`.${expectation}`, undefined, undefined, {
23
+ isNot
24
+ }), `${RECEIVED_COLOR('received')} value must be an @shopify/react-testing Root or Element object`, printWithType('Received', node, printReceived)));
25
+ }
26
+ }
27
+ function assertIsType(type, {
28
+ expectation,
29
+ isNot
30
+ }) {
31
+ if (type == null) {
32
+ throw new Error(matcherErrorMessage(matcherHint(`.${expectation}`, undefined, undefined, {
33
+ isNot
34
+ }), `${RECEIVED_COLOR('expected')} value must be a string or a valid React component.`, printWithType('Expected', type, printExpected)));
35
+ }
36
+ }
37
+ function diffs(element, props, expand) {
38
+ return element.reduce((diffs, element, index) => {
39
+ const separator = index === 0 ? '' : '\n\n';
40
+ return `${diffs}${separator}${normalizedDiff(element, props, {
41
+ expand,
42
+ showLegend: index === 0
43
+ })}`;
44
+ }, '');
45
+ }
46
+
47
+ function normalizedDiff(element, props, {
48
+ expand = false,
49
+ showLegend = false
50
+ }) {
51
+ const result = diffPropsForNode(element, props, {
52
+ expand
53
+ }) || '';
54
+ return showLegend ? result : result.split('\n\n')[1];
55
+ }
56
+
57
+ function printType(type) {
58
+ if (typeof type === 'object' && '_context' in type) {
59
+ const context = type._context;
60
+ const componentName = type === context.Provider ? 'Provider' : 'Consumer';
61
+
62
+ const _displayName = context.displayName || 'Context';
63
+
64
+ return `<${_displayName}.${componentName} />`;
65
+ }
66
+
67
+ const displayName = typeof type === 'string' ? type : type.displayName || type.name || 'Component';
68
+ return `<${displayName} />`;
69
+ }
70
+ function diffPropsForNode(node, props, {
71
+ expand = false
72
+ }) {
73
+ return diff(props, getObjectSubset(node.props, props), {
74
+ expand
75
+ });
76
+ } // Original from https://github.com/facebook/jest/blob/master/packages/expect/src/utils.ts#L107
77
+
78
+ function getObjectSubset(object, subset) {
79
+ if (Array.isArray(object)) {
80
+ if (Array.isArray(subset) && subset.length === object.length) {
81
+ return subset.map((sub, i) => getObjectSubset(object[i], sub));
82
+ }
83
+ } else if (object instanceof Date) {
84
+ return object;
85
+ } else if (typeof object === 'object' && object !== null && typeof subset === 'object' && subset !== null) {
86
+ const trimmed = {};
87
+ Object.keys(subset).filter(key => Reflect.has(object, key)).forEach(key => trimmed[key] = getObjectSubset(object[key], subset[key]));
88
+
89
+ if (Object.keys(trimmed).length > 0) {
90
+ return trimmed;
91
+ }
92
+ }
93
+
94
+ return object;
95
+ }
96
+
97
+ function pluralize(word, count) {
98
+ return count === 1 ? word : `${word}s`;
99
+ }
100
+
101
+ export { assertIsNode, assertIsType, diffPropsForNode, diffs, pluralize, printType };
@@ -0,0 +1,70 @@
1
+ import { objectSpread2 as _objectSpread2 } from './_virtual/_rollupPluginBabelHelpers.mjs';
2
+ import { Root } from './root.mjs';
3
+ export { Root } from './root.mjs';
4
+
5
+ function mount(element) {
6
+ return new Root(element);
7
+ }
8
+ class CustomRoot extends Root {
9
+ constructor(tree, context, options) {
10
+ super(tree, options);
11
+ this.context = context;
12
+ }
13
+
14
+ }
15
+ function createMount({
16
+ render,
17
+ context: createContext = defaultContext,
18
+ afterMount = defaultAfterMount,
19
+ cleanup
20
+ }) {
21
+ function mount(element, options = {}) {
22
+ const context = createContext(options);
23
+ const wrapper = new CustomRoot(element, context, {
24
+ render: element => render(element, context, options),
25
+ resolveRoot: root => root.find(element.type)
26
+ });
27
+
28
+ if (cleanup) {
29
+ const originalDestroy = wrapper.destroy.bind(wrapper);
30
+
31
+ wrapper.destroy = () => {
32
+ cleanup(wrapper, options);
33
+ originalDestroy();
34
+ };
35
+ }
36
+
37
+ const afterMountResult = afterMount(wrapper, options);
38
+ return afterMountResult != null && 'then' in afterMountResult ? afterMountResult.then(() => wrapper) : wrapper;
39
+ }
40
+
41
+ Reflect.defineProperty(mount, 'extend', {
42
+ writable: false,
43
+ value: ({
44
+ context: createAdditionalContext = defaultContext,
45
+ render: additionalRender,
46
+ afterMount: additionalAfterMount = defaultAfterMount
47
+ }) => {
48
+ return createMount({
49
+ context: options => _objectSpread2(_objectSpread2({}, createContext(options)), createAdditionalContext(options)),
50
+ render: (element, context, options) => render(additionalRender(element, context, options), context, options),
51
+ afterMount: (wrapper, options) => {
52
+ const result = additionalAfterMount(wrapper, options);
53
+
54
+ const finalResult = () => afterMount(wrapper, options);
55
+
56
+ return result != null && 'then' in result ? result.then(finalResult) : finalResult();
57
+ }
58
+ });
59
+ }
60
+ });
61
+ return mount;
62
+ }
63
+
64
+ function defaultContext() {
65
+ return {};
66
+ }
67
+
68
+ function defaultAfterMount() {}
69
+
70
+ export { CustomRoot, createMount, mount };