adnbn 0.12.0 → 0.14.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 (400) hide show
  1. package/dist/cli/builders/manifest/ManifestBase.d.ts +4 -1
  2. package/dist/cli/builders/manifest/ManifestBase.js +14 -0
  3. package/dist/cli/builders/manifest/ManifestBase.js.map +1 -1
  4. package/dist/cli/bundler/layers.d.ts +3 -3
  5. package/dist/cli/bundler/layers.js +6 -7
  6. package/dist/cli/bundler/layers.js.map +1 -1
  7. package/dist/cli/bundler/plugins/build-assets-map/BuildAssetsMapPlugin.js +42 -14
  8. package/dist/cli/bundler/plugins/build-assets-map/BuildAssetsMapPlugin.js.map +1 -1
  9. package/dist/cli/bundler/plugins/build-assets-map/normalize.d.ts +3 -0
  10. package/dist/cli/bundler/plugins/build-assets-map/normalize.js +24 -0
  11. package/dist/cli/bundler/plugins/build-assets-map/normalize.js.map +1 -0
  12. package/dist/cli/bundler/plugins/build-assets-map/templates/runtime.template.d.ts +2 -0
  13. package/dist/cli/bundler/plugins/build-assets-map/templates.d.ts +9 -0
  14. package/dist/cli/bundler/plugins/build-assets-map/templates.js +32 -0
  15. package/dist/cli/bundler/plugins/entrypoint/EntrypointPlugin.js +11 -0
  16. package/dist/cli/bundler/plugins/entrypoint/EntrypointPlugin.js.map +1 -1
  17. package/dist/cli/bundler/plugins/isolated-styles/IsolatedStylesPlugin.d.ts +1 -1
  18. package/dist/cli/bundler/plugins/isolated-styles/IsolatedStylesPlugin.js +38 -13
  19. package/dist/cli/bundler/plugins/isolated-styles/IsolatedStylesPlugin.js.map +1 -1
  20. package/dist/cli/bundler/plugins/isolated-styles/chunks.d.ts +5 -1
  21. package/dist/cli/bundler/plugins/isolated-styles/chunks.js +17 -16
  22. package/dist/cli/bundler/plugins/isolated-styles/chunks.js.map +1 -1
  23. package/dist/cli/bundler/plugins/isolated-styles/split-chunks.d.ts +4 -0
  24. package/dist/cli/bundler/plugins/isolated-styles/split-chunks.js +51 -0
  25. package/dist/cli/bundler/plugins/isolated-styles/split-chunks.js.map +1 -0
  26. package/dist/cli/bundler/plugins/isolated-styles/templates.js +36 -6
  27. package/dist/cli/entrypoint/finder/AbstractOverrideFinder.d.ts +15 -0
  28. package/dist/cli/entrypoint/finder/AbstractOverrideFinder.js +20 -0
  29. package/dist/cli/entrypoint/finder/AbstractOverrideFinder.js.map +1 -0
  30. package/dist/cli/entrypoint/finder/AbstractViewFinder.d.ts +6 -1
  31. package/dist/cli/entrypoint/finder/AbstractViewFinder.js +15 -0
  32. package/dist/cli/entrypoint/finder/AbstractViewFinder.js.map +1 -1
  33. package/dist/cli/entrypoint/finder/BookmarksFinder.d.ts +9 -0
  34. package/dist/cli/entrypoint/finder/BookmarksFinder.js +18 -0
  35. package/dist/cli/entrypoint/finder/BookmarksFinder.js.map +1 -0
  36. package/dist/cli/entrypoint/finder/CommandFinder.d.ts +4 -0
  37. package/dist/cli/entrypoint/finder/CommandFinder.js +20 -6
  38. package/dist/cli/entrypoint/finder/CommandFinder.js.map +1 -1
  39. package/dist/cli/entrypoint/finder/HistoryFinder.d.ts +9 -0
  40. package/dist/cli/entrypoint/finder/HistoryFinder.js +18 -0
  41. package/dist/cli/entrypoint/finder/HistoryFinder.js.map +1 -0
  42. package/dist/cli/entrypoint/finder/NewtabFinder.d.ts +9 -0
  43. package/dist/cli/entrypoint/finder/NewtabFinder.js +18 -0
  44. package/dist/cli/entrypoint/finder/NewtabFinder.js.map +1 -0
  45. package/dist/cli/entrypoint/finder/OptionsFinder.d.ts +2 -2
  46. package/dist/cli/entrypoint/finder/OptionsFinder.js +2 -2
  47. package/dist/cli/entrypoint/finder/OptionsFinder.js.map +1 -1
  48. package/dist/cli/entrypoint/finder/PageFinder.js +1 -1
  49. package/dist/cli/entrypoint/finder/PageFinder.js.map +1 -1
  50. package/dist/cli/entrypoint/finder/PopupFinder.d.ts +2 -2
  51. package/dist/cli/entrypoint/finder/PopupFinder.js +2 -2
  52. package/dist/cli/entrypoint/finder/PopupFinder.js.map +1 -1
  53. package/dist/cli/entrypoint/finder/SidebarFinder.d.ts +2 -2
  54. package/dist/cli/entrypoint/finder/SidebarFinder.js +2 -2
  55. package/dist/cli/entrypoint/finder/SidebarFinder.js.map +1 -1
  56. package/dist/cli/entrypoint/finder/ViewCspFinder.d.ts +2 -3
  57. package/dist/cli/entrypoint/finder/ViewCspFinder.js.map +1 -1
  58. package/dist/cli/entrypoint/finder/ViewPermissionsFinder.d.ts +22 -0
  59. package/dist/cli/entrypoint/finder/ViewPermissionsFinder.js +43 -0
  60. package/dist/cli/entrypoint/finder/ViewPermissionsFinder.js.map +1 -0
  61. package/dist/cli/entrypoint/finder/index.d.ts +5 -0
  62. package/dist/cli/entrypoint/finder/index.js +50 -40
  63. package/dist/cli/entrypoint/finder/index.js.map +1 -1
  64. package/dist/cli/entrypoint/name/NameGenerator.d.ts +2 -0
  65. package/dist/cli/entrypoint/name/NameGenerator.js +5 -1
  66. package/dist/cli/entrypoint/name/NameGenerator.js.map +1 -1
  67. package/dist/cli/entrypoint/parser/AbstractOverrideParser.d.ts +9 -0
  68. package/dist/cli/entrypoint/parser/AbstractOverrideParser.js +11 -0
  69. package/dist/cli/entrypoint/parser/AbstractOverrideParser.js.map +1 -0
  70. package/dist/cli/entrypoint/parser/BackgroundParser.js +3 -6
  71. package/dist/cli/entrypoint/parser/BackgroundParser.js.map +1 -1
  72. package/dist/cli/entrypoint/parser/BookmarksParser.d.ts +5 -0
  73. package/dist/cli/entrypoint/parser/BookmarksParser.js +10 -0
  74. package/dist/cli/entrypoint/parser/BookmarksParser.js.map +1 -0
  75. package/dist/cli/entrypoint/parser/HistoryParser.d.ts +5 -0
  76. package/dist/cli/entrypoint/parser/HistoryParser.js +10 -0
  77. package/dist/cli/entrypoint/parser/HistoryParser.js.map +1 -0
  78. package/dist/cli/entrypoint/parser/NewtabParser.d.ts +5 -0
  79. package/dist/cli/entrypoint/parser/NewtabParser.js +10 -0
  80. package/dist/cli/entrypoint/parser/NewtabParser.js.map +1 -0
  81. package/dist/cli/entrypoint/parser/OptionsParser.js +2 -1
  82. package/dist/cli/entrypoint/parser/OptionsParser.js.map +1 -1
  83. package/dist/cli/entrypoint/parser/PopupParser.js +2 -1
  84. package/dist/cli/entrypoint/parser/PopupParser.js.map +1 -1
  85. package/dist/cli/entrypoint/parser/SidebarParser.js +2 -1
  86. package/dist/cli/entrypoint/parser/SidebarParser.js.map +1 -1
  87. package/dist/cli/entrypoint/parser/ViewCspParser.d.ts +1 -1
  88. package/dist/cli/entrypoint/parser/ViewParser.d.ts +1 -1243
  89. package/dist/cli/entrypoint/parser/ViewParser.js +2 -72
  90. package/dist/cli/entrypoint/parser/ViewParser.js.map +1 -1
  91. package/dist/cli/entrypoint/parser/index.d.ts +4 -0
  92. package/dist/cli/entrypoint/parser/index.js +28 -20
  93. package/dist/cli/entrypoint/parser/index.js.map +1 -1
  94. package/dist/cli/entrypoint/parser/schemas/html.d.ts +903 -0
  95. package/dist/cli/entrypoint/parser/schemas/html.js +64 -0
  96. package/dist/cli/entrypoint/parser/schemas/html.js.map +1 -0
  97. package/dist/cli/entrypoint/parser/schemas/permissions.d.ts +23 -0
  98. package/dist/cli/entrypoint/parser/schemas/permissions.js +11 -0
  99. package/dist/cli/entrypoint/parser/schemas/permissions.js.map +1 -0
  100. package/dist/cli/plugins/content/bundler.d.ts +0 -3
  101. package/dist/cli/plugins/content/bundler.js +4 -20
  102. package/dist/cli/plugins/content/bundler.js.map +1 -1
  103. package/dist/cli/plugins/content/index.js +2 -3
  104. package/dist/cli/plugins/content/index.js.map +1 -1
  105. package/dist/cli/plugins/index.d.ts +1 -0
  106. package/dist/cli/plugins/index.js +22 -20
  107. package/dist/cli/plugins/index.js.map +1 -1
  108. package/dist/cli/plugins/locale/Locale.js +5 -2
  109. package/dist/cli/plugins/locale/Locale.js.map +1 -1
  110. package/dist/cli/plugins/options/index.js +1 -1
  111. package/dist/cli/plugins/options/index.js.map +1 -1
  112. package/dist/cli/plugins/override/Override.d.ts +31 -0
  113. package/dist/cli/plugins/override/Override.js +112 -0
  114. package/dist/cli/plugins/override/Override.js.map +1 -0
  115. package/dist/cli/plugins/override/index.d.ts +2 -0
  116. package/dist/cli/plugins/override/index.js +48 -0
  117. package/dist/cli/plugins/override/index.js.map +1 -0
  118. package/dist/cli/plugins/popup/index.js +1 -1
  119. package/dist/cli/plugins/popup/index.js.map +1 -1
  120. package/dist/cli/plugins/sidebar/index.js +1 -2
  121. package/dist/cli/plugins/sidebar/index.js.map +1 -1
  122. package/dist/cli/plugins/style/index.d.ts +1 -2
  123. package/dist/cli/plugins/style/index.js +19 -30
  124. package/dist/cli/plugins/style/index.js.map +1 -1
  125. package/dist/cli/plugins/view/View.d.ts +1 -1
  126. package/dist/cli/plugins/view/View.js +2 -10
  127. package/dist/cli/plugins/view/View.js.map +1 -1
  128. package/dist/cli/plugins/view/index.js +10 -1
  129. package/dist/cli/plugins/view/index.js.map +1 -1
  130. package/dist/cli/resolvers/config.js +3 -2
  131. package/dist/cli/resolvers/config.js.map +1 -1
  132. package/dist/cli/virtual/index.js +14 -17
  133. package/dist/cli/virtual/virtual.d.ts +7 -127
  134. package/dist/entry/background/Builder.js +1 -1
  135. package/dist/entry/background/Builder.js.map +1 -1
  136. package/dist/entry/background/index.d.ts +1 -1
  137. package/dist/entry/background/index.js +3 -2
  138. package/dist/entry/background/index.js.map +1 -1
  139. package/dist/entry/background/resolvers/definition.d.ts +5 -1
  140. package/dist/entry/background/resolvers/definition.js +15 -4
  141. package/dist/entry/background/resolvers/definition.js.map +1 -1
  142. package/dist/entry/command/Builder.js +1 -1
  143. package/dist/entry/command/Builder.js.map +1 -1
  144. package/dist/entry/command/index.d.ts +1 -1
  145. package/dist/entry/command/index.js +3 -2
  146. package/dist/entry/command/index.js.map +1 -1
  147. package/dist/entry/command/resolvers/definition.d.ts +6 -2
  148. package/dist/entry/command/resolvers/definition.js +14 -4
  149. package/dist/entry/command/resolvers/definition.js.map +1 -1
  150. package/dist/entry/content/adapters/react/Builder.d.ts +4 -2
  151. package/dist/entry/content/adapters/react/Builder.js +13 -5
  152. package/dist/entry/content/adapters/react/Builder.js.map +1 -1
  153. package/dist/entry/content/adapters/react/Node.js +13 -8
  154. package/dist/entry/content/adapters/react/Node.js.map +1 -1
  155. package/dist/entry/content/adapters/react/definition.d.ts +2 -0
  156. package/dist/entry/content/adapters/react/definition.js +13 -0
  157. package/dist/entry/content/adapters/react/definition.js.map +1 -0
  158. package/dist/entry/content/adapters/react/index.d.ts +1 -1
  159. package/dist/entry/content/adapters/react/index.js +1 -1
  160. package/dist/entry/content/adapters/react/index.js.map +1 -1
  161. package/dist/entry/content/adapters/vanilla/Builder.d.ts +4 -2
  162. package/dist/entry/content/adapters/vanilla/Builder.js +14 -5
  163. package/dist/entry/content/adapters/vanilla/Builder.js.map +1 -1
  164. package/dist/entry/content/adapters/vanilla/Node.js +3 -5
  165. package/dist/entry/content/adapters/vanilla/Node.js.map +1 -1
  166. package/dist/entry/content/adapters/vanilla/definition.d.ts +2 -0
  167. package/dist/entry/content/adapters/vanilla/definition.js +9 -0
  168. package/dist/entry/content/adapters/vanilla/definition.js.map +1 -0
  169. package/dist/entry/content/adapters/vanilla/index.d.ts +1 -1
  170. package/dist/entry/content/adapters/vanilla/index.js +1 -1
  171. package/dist/entry/content/adapters/vanilla/index.js.map +1 -1
  172. package/dist/entry/content/lifecycle/Builder.d.ts +10 -4
  173. package/dist/entry/content/lifecycle/Builder.js +107 -69
  174. package/dist/entry/content/lifecycle/Builder.js.map +1 -1
  175. package/dist/entry/content/lifecycle/MountBuilder.d.ts +6 -3
  176. package/dist/entry/content/lifecycle/MountBuilder.js +32 -16
  177. package/dist/entry/content/lifecycle/MountBuilder.js.map +1 -1
  178. package/dist/entry/content/lifecycle/context/ContainerRegistry.d.ts +7 -0
  179. package/dist/entry/content/lifecycle/context/ContainerRegistry.js +45 -0
  180. package/dist/entry/content/lifecycle/context/ContainerRegistry.js.map +1 -0
  181. package/dist/entry/content/lifecycle/context/Context.d.ts +6 -3
  182. package/dist/entry/content/lifecycle/context/Context.js +21 -6
  183. package/dist/entry/content/lifecycle/context/Context.js.map +1 -1
  184. package/dist/entry/content/lifecycle/context/ManagedContext.d.ts +4 -1
  185. package/dist/entry/content/lifecycle/context/ManagedContext.js +7 -0
  186. package/dist/entry/content/lifecycle/context/ManagedContext.js.map +1 -1
  187. package/dist/entry/content/lifecycle/context/index.d.ts +1 -0
  188. package/dist/entry/content/lifecycle/context/index.js +6 -4
  189. package/dist/entry/content/lifecycle/context/index.js.map +1 -1
  190. package/dist/entry/content/lifecycle/markers/AttributeMarker.js +3 -1
  191. package/dist/entry/content/lifecycle/markers/AttributeMarker.js.map +1 -1
  192. package/dist/entry/content/lifecycle/nodes/EventNode.d.ts +4 -2
  193. package/dist/entry/content/lifecycle/nodes/EventNode.js +7 -2
  194. package/dist/entry/content/lifecycle/nodes/EventNode.js.map +1 -1
  195. package/dist/entry/content/lifecycle/nodes/FrameNode.d.ts +2 -1
  196. package/dist/entry/content/lifecycle/nodes/FrameNode.js +3 -0
  197. package/dist/entry/content/lifecycle/nodes/FrameNode.js.map +1 -1
  198. package/dist/entry/content/lifecycle/nodes/MarkerNode.d.ts +1 -1
  199. package/dist/entry/content/lifecycle/nodes/MarkerNode.js.map +1 -1
  200. package/dist/entry/content/lifecycle/nodes/MountNode.d.ts +7 -3
  201. package/dist/entry/content/lifecycle/nodes/MountNode.js +47 -12
  202. package/dist/entry/content/lifecycle/nodes/MountNode.js.map +1 -1
  203. package/dist/entry/content/lifecycle/nodes/Node.d.ts +1 -1
  204. package/dist/entry/content/lifecycle/nodes/Node.js.map +1 -1
  205. package/dist/entry/content/lifecycle/nodes/RenderNode.d.ts +13 -4
  206. package/dist/entry/content/lifecycle/nodes/RenderNode.js +71 -6
  207. package/dist/entry/content/lifecycle/nodes/RenderNode.js.map +1 -1
  208. package/dist/entry/content/lifecycle/nodes/ShadowNode.d.ts +2 -1
  209. package/dist/entry/content/lifecycle/nodes/ShadowNode.js +3 -0
  210. package/dist/entry/content/lifecycle/nodes/ShadowNode.js.map +1 -1
  211. package/dist/entry/content/lifecycle/types.d.ts +28 -0
  212. package/dist/entry/content/resolvers/watch.d.ts +1 -1
  213. package/dist/entry/content/resolvers/watch.js +29 -14
  214. package/dist/entry/content/resolvers/watch.js.map +1 -1
  215. package/dist/entry/core/react.d.ts +6 -0
  216. package/dist/entry/core/react.js +16 -0
  217. package/dist/entry/core/react.js.map +1 -0
  218. package/dist/entry/core/render.d.ts +5 -0
  219. package/dist/entry/core/render.js +16 -0
  220. package/dist/entry/core/render.js.map +1 -0
  221. package/dist/entry/offscreen/Builder.d.ts +6 -7
  222. package/dist/entry/offscreen/Builder.js +12 -13
  223. package/dist/entry/offscreen/Builder.js.map +1 -1
  224. package/dist/entry/offscreen/TransportBuilder.d.ts +1 -1
  225. package/dist/entry/offscreen/TransportBuilder.js +4 -3
  226. package/dist/entry/offscreen/TransportBuilder.js.map +1 -1
  227. package/dist/entry/offscreen/index.d.ts +5 -2
  228. package/dist/entry/offscreen/index.js +8 -2
  229. package/dist/entry/offscreen/index.js.map +1 -1
  230. package/dist/entry/offscreen/resolvers/definition.d.ts +4 -0
  231. package/dist/entry/offscreen/resolvers/definition.js +8 -0
  232. package/dist/entry/offscreen/resolvers/definition.js.map +1 -0
  233. package/dist/entry/relay/index.js.map +1 -1
  234. package/dist/entry/relay/resolvers/definition.d.ts +1 -1
  235. package/dist/entry/relay/resolvers/definition.js +2 -10
  236. package/dist/entry/relay/resolvers/definition.js.map +1 -1
  237. package/dist/entry/sandbox/Builder.d.ts +6 -7
  238. package/dist/entry/sandbox/Builder.js +8 -12
  239. package/dist/entry/sandbox/Builder.js.map +1 -1
  240. package/dist/entry/sandbox/TransportBuilder.d.ts +1 -1
  241. package/dist/entry/sandbox/TransportBuilder.js +4 -3
  242. package/dist/entry/sandbox/TransportBuilder.js.map +1 -1
  243. package/dist/entry/sandbox/index.d.ts +7 -2
  244. package/dist/entry/sandbox/index.js +10 -4
  245. package/dist/entry/sandbox/index.js.map +1 -1
  246. package/dist/entry/sandbox/resolvers/definition.d.ts +4 -0
  247. package/dist/entry/sandbox/resolvers/definition.js +8 -0
  248. package/dist/entry/sandbox/resolvers/definition.js.map +1 -0
  249. package/dist/entry/service/index.d.ts +1 -0
  250. package/dist/entry/service/index.js +3 -1
  251. package/dist/entry/service/index.js.map +1 -1
  252. package/dist/entry/service/resolvers/definition.d.ts +3 -0
  253. package/dist/entry/service/resolvers/definition.js +8 -0
  254. package/dist/entry/service/resolvers/definition.js.map +1 -0
  255. package/dist/entry/transport/AbstractBuilder.js +1 -1
  256. package/dist/entry/transport/AbstractBuilder.js.map +1 -1
  257. package/dist/entry/transport/resolvers/definition.d.ts +7 -5
  258. package/dist/entry/transport/resolvers/definition.js +15 -4
  259. package/dist/entry/transport/resolvers/definition.js.map +1 -1
  260. package/dist/entry/view/{core/Builder.d.ts → Builder.d.ts} +9 -4
  261. package/dist/entry/view/Builder.js +62 -0
  262. package/dist/entry/view/Builder.js.map +1 -0
  263. package/dist/entry/view/adapters/react/Builder.d.ts +6 -7
  264. package/dist/entry/view/adapters/react/Builder.js +20 -23
  265. package/dist/entry/view/adapters/react/Builder.js.map +1 -1
  266. package/dist/entry/view/adapters/react/definition.d.ts +2 -0
  267. package/dist/entry/view/adapters/react/definition.js +13 -0
  268. package/dist/entry/view/adapters/react/definition.js.map +1 -0
  269. package/dist/entry/view/adapters/react/index.d.ts +2 -1
  270. package/dist/entry/view/adapters/react/index.js +3 -1
  271. package/dist/entry/view/adapters/react/index.js.map +1 -1
  272. package/dist/entry/view/adapters/vanilla/Builder.d.ts +5 -6
  273. package/dist/entry/view/adapters/vanilla/Builder.js +14 -25
  274. package/dist/entry/view/adapters/vanilla/Builder.js.map +1 -1
  275. package/dist/entry/view/adapters/vanilla/definition.d.ts +2 -0
  276. package/dist/entry/view/adapters/vanilla/definition.js +9 -0
  277. package/dist/entry/view/adapters/vanilla/definition.js.map +1 -0
  278. package/dist/entry/view/adapters/vanilla/index.d.ts +2 -1
  279. package/dist/entry/view/adapters/vanilla/index.js +3 -1
  280. package/dist/entry/view/adapters/vanilla/index.js.map +1 -1
  281. package/dist/entry/view/{core/resolvers → resolvers}/container.d.ts +1 -1
  282. package/dist/entry/view/resolvers/container.js.map +1 -0
  283. package/dist/entry/view/resolvers/definition.d.ts +3 -0
  284. package/dist/entry/view/resolvers/definition.js +18 -0
  285. package/dist/entry/view/resolvers/definition.js.map +1 -0
  286. package/dist/main/index.d.ts +2 -0
  287. package/dist/main/index.js +2 -0
  288. package/dist/main/index.js.map +1 -1
  289. package/dist/main/override.d.ts +5 -0
  290. package/dist/main/override.js +15 -0
  291. package/dist/main/override.js.map +1 -0
  292. package/dist/main/permissions.d.ts +1 -0
  293. package/dist/main/permissions.js +1 -0
  294. package/dist/main/view.d.ts +1 -1
  295. package/dist/shared/locale/index.d.ts +1 -1
  296. package/dist/shared/locale/index.js +3 -1
  297. package/dist/shared/locale/index.js.map +1 -1
  298. package/dist/shared/locale/messages.d.ts +4 -0
  299. package/dist/shared/locale/messages.js +12 -0
  300. package/dist/shared/locale/messages.js.map +1 -1
  301. package/dist/types/background.d.ts +2 -8
  302. package/dist/types/background.js.map +1 -1
  303. package/dist/types/content/common.d.ts +8 -0
  304. package/dist/types/content/common.js.map +1 -1
  305. package/dist/types/content/definition.d.ts +5 -0
  306. package/dist/types/entrypoint.d.ts +5 -1
  307. package/dist/types/entrypoint.js +3 -0
  308. package/dist/types/entrypoint.js.map +1 -1
  309. package/dist/types/locale.d.ts +3 -0
  310. package/dist/types/locale.js.map +1 -1
  311. package/dist/types/manifest.d.ts +20 -2
  312. package/dist/types/manifest.js.map +1 -1
  313. package/dist/types/offscreen.d.ts +2 -2
  314. package/dist/types/offscreen.js.map +1 -1
  315. package/dist/types/options.d.ts +3 -2
  316. package/dist/types/override.d.ts +22 -0
  317. package/dist/types/override.js +1 -0
  318. package/dist/types/override.js.map +1 -0
  319. package/dist/types/page.d.ts +1 -1
  320. package/dist/types/permissions.d.ts +39 -0
  321. package/dist/types/permissions.js +1 -0
  322. package/dist/types/permissions.js.map +1 -0
  323. package/dist/types/plugin.d.ts +4 -1
  324. package/dist/types/popup.d.ts +3 -2
  325. package/dist/types/sandbox.d.ts +2 -2
  326. package/dist/types/sandbox.js.map +1 -1
  327. package/dist/types/sidebar.d.ts +3 -2
  328. package/dist/types/sidebar.js.map +1 -1
  329. package/dist/types/view/adapters/index.d.ts +2 -0
  330. package/dist/types/view/adapters/index.js +1 -0
  331. package/dist/types/view/adapters/index.js.map +1 -0
  332. package/dist/types/view/adapters/react.d.ts +4 -0
  333. package/dist/types/view/adapters/react.js +1 -0
  334. package/dist/types/view/adapters/react.js.map +1 -0
  335. package/dist/types/view/adapters/vanilla.d.ts +1 -0
  336. package/dist/types/view/adapters/vanilla.js +1 -0
  337. package/dist/types/view/adapters/vanilla.js.map +1 -0
  338. package/dist/types/{view.d.ts → view/common.d.ts} +2 -14
  339. package/dist/types/view/common.js +1 -0
  340. package/dist/types/view/common.js.map +1 -0
  341. package/dist/types/view/definition.d.ts +15 -0
  342. package/dist/types/view/definition.js +1 -0
  343. package/dist/types/view/definition.js.map +1 -0
  344. package/dist/types/view/index.d.ts +4 -0
  345. package/dist/types/view/index.js +1 -0
  346. package/dist/types/view/index.js.map +1 -0
  347. package/dist/types/view/render.d.ts +7 -0
  348. package/dist/types/view/render.js +1 -0
  349. package/dist/types/view/render.js.map +1 -0
  350. package/package.json +1 -3
  351. package/types/client.d.ts +3 -3
  352. package/dist/cli/plugins/style/types.d.ts +0 -5
  353. package/dist/entry/background/resolvers/index.d.ts +0 -1
  354. package/dist/entry/background/resolvers/index.js +0 -2
  355. package/dist/entry/background/resolvers/index.js.map +0 -1
  356. package/dist/entry/command/resolvers/index.d.ts +0 -1
  357. package/dist/entry/command/resolvers/index.js +0 -2
  358. package/dist/entry/command/resolvers/index.js.map +0 -1
  359. package/dist/entry/content/adapters/react/resolvers/definition.d.ts +0 -2
  360. package/dist/entry/content/adapters/react/resolvers/definition.js +0 -12
  361. package/dist/entry/content/adapters/react/resolvers/definition.js.map +0 -1
  362. package/dist/entry/content/adapters/react/resolvers/render.d.ts +0 -2
  363. package/dist/entry/content/adapters/react/resolvers/render.js +0 -9
  364. package/dist/entry/content/adapters/react/resolvers/render.js.map +0 -1
  365. package/dist/entry/content/adapters/vanilla/resolvers/definition.d.ts +0 -2
  366. package/dist/entry/content/adapters/vanilla/resolvers/definition.js +0 -9
  367. package/dist/entry/content/adapters/vanilla/resolvers/definition.js.map +0 -1
  368. package/dist/entry/content/adapters/vanilla/resolvers/render.d.ts +0 -3
  369. package/dist/entry/content/adapters/vanilla/resolvers/render.js +0 -15
  370. package/dist/entry/content/adapters/vanilla/resolvers/render.js.map +0 -1
  371. package/dist/entry/content/resolvers/index.d.ts +0 -6
  372. package/dist/entry/content/resolvers/index.js +0 -7
  373. package/dist/entry/content/resolvers/index.js.map +0 -1
  374. package/dist/entry/transport/index.d.ts +0 -1
  375. package/dist/entry/transport/index.js +0 -2
  376. package/dist/entry/transport/index.js.map +0 -1
  377. package/dist/entry/transport/resolvers/index.d.ts +0 -1
  378. package/dist/entry/transport/resolvers/index.js +0 -2
  379. package/dist/entry/transport/resolvers/index.js.map +0 -1
  380. package/dist/entry/view/adapters/react/resolvers/render.d.ts +0 -2
  381. package/dist/entry/view/adapters/react/resolvers/render.js +0 -11
  382. package/dist/entry/view/adapters/react/resolvers/render.js.map +0 -1
  383. package/dist/entry/view/core/Builder.js +0 -35
  384. package/dist/entry/view/core/Builder.js.map +0 -1
  385. package/dist/entry/view/core/resolvers/container.js.map +0 -1
  386. package/dist/entry/view/core/resolvers/definition.d.ts +0 -3
  387. package/dist/entry/view/core/resolvers/definition.js +0 -12
  388. package/dist/entry/view/core/resolvers/definition.js.map +0 -1
  389. package/dist/entry/view/core/resolvers/render.d.ts +0 -3
  390. package/dist/entry/view/core/resolvers/render.js +0 -18
  391. package/dist/entry/view/core/resolvers/render.js.map +0 -1
  392. package/dist/entry/view/index.d.ts +0 -1
  393. package/dist/entry/view/index.js +0 -2
  394. package/dist/entry/view/index.js.map +0 -1
  395. package/dist/types/view.js +0 -1
  396. /package/dist/cli/virtual/{transport.d.ts → service.d.ts} +0 -0
  397. /package/dist/{cli/plugins/style → entry/content/lifecycle}/types.js +0 -0
  398. /package/dist/{cli/plugins/style → entry/content/lifecycle}/types.js.map +0 -0
  399. /package/dist/entry/view/{core/resolvers → resolvers}/container.js +0 -0
  400. /package/dist/{types/view.js.map → main/permissions.js.map} +0 -0
@@ -29,6 +29,9 @@ class ShadowNode {
29
29
  get boundary() {
30
30
  return this.root;
31
31
  }
32
+ ready() {
33
+ return this.root && this.runtime ? this.runtime.ready(this.root) : Promise.resolve();
34
+ }
32
35
  mount() {
33
36
  if (this.mounting || this.unmounting) {
34
37
  return false;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/entry/content/lifecycle/nodes/ShadowNode.ts"],"sourcesContent":["import type IsolationSetup from \"../IsolationSetup\";\n\nimport {getContentScriptStylesRuntime} from \"./isolated-styles\";\n\nimport {\n ContentScriptShadowMode,\n type ContentScriptShadowOptions,\n type ContentScriptStylesRuntime,\n type ContentScriptNode,\n type ContentScriptBoundaryCleanup,\n} from \"@typing/content\";\n\nexport default class ShadowNode<Data = unknown> implements ContentScriptNode {\n private root?: ShadowRoot;\n\n private _target?: Element;\n\n private runtime?: ContentScriptStylesRuntime;\n private cleanupBoundary?: ContentScriptBoundaryCleanup;\n\n private mounting = false;\n private unmounting = false;\n\n public constructor(\n protected readonly node: ContentScriptNode,\n private readonly options: ContentScriptShadowOptions = {},\n private readonly isolation: IsolationSetup<Data, \"shadow\">\n ) {}\n\n public get anchor(): Element {\n return this.node.anchor;\n }\n\n public get container(): Element | undefined {\n return this.node.container;\n }\n\n public get target(): Element | undefined {\n return this._target;\n }\n\n public get boundary(): ShadowRoot | undefined {\n return this.root;\n }\n\n public mount(): boolean {\n if (this.mounting || this.unmounting) {\n return false;\n }\n\n this.mounting = true;\n\n try {\n return this.mountNode();\n } finally {\n this.mounting = false;\n }\n }\n\n private mountNode(): boolean {\n const mounted = !!this.node.mount();\n\n if (!this.container || this.root) {\n return mounted;\n }\n\n if (!(\"attachShadow\" in this.container) || typeof this.container.attachShadow !== \"function\") {\n throw new Error(\"Content script container does not support Shadow DOM\");\n }\n\n if (this.container.shadowRoot) {\n throw new Error(\"Content script container already has an open ShadowRoot\");\n }\n\n let root: ShadowRoot;\n\n try {\n root = this.container.attachShadow({mode: this.options.mode ?? ContentScriptShadowMode.Open});\n } catch (cause) {\n // A pre-existing closed root is not observable through container.shadowRoot.\n throw new Error(\n \"Cannot attach ShadowRoot: the content script container may already have a root or not support Shadow DOM\",\n {cause}\n );\n }\n\n this.root = root;\n\n try {\n const cleanup = this.isolation.setup(root);\n\n if (this.root !== root) {\n cleanup?.();\n\n return false;\n }\n\n this.cleanupBoundary = cleanup || undefined;\n const target = this.isolation.createTarget(root, this.container.ownerDocument);\n\n if (this.root !== root) {\n return false;\n }\n\n root.appendChild(target);\n\n this._target = target;\n this.runtime = getContentScriptStylesRuntime();\n this.runtime.add(root, target);\n } catch (error) {\n if (this.root === root) {\n this.unmount();\n }\n\n throw error;\n }\n\n return mounted;\n }\n\n public unmount(): boolean {\n if (this.unmounting) {\n return false;\n }\n\n this.unmounting = true;\n this._target = undefined;\n\n const cleanup = this.cleanupBoundary;\n\n this.cleanupBoundary = undefined;\n\n let removed = false;\n\n try {\n try {\n cleanup?.();\n } finally {\n try {\n if (this.root) {\n this.runtime?.delete(this.root);\n }\n } finally {\n this.root = undefined;\n this._target = undefined;\n this.runtime = undefined;\n removed = !!this.node.unmount();\n }\n }\n\n return removed;\n } finally {\n this.unmounting = false;\n }\n }\n}\n"],"mappings":"AAEA,SAAQ,qCAAoC;AAE5C;AAAA,EACI;AAAA,OAKG;AAEP,MAAO,WAAsE;AAAA,EAWlE,YACgB,MACF,UAAsC,CAAC,GACvC,WACnB;AAHqB;AACF;AACA;AAAA,EAClB;AAAA,EAHoB;AAAA,EACF;AAAA,EACA;AAAA,EAbb;AAAA,EAEA;AAAA,EAEA;AAAA,EACA;AAAA,EAEA,WAAW;AAAA,EACX,aAAa;AAAA,EAQrB,IAAW,SAAkB;AACzB,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EAEA,IAAW,YAAiC;AACxC,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EAEA,IAAW,SAA8B;AACrC,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAW,WAAmC;AAC1C,WAAO,KAAK;AAAA,EAChB;AAAA,EAEO,QAAiB;AACpB,QAAI,KAAK,YAAY,KAAK,YAAY;AAClC,aAAO;AAAA,IACX;AAEA,SAAK,WAAW;AAEhB,QAAI;AACA,aAAO,KAAK,UAAU;AAAA,IAC1B,UAAE;AACE,WAAK,WAAW;AAAA,IACpB;AAAA,EACJ;AAAA,EAEQ,YAAqB;AACzB,UAAM,UAAU,CAAC,CAAC,KAAK,KAAK,MAAM;AAElC,QAAI,CAAC,KAAK,aAAa,KAAK,MAAM;AAC9B,aAAO;AAAA,IACX;AAEA,QAAI,EAAE,kBAAkB,KAAK,cAAc,OAAO,KAAK,UAAU,iBAAiB,YAAY;AAC1F,YAAM,IAAI,MAAM,sDAAsD;AAAA,IAC1E;AAEA,QAAI,KAAK,UAAU,YAAY;AAC3B,YAAM,IAAI,MAAM,yDAAyD;AAAA,IAC7E;AAEA,QAAI;AAEJ,QAAI;AACA,aAAO,KAAK,UAAU,aAAa,EAAC,MAAM,KAAK,QAAQ,QAAQ,wBAAwB,KAAI,CAAC;AAAA,IAChG,SAAS,OAAO;AAEZ,YAAM,IAAI;AAAA,QACN;AAAA,QACA,EAAC,MAAK;AAAA,MACV;AAAA,IACJ;AAEA,SAAK,OAAO;AAEZ,QAAI;AACA,YAAM,UAAU,KAAK,UAAU,MAAM,IAAI;AAEzC,UAAI,KAAK,SAAS,MAAM;AACpB;AAEA,eAAO;AAAA,MACX;AAEA,WAAK,kBAAkB,WAAW;AAClC,YAAM,SAAS,KAAK,UAAU,aAAa,MAAM,KAAK,UAAU,aAAa;AAE7E,UAAI,KAAK,SAAS,MAAM;AACpB,eAAO;AAAA,MACX;AAEA,WAAK,YAAY,MAAM;AAEvB,WAAK,UAAU;AACf,WAAK,UAAU,8BAA8B;AAC7C,WAAK,QAAQ,IAAI,MAAM,MAAM;AAAA,IACjC,SAAS,OAAO;AACZ,UAAI,KAAK,SAAS,MAAM;AACpB,aAAK,QAAQ;AAAA,MACjB;AAEA,YAAM;AAAA,IACV;AAEA,WAAO;AAAA,EACX;AAAA,EAEO,UAAmB;AAxH9B;AAyHQ,QAAI,KAAK,YAAY;AACjB,aAAO;AAAA,IACX;AAEA,SAAK,aAAa;AAClB,SAAK,UAAU;AAEf,UAAM,UAAU,KAAK;AAErB,SAAK,kBAAkB;AAEvB,QAAI,UAAU;AAEd,QAAI;AACA,UAAI;AACA;AAAA,MACJ,UAAE;AACE,YAAI;AACA,cAAI,KAAK,MAAM;AACX,uBAAK,YAAL,mBAAc,OAAO,KAAK;AAAA,UAC9B;AAAA,QACJ,UAAE;AACE,eAAK,OAAO;AACZ,eAAK,UAAU;AACf,eAAK,UAAU;AACf,oBAAU,CAAC,CAAC,KAAK,KAAK,QAAQ;AAAA,QAClC;AAAA,MACJ;AAEA,aAAO;AAAA,IACX,UAAE;AACE,WAAK,aAAa;AAAA,IACtB;AAAA,EACJ;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/entry/content/lifecycle/nodes/ShadowNode.ts"],"sourcesContent":["import type IsolationSetup from \"../IsolationSetup\";\n\nimport {getContentScriptStylesRuntime} from \"./isolated-styles\";\n\nimport {\n ContentScriptNode,\n ContentScriptShadowMode,\n type ContentScriptShadowOptions,\n type ContentScriptStylesRuntime,\n type ContentScriptBoundaryCleanup,\n} from \"@typing/content\";\n\nexport default class ShadowNode<Data = unknown> implements ContentScriptNode {\n private root?: ShadowRoot;\n\n private _target?: Element;\n\n private runtime?: ContentScriptStylesRuntime;\n private cleanupBoundary?: ContentScriptBoundaryCleanup;\n\n private mounting = false;\n private unmounting = false;\n\n public constructor(\n protected readonly node: ContentScriptNode,\n private readonly options: ContentScriptShadowOptions = {},\n private readonly isolation: IsolationSetup<Data, \"shadow\">\n ) {}\n\n public get anchor(): Element {\n return this.node.anchor;\n }\n\n public get container(): Element | undefined {\n return this.node.container;\n }\n\n public get target(): Element | undefined {\n return this._target;\n }\n\n public get boundary(): ShadowRoot | undefined {\n return this.root;\n }\n\n public ready(): Promise<void> {\n return this.root && this.runtime ? this.runtime.ready(this.root) : Promise.resolve();\n }\n\n public mount(): boolean {\n if (this.mounting || this.unmounting) {\n return false;\n }\n\n this.mounting = true;\n\n try {\n return this.mountNode();\n } finally {\n this.mounting = false;\n }\n }\n\n private mountNode(): boolean {\n const mounted = !!this.node.mount();\n\n if (!this.container || this.root) {\n return mounted;\n }\n\n if (!(\"attachShadow\" in this.container) || typeof this.container.attachShadow !== \"function\") {\n throw new Error(\"Content script container does not support Shadow DOM\");\n }\n\n if (this.container.shadowRoot) {\n throw new Error(\"Content script container already has an open ShadowRoot\");\n }\n\n let root: ShadowRoot;\n\n try {\n root = this.container.attachShadow({mode: this.options.mode ?? ContentScriptShadowMode.Open});\n } catch (cause) {\n // A pre-existing closed root is not observable through container.shadowRoot.\n throw new Error(\n \"Cannot attach ShadowRoot: the content script container may already have a root or not support Shadow DOM\",\n {cause}\n );\n }\n\n this.root = root;\n\n try {\n const cleanup = this.isolation.setup(root);\n\n if (this.root !== root) {\n cleanup?.();\n\n return false;\n }\n\n this.cleanupBoundary = cleanup || undefined;\n const target = this.isolation.createTarget(root, this.container.ownerDocument);\n\n if (this.root !== root) {\n return false;\n }\n\n root.appendChild(target);\n\n this._target = target;\n this.runtime = getContentScriptStylesRuntime();\n this.runtime.add(root, target);\n } catch (error) {\n if (this.root === root) {\n this.unmount();\n }\n\n throw error;\n }\n\n return mounted;\n }\n\n public unmount(): boolean {\n if (this.unmounting) {\n return false;\n }\n\n this.unmounting = true;\n this._target = undefined;\n\n const cleanup = this.cleanupBoundary;\n\n this.cleanupBoundary = undefined;\n\n let removed = false;\n\n try {\n try {\n cleanup?.();\n } finally {\n try {\n if (this.root) {\n this.runtime?.delete(this.root);\n }\n } finally {\n this.root = undefined;\n this._target = undefined;\n this.runtime = undefined;\n removed = !!this.node.unmount();\n }\n }\n\n return removed;\n } finally {\n this.unmounting = false;\n }\n }\n}\n"],"mappings":"AAEA,SAAQ,qCAAoC;AAE5C;AAAA,EAEI;AAAA,OAIG;AAEP,MAAO,WAAsE;AAAA,EAWlE,YACgB,MACF,UAAsC,CAAC,GACvC,WACnB;AAHqB;AACF;AACA;AAAA,EAClB;AAAA,EAHoB;AAAA,EACF;AAAA,EACA;AAAA,EAbb;AAAA,EAEA;AAAA,EAEA;AAAA,EACA;AAAA,EAEA,WAAW;AAAA,EACX,aAAa;AAAA,EAQrB,IAAW,SAAkB;AACzB,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EAEA,IAAW,YAAiC;AACxC,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EAEA,IAAW,SAA8B;AACrC,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAW,WAAmC;AAC1C,WAAO,KAAK;AAAA,EAChB;AAAA,EAEO,QAAuB;AAC1B,WAAO,KAAK,QAAQ,KAAK,UAAU,KAAK,QAAQ,MAAM,KAAK,IAAI,IAAI,QAAQ,QAAQ;AAAA,EACvF;AAAA,EAEO,QAAiB;AACpB,QAAI,KAAK,YAAY,KAAK,YAAY;AAClC,aAAO;AAAA,IACX;AAEA,SAAK,WAAW;AAEhB,QAAI;AACA,aAAO,KAAK,UAAU;AAAA,IAC1B,UAAE;AACE,WAAK,WAAW;AAAA,IACpB;AAAA,EACJ;AAAA,EAEQ,YAAqB;AACzB,UAAM,UAAU,CAAC,CAAC,KAAK,KAAK,MAAM;AAElC,QAAI,CAAC,KAAK,aAAa,KAAK,MAAM;AAC9B,aAAO;AAAA,IACX;AAEA,QAAI,EAAE,kBAAkB,KAAK,cAAc,OAAO,KAAK,UAAU,iBAAiB,YAAY;AAC1F,YAAM,IAAI,MAAM,sDAAsD;AAAA,IAC1E;AAEA,QAAI,KAAK,UAAU,YAAY;AAC3B,YAAM,IAAI,MAAM,yDAAyD;AAAA,IAC7E;AAEA,QAAI;AAEJ,QAAI;AACA,aAAO,KAAK,UAAU,aAAa,EAAC,MAAM,KAAK,QAAQ,QAAQ,wBAAwB,KAAI,CAAC;AAAA,IAChG,SAAS,OAAO;AAEZ,YAAM,IAAI;AAAA,QACN;AAAA,QACA,EAAC,MAAK;AAAA,MACV;AAAA,IACJ;AAEA,SAAK,OAAO;AAEZ,QAAI;AACA,YAAM,UAAU,KAAK,UAAU,MAAM,IAAI;AAEzC,UAAI,KAAK,SAAS,MAAM;AACpB;AAEA,eAAO;AAAA,MACX;AAEA,WAAK,kBAAkB,WAAW;AAClC,YAAM,SAAS,KAAK,UAAU,aAAa,MAAM,KAAK,UAAU,aAAa;AAE7E,UAAI,KAAK,SAAS,MAAM;AACpB,eAAO;AAAA,MACX;AAEA,WAAK,YAAY,MAAM;AAEvB,WAAK,UAAU;AACf,WAAK,UAAU,8BAA8B;AAC7C,WAAK,QAAQ,IAAI,MAAM,MAAM;AAAA,IACjC,SAAS,OAAO;AACZ,UAAI,KAAK,SAAS,MAAM;AACpB,aAAK,QAAQ;AAAA,MACjB;AAEA,YAAM;AAAA,IACV;AAEA,WAAO;AAAA,EACX;AAAA,EAEO,UAAmB;AA5H9B;AA6HQ,QAAI,KAAK,YAAY;AACjB,aAAO;AAAA,IACX;AAEA,SAAK,aAAa;AAClB,SAAK,UAAU;AAEf,UAAM,UAAU,KAAK;AAErB,SAAK,kBAAkB;AAEvB,QAAI,UAAU;AAEd,QAAI;AACA,UAAI;AACA;AAAA,MACJ,UAAE;AACE,YAAI;AACA,cAAI,KAAK,MAAM;AACX,uBAAK,YAAL,mBAAc,OAAO,KAAK;AAAA,UAC9B;AAAA,QACJ,UAAE;AACE,eAAK,OAAO;AACZ,eAAK,UAAU;AACf,eAAK,UAAU;AACf,oBAAU,CAAC,CAAC,KAAK,KAAK,QAAQ;AAAA,QAClC;AAAA,MACJ;AAEA,aAAO;AAAA,IACX,UAAE;AACE,WAAK,aAAa;AAAA,IACtB;AAAA,EACJ;AACJ;","names":[]}
@@ -0,0 +1,28 @@
1
+ import type { ContentScriptNode } from "../../../types/content/index.js";
2
+ /** One owner drains discovery requests for a single builder generation. */
3
+ export interface ContentScriptCycle {
4
+ generation: number;
5
+ pending: boolean;
6
+ promise: Promise<void>;
7
+ }
8
+ /** One completion callback for the event decorator paired with this renderer. */
9
+ export interface ContentScriptMountNotifier {
10
+ setMountHandler(handler: () => void): void;
11
+ }
12
+ export interface ContentScriptRenderLifecycle extends ContentScriptMountNotifier {
13
+ /** The owning lifecycle handles deferred renderer failures without throwing. */
14
+ setErrorHandler(handler: (error: unknown) => void): void;
15
+ }
16
+ /** Internal composition result; only renderers supply their own completion signal. */
17
+ export interface ContentScriptNodeAssembly {
18
+ node: ContentScriptNode;
19
+ renderer?: ContentScriptRenderLifecycle;
20
+ }
21
+ export interface ContentScriptRenderOptions {
22
+ ready?: () => Promise<void>;
23
+ }
24
+ /** The isolation stage supplies a node and optional readiness for its render target. */
25
+ export interface ContentScriptIsolationAssembly {
26
+ node: ContentScriptNode;
27
+ ready?: () => Promise<void>;
28
+ }
@@ -1,5 +1,5 @@
1
1
  import type { ContentScriptWatchStrategy } from "../../../types/content/index.js";
2
- /** Create a debounced DOM-mutation strategy. Calling the returned strategy starts observing. */
2
+ /** Batch DOM mutations in a fixed window. Calling the returned strategy starts observing. */
3
3
  export declare const createMutationObserverStrategy: (options?: MutationObserverInit) => ContentScriptWatchStrategy;
4
4
  /** Observe DOM mutations while waiting for the first content nodes. */
5
5
  export declare const createAwaitFirstStrategy: (options?: MutationObserverInit) => ContentScriptWatchStrategy;
@@ -1,19 +1,22 @@
1
- import debounce from "debounce";
2
- const createMutationObserverStrategy = (options) => (update) => {
3
- if (!options) {
4
- options = {};
5
- }
6
- const handle = debounce(update, 200);
7
- const observer = new MutationObserver(handle);
1
+ const createMutationObserverStrategy = (options) => (update, context) => {
2
+ let timer;
3
+ const observer = new MutationObserver((records) => {
4
+ if (timer !== void 0 || !records.some((record) => !context.owns(record.target))) {
5
+ return;
6
+ }
7
+ timer = setTimeout(() => {
8
+ timer = void 0;
9
+ void update();
10
+ }, 200);
11
+ });
8
12
  observer.observe(document.body ?? document.documentElement ?? document, {
9
13
  childList: true,
10
14
  subtree: true,
11
- attributes: true,
12
- characterData: true,
13
15
  ...options
14
16
  });
15
17
  return () => {
16
- handle.clear();
18
+ clearTimeout(timer);
19
+ timer = void 0;
17
20
  observer.disconnect();
18
21
  };
19
22
  };
@@ -24,16 +27,28 @@ const createAwaitFirstStrategy = (options) => (update, context) => {
24
27
  ...options
25
28
  });
26
29
  let unwatch;
30
+ let pending;
27
31
  const clear = () => {
28
32
  unwatch && unwatch();
29
33
  unwatch = void 0;
34
+ pending = void 0;
30
35
  };
31
36
  if (context.nodes.size === 0) {
32
- unwatch = resolver(async () => {
33
- await update();
34
- if (context.nodes.size > 0) {
35
- clear();
37
+ unwatch = resolver(() => {
38
+ const completion = Promise.resolve(update());
39
+ if (completion === pending) {
40
+ return completion;
36
41
  }
42
+ pending = completion;
43
+ return completion.then(() => {
44
+ if (context.nodes.size > 0) {
45
+ clear();
46
+ }
47
+ }).finally(() => {
48
+ if (pending === completion) {
49
+ pending = void 0;
50
+ }
51
+ });
37
52
  }, context);
38
53
  }
39
54
  return () => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/entry/content/resolvers/watch.ts"],"sourcesContent":["import debounce from \"debounce\";\n\nimport type {ContentScriptWatchStrategy} from \"@typing/content\";\n\n/** Create a debounced DOM-mutation strategy. Calling the returned strategy starts observing. */\n// prettier-ignore\nexport const createMutationObserverStrategy =\n (options?: MutationObserverInit): ContentScriptWatchStrategy =>\n update => {\n if (!options) {\n options = {};\n }\n\n const handle = debounce(update, 200);\n\n const observer = new MutationObserver(handle);\n\n observer.observe(document.body ?? document.documentElement ?? document, {\n childList: true,\n subtree: true,\n attributes: true,\n characterData: true,\n ...options,\n });\n\n return () => {\n handle.clear();\n observer.disconnect();\n };\n };\n\n/** Observe DOM mutations while waiting for the first content nodes. */\n// prettier-ignore\nexport const createAwaitFirstStrategy =\n (options?: MutationObserverInit): ContentScriptWatchStrategy =>\n (update, context) => {\n const resolver = createMutationObserverStrategy({\n attributes: false,\n characterData: false,\n ...options,\n });\n\n let unwatch: { (): void } | undefined;\n\n const clear = () => {\n unwatch && unwatch();\n unwatch = undefined;\n };\n\n if (context.nodes.size === 0) {\n unwatch = resolver(async () => {\n await update();\n\n if (context.nodes.size > 0) {\n clear();\n }\n }, context);\n }\n\n return () => {\n clear();\n };\n };\n\n// prettier-ignore\nexport const withLocationTracking =\n (strategy: ContentScriptWatchStrategy): ContentScriptWatchStrategy =>\n (update, context) => {\n let currentUrl = location.href;\n\n const interval = setInterval(() => {\n if (currentUrl !== location.href) {\n currentUrl = location.href;\n\n try {\n context.mount();\n } catch (error) {\n console.error(\"Content script mount on location change failed\", error);\n }\n }\n }, 300);\n\n const unwatch = strategy(update, context);\n\n return () => {\n clearInterval(interval);\n unwatch();\n };\n };\n"],"mappings":"AAAA,OAAO,cAAc;AAMd,MAAM,iCACT,CAAC,YACG,YAAU;AACN,MAAI,CAAC,SAAS;AACV,cAAU,CAAC;AAAA,EACf;AAEA,QAAM,SAAS,SAAS,QAAQ,GAAG;AAEnC,QAAM,WAAW,IAAI,iBAAiB,MAAM;AAE5C,WAAS,QAAQ,SAAS,QAAQ,SAAS,mBAAmB,UAAU;AAAA,IACpE,WAAW;AAAA,IACX,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,GAAG;AAAA,EACP,CAAC;AAED,SAAO,MAAM;AACT,WAAO,MAAM;AACb,aAAS,WAAW;AAAA,EACxB;AACJ;AAID,MAAM,2BACT,CAAC,YACG,CAAC,QAAQ,YAAY;AACjB,QAAM,WAAW,+BAA+B;AAAA,IAC5C,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,GAAG;AAAA,EACP,CAAC;AAED,MAAI;AAEJ,QAAM,QAAQ,MAAM;AAChB,eAAW,QAAQ;AACnB,cAAU;AAAA,EACd;AAEA,MAAI,QAAQ,MAAM,SAAS,GAAG;AAC1B,cAAU,SAAS,YAAY;AAC3B,YAAM,OAAO;AAEb,UAAI,QAAQ,MAAM,OAAO,GAAG;AACxB,cAAM;AAAA,MACV;AAAA,IACJ,GAAG,OAAO;AAAA,EACd;AAEA,SAAO,MAAM;AACT,UAAM;AAAA,EACV;AACJ;AAGD,MAAM,uBACT,CAAC,aACG,CAAC,QAAQ,YAAY;AACjB,MAAI,aAAa,SAAS;AAE1B,QAAM,WAAW,YAAY,MAAM;AAC/B,QAAI,eAAe,SAAS,MAAM;AAC9B,mBAAa,SAAS;AAEtB,UAAI;AACA,gBAAQ,MAAM;AAAA,MAClB,SAAS,OAAO;AACZ,gBAAQ,MAAM,kDAAkD,KAAK;AAAA,MACzE;AAAA,IACJ;AAAA,EACJ,GAAG,GAAG;AAEN,QAAM,UAAU,SAAS,QAAQ,OAAO;AAExC,SAAO,MAAM;AACT,kBAAc,QAAQ;AACtB,YAAQ;AAAA,EACZ;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/entry/content/resolvers/watch.ts"],"sourcesContent":["import type {ContentScriptWatchStrategy} from \"@typing/content\";\n\n/** Batch DOM mutations in a fixed window. Calling the returned strategy starts observing. */\n// prettier-ignore\nexport const createMutationObserverStrategy =\n (options?: MutationObserverInit): ContentScriptWatchStrategy =>\n (update, context) => {\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n const observer = new MutationObserver(records => {\n if (timer !== undefined || !records.some(record => !context.owns(record.target))) {\n return;\n }\n\n timer = setTimeout(() => {\n timer = undefined;\n void update();\n }, 200);\n });\n\n observer.observe(document.body ?? document.documentElement ?? document, {\n childList: true,\n subtree: true,\n ...options,\n });\n\n return () => {\n clearTimeout(timer);\n timer = undefined;\n observer.disconnect();\n };\n };\n\n/** Observe DOM mutations while waiting for the first content nodes. */\n// prettier-ignore\nexport const createAwaitFirstStrategy =\n (options?: MutationObserverInit): ContentScriptWatchStrategy =>\n (update, context) => {\n const resolver = createMutationObserverStrategy({\n attributes: false,\n characterData: false,\n ...options,\n });\n\n let unwatch: { (): void } | undefined;\n let pending: Promise<void> | undefined;\n\n const clear = () => {\n unwatch && unwatch();\n unwatch = undefined;\n pending = undefined;\n };\n\n if (context.nodes.size === 0) {\n unwatch = resolver(() => {\n const completion = Promise.resolve(update());\n\n if (completion === pending) {\n return completion;\n }\n\n pending = completion;\n\n return completion.then(() => {\n if (context.nodes.size > 0) {\n clear();\n }\n }).finally(() => {\n if (pending === completion) {\n pending = undefined;\n }\n });\n }, context);\n }\n\n return () => {\n clear();\n };\n };\n\n// prettier-ignore\nexport const withLocationTracking =\n (strategy: ContentScriptWatchStrategy): ContentScriptWatchStrategy =>\n (update, context) => {\n let currentUrl = location.href;\n\n const interval = setInterval(() => {\n if (currentUrl !== location.href) {\n currentUrl = location.href;\n\n try {\n context.mount();\n } catch (error) {\n console.error(\"Content script mount on location change failed\", error);\n }\n }\n }, 300);\n\n const unwatch = strategy(update, context);\n\n return () => {\n clearInterval(interval);\n unwatch();\n };\n };\n"],"mappings":"AAIO,MAAM,iCACT,CAAC,YACG,CAAC,QAAQ,YAAY;AACjB,MAAI;AAEJ,QAAM,WAAW,IAAI,iBAAiB,aAAW;AAC7C,QAAI,UAAU,UAAa,CAAC,QAAQ,KAAK,YAAU,CAAC,QAAQ,KAAK,OAAO,MAAM,CAAC,GAAG;AAC9E;AAAA,IACJ;AAEA,YAAQ,WAAW,MAAM;AACrB,cAAQ;AACR,WAAK,OAAO;AAAA,IAChB,GAAG,GAAG;AAAA,EACV,CAAC;AAED,WAAS,QAAQ,SAAS,QAAQ,SAAS,mBAAmB,UAAU;AAAA,IACpE,WAAW;AAAA,IACX,SAAS;AAAA,IACT,GAAG;AAAA,EACP,CAAC;AAED,SAAO,MAAM;AACT,iBAAa,KAAK;AAClB,YAAQ;AACR,aAAS,WAAW;AAAA,EACxB;AACJ;AAID,MAAM,2BACT,CAAC,YACG,CAAC,QAAQ,YAAY;AACjB,QAAM,WAAW,+BAA+B;AAAA,IAC5C,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,GAAG;AAAA,EACP,CAAC;AAED,MAAI;AACJ,MAAI;AAEJ,QAAM,QAAQ,MAAM;AAChB,eAAW,QAAQ;AACnB,cAAU;AACV,cAAU;AAAA,EACd;AAEA,MAAI,QAAQ,MAAM,SAAS,GAAG;AAC1B,cAAU,SAAS,MAAM;AACrB,YAAM,aAAa,QAAQ,QAAQ,OAAO,CAAC;AAE3C,UAAI,eAAe,SAAS;AACxB,eAAO;AAAA,MACX;AAEA,gBAAU;AAEV,aAAO,WAAW,KAAK,MAAM;AACzB,YAAI,QAAQ,MAAM,OAAO,GAAG;AACxB,gBAAM;AAAA,QACV;AAAA,MACJ,CAAC,EAAE,QAAQ,MAAM;AACb,YAAI,YAAY,YAAY;AACxB,oBAAU;AAAA,QACd;AAAA,MACJ,CAAC;AAAA,IACL,GAAG,OAAO;AAAA,EACd;AAEA,SAAO,MAAM;AACT,UAAM;AAAA,EACV;AACJ;AAGD,MAAM,uBACT,CAAC,aACG,CAAC,QAAQ,YAAY;AACjB,MAAI,aAAa,SAAS;AAE1B,QAAM,WAAW,YAAY,MAAM;AAC/B,QAAI,eAAe,SAAS,MAAM;AAC9B,mBAAa,SAAS;AAEtB,UAAI;AACA,gBAAQ,MAAM;AAAA,MAClB,SAAS,OAAO;AACZ,gBAAQ,MAAM,kDAAkD,KAAK;AAAA,MACzE;AAAA,IACJ;AAAA,EACJ,GAAG,GAAG;AAEN,QAAM,UAAU,SAAS,QAAQ,OAAO;AAExC,SAAO,MAAM;AACT,kBAAc,QAAQ;AACtB,YAAQ;AAAA,EACZ;AACJ;","names":[]}
@@ -0,0 +1,6 @@
1
+ import { type ReactNode } from "react";
2
+ /**
3
+ * React-only render values: elements (including fragments), portals, bigints and iterables of nodes.
4
+ * Text, numbers and DOM elements are framework-independent and belong to `isDomRenderValue()`.
5
+ */
6
+ export declare const isReactRenderValue: (value: unknown) => value is ReactNode;
@@ -0,0 +1,16 @@
1
+ import { isValidElement } from "react";
2
+ const ReactPortalType = /* @__PURE__ */ Symbol.for("react.portal");
3
+ const isReactRenderValue = (value) => {
4
+ if (isValidElement(value) || typeof value === "bigint") {
5
+ return true;
6
+ }
7
+ if (typeof value !== "object" || value === null) {
8
+ return false;
9
+ }
10
+ const node = value;
11
+ return node.$$typeof === ReactPortalType || typeof node[Symbol.iterator] === "function";
12
+ };
13
+ export {
14
+ isReactRenderValue
15
+ };
16
+ //# sourceMappingURL=react.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/entry/core/react.ts"],"sourcesContent":["import {isValidElement, type ReactNode} from \"react\";\n\nconst ReactPortalType = Symbol.for(\"react.portal\");\n\n/**\n * React-only render values: elements (including fragments), portals, bigints and iterables of nodes.\n * Text, numbers and DOM elements are framework-independent and belong to `isDomRenderValue()`.\n */\nexport const isReactRenderValue = (value: unknown): value is ReactNode => {\n if (isValidElement(value) || typeof value === \"bigint\") {\n return true;\n }\n\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n\n const node = value as {$$typeof?: unknown; [Symbol.iterator]?: unknown};\n\n // A portal is a plain object that isValidElement() does not recognize; an iterable needs a callable iterator.\n return node.$$typeof === ReactPortalType || typeof node[Symbol.iterator] === \"function\";\n};\n"],"mappings":"AAAA,SAAQ,sBAAqC;AAE7C,MAAM,kBAAkB,uBAAO,IAAI,cAAc;AAM1C,MAAM,qBAAqB,CAAC,UAAuC;AACtE,MAAI,eAAe,KAAK,KAAK,OAAO,UAAU,UAAU;AACpD,WAAO;AAAA,EACX;AAEA,MAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAC7C,WAAO;AAAA,EACX;AAEA,QAAM,OAAO;AAGb,SAAO,KAAK,aAAa,mBAAmB,OAAO,KAAK,OAAO,QAAQ,MAAM;AACjF;","names":[]}
@@ -0,0 +1,5 @@
1
+ /** Render values that every adapter supports without a UI framework. */
2
+ export type DomRenderValue = string | number | Element;
3
+ export declare const isDomRenderValue: (value: unknown) => value is DomRenderValue;
4
+ /** Text is always inserted as text, never parsed as HTML; markup comes from elements or a UI framework. */
5
+ export declare const renderDomValue: (target: Element, value: DomRenderValue) => void;
@@ -0,0 +1,16 @@
1
+ const isDomRenderValue = (value) => {
2
+ return typeof value === "string" && value.length > 0 || typeof value === "number" || // Compare the node type, not instanceof Element: an element may come from another realm, such as an iframe.
3
+ typeof value === "object" && value !== null && value.nodeType === Node.ELEMENT_NODE;
4
+ };
5
+ const renderDomValue = (target, value) => {
6
+ if (typeof value === "object") {
7
+ target.appendChild(value);
8
+ } else {
9
+ target.textContent = String(value);
10
+ }
11
+ };
12
+ export {
13
+ isDomRenderValue,
14
+ renderDomValue
15
+ };
16
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/entry/core/render.ts"],"sourcesContent":["/** Render values that every adapter supports without a UI framework. */\nexport type DomRenderValue = string | number | Element;\n\nexport const isDomRenderValue = (value: unknown): value is DomRenderValue => {\n return (\n (typeof value === \"string\" && value.length > 0) ||\n typeof value === \"number\" ||\n // Compare the node type, not instanceof Element: an element may come from another realm, such as an iframe.\n (typeof value === \"object\" && value !== null && (value as Node).nodeType === Node.ELEMENT_NODE)\n );\n};\n\n/** Text is always inserted as text, never parsed as HTML; markup comes from elements or a UI framework. */\nexport const renderDomValue = (target: Element, value: DomRenderValue): void => {\n if (typeof value === \"object\") {\n target.appendChild(value);\n } else {\n target.textContent = String(value);\n }\n};\n"],"mappings":"AAGO,MAAM,mBAAmB,CAAC,UAA4C;AACzE,SACK,OAAO,UAAU,YAAY,MAAM,SAAS,KAC7C,OAAO,UAAU;AAAA,EAEhB,OAAO,UAAU,YAAY,UAAU,QAAS,MAAe,aAAa,KAAK;AAE1F;AAGO,MAAM,iBAAiB,CAAC,QAAiB,UAAgC;AAC5E,MAAI,OAAO,UAAU,UAAU;AAC3B,WAAO,YAAY,KAAK;AAAA,EAC5B,OAAO;AACH,WAAO,cAAc,OAAO,KAAK;AAAA,EACrC;AACJ;","names":[]}
@@ -1,13 +1,12 @@
1
+ import EntrypointBuilder from "../core/Builder.js";
1
2
  import TransportBuilder from "./TransportBuilder.js";
2
- import Builder from "../core/Builder.js";
3
- import { OffscreenUnresolvedDefinition } from "../../types/offscreen.js";
3
+ import { OffscreenEntrypointOptions, OffscreenUnresolvedDefinition } from "../../types/offscreen.js";
4
4
  import { TransportType } from "../../types/transport.js";
5
- import { ViewBuilder } from "../../types/view.js";
6
- export default class<T extends TransportType = TransportType> extends Builder {
5
+ import { ViewBuilder, ViewBuilderConstructor } from "../../types/view/index.js";
6
+ export default class Builder<T extends TransportType = TransportType> extends EntrypointBuilder {
7
7
  protected readonly _transport: TransportBuilder<T>;
8
- protected _view?: ViewBuilder;
9
- constructor(definition: OffscreenUnresolvedDefinition<T>);
10
- view(view: ViewBuilder): this;
8
+ protected readonly _view: ViewBuilder;
9
+ constructor(definition: OffscreenUnresolvedDefinition<T>, viewBuilder: ViewBuilderConstructor<OffscreenEntrypointOptions>);
11
10
  build(): Promise<void>;
12
11
  destroy(): Promise<void>;
13
12
  private ready;
@@ -1,29 +1,28 @@
1
+ import EntrypointBuilder from "./../../entry/core/Builder.js";
1
2
  import TransportBuilder from "./TransportBuilder.js";
2
- import Builder from "../core/Builder.js";
3
- import { OffscreenBridgeReadyMessageType, OffscreenGlobalAccess } from "./../../types/offscreen.js";
4
- class Builder_default extends Builder {
3
+ import {
4
+ OffscreenBridgeReadyMessageType,
5
+ OffscreenGlobalAccess
6
+ } from "./../../types/offscreen.js";
7
+ class Builder extends EntrypointBuilder {
5
8
  _transport;
6
9
  _view;
7
- constructor(definition) {
10
+ constructor(definition, viewBuilder) {
8
11
  super();
9
12
  this._transport = new TransportBuilder(definition);
10
- }
11
- view(view) {
12
- this._view = view;
13
- return this;
13
+ const { init, main, name, ...viewOptions } = definition;
14
+ this._view = new viewBuilder(viewOptions);
14
15
  }
15
16
  async build() {
16
- var _a;
17
17
  await this.destroy();
18
18
  globalThis[OffscreenGlobalAccess] = true;
19
19
  await this._transport.build();
20
- await ((_a = this._view) == null ? void 0 : _a.build());
20
+ await this._view.build();
21
21
  this.ready();
22
22
  }
23
23
  async destroy() {
24
- var _a;
25
24
  await this._transport.destroy();
26
- await ((_a = this._view) == null ? void 0 : _a.destroy());
25
+ await this._view.destroy();
27
26
  }
28
27
  ready() {
29
28
  if (window.parent === window) {
@@ -33,6 +32,6 @@ class Builder_default extends Builder {
33
32
  }
34
33
  }
35
34
  export {
36
- Builder_default as default
35
+ Builder as default
37
36
  };
38
37
  //# sourceMappingURL=Builder.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/entry/offscreen/Builder.ts"],"sourcesContent":["import TransportBuilder from \"./TransportBuilder\";\n\nimport Builder from \"../core/Builder\";\n\nimport {OffscreenBridgeReadyMessageType, OffscreenGlobalAccess, OffscreenUnresolvedDefinition} from \"@typing/offscreen\";\nimport {TransportType} from \"@typing/transport\";\nimport {ViewBuilder} from \"@typing/view\";\n\nexport default class<T extends TransportType = TransportType> extends Builder {\n protected readonly _transport: TransportBuilder<T>;\n\n protected _view?: ViewBuilder;\n\n constructor(definition: OffscreenUnresolvedDefinition<T>) {\n super();\n\n this._transport = new TransportBuilder(definition);\n }\n\n public view(view: ViewBuilder): this {\n this._view = view;\n\n return this;\n }\n\n public async build(): Promise<void> {\n await this.destroy();\n\n globalThis[OffscreenGlobalAccess] = true;\n\n await this._transport.build();\n await this._view?.build();\n\n this.ready();\n }\n\n public async destroy(): Promise<void> {\n await this._transport.destroy();\n await this._view?.destroy();\n }\n\n private ready(): void {\n if (window.parent === window) {\n return;\n }\n\n window.parent.postMessage({type: OffscreenBridgeReadyMessageType}, location.origin);\n }\n}\n"],"mappings":"AAAA,OAAO,sBAAsB;AAE7B,OAAO,aAAa;AAEpB,SAAQ,iCAAiC,6BAA2D;AAIpG,MAAO,wBAA+D,QAAQ;AAAA,EACvD;AAAA,EAET;AAAA,EAEV,YAAY,YAA8C;AACtD,UAAM;AAEN,SAAK,aAAa,IAAI,iBAAiB,UAAU;AAAA,EACrD;AAAA,EAEO,KAAK,MAAyB;AACjC,SAAK,QAAQ;AAEb,WAAO;AAAA,EACX;AAAA,EAEA,MAAa,QAAuB;AAzBxC;AA0BQ,UAAM,KAAK,QAAQ;AAEnB,eAAW,qBAAqB,IAAI;AAEpC,UAAM,KAAK,WAAW,MAAM;AAC5B,YAAM,UAAK,UAAL,mBAAY;AAElB,SAAK,MAAM;AAAA,EACf;AAAA,EAEA,MAAa,UAAyB;AApC1C;AAqCQ,UAAM,KAAK,WAAW,QAAQ;AAC9B,YAAM,UAAK,UAAL,mBAAY;AAAA,EACtB;AAAA,EAEQ,QAAc;AAClB,QAAI,OAAO,WAAW,QAAQ;AAC1B;AAAA,IACJ;AAEA,WAAO,OAAO,YAAY,EAAC,MAAM,gCAA+B,GAAG,SAAS,MAAM;AAAA,EACtF;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/entry/offscreen/Builder.ts"],"sourcesContent":["import EntrypointBuilder from \"@entry/core/Builder\";\n\nimport TransportBuilder from \"./TransportBuilder\";\n\nimport {\n OffscreenBridgeReadyMessageType,\n OffscreenEntrypointOptions,\n OffscreenGlobalAccess,\n OffscreenUnresolvedDefinition,\n} from \"@typing/offscreen\";\nimport {TransportType} from \"@typing/transport\";\nimport {ViewBuilder, ViewBuilderConstructor} from \"@typing/view\";\n\nexport default class Builder<T extends TransportType = TransportType> extends EntrypointBuilder {\n protected readonly _transport: TransportBuilder<T>;\n\n protected readonly _view: ViewBuilder;\n\n constructor(\n definition: OffscreenUnresolvedDefinition<T>,\n viewBuilder: ViewBuilderConstructor<OffscreenEntrypointOptions>\n ) {\n super();\n\n this._transport = new TransportBuilder(definition);\n\n const {init, main, name, ...viewOptions} = definition;\n\n this._view = new viewBuilder(viewOptions);\n }\n\n public async build(): Promise<void> {\n await this.destroy();\n\n globalThis[OffscreenGlobalAccess] = true;\n\n await this._transport.build();\n await this._view.build();\n\n this.ready();\n }\n\n public async destroy(): Promise<void> {\n await this._transport.destroy();\n await this._view.destroy();\n }\n\n private ready(): void {\n if (window.parent === window) {\n return;\n }\n\n window.parent.postMessage({type: OffscreenBridgeReadyMessageType}, location.origin);\n }\n}\n"],"mappings":"AAAA,OAAO,uBAAuB;AAE9B,OAAO,sBAAsB;AAE7B;AAAA,EACI;AAAA,EAEA;AAAA,OAEG;AAIP,MAAO,gBAAuE,kBAAkB;AAAA,EACzE;AAAA,EAEA;AAAA,EAEnB,YACI,YACA,aACF;AACE,UAAM;AAEN,SAAK,aAAa,IAAI,iBAAiB,UAAU;AAEjD,UAAM,EAAC,MAAM,MAAM,MAAM,GAAG,YAAW,IAAI;AAE3C,SAAK,QAAQ,IAAI,YAAY,WAAW;AAAA,EAC5C;AAAA,EAEA,MAAa,QAAuB;AAChC,UAAM,KAAK,QAAQ;AAEnB,eAAW,qBAAqB,IAAI;AAEpC,UAAM,KAAK,WAAW,MAAM;AAC5B,UAAM,KAAK,MAAM,MAAM;AAEvB,SAAK,MAAM;AAAA,EACf;AAAA,EAEA,MAAa,UAAyB;AAClC,UAAM,KAAK,WAAW,QAAQ;AAC9B,UAAM,KAAK,MAAM,QAAQ;AAAA,EAC7B;AAAA,EAEQ,QAAc;AAClB,QAAI,OAAO,WAAW,QAAQ;AAC1B;AAAA,IACJ;AAEA,WAAO,OAAO,YAAY,EAAC,MAAM,gCAA+B,GAAG,SAAS,MAAM;AAAA,EACtF;AACJ;","names":[]}
@@ -2,7 +2,7 @@ import AbstractBuilder from "../transport/AbstractBuilder.js";
2
2
  import { RegisterOffscreen } from "../../offscreen/providers/index.js";
3
3
  import { OffscreenOptions, OffscreenUnresolvedDefinition } from "../../types/offscreen.js";
4
4
  import { TransportName, TransportType } from "../../types/transport.js";
5
- export default class<T extends TransportType = TransportType> extends AbstractBuilder<OffscreenOptions, T> {
5
+ export default class TransportBuilder<T extends TransportType = TransportType> extends AbstractBuilder<OffscreenOptions, T> {
6
6
  constructor(definition: OffscreenUnresolvedDefinition<T>);
7
7
  protected transport(): RegisterOffscreen<TransportName, T, [OffscreenOptions]>;
8
8
  }
@@ -1,8 +1,9 @@
1
1
  import AbstractBuilder from "./../../entry/transport/AbstractBuilder.js";
2
2
  import { RegisterOffscreen } from "./../../offscreen/providers/index.js";
3
- class TransportBuilder_default extends AbstractBuilder {
3
+ class TransportBuilder extends AbstractBuilder {
4
4
  constructor(definition) {
5
- super(definition);
5
+ const { render, container, ...options } = definition;
6
+ super(options);
6
7
  }
7
8
  transport() {
8
9
  const { name, init } = this.definition;
@@ -10,6 +11,6 @@ class TransportBuilder_default extends AbstractBuilder {
10
11
  }
11
12
  }
12
13
  export {
13
- TransportBuilder_default as default
14
+ TransportBuilder as default
14
15
  };
15
16
  //# sourceMappingURL=TransportBuilder.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/entry/offscreen/TransportBuilder.ts"],"sourcesContent":["import AbstractBuilder from \"@entry/transport/AbstractBuilder\";\n\nimport {RegisterOffscreen} from \"@offscreen/providers\";\n\nimport {OffscreenOptions, OffscreenUnresolvedDefinition} from \"@typing/offscreen\";\nimport {TransportName, TransportType} from \"@typing/transport\";\n\nexport default class<T extends TransportType = TransportType> extends AbstractBuilder<OffscreenOptions, T> {\n constructor(definition: OffscreenUnresolvedDefinition<T>) {\n super(definition);\n }\n\n protected transport(): RegisterOffscreen<TransportName, T, [OffscreenOptions]> {\n const {name, init} = this.definition;\n\n return new RegisterOffscreen(name, init);\n }\n}\n"],"mappings":"AAAA,OAAO,qBAAqB;AAE5B,SAAQ,yBAAwB;AAKhC,MAAO,iCAA+D,gBAAqC;AAAA,EACvG,YAAY,YAA8C;AACtD,UAAM,UAAU;AAAA,EACpB;AAAA,EAEU,YAAqE;AAC3E,UAAM,EAAC,MAAM,KAAI,IAAI,KAAK;AAE1B,WAAO,IAAI,kBAAkB,MAAM,IAAI;AAAA,EAC3C;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/entry/offscreen/TransportBuilder.ts"],"sourcesContent":["import AbstractBuilder from \"@entry/transport/AbstractBuilder\";\n\nimport {RegisterOffscreen} from \"@offscreen/providers\";\n\nimport {OffscreenOptions, OffscreenUnresolvedDefinition} from \"@typing/offscreen\";\nimport {TransportName, TransportType} from \"@typing/transport\";\n\nexport default class TransportBuilder<T extends TransportType = TransportType> extends AbstractBuilder<\n OffscreenOptions,\n T\n> {\n constructor(definition: OffscreenUnresolvedDefinition<T>) {\n // The view owns rendering; init and main receive only the offscreen options.\n const {render, container, ...options} = definition;\n\n super(options);\n }\n\n protected transport(): RegisterOffscreen<TransportName, T, [OffscreenOptions]> {\n const {name, init} = this.definition;\n\n return new RegisterOffscreen(name, init);\n }\n}\n"],"mappings":"AAAA,OAAO,qBAAqB;AAE5B,SAAQ,yBAAwB;AAKhC,MAAO,yBAAgF,gBAGrF;AAAA,EACE,YAAY,YAA8C;AAEtD,UAAM,EAAC,QAAQ,WAAW,GAAG,QAAO,IAAI;AAExC,UAAM,OAAO;AAAA,EACjB;AAAA,EAEU,YAAqE;AAC3E,UAAM,EAAC,MAAM,KAAI,IAAI,KAAK;AAE1B,WAAO,IAAI,kBAAkB,MAAM,IAAI;AAAA,EAC3C;AACJ;","names":[]}
@@ -1,4 +1,7 @@
1
1
  import Builder from "./Builder.js";
2
+ import type { OffscreenEntrypointOptions, OffscreenUnresolvedDefinition } from "../../types/offscreen.js";
3
+ import type { TransportType } from "../../types/transport.js";
4
+ import type { ViewBuilderConstructor } from "../../types/view/index.js";
2
5
  export { Builder };
3
- declare const _default: (definition: Partial<import("../../index.js").OffscreenDefinition<import("../../transport/index.js").TransportType>>) => void;
4
- export default _default;
6
+ export { resolveDefinition } from "./resolvers/definition.js";
7
+ export default function offscreen<T extends TransportType>(definition: OffscreenUnresolvedDefinition<T>, viewBuilder: ViewBuilderConstructor<OffscreenEntrypointOptions>): void;
@@ -1,7 +1,13 @@
1
1
  import Builder from "./Builder.js";
2
- var offscreen_default = Builder.resolver();
2
+ import { resolveDefinition } from "./resolvers/definition.js";
3
+ function offscreen(definition, viewBuilder) {
4
+ new Builder(definition, viewBuilder).build().catch((error) => {
5
+ console.error("Failed to build offscreen: ", error);
6
+ });
7
+ }
3
8
  export {
4
9
  Builder,
5
- offscreen_default as default
10
+ offscreen as default,
11
+ resolveDefinition
6
12
  };
7
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/entry/offscreen/index.ts"],"sourcesContent":["import Builder from \"./Builder\";\n\nexport {Builder};\n\nexport default Builder.resolver();\n"],"mappings":"AAAA,OAAO,aAAa;AAIpB,IAAO,oBAAQ,QAAQ,SAAS;","names":[]}
1
+ {"version":3,"sources":["../../../src/entry/offscreen/index.ts"],"sourcesContent":["import Builder from \"./Builder\";\n\nimport type {OffscreenEntrypointOptions, OffscreenUnresolvedDefinition} from \"@typing/offscreen\";\nimport type {TransportType} from \"@typing/transport\";\nimport type {ViewBuilderConstructor} from \"@typing/view\";\n\nexport {Builder};\nexport {resolveDefinition} from \"./resolvers/definition\";\n\nexport default function offscreen<T extends TransportType>(\n definition: OffscreenUnresolvedDefinition<T>,\n viewBuilder: ViewBuilderConstructor<OffscreenEntrypointOptions>\n): void {\n new Builder(definition, viewBuilder).build().catch(error => {\n console.error(\"Failed to build offscreen: \", error);\n });\n}\n"],"mappings":"AAAA,OAAO,aAAa;AAOpB,SAAQ,yBAAwB;AAEjB,SAAR,UACH,YACA,aACI;AACJ,MAAI,QAAQ,YAAY,WAAW,EAAE,MAAM,EAAE,MAAM,WAAS;AACxD,YAAQ,MAAM,+BAA+B,KAAK;AAAA,EACtD,CAAC;AACL;","names":[]}
@@ -0,0 +1,4 @@
1
+ import type { OffscreenUnresolvedDefinition } from "../../../types/offscreen.js";
2
+ import type { TransportType } from "../../../types/transport.js";
3
+ /** A default function is the offscreen transport init; the view renders only an explicit render. */
4
+ export declare const resolveDefinition: <T extends TransportType = TransportType>(module: object, name: string) => OffscreenUnresolvedDefinition<T>;
@@ -0,0 +1,8 @@
1
+ import { mergeDefinition } from "./../../../entry/transport/resolvers/definition.js";
2
+ const resolveDefinition = (module, name) => {
3
+ return mergeDefinition(module, name);
4
+ };
5
+ export {
6
+ resolveDefinition
7
+ };
8
+ //# sourceMappingURL=definition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/entry/offscreen/resolvers/definition.ts"],"sourcesContent":["import {mergeDefinition} from \"@entry/transport/resolvers/definition\";\n\nimport type {OffscreenUnresolvedDefinition} from \"@typing/offscreen\";\nimport type {TransportType} from \"@typing/transport\";\n\n/** A default function is the offscreen transport init; the view renders only an explicit render. */\nexport const resolveDefinition = <T extends TransportType = TransportType>(\n module: object,\n name: string\n): OffscreenUnresolvedDefinition<T> => {\n return mergeDefinition(module, name) as OffscreenUnresolvedDefinition<T>;\n};\n"],"mappings":"AAAA,SAAQ,uBAAsB;AAMvB,MAAM,oBAAoB,CAC7B,QACA,SACmC;AACnC,SAAO,gBAAgB,QAAQ,IAAI;AACvC;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/entry/relay/index.ts"],"sourcesContent":["import Builder from \"./Builder\";\n\nimport type {RelayUnresolvedDefinition} from \"@typing/relay\";\nimport type {TransportType} from \"@typing/transport\";\nimport type {ContentScriptIsolation} from \"@typing/content\";\n\nexport {Builder};\nexport {resolveDefinition} from \"./resolvers/definition\";\nexport type {RelayUnresolvedDefinition} from \"@typing/relay\";\n\nexport default function relay<\n T extends TransportType,\n Data = unknown,\n Isolation extends `${ContentScriptIsolation}` = `${ContentScriptIsolation}`,\n>(\n definition: RelayUnresolvedDefinition<T, Data, Isolation>,\n contentBuilder: ConstructorParameters<typeof Builder<T, Data, NoInfer<Isolation>>>[1]\n): void {\n new Builder(definition, contentBuilder).build().catch(error => {\n console.error(\"Failed to build relay: \", error);\n });\n}\n"],"mappings":"AAAA,OAAO,aAAa;AAOpB,SAAQ,yBAAwB;AAGjB,SAAR,MAKH,YACA,gBACI;AACJ,MAAI,QAAQ,YAAY,cAAc,EAAE,MAAM,EAAE,MAAM,WAAS;AAC3D,YAAQ,MAAM,2BAA2B,KAAK;AAAA,EAClD,CAAC;AACL;","names":[]}
1
+ {"version":3,"sources":["../../../src/entry/relay/index.ts"],"sourcesContent":["import Builder from \"./Builder\";\n\nimport type {RelayUnresolvedDefinition} from \"@typing/relay\";\nimport type {TransportType} from \"@typing/transport\";\nimport type {ContentScriptIsolation} from \"@typing/content\";\n\nexport {Builder};\nexport {resolveDefinition} from \"./resolvers/definition\";\n\nexport type {RelayUnresolvedDefinition} from \"@typing/relay\";\n\nexport default function relay<\n T extends TransportType,\n Data = unknown,\n Isolation extends `${ContentScriptIsolation}` = `${ContentScriptIsolation}`,\n>(\n definition: RelayUnresolvedDefinition<T, Data, Isolation>,\n contentBuilder: ConstructorParameters<typeof Builder<T, Data, NoInfer<Isolation>>>[1]\n): void {\n new Builder(definition, contentBuilder).build().catch(error => {\n console.error(\"Failed to build relay: \", error);\n });\n}\n"],"mappings":"AAAA,OAAO,aAAa;AAOpB,SAAQ,yBAAwB;AAIjB,SAAR,MAKH,YACA,gBACI;AACJ,MAAI,QAAQ,YAAY,cAAc,EAAE,MAAM,EAAE,MAAM,WAAS;AAC3D,YAAQ,MAAM,2BAA2B,KAAK;AAAA,EAClD,CAAC;AACL;","names":[]}
@@ -1,4 +1,4 @@
1
1
  import type { RelayUnresolvedDefinition } from "../../../types/relay.js";
2
2
  import type { TransportType } from "../../../types/transport.js";
3
- /** Resolve Relay exports without executing init; the build supplies the authoritative name. */
3
+ /** A default function is Relay's transport init, never a content render. */
4
4
  export declare const resolveDefinition: <T extends TransportType = TransportType>(module: object, name: string) => RelayUnresolvedDefinition<T>;
@@ -1,14 +1,6 @@
1
- import { isValidTransportDefinition, isValidTransportInitFunction } from "./../../../entry/transport/resolvers/definition.js";
1
+ import { mergeDefinition } from "./../../../entry/transport/resolvers/definition.js";
2
2
  const resolveDefinition = (module, name) => {
3
- const { default: defaultDefinition, ...otherDefinition } = module;
4
- let definition = otherDefinition;
5
- if (isValidTransportDefinition(defaultDefinition)) {
6
- definition = { ...definition, ...defaultDefinition };
7
- } else if (isValidTransportInitFunction(defaultDefinition)) {
8
- definition = { ...definition, init: defaultDefinition };
9
- }
10
- const { init, main, name: _name, ...options } = definition;
11
- return { name, init, main, ...options };
3
+ return mergeDefinition(module, name);
12
4
  };
13
5
  export {
14
6
  resolveDefinition
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/entry/relay/resolvers/definition.ts"],"sourcesContent":["import {isValidTransportDefinition, isValidTransportInitFunction} from \"@entry/transport/resolvers/definition\";\n\nimport type {RelayOptions, RelayUnresolvedDefinition} from \"@typing/relay\";\nimport type {TransportType} from \"@typing/transport\";\n\n/** Resolve Relay exports without executing init; the build supplies the authoritative name. */\nexport const resolveDefinition = <T extends TransportType = TransportType>(\n module: object,\n name: string\n): RelayUnresolvedDefinition<T> => {\n const {default: defaultDefinition, ...otherDefinition} = module as Record<string, unknown>;\n\n let definition = otherDefinition as RelayUnresolvedDefinition<T>;\n\n if (isValidTransportDefinition<RelayOptions, T>(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidTransportInitFunction<RelayOptions, T>(defaultDefinition)) {\n definition = {...definition, init: defaultDefinition};\n }\n\n const {init, main, name: _name, ...options} = definition;\n\n return {name, init, main, ...options};\n};\n"],"mappings":"AAAA,SAAQ,4BAA4B,oCAAmC;AAMhE,MAAM,oBAAoB,CAC7B,QACA,SAC+B;AAC/B,QAAM,EAAC,SAAS,mBAAmB,GAAG,gBAAe,IAAI;AAEzD,MAAI,aAAa;AAEjB,MAAI,2BAA4C,iBAAiB,GAAG;AAChE,iBAAa,EAAC,GAAG,YAAY,GAAG,kBAAiB;AAAA,EACrD,WAAW,6BAA8C,iBAAiB,GAAG;AACzE,iBAAa,EAAC,GAAG,YAAY,MAAM,kBAAiB;AAAA,EACxD;AAEA,QAAM,EAAC,MAAM,MAAM,MAAM,OAAO,GAAG,QAAO,IAAI;AAE9C,SAAO,EAAC,MAAM,MAAM,MAAM,GAAG,QAAO;AACxC;","names":[]}
1
+ {"version":3,"sources":["../../../../src/entry/relay/resolvers/definition.ts"],"sourcesContent":["import {mergeDefinition} from \"@entry/transport/resolvers/definition\";\n\nimport type {RelayUnresolvedDefinition} from \"@typing/relay\";\nimport type {TransportType} from \"@typing/transport\";\n\n/** A default function is Relay's transport init, never a content render. */\nexport const resolveDefinition = <T extends TransportType = TransportType>(\n module: object,\n name: string\n): RelayUnresolvedDefinition<T> => {\n return mergeDefinition(module, name) as RelayUnresolvedDefinition<T>;\n};\n"],"mappings":"AAAA,SAAQ,uBAAsB;AAMvB,MAAM,oBAAoB,CAC7B,QACA,SAC+B;AAC/B,SAAO,gBAAgB,QAAQ,IAAI;AACvC;","names":[]}
@@ -1,14 +1,13 @@
1
+ import EntrypointBuilder from "../core/Builder.js";
1
2
  import TransportBuilder from "./TransportBuilder.js";
2
- import Builder from "../core/Builder.js";
3
- import { SandboxUnresolvedDefinition } from "../../types/sandbox.js";
3
+ import { SandboxEntrypointOptions, SandboxUnresolvedDefinition } from "../../types/sandbox.js";
4
4
  import { TransportType } from "../../types/transport.js";
5
- import { ViewBuilder } from "../../types/view.js";
6
- export default class<T extends TransportType = TransportType> extends Builder {
5
+ import { ViewBuilder, ViewBuilderConstructor } from "../../types/view/index.js";
6
+ export default class Builder<T extends TransportType = TransportType> extends EntrypointBuilder {
7
7
  protected readonly _transport: TransportBuilder<T>;
8
- protected _view?: ViewBuilder;
8
+ protected readonly _view: ViewBuilder;
9
9
  private readonly name;
10
- constructor(definition: SandboxUnresolvedDefinition<T>);
11
- view(view: ViewBuilder): this;
10
+ constructor(definition: SandboxUnresolvedDefinition<T>, viewBuilder: ViewBuilderConstructor<SandboxEntrypointOptions>);
12
11
  build(): Promise<void>;
13
12
  destroy(): Promise<void>;
14
13
  private ready;
@@ -1,35 +1,31 @@
1
+ import EntrypointBuilder from "./../../entry/core/Builder.js";
1
2
  import TransportBuilder from "./TransportBuilder.js";
2
- import Builder from "../core/Builder.js";
3
3
  import { sandboxChannel } from "./../../sandbox/utils.js";
4
4
  import {
5
5
  SandboxGlobalAccess,
6
6
  SandboxReadyMessageType
7
7
  } from "./../../types/sandbox.js";
8
- class Builder_default extends Builder {
8
+ class Builder extends EntrypointBuilder {
9
9
  _transport;
10
10
  _view;
11
11
  name;
12
- constructor(definition) {
12
+ constructor(definition, viewBuilder) {
13
13
  super();
14
14
  this.name = definition.name;
15
15
  this._transport = new TransportBuilder(definition);
16
- }
17
- view(view) {
18
- this._view = view;
19
- return this;
16
+ const { init, main, name, ...viewOptions } = definition;
17
+ this._view = new viewBuilder(viewOptions);
20
18
  }
21
19
  async build() {
22
- var _a;
23
20
  await this.destroy();
24
21
  globalThis[SandboxGlobalAccess] = true;
25
22
  await this._transport.build();
26
- await ((_a = this._view) == null ? void 0 : _a.build());
23
+ await this._view.build();
27
24
  this.ready();
28
25
  }
29
26
  async destroy() {
30
- var _a;
31
27
  await this._transport.destroy();
32
- await ((_a = this._view) == null ? void 0 : _a.destroy());
28
+ await this._view.destroy();
33
29
  }
34
30
  ready() {
35
31
  if (window.parent === window) {
@@ -46,6 +42,6 @@ class Builder_default extends Builder {
46
42
  }
47
43
  }
48
44
  export {
49
- Builder_default as default
45
+ Builder as default
50
46
  };
51
47
  //# sourceMappingURL=Builder.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/entry/sandbox/Builder.ts"],"sourcesContent":["import TransportBuilder from \"./TransportBuilder\";\n\nimport Builder from \"../core/Builder\";\n\nimport {sandboxChannel} from \"@sandbox/utils\";\n\nimport {\n SandboxGlobalAccess,\n SandboxReadyMessage,\n SandboxReadyMessageType,\n SandboxUnresolvedDefinition,\n} from \"@typing/sandbox\";\nimport {TransportType} from \"@typing/transport\";\nimport {ViewBuilder} from \"@typing/view\";\n\nexport default class<T extends TransportType = TransportType> extends Builder {\n protected readonly _transport: TransportBuilder<T>;\n\n protected _view?: ViewBuilder;\n\n private readonly name: string;\n\n constructor(definition: SandboxUnresolvedDefinition<T>) {\n super();\n\n this.name = definition.name!;\n this._transport = new TransportBuilder(definition);\n }\n\n public view(view: ViewBuilder): this {\n this._view = view;\n\n return this;\n }\n\n public async build(): Promise<void> {\n await this.destroy();\n\n globalThis[SandboxGlobalAccess] = true;\n\n await this._transport.build();\n await this._view?.build();\n\n this.ready();\n }\n\n public async destroy(): Promise<void> {\n await this._transport.destroy();\n await this._view?.destroy();\n }\n\n private ready(): void {\n if (window.parent === window) {\n return;\n }\n\n window.parent.postMessage(\n {\n type: SandboxReadyMessageType,\n channel: sandboxChannel(this.name),\n name: this.name,\n } satisfies SandboxReadyMessage,\n \"*\"\n );\n }\n}\n"],"mappings":"AAAA,OAAO,sBAAsB;AAE7B,OAAO,aAAa;AAEpB,SAAQ,sBAAqB;AAE7B;AAAA,EACI;AAAA,EAEA;AAAA,OAEG;AAIP,MAAO,wBAA+D,QAAQ;AAAA,EACvD;AAAA,EAET;AAAA,EAEO;AAAA,EAEjB,YAAY,YAA4C;AACpD,UAAM;AAEN,SAAK,OAAO,WAAW;AACvB,SAAK,aAAa,IAAI,iBAAiB,UAAU;AAAA,EACrD;AAAA,EAEO,KAAK,MAAyB;AACjC,SAAK,QAAQ;AAEb,WAAO;AAAA,EACX;AAAA,EAEA,MAAa,QAAuB;AAnCxC;AAoCQ,UAAM,KAAK,QAAQ;AAEnB,eAAW,mBAAmB,IAAI;AAElC,UAAM,KAAK,WAAW,MAAM;AAC5B,YAAM,UAAK,UAAL,mBAAY;AAElB,SAAK,MAAM;AAAA,EACf;AAAA,EAEA,MAAa,UAAyB;AA9C1C;AA+CQ,UAAM,KAAK,WAAW,QAAQ;AAC9B,YAAM,UAAK,UAAL,mBAAY;AAAA,EACtB;AAAA,EAEQ,QAAc;AAClB,QAAI,OAAO,WAAW,QAAQ;AAC1B;AAAA,IACJ;AAEA,WAAO,OAAO;AAAA,MACV;AAAA,QACI,MAAM;AAAA,QACN,SAAS,eAAe,KAAK,IAAI;AAAA,QACjC,MAAM,KAAK;AAAA,MACf;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/entry/sandbox/Builder.ts"],"sourcesContent":["import EntrypointBuilder from \"@entry/core/Builder\";\n\nimport TransportBuilder from \"./TransportBuilder\";\n\nimport {sandboxChannel} from \"@sandbox/utils\";\n\nimport {\n SandboxEntrypointOptions,\n SandboxGlobalAccess,\n SandboxReadyMessage,\n SandboxReadyMessageType,\n SandboxUnresolvedDefinition,\n} from \"@typing/sandbox\";\nimport {TransportType} from \"@typing/transport\";\nimport {ViewBuilder, ViewBuilderConstructor} from \"@typing/view\";\n\nexport default class Builder<T extends TransportType = TransportType> extends EntrypointBuilder {\n protected readonly _transport: TransportBuilder<T>;\n\n protected readonly _view: ViewBuilder;\n\n private readonly name: string;\n\n constructor(\n definition: SandboxUnresolvedDefinition<T>,\n viewBuilder: ViewBuilderConstructor<SandboxEntrypointOptions>\n ) {\n super();\n\n this.name = definition.name!;\n this._transport = new TransportBuilder(definition);\n\n const {init, main, name, ...viewOptions} = definition;\n\n this._view = new viewBuilder(viewOptions);\n }\n\n public async build(): Promise<void> {\n await this.destroy();\n\n globalThis[SandboxGlobalAccess] = true;\n\n await this._transport.build();\n await this._view.build();\n\n this.ready();\n }\n\n public async destroy(): Promise<void> {\n await this._transport.destroy();\n await this._view.destroy();\n }\n\n private ready(): void {\n if (window.parent === window) {\n return;\n }\n\n window.parent.postMessage(\n {\n type: SandboxReadyMessageType,\n channel: sandboxChannel(this.name),\n name: this.name,\n } satisfies SandboxReadyMessage,\n \"*\"\n );\n }\n}\n"],"mappings":"AAAA,OAAO,uBAAuB;AAE9B,OAAO,sBAAsB;AAE7B,SAAQ,sBAAqB;AAE7B;AAAA,EAEI;AAAA,EAEA;AAAA,OAEG;AAIP,MAAO,gBAAuE,kBAAkB;AAAA,EACzE;AAAA,EAEA;AAAA,EAEF;AAAA,EAEjB,YACI,YACA,aACF;AACE,UAAM;AAEN,SAAK,OAAO,WAAW;AACvB,SAAK,aAAa,IAAI,iBAAiB,UAAU;AAEjD,UAAM,EAAC,MAAM,MAAM,MAAM,GAAG,YAAW,IAAI;AAE3C,SAAK,QAAQ,IAAI,YAAY,WAAW;AAAA,EAC5C;AAAA,EAEA,MAAa,QAAuB;AAChC,UAAM,KAAK,QAAQ;AAEnB,eAAW,mBAAmB,IAAI;AAElC,UAAM,KAAK,WAAW,MAAM;AAC5B,UAAM,KAAK,MAAM,MAAM;AAEvB,SAAK,MAAM;AAAA,EACf;AAAA,EAEA,MAAa,UAAyB;AAClC,UAAM,KAAK,WAAW,QAAQ;AAC9B,UAAM,KAAK,MAAM,QAAQ;AAAA,EAC7B;AAAA,EAEQ,QAAc;AAClB,QAAI,OAAO,WAAW,QAAQ;AAC1B;AAAA,IACJ;AAEA,WAAO,OAAO;AAAA,MACV;AAAA,QACI,MAAM;AAAA,QACN,SAAS,eAAe,KAAK,IAAI;AAAA,QACjC,MAAM,KAAK;AAAA,MACf;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AACJ;","names":[]}
@@ -2,7 +2,7 @@ import AbstractBuilder from "../transport/AbstractBuilder.js";
2
2
  import { RegisterSandbox } from "../../sandbox/providers/index.js";
3
3
  import type { SandboxOptions, SandboxUnresolvedDefinition } from "../../types/sandbox.js";
4
4
  import type { TransportName, TransportType } from "../../types/transport.js";
5
- export default class<T extends TransportType = TransportType> extends AbstractBuilder<SandboxOptions, T> {
5
+ export default class TransportBuilder<T extends TransportType = TransportType> extends AbstractBuilder<SandboxOptions, T> {
6
6
  constructor(definition: SandboxUnresolvedDefinition<T>);
7
7
  protected transport(): RegisterSandbox<TransportName, T, [SandboxOptions]>;
8
8
  }
@@ -1,8 +1,9 @@
1
1
  import AbstractBuilder from "./../../entry/transport/AbstractBuilder.js";
2
2
  import { RegisterSandbox } from "./../../sandbox/providers/index.js";
3
- class TransportBuilder_default extends AbstractBuilder {
3
+ class TransportBuilder extends AbstractBuilder {
4
4
  constructor(definition) {
5
- super(definition);
5
+ const { render, container, ...options } = definition;
6
+ super(options);
6
7
  }
7
8
  transport() {
8
9
  const { name, init } = this.definition;
@@ -10,6 +11,6 @@ class TransportBuilder_default extends AbstractBuilder {
10
11
  }
11
12
  }
12
13
  export {
13
- TransportBuilder_default as default
14
+ TransportBuilder as default
14
15
  };
15
16
  //# sourceMappingURL=TransportBuilder.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/entry/sandbox/TransportBuilder.ts"],"sourcesContent":["import AbstractBuilder from \"@entry/transport/AbstractBuilder\";\n\nimport {RegisterSandbox} from \"@sandbox/providers\";\n\nimport type {SandboxOptions, SandboxUnresolvedDefinition} from \"@typing/sandbox\";\nimport type {TransportName, TransportType} from \"@typing/transport\";\n\nexport default class<T extends TransportType = TransportType> extends AbstractBuilder<SandboxOptions, T> {\n constructor(definition: SandboxUnresolvedDefinition<T>) {\n super(definition);\n }\n\n protected transport(): RegisterSandbox<TransportName, T, [SandboxOptions]> {\n const {name, init} = this.definition;\n\n return new RegisterSandbox(name, init);\n }\n}\n"],"mappings":"AAAA,OAAO,qBAAqB;AAE5B,SAAQ,uBAAsB;AAK9B,MAAO,iCAA+D,gBAAmC;AAAA,EACrG,YAAY,YAA4C;AACpD,UAAM,UAAU;AAAA,EACpB;AAAA,EAEU,YAAiE;AACvE,UAAM,EAAC,MAAM,KAAI,IAAI,KAAK;AAE1B,WAAO,IAAI,gBAAgB,MAAM,IAAI;AAAA,EACzC;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/entry/sandbox/TransportBuilder.ts"],"sourcesContent":["import AbstractBuilder from \"@entry/transport/AbstractBuilder\";\n\nimport {RegisterSandbox} from \"@sandbox/providers\";\n\nimport type {SandboxOptions, SandboxUnresolvedDefinition} from \"@typing/sandbox\";\nimport type {TransportName, TransportType} from \"@typing/transport\";\n\nexport default class TransportBuilder<T extends TransportType = TransportType> extends AbstractBuilder<\n SandboxOptions,\n T\n> {\n constructor(definition: SandboxUnresolvedDefinition<T>) {\n // The view owns rendering; init and main receive only the sandbox options.\n const {render, container, ...options} = definition;\n\n super(options);\n }\n\n protected transport(): RegisterSandbox<TransportName, T, [SandboxOptions]> {\n const {name, init} = this.definition;\n\n return new RegisterSandbox(name, init);\n }\n}\n"],"mappings":"AAAA,OAAO,qBAAqB;AAE5B,SAAQ,uBAAsB;AAK9B,MAAO,yBAAgF,gBAGrF;AAAA,EACE,YAAY,YAA4C;AAEpD,UAAM,EAAC,QAAQ,WAAW,GAAG,QAAO,IAAI;AAExC,UAAM,OAAO;AAAA,EACjB;AAAA,EAEU,YAAiE;AACvE,UAAM,EAAC,MAAM,KAAI,IAAI,KAAK;AAE1B,WAAO,IAAI,gBAAgB,MAAM,IAAI;AAAA,EACzC;AACJ;","names":[]}
@@ -1,2 +1,7 @@
1
- export { default as Builder } from "./Builder.js";
2
- export { default as TransportBuilder } from "./TransportBuilder.js";
1
+ import Builder from "./Builder.js";
2
+ import type { SandboxEntrypointOptions, SandboxUnresolvedDefinition } from "../../types/sandbox.js";
3
+ import type { TransportType } from "../../types/transport.js";
4
+ import type { ViewBuilderConstructor } from "../../types/view/index.js";
5
+ export { Builder };
6
+ export { resolveDefinition } from "./resolvers/definition.js";
7
+ export default function sandbox<T extends TransportType>(definition: SandboxUnresolvedDefinition<T>, viewBuilder: ViewBuilderConstructor<SandboxEntrypointOptions>): void;