adnbn 0.13.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 (291) 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/entrypoint/finder/AbstractOverrideFinder.d.ts +15 -0
  5. package/dist/cli/entrypoint/finder/AbstractOverrideFinder.js +20 -0
  6. package/dist/cli/entrypoint/finder/AbstractOverrideFinder.js.map +1 -0
  7. package/dist/cli/entrypoint/finder/AbstractViewFinder.d.ts +6 -1
  8. package/dist/cli/entrypoint/finder/AbstractViewFinder.js +15 -0
  9. package/dist/cli/entrypoint/finder/AbstractViewFinder.js.map +1 -1
  10. package/dist/cli/entrypoint/finder/BookmarksFinder.d.ts +9 -0
  11. package/dist/cli/entrypoint/finder/BookmarksFinder.js +18 -0
  12. package/dist/cli/entrypoint/finder/BookmarksFinder.js.map +1 -0
  13. package/dist/cli/entrypoint/finder/CommandFinder.d.ts +4 -0
  14. package/dist/cli/entrypoint/finder/CommandFinder.js +20 -6
  15. package/dist/cli/entrypoint/finder/CommandFinder.js.map +1 -1
  16. package/dist/cli/entrypoint/finder/HistoryFinder.d.ts +9 -0
  17. package/dist/cli/entrypoint/finder/HistoryFinder.js +18 -0
  18. package/dist/cli/entrypoint/finder/HistoryFinder.js.map +1 -0
  19. package/dist/cli/entrypoint/finder/NewtabFinder.d.ts +9 -0
  20. package/dist/cli/entrypoint/finder/NewtabFinder.js +18 -0
  21. package/dist/cli/entrypoint/finder/NewtabFinder.js.map +1 -0
  22. package/dist/cli/entrypoint/finder/OptionsFinder.d.ts +2 -2
  23. package/dist/cli/entrypoint/finder/OptionsFinder.js +2 -2
  24. package/dist/cli/entrypoint/finder/OptionsFinder.js.map +1 -1
  25. package/dist/cli/entrypoint/finder/PageFinder.js +1 -1
  26. package/dist/cli/entrypoint/finder/PageFinder.js.map +1 -1
  27. package/dist/cli/entrypoint/finder/PopupFinder.d.ts +2 -2
  28. package/dist/cli/entrypoint/finder/PopupFinder.js +2 -2
  29. package/dist/cli/entrypoint/finder/PopupFinder.js.map +1 -1
  30. package/dist/cli/entrypoint/finder/SidebarFinder.d.ts +2 -2
  31. package/dist/cli/entrypoint/finder/SidebarFinder.js +2 -2
  32. package/dist/cli/entrypoint/finder/SidebarFinder.js.map +1 -1
  33. package/dist/cli/entrypoint/finder/ViewCspFinder.d.ts +2 -3
  34. package/dist/cli/entrypoint/finder/ViewCspFinder.js.map +1 -1
  35. package/dist/cli/entrypoint/finder/ViewPermissionsFinder.d.ts +22 -0
  36. package/dist/cli/entrypoint/finder/ViewPermissionsFinder.js +43 -0
  37. package/dist/cli/entrypoint/finder/ViewPermissionsFinder.js.map +1 -0
  38. package/dist/cli/entrypoint/finder/index.d.ts +5 -0
  39. package/dist/cli/entrypoint/finder/index.js +50 -40
  40. package/dist/cli/entrypoint/finder/index.js.map +1 -1
  41. package/dist/cli/entrypoint/name/NameGenerator.d.ts +2 -0
  42. package/dist/cli/entrypoint/name/NameGenerator.js +5 -1
  43. package/dist/cli/entrypoint/name/NameGenerator.js.map +1 -1
  44. package/dist/cli/entrypoint/parser/AbstractOverrideParser.d.ts +9 -0
  45. package/dist/cli/entrypoint/parser/AbstractOverrideParser.js +11 -0
  46. package/dist/cli/entrypoint/parser/AbstractOverrideParser.js.map +1 -0
  47. package/dist/cli/entrypoint/parser/BackgroundParser.js +3 -6
  48. package/dist/cli/entrypoint/parser/BackgroundParser.js.map +1 -1
  49. package/dist/cli/entrypoint/parser/BookmarksParser.d.ts +5 -0
  50. package/dist/cli/entrypoint/parser/BookmarksParser.js +10 -0
  51. package/dist/cli/entrypoint/parser/BookmarksParser.js.map +1 -0
  52. package/dist/cli/entrypoint/parser/HistoryParser.d.ts +5 -0
  53. package/dist/cli/entrypoint/parser/HistoryParser.js +10 -0
  54. package/dist/cli/entrypoint/parser/HistoryParser.js.map +1 -0
  55. package/dist/cli/entrypoint/parser/NewtabParser.d.ts +5 -0
  56. package/dist/cli/entrypoint/parser/NewtabParser.js +10 -0
  57. package/dist/cli/entrypoint/parser/NewtabParser.js.map +1 -0
  58. package/dist/cli/entrypoint/parser/OptionsParser.js +2 -1
  59. package/dist/cli/entrypoint/parser/OptionsParser.js.map +1 -1
  60. package/dist/cli/entrypoint/parser/PopupParser.js +2 -1
  61. package/dist/cli/entrypoint/parser/PopupParser.js.map +1 -1
  62. package/dist/cli/entrypoint/parser/SidebarParser.js +2 -1
  63. package/dist/cli/entrypoint/parser/SidebarParser.js.map +1 -1
  64. package/dist/cli/entrypoint/parser/ViewCspParser.d.ts +1 -1
  65. package/dist/cli/entrypoint/parser/ViewParser.d.ts +1 -1243
  66. package/dist/cli/entrypoint/parser/ViewParser.js +2 -72
  67. package/dist/cli/entrypoint/parser/ViewParser.js.map +1 -1
  68. package/dist/cli/entrypoint/parser/index.d.ts +4 -0
  69. package/dist/cli/entrypoint/parser/index.js +28 -20
  70. package/dist/cli/entrypoint/parser/index.js.map +1 -1
  71. package/dist/cli/entrypoint/parser/schemas/html.d.ts +903 -0
  72. package/dist/cli/entrypoint/parser/schemas/html.js +64 -0
  73. package/dist/cli/entrypoint/parser/schemas/html.js.map +1 -0
  74. package/dist/cli/entrypoint/parser/schemas/permissions.d.ts +23 -0
  75. package/dist/cli/entrypoint/parser/schemas/permissions.js +11 -0
  76. package/dist/cli/entrypoint/parser/schemas/permissions.js.map +1 -0
  77. package/dist/cli/plugins/index.d.ts +1 -0
  78. package/dist/cli/plugins/index.js +22 -20
  79. package/dist/cli/plugins/index.js.map +1 -1
  80. package/dist/cli/plugins/options/index.js +1 -1
  81. package/dist/cli/plugins/options/index.js.map +1 -1
  82. package/dist/cli/plugins/override/Override.d.ts +31 -0
  83. package/dist/cli/plugins/override/Override.js +112 -0
  84. package/dist/cli/plugins/override/Override.js.map +1 -0
  85. package/dist/cli/plugins/override/index.d.ts +2 -0
  86. package/dist/cli/plugins/override/index.js +48 -0
  87. package/dist/cli/plugins/override/index.js.map +1 -0
  88. package/dist/cli/plugins/popup/index.js +1 -1
  89. package/dist/cli/plugins/popup/index.js.map +1 -1
  90. package/dist/cli/plugins/sidebar/index.js +1 -2
  91. package/dist/cli/plugins/sidebar/index.js.map +1 -1
  92. package/dist/cli/plugins/view/View.d.ts +1 -1
  93. package/dist/cli/plugins/view/View.js +2 -10
  94. package/dist/cli/plugins/view/View.js.map +1 -1
  95. package/dist/cli/plugins/view/index.js +10 -1
  96. package/dist/cli/plugins/view/index.js.map +1 -1
  97. package/dist/cli/resolvers/config.js +2 -0
  98. package/dist/cli/resolvers/config.js.map +1 -1
  99. package/dist/cli/virtual/index.js +14 -17
  100. package/dist/cli/virtual/virtual.d.ts +7 -127
  101. package/dist/entry/background/Builder.js +1 -1
  102. package/dist/entry/background/Builder.js.map +1 -1
  103. package/dist/entry/background/index.d.ts +1 -1
  104. package/dist/entry/background/index.js +3 -2
  105. package/dist/entry/background/index.js.map +1 -1
  106. package/dist/entry/background/resolvers/definition.d.ts +5 -1
  107. package/dist/entry/background/resolvers/definition.js +15 -4
  108. package/dist/entry/background/resolvers/definition.js.map +1 -1
  109. package/dist/entry/command/Builder.js +1 -1
  110. package/dist/entry/command/Builder.js.map +1 -1
  111. package/dist/entry/command/index.d.ts +1 -1
  112. package/dist/entry/command/index.js +3 -2
  113. package/dist/entry/command/index.js.map +1 -1
  114. package/dist/entry/command/resolvers/definition.d.ts +6 -2
  115. package/dist/entry/command/resolvers/definition.js +14 -4
  116. package/dist/entry/command/resolvers/definition.js.map +1 -1
  117. package/dist/entry/content/adapters/react/Builder.js +4 -2
  118. package/dist/entry/content/adapters/react/Builder.js.map +1 -1
  119. package/dist/entry/content/adapters/react/Node.js +11 -6
  120. package/dist/entry/content/adapters/react/Node.js.map +1 -1
  121. package/dist/entry/content/adapters/react/definition.js +3 -2
  122. package/dist/entry/content/adapters/react/definition.js.map +1 -1
  123. package/dist/entry/content/adapters/vanilla/Builder.js +2 -2
  124. package/dist/entry/content/adapters/vanilla/Builder.js.map +1 -1
  125. package/dist/entry/content/adapters/vanilla/Node.js +3 -5
  126. package/dist/entry/content/adapters/vanilla/Node.js.map +1 -1
  127. package/dist/entry/content/adapters/vanilla/definition.js +2 -2
  128. package/dist/entry/content/adapters/vanilla/definition.js.map +1 -1
  129. package/dist/entry/content/lifecycle/Builder.js +5 -9
  130. package/dist/entry/content/lifecycle/Builder.js.map +1 -1
  131. package/dist/entry/core/react.d.ts +6 -0
  132. package/dist/entry/core/react.js +16 -0
  133. package/dist/entry/core/react.js.map +1 -0
  134. package/dist/entry/core/render.d.ts +5 -0
  135. package/dist/entry/core/render.js +16 -0
  136. package/dist/entry/core/render.js.map +1 -0
  137. package/dist/entry/offscreen/Builder.d.ts +6 -7
  138. package/dist/entry/offscreen/Builder.js +12 -13
  139. package/dist/entry/offscreen/Builder.js.map +1 -1
  140. package/dist/entry/offscreen/TransportBuilder.d.ts +1 -1
  141. package/dist/entry/offscreen/TransportBuilder.js +4 -3
  142. package/dist/entry/offscreen/TransportBuilder.js.map +1 -1
  143. package/dist/entry/offscreen/index.d.ts +5 -2
  144. package/dist/entry/offscreen/index.js +8 -2
  145. package/dist/entry/offscreen/index.js.map +1 -1
  146. package/dist/entry/offscreen/resolvers/definition.d.ts +4 -0
  147. package/dist/entry/offscreen/resolvers/definition.js +8 -0
  148. package/dist/entry/offscreen/resolvers/definition.js.map +1 -0
  149. package/dist/entry/relay/resolvers/definition.d.ts +1 -1
  150. package/dist/entry/relay/resolvers/definition.js +2 -10
  151. package/dist/entry/relay/resolvers/definition.js.map +1 -1
  152. package/dist/entry/sandbox/Builder.d.ts +6 -7
  153. package/dist/entry/sandbox/Builder.js +8 -12
  154. package/dist/entry/sandbox/Builder.js.map +1 -1
  155. package/dist/entry/sandbox/TransportBuilder.d.ts +1 -1
  156. package/dist/entry/sandbox/TransportBuilder.js +4 -3
  157. package/dist/entry/sandbox/TransportBuilder.js.map +1 -1
  158. package/dist/entry/sandbox/index.d.ts +7 -2
  159. package/dist/entry/sandbox/index.js +10 -4
  160. package/dist/entry/sandbox/index.js.map +1 -1
  161. package/dist/entry/sandbox/resolvers/definition.d.ts +4 -0
  162. package/dist/entry/sandbox/resolvers/definition.js +8 -0
  163. package/dist/entry/sandbox/resolvers/definition.js.map +1 -0
  164. package/dist/entry/service/index.d.ts +1 -0
  165. package/dist/entry/service/index.js +3 -1
  166. package/dist/entry/service/index.js.map +1 -1
  167. package/dist/entry/service/resolvers/definition.d.ts +3 -0
  168. package/dist/entry/service/resolvers/definition.js +8 -0
  169. package/dist/entry/service/resolvers/definition.js.map +1 -0
  170. package/dist/entry/transport/AbstractBuilder.js +1 -1
  171. package/dist/entry/transport/AbstractBuilder.js.map +1 -1
  172. package/dist/entry/transport/resolvers/definition.d.ts +7 -5
  173. package/dist/entry/transport/resolvers/definition.js +15 -4
  174. package/dist/entry/transport/resolvers/definition.js.map +1 -1
  175. package/dist/entry/view/{core/Builder.d.ts → Builder.d.ts} +9 -4
  176. package/dist/entry/view/Builder.js +62 -0
  177. package/dist/entry/view/Builder.js.map +1 -0
  178. package/dist/entry/view/adapters/react/Builder.d.ts +6 -7
  179. package/dist/entry/view/adapters/react/Builder.js +20 -23
  180. package/dist/entry/view/adapters/react/Builder.js.map +1 -1
  181. package/dist/entry/view/adapters/react/definition.d.ts +2 -0
  182. package/dist/entry/view/adapters/react/definition.js +13 -0
  183. package/dist/entry/view/adapters/react/definition.js.map +1 -0
  184. package/dist/entry/view/adapters/react/index.d.ts +2 -1
  185. package/dist/entry/view/adapters/react/index.js +3 -1
  186. package/dist/entry/view/adapters/react/index.js.map +1 -1
  187. package/dist/entry/view/adapters/vanilla/Builder.d.ts +5 -6
  188. package/dist/entry/view/adapters/vanilla/Builder.js +14 -25
  189. package/dist/entry/view/adapters/vanilla/Builder.js.map +1 -1
  190. package/dist/entry/view/adapters/vanilla/definition.d.ts +2 -0
  191. package/dist/entry/view/adapters/vanilla/definition.js +9 -0
  192. package/dist/entry/view/adapters/vanilla/definition.js.map +1 -0
  193. package/dist/entry/view/adapters/vanilla/index.d.ts +2 -1
  194. package/dist/entry/view/adapters/vanilla/index.js +3 -1
  195. package/dist/entry/view/adapters/vanilla/index.js.map +1 -1
  196. package/dist/entry/view/{core/resolvers → resolvers}/container.d.ts +1 -1
  197. package/dist/entry/view/resolvers/container.js.map +1 -0
  198. package/dist/entry/view/resolvers/definition.d.ts +3 -0
  199. package/dist/entry/view/resolvers/definition.js +18 -0
  200. package/dist/entry/view/resolvers/definition.js.map +1 -0
  201. package/dist/main/index.d.ts +2 -0
  202. package/dist/main/index.js +2 -0
  203. package/dist/main/index.js.map +1 -1
  204. package/dist/main/override.d.ts +5 -0
  205. package/dist/main/override.js +15 -0
  206. package/dist/main/override.js.map +1 -0
  207. package/dist/main/permissions.d.ts +1 -0
  208. package/dist/main/permissions.js +1 -0
  209. package/dist/main/view.d.ts +1 -1
  210. package/dist/types/background.d.ts +2 -8
  211. package/dist/types/background.js.map +1 -1
  212. package/dist/types/entrypoint.d.ts +5 -1
  213. package/dist/types/entrypoint.js +3 -0
  214. package/dist/types/entrypoint.js.map +1 -1
  215. package/dist/types/manifest.d.ts +20 -2
  216. package/dist/types/manifest.js.map +1 -1
  217. package/dist/types/offscreen.d.ts +2 -2
  218. package/dist/types/offscreen.js.map +1 -1
  219. package/dist/types/options.d.ts +3 -2
  220. package/dist/types/override.d.ts +22 -0
  221. package/dist/types/override.js +1 -0
  222. package/dist/types/override.js.map +1 -0
  223. package/dist/types/page.d.ts +1 -1
  224. package/dist/types/permissions.d.ts +39 -0
  225. package/dist/types/permissions.js +1 -0
  226. package/dist/types/permissions.js.map +1 -0
  227. package/dist/types/plugin.d.ts +4 -1
  228. package/dist/types/popup.d.ts +3 -2
  229. package/dist/types/sandbox.d.ts +2 -2
  230. package/dist/types/sandbox.js.map +1 -1
  231. package/dist/types/sidebar.d.ts +3 -2
  232. package/dist/types/sidebar.js.map +1 -1
  233. package/dist/types/view/adapters/index.d.ts +2 -0
  234. package/dist/types/view/adapters/index.js +1 -0
  235. package/dist/types/view/adapters/index.js.map +1 -0
  236. package/dist/types/view/adapters/react.d.ts +4 -0
  237. package/dist/types/view/adapters/react.js +1 -0
  238. package/dist/types/view/adapters/react.js.map +1 -0
  239. package/dist/types/view/adapters/vanilla.d.ts +1 -0
  240. package/dist/types/view/adapters/vanilla.js +1 -0
  241. package/dist/types/view/adapters/vanilla.js.map +1 -0
  242. package/dist/types/{view.d.ts → view/common.d.ts} +2 -14
  243. package/dist/types/view/common.js +1 -0
  244. package/dist/types/view/common.js.map +1 -0
  245. package/dist/types/view/definition.d.ts +15 -0
  246. package/dist/types/view/definition.js +1 -0
  247. package/dist/types/view/definition.js.map +1 -0
  248. package/dist/types/view/index.d.ts +4 -0
  249. package/dist/types/view/index.js +1 -0
  250. package/dist/types/view/index.js.map +1 -0
  251. package/dist/types/view/render.d.ts +7 -0
  252. package/dist/types/view/render.js +1 -0
  253. package/dist/types/view/render.js.map +1 -0
  254. package/package.json +1 -1
  255. package/dist/entry/background/resolvers/index.d.ts +0 -1
  256. package/dist/entry/background/resolvers/index.js +0 -2
  257. package/dist/entry/background/resolvers/index.js.map +0 -1
  258. package/dist/entry/command/resolvers/index.d.ts +0 -1
  259. package/dist/entry/command/resolvers/index.js +0 -2
  260. package/dist/entry/command/resolvers/index.js.map +0 -1
  261. package/dist/entry/content/adapters/vanilla/utils.d.ts +0 -1
  262. package/dist/entry/content/adapters/vanilla/utils.js +0 -7
  263. package/dist/entry/content/adapters/vanilla/utils.js.map +0 -1
  264. package/dist/entry/content/resolvers/index.d.ts +0 -6
  265. package/dist/entry/content/resolvers/index.js +0 -7
  266. package/dist/entry/content/resolvers/index.js.map +0 -1
  267. package/dist/entry/transport/index.d.ts +0 -1
  268. package/dist/entry/transport/index.js +0 -2
  269. package/dist/entry/transport/index.js.map +0 -1
  270. package/dist/entry/transport/resolvers/index.d.ts +0 -1
  271. package/dist/entry/transport/resolvers/index.js +0 -2
  272. package/dist/entry/transport/resolvers/index.js.map +0 -1
  273. package/dist/entry/view/adapters/react/resolvers/render.d.ts +0 -2
  274. package/dist/entry/view/adapters/react/resolvers/render.js +0 -11
  275. package/dist/entry/view/adapters/react/resolvers/render.js.map +0 -1
  276. package/dist/entry/view/core/Builder.js +0 -35
  277. package/dist/entry/view/core/Builder.js.map +0 -1
  278. package/dist/entry/view/core/resolvers/container.js.map +0 -1
  279. package/dist/entry/view/core/resolvers/definition.d.ts +0 -3
  280. package/dist/entry/view/core/resolvers/definition.js +0 -12
  281. package/dist/entry/view/core/resolvers/definition.js.map +0 -1
  282. package/dist/entry/view/core/resolvers/render.d.ts +0 -3
  283. package/dist/entry/view/core/resolvers/render.js +0 -18
  284. package/dist/entry/view/core/resolvers/render.js.map +0 -1
  285. package/dist/entry/view/index.d.ts +0 -1
  286. package/dist/entry/view/index.js +0 -2
  287. package/dist/entry/view/index.js.map +0 -1
  288. package/dist/types/view.js +0 -1
  289. /package/dist/cli/virtual/{transport.d.ts → service.d.ts} +0 -0
  290. /package/dist/entry/view/{core/resolvers → resolvers}/container.js +0 -0
  291. /package/dist/{types/view.js.map → main/permissions.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/plugins/view/index.ts"],"sourcesContent":["import {NormalModule} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {onlyViaTopLevelEntry} from \"@cli/bundler\";\nimport {getResolvePath, getSourcePath} from \"@cli/resolvers/path\";\n\nexport {default as View} from \"./View\";\n\nexport default definePlugin(() => {\n return {\n name: \"adnbn:view\",\n bundler: ({config}) => {\n const entryTypeFilter = onlyViaTopLevelEntry([\"page\", \"popup\", \"sidebar\", \"offscreen\", \"options\"]);\n\n return {\n optimization: {\n splitChunks: {\n cacheGroups: {\n adnbnView: {\n minChunks: 2,\n minSize: 0,\n name: \"common.view\",\n test: (module, context) => {\n const nm = module as NormalModule;\n\n if (!nm.resource) {\n return false;\n }\n\n if (nm.resource.startsWith(getResolvePath(getSourcePath(config)))) {\n return false;\n }\n\n return entryTypeFilter(module, context);\n },\n enforce: false,\n reuseExistingChunk: true,\n priority: 50,\n },\n },\n },\n },\n };\n },\n };\n});\n"],"mappings":"AAEA,SAAQ,oBAAmB;AAE3B,SAAQ,4BAA2B;AACnC,SAAQ,gBAAgB,qBAAoB;AAE5C,SAAmB,WAAXA,gBAAsB;AAE9B,IAAO,eAAQ,aAAa,MAAM;AAC9B,SAAO;AAAA,IACH,MAAM;AAAA,IACN,SAAS,CAAC,EAAC,OAAM,MAAM;AACnB,YAAM,kBAAkB,qBAAqB,CAAC,QAAQ,SAAS,WAAW,aAAa,SAAS,CAAC;AAEjG,aAAO;AAAA,QACH,cAAc;AAAA,UACV,aAAa;AAAA,YACT,aAAa;AAAA,cACT,WAAW;AAAA,gBACP,WAAW;AAAA,gBACX,SAAS;AAAA,gBACT,MAAM;AAAA,gBACN,MAAM,CAAC,QAAQ,YAAY;AACvB,wBAAM,KAAK;AAEX,sBAAI,CAAC,GAAG,UAAU;AACd,2BAAO;AAAA,kBACX;AAEA,sBAAI,GAAG,SAAS,WAAW,eAAe,cAAc,MAAM,CAAC,CAAC,GAAG;AAC/D,2BAAO;AAAA,kBACX;AAEA,yBAAO,gBAAgB,QAAQ,OAAO;AAAA,gBAC1C;AAAA,gBACA,SAAS;AAAA,gBACT,oBAAoB;AAAA,gBACpB,UAAU;AAAA,cACd;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ,CAAC;","names":["default"]}
1
+ {"version":3,"sources":["../../../../src/cli/plugins/view/index.ts"],"sourcesContent":["import {NormalModule} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {onlyViaTopLevelEntry} from \"@cli/bundler\";\nimport {getResolvePath, getSourcePath} from \"@cli/resolvers/path\";\n\nexport {default as View} from \"./View\";\n\nexport default definePlugin(() => {\n return {\n name: \"adnbn:view\",\n bundler: ({config}) => {\n const entryTypeFilter = onlyViaTopLevelEntry([\n \"page\",\n \"popup\",\n \"sidebar\",\n \"offscreen\",\n \"options\",\n \"newtab\",\n \"bookmarks\",\n \"history\",\n ]);\n\n return {\n optimization: {\n splitChunks: {\n cacheGroups: {\n adnbnView: {\n minChunks: 2,\n minSize: 0,\n name: \"common.view\",\n test: (module, context) => {\n const nm = module as NormalModule;\n\n if (!nm.resource) {\n return false;\n }\n\n if (nm.resource.startsWith(getResolvePath(getSourcePath(config)))) {\n return false;\n }\n\n return entryTypeFilter(module, context);\n },\n enforce: false,\n reuseExistingChunk: true,\n priority: 50,\n },\n },\n },\n },\n };\n },\n };\n});\n"],"mappings":"AAEA,SAAQ,oBAAmB;AAE3B,SAAQ,4BAA2B;AACnC,SAAQ,gBAAgB,qBAAoB;AAE5C,SAAmB,WAAXA,gBAAsB;AAE9B,IAAO,eAAQ,aAAa,MAAM;AAC9B,SAAO;AAAA,IACH,MAAM;AAAA,IACN,SAAS,CAAC,EAAC,OAAM,MAAM;AACnB,YAAM,kBAAkB,qBAAqB;AAAA,QACzC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ,CAAC;AAED,aAAO;AAAA,QACH,cAAc;AAAA,UACV,aAAa;AAAA,YACT,aAAa;AAAA,cACT,WAAW;AAAA,gBACP,WAAW;AAAA,gBACX,SAAS;AAAA,gBACT,MAAM;AAAA,gBACN,MAAM,CAAC,QAAQ,YAAY;AACvB,wBAAM,KAAK;AAEX,sBAAI,CAAC,GAAG,UAAU;AACd,2BAAO;AAAA,kBACX;AAEA,sBAAI,GAAG,SAAS,WAAW,eAAe,cAAc,MAAM,CAAC,CAAC,GAAG;AAC/D,2BAAO;AAAA,kBACX;AAEA,yBAAO,gBAAgB,QAAQ,OAAO;AAAA,gBAC1C;AAAA,gBACA,SAAS;AAAA,gBACT,oBAAoB;AAAA,gBACpB,UAAU;AAAA,cACd;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ,CAAC;","names":["default"]}
@@ -17,6 +17,7 @@ import {
17
17
  pluginOptimization,
18
18
  pluginOptions,
19
19
  pluginOutput,
20
+ pluginOverride,
20
21
  pluginPage,
21
22
  pluginPopup,
22
23
  pluginPublic,
@@ -308,6 +309,7 @@ var config_default = async (config) => {
308
309
  pluginContent(),
309
310
  pluginBackground(),
310
311
  pluginOptions(),
312
+ pluginOverride(),
311
313
  pluginPopup(),
312
314
  pluginPublic(),
313
315
  pluginSidebar(),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/resolvers/config.ts"],"sourcesContent":["import {existsSync} from \"fs\";\nimport dotenv, {type DotenvParseOutput} from \"dotenv\";\nimport {loadConfig} from \"c12\";\nimport _ from \"lodash\";\n\nimport {\n pluginAsset,\n pluginBackground,\n pluginBundler,\n pluginContent,\n pluginDotenv,\n pluginHtml,\n pluginIcon,\n pluginLocale,\n pluginMeta,\n pluginOffscreen,\n pluginManifest,\n pluginOptimization,\n pluginOptions,\n pluginOutput,\n pluginPage,\n pluginPopup,\n pluginPublic,\n pluginReact,\n pluginSandbox,\n pluginSidebar,\n pluginStyle,\n pluginTypescript,\n pluginVersion,\n pluginView,\n} from \"../plugins\";\n\nimport {fromRootPath, getAppPath, getAppSourcePath, getConfigFile} from \"../resolvers/path\";\n\nimport type {Config, OptionalConfig, ReadonlyConfig, UserConfig} from \"@typing/config\";\nimport {Command, Mode, Workspace} from \"@typing/app\";\nimport {Browser} from \"@typing/browser\";\nimport {Plugin} from \"@typing/plugin\";\nimport {ManifestVersion} from \"@typing/manifest\";\nimport {Language, LanguageCodes} from \"@typing/locale\";\nimport {DefaultIconGroupName} from \"@typing/icon\";\n\nconst resolveLanguage = (lang?: `${Language}` | Language): Language => {\n if (!lang) {\n return Language.English;\n }\n\n if (LanguageCodes.has(lang)) {\n return lang as Language;\n }\n\n throw new Error(`Invalid language \"${lang}\" provided by config`);\n};\n\nconst resolveWorkspace = (workspace?: Workspace | `${Workspace}`): Workspace => {\n if (!workspace) {\n return Workspace.Single;\n }\n\n if (Object.values(Workspace).includes(workspace as Workspace)) {\n return workspace as Workspace;\n }\n\n throw new Error(`Invalid workspace \"${workspace}\" provided by config`);\n};\n\nconst resolveSharedDir = (workspace: Workspace, sharedDir: string): string => {\n return workspace === Workspace.Multi ? sharedDir : \".\";\n};\n\nconst getUserConfig = async (config: ReadonlyConfig): Promise<UserConfig> => {\n const configFilePath = getConfigFile(config);\n\n if (existsSync(configFilePath)) {\n const {config: userConfig} = await loadConfig<UserConfig>({\n configFile: configFilePath,\n dotenv: true,\n });\n\n if (config.debug) {\n console.log(\"Loaded user config:\", configFilePath);\n }\n\n return userConfig || {};\n } else if (config.debug) {\n console.warn(\"Config file not found:\", configFilePath);\n }\n\n return {};\n};\n\nconst validateConfig = (config: ReadonlyConfig): ReadonlyConfig => {\n const {\n outDir,\n srcDir,\n sharedDir,\n appsDir,\n appSrcDir,\n jsDir,\n cssDir,\n assetsDir,\n htmlDir,\n publicDir,\n localeDir,\n iconSrcDir,\n iconOutDir,\n } = config;\n\n if (\n [\n outDir,\n srcDir,\n sharedDir,\n appsDir,\n appSrcDir,\n jsDir,\n cssDir,\n assetsDir,\n htmlDir,\n publicDir,\n localeDir,\n iconSrcDir,\n iconOutDir,\n ]\n .filter(dir => _.isString(dir))\n .some(dir => dir.includes(\"..\"))\n ) {\n throw new Error('Directory paths cannot contain relative paths (\"..\") for security reasons.');\n }\n\n if (appsDir === sharedDir) {\n throw new Error(\"Apps directory (appsDir) and shared directory (sharedDir) cannot be the same.\");\n }\n\n if (srcDir === outDir) {\n throw new Error(\"Source directory (srcDir) and destination directory (outputDir) cannot be the same.\");\n }\n\n if (srcDir === \".\") {\n throw new Error('Source directory cannot be the root directory (\".\") for security reasons.');\n }\n\n if (publicDir === \".\" || [srcDir, outDir, appSrcDir].includes(publicDir)) {\n throw new Error(\n 'Public directory cannot be the root directory (\".\") or intersect with other root directories for security reasons.'\n );\n }\n\n return config;\n};\n\nconst updateLocalDotenv = (config: ReadonlyConfig): DotenvParseOutput => {\n const {mode, app, browser, manifestVersion} = config;\n\n const localVars: DotenvParseOutput = {\n APP: app,\n BROWSER: browser,\n MODE: mode,\n MANIFEST_VERSION: String(manifestVersion),\n };\n\n Object.assign(process.env, localVars);\n\n return localVars;\n};\n\nconst loadDotenv = (config: ReadonlyConfig): DotenvParseOutput => {\n const {mode, browser, debug} = config;\n\n const preset = [\n `.env.${mode}.${browser}.local`,\n `.env.${mode}.${browser}`,\n `.env.${browser}.local`,\n `.env.${browser}`,\n `.env.${mode}.local`,\n `.env.${mode}`,\n `.env.local`,\n `.env`,\n ];\n\n const appSourcePaths = preset.map(file => getAppSourcePath(config, file));\n const appPaths = preset.map(file => getAppPath(config, file));\n const rootPaths = preset.map(file => fromRootPath(config, file));\n\n const paths = [...appSourcePaths, ...appPaths, ...rootPaths];\n\n const {parsed: fileVars = {}} = dotenv.config({path: paths, quiet: !debug});\n\n return {...fileVars, ...updateLocalDotenv(config)};\n};\n\nexport default async (config: OptionalConfig): Promise<Config> => {\n let {\n command = Command.Build,\n debug = false,\n configFile = \"adnbn.config.ts\",\n browser = Browser.Chrome,\n app = \"myapp\",\n name = app,\n description,\n shortName,\n version = \"VERSION\",\n minimumVersion = \"MINIMUM_VERSION\",\n author = undefined,\n homepage = \"HOMEPAGE\",\n icon = DefaultIconGroupName,\n lang = Language.English,\n incognito,\n specific,\n workspace = Workspace.Single,\n rootDir = \".\",\n outDir = \"dist\",\n srcDir = \"src\",\n sharedDir = \"shared\",\n appsDir = \"apps\",\n appSrcDir = \".\",\n localeDir = \"locales\",\n iconSrcDir = \"icons\",\n iconOutDir = \"icons\",\n jsDir = \"js\",\n cssDir = \"css\",\n assetsDir = \"assets\",\n publicDir = \"public\",\n htmlDir = \".\",\n html = [],\n bundler = {},\n env = {},\n manifest,\n manifestVersion = (new Set<Browser>([Browser.Safari]).has(browser) ? 2 : 3) as ManifestVersion,\n mode = Mode.Development,\n analyze = false,\n plugins = [],\n mergeBackground = false,\n mergeCommands = false,\n mergeContentScripts = false,\n concatContentScripts = true,\n mergeStyles = true,\n mergeIcons = false,\n mergeLocales = true,\n mergePages = false,\n mergePopup = false,\n mergePublic = false,\n multiplePopup = false,\n mergeSidebar = false,\n multipleSidebar = false,\n mergeRelay = false,\n mergeService = false,\n mergeOffscreen = false,\n mergeSandbox = false,\n commonChunks = true,\n artifactName = \"[name]-[browser]-[mv]\",\n assetsFilename = mode === Mode.Production && command === Command.Build && !debug\n ? \"[contenthash:4][ext]\"\n : \"[name]-[contenthash:4][ext]\",\n jsFilename = mode === Mode.Production && command === Command.Build && !debug\n ? \"[contenthash:5].js\"\n : \"[name].js\",\n cssFilename = mode === Mode.Production && command === Command.Build && !debug\n ? \"[contenthash:5].css\"\n : \"[name].css\",\n cssIdentName = mode === Mode.Production && command === Command.Build && !debug\n ? \"[app]-[hash:base64:5]\"\n : \"[local]-[hash:base64:5]\",\n } = config;\n\n let resolvedConfig: Config = {\n command,\n debug,\n mode,\n browser,\n app,\n name,\n description,\n shortName,\n version,\n minimumVersion,\n author,\n homepage,\n lang: resolveLanguage(lang),\n icon,\n incognito,\n specific,\n manifest,\n manifestVersion,\n workspace: resolveWorkspace(workspace),\n rootDir,\n outDir,\n srcDir,\n sharedDir,\n appsDir,\n appSrcDir,\n jsDir,\n cssDir,\n assetsDir,\n publicDir,\n htmlDir,\n localeDir,\n iconSrcDir,\n iconOutDir,\n html,\n bundler,\n env,\n plugins,\n analyze,\n configFile,\n mergeBackground,\n mergeCommands,\n mergeContentScripts,\n concatContentScripts,\n mergeStyles,\n mergeIcons,\n mergeLocales,\n mergePages,\n mergePopup,\n mergePublic,\n multiplePopup,\n mergeSidebar,\n multipleSidebar,\n mergeRelay,\n mergeService,\n mergeOffscreen,\n mergeSandbox,\n commonChunks,\n artifactName,\n assetsFilename,\n jsFilename,\n cssFilename,\n cssIdentName,\n };\n\n let vars = loadDotenv(resolvedConfig);\n\n const {\n plugins: userPlugins = [],\n lang: userLang,\n workspace: userWorkspace,\n ...userConfig\n } = await getUserConfig(resolvedConfig);\n\n resolvedConfig = {\n ...resolvedConfig,\n ...userConfig,\n lang: resolveLanguage(userLang ?? resolvedConfig.lang),\n workspace: resolveWorkspace(userWorkspace ?? resolvedConfig.workspace),\n };\n\n resolvedConfig.sharedDir = resolveSharedDir(resolvedConfig.workspace, resolvedConfig.sharedDir);\n\n resolvedConfig = validateConfig(resolvedConfig);\n\n vars = {...vars, ...loadDotenv(resolvedConfig)};\n\n /**\n * IMPORTANT: the order of plugins matters. Early plugins prepare the environment and artifacts for the following ones\n * (e.g., environment variables/output/transpilation/assets → page/version generation → bundling).\n * Reordering may result in missing artifacts, incorrect configuration, or build failures.\n */\n const corePlugins: Plugin[] = [\n pluginDotenv(vars),\n pluginOutput(),\n pluginOptimization(),\n pluginTypescript(),\n pluginReact(),\n pluginIcon(),\n pluginAsset(),\n pluginStyle(),\n pluginLocale(),\n pluginMeta(),\n pluginContent(),\n pluginBackground(),\n pluginOptions(),\n pluginPopup(),\n pluginPublic(),\n pluginSidebar(),\n pluginOffscreen(),\n pluginSandbox(),\n pluginPage(),\n pluginView(),\n pluginHtml(),\n pluginVersion(),\n pluginBundler(),\n pluginManifest(),\n ];\n\n return {\n ...resolvedConfig,\n plugins: [...plugins, ...userPlugins, ...corePlugins],\n };\n};\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/cli/resolvers/config.ts"],"sourcesContent":["import {existsSync} from \"fs\";\nimport dotenv, {type DotenvParseOutput} from \"dotenv\";\nimport {loadConfig} from \"c12\";\nimport _ from \"lodash\";\n\nimport {\n pluginAsset,\n pluginBackground,\n pluginBundler,\n pluginContent,\n pluginDotenv,\n pluginHtml,\n pluginIcon,\n pluginLocale,\n pluginMeta,\n pluginOffscreen,\n pluginManifest,\n pluginOptimization,\n pluginOptions,\n pluginOutput,\n pluginOverride,\n pluginPage,\n pluginPopup,\n pluginPublic,\n pluginReact,\n pluginSandbox,\n pluginSidebar,\n pluginStyle,\n pluginTypescript,\n pluginVersion,\n pluginView,\n} from \"../plugins\";\n\nimport {fromRootPath, getAppPath, getAppSourcePath, getConfigFile} from \"../resolvers/path\";\n\nimport type {Config, OptionalConfig, ReadonlyConfig, UserConfig} from \"@typing/config\";\nimport {Command, Mode, Workspace} from \"@typing/app\";\nimport {Browser} from \"@typing/browser\";\nimport {Plugin} from \"@typing/plugin\";\nimport {ManifestVersion} from \"@typing/manifest\";\nimport {Language, LanguageCodes} from \"@typing/locale\";\nimport {DefaultIconGroupName} from \"@typing/icon\";\n\nconst resolveLanguage = (lang?: `${Language}` | Language): Language => {\n if (!lang) {\n return Language.English;\n }\n\n if (LanguageCodes.has(lang)) {\n return lang as Language;\n }\n\n throw new Error(`Invalid language \"${lang}\" provided by config`);\n};\n\nconst resolveWorkspace = (workspace?: Workspace | `${Workspace}`): Workspace => {\n if (!workspace) {\n return Workspace.Single;\n }\n\n if (Object.values(Workspace).includes(workspace as Workspace)) {\n return workspace as Workspace;\n }\n\n throw new Error(`Invalid workspace \"${workspace}\" provided by config`);\n};\n\nconst resolveSharedDir = (workspace: Workspace, sharedDir: string): string => {\n return workspace === Workspace.Multi ? sharedDir : \".\";\n};\n\nconst getUserConfig = async (config: ReadonlyConfig): Promise<UserConfig> => {\n const configFilePath = getConfigFile(config);\n\n if (existsSync(configFilePath)) {\n const {config: userConfig} = await loadConfig<UserConfig>({\n configFile: configFilePath,\n dotenv: true,\n });\n\n if (config.debug) {\n console.log(\"Loaded user config:\", configFilePath);\n }\n\n return userConfig || {};\n } else if (config.debug) {\n console.warn(\"Config file not found:\", configFilePath);\n }\n\n return {};\n};\n\nconst validateConfig = (config: ReadonlyConfig): ReadonlyConfig => {\n const {\n outDir,\n srcDir,\n sharedDir,\n appsDir,\n appSrcDir,\n jsDir,\n cssDir,\n assetsDir,\n htmlDir,\n publicDir,\n localeDir,\n iconSrcDir,\n iconOutDir,\n } = config;\n\n if (\n [\n outDir,\n srcDir,\n sharedDir,\n appsDir,\n appSrcDir,\n jsDir,\n cssDir,\n assetsDir,\n htmlDir,\n publicDir,\n localeDir,\n iconSrcDir,\n iconOutDir,\n ]\n .filter(dir => _.isString(dir))\n .some(dir => dir.includes(\"..\"))\n ) {\n throw new Error('Directory paths cannot contain relative paths (\"..\") for security reasons.');\n }\n\n if (appsDir === sharedDir) {\n throw new Error(\"Apps directory (appsDir) and shared directory (sharedDir) cannot be the same.\");\n }\n\n if (srcDir === outDir) {\n throw new Error(\"Source directory (srcDir) and destination directory (outputDir) cannot be the same.\");\n }\n\n if (srcDir === \".\") {\n throw new Error('Source directory cannot be the root directory (\".\") for security reasons.');\n }\n\n if (publicDir === \".\" || [srcDir, outDir, appSrcDir].includes(publicDir)) {\n throw new Error(\n 'Public directory cannot be the root directory (\".\") or intersect with other root directories for security reasons.'\n );\n }\n\n return config;\n};\n\nconst updateLocalDotenv = (config: ReadonlyConfig): DotenvParseOutput => {\n const {mode, app, browser, manifestVersion} = config;\n\n const localVars: DotenvParseOutput = {\n APP: app,\n BROWSER: browser,\n MODE: mode,\n MANIFEST_VERSION: String(manifestVersion),\n };\n\n Object.assign(process.env, localVars);\n\n return localVars;\n};\n\nconst loadDotenv = (config: ReadonlyConfig): DotenvParseOutput => {\n const {mode, browser, debug} = config;\n\n const preset = [\n `.env.${mode}.${browser}.local`,\n `.env.${mode}.${browser}`,\n `.env.${browser}.local`,\n `.env.${browser}`,\n `.env.${mode}.local`,\n `.env.${mode}`,\n `.env.local`,\n `.env`,\n ];\n\n const appSourcePaths = preset.map(file => getAppSourcePath(config, file));\n const appPaths = preset.map(file => getAppPath(config, file));\n const rootPaths = preset.map(file => fromRootPath(config, file));\n\n const paths = [...appSourcePaths, ...appPaths, ...rootPaths];\n\n const {parsed: fileVars = {}} = dotenv.config({path: paths, quiet: !debug});\n\n return {...fileVars, ...updateLocalDotenv(config)};\n};\n\nexport default async (config: OptionalConfig): Promise<Config> => {\n let {\n command = Command.Build,\n debug = false,\n configFile = \"adnbn.config.ts\",\n browser = Browser.Chrome,\n app = \"myapp\",\n name = app,\n description,\n shortName,\n version = \"VERSION\",\n minimumVersion = \"MINIMUM_VERSION\",\n author = undefined,\n homepage = \"HOMEPAGE\",\n icon = DefaultIconGroupName,\n lang = Language.English,\n incognito,\n specific,\n workspace = Workspace.Single,\n rootDir = \".\",\n outDir = \"dist\",\n srcDir = \"src\",\n sharedDir = \"shared\",\n appsDir = \"apps\",\n appSrcDir = \".\",\n localeDir = \"locales\",\n iconSrcDir = \"icons\",\n iconOutDir = \"icons\",\n jsDir = \"js\",\n cssDir = \"css\",\n assetsDir = \"assets\",\n publicDir = \"public\",\n htmlDir = \".\",\n html = [],\n bundler = {},\n env = {},\n manifest,\n manifestVersion = (new Set<Browser>([Browser.Safari]).has(browser) ? 2 : 3) as ManifestVersion,\n mode = Mode.Development,\n analyze = false,\n plugins = [],\n mergeBackground = false,\n mergeCommands = false,\n mergeContentScripts = false,\n concatContentScripts = true,\n mergeStyles = true,\n mergeIcons = false,\n mergeLocales = true,\n mergePages = false,\n mergePopup = false,\n mergePublic = false,\n multiplePopup = false,\n mergeSidebar = false,\n multipleSidebar = false,\n mergeRelay = false,\n mergeService = false,\n mergeOffscreen = false,\n mergeSandbox = false,\n commonChunks = true,\n artifactName = \"[name]-[browser]-[mv]\",\n assetsFilename = mode === Mode.Production && command === Command.Build && !debug\n ? \"[contenthash:4][ext]\"\n : \"[name]-[contenthash:4][ext]\",\n jsFilename = mode === Mode.Production && command === Command.Build && !debug\n ? \"[contenthash:5].js\"\n : \"[name].js\",\n cssFilename = mode === Mode.Production && command === Command.Build && !debug\n ? \"[contenthash:5].css\"\n : \"[name].css\",\n cssIdentName = mode === Mode.Production && command === Command.Build && !debug\n ? \"[app]-[hash:base64:5]\"\n : \"[local]-[hash:base64:5]\",\n } = config;\n\n let resolvedConfig: Config = {\n command,\n debug,\n mode,\n browser,\n app,\n name,\n description,\n shortName,\n version,\n minimumVersion,\n author,\n homepage,\n lang: resolveLanguage(lang),\n icon,\n incognito,\n specific,\n manifest,\n manifestVersion,\n workspace: resolveWorkspace(workspace),\n rootDir,\n outDir,\n srcDir,\n sharedDir,\n appsDir,\n appSrcDir,\n jsDir,\n cssDir,\n assetsDir,\n publicDir,\n htmlDir,\n localeDir,\n iconSrcDir,\n iconOutDir,\n html,\n bundler,\n env,\n plugins,\n analyze,\n configFile,\n mergeBackground,\n mergeCommands,\n mergeContentScripts,\n concatContentScripts,\n mergeStyles,\n mergeIcons,\n mergeLocales,\n mergePages,\n mergePopup,\n mergePublic,\n multiplePopup,\n mergeSidebar,\n multipleSidebar,\n mergeRelay,\n mergeService,\n mergeOffscreen,\n mergeSandbox,\n commonChunks,\n artifactName,\n assetsFilename,\n jsFilename,\n cssFilename,\n cssIdentName,\n };\n\n let vars = loadDotenv(resolvedConfig);\n\n const {\n plugins: userPlugins = [],\n lang: userLang,\n workspace: userWorkspace,\n ...userConfig\n } = await getUserConfig(resolvedConfig);\n\n resolvedConfig = {\n ...resolvedConfig,\n ...userConfig,\n lang: resolveLanguage(userLang ?? resolvedConfig.lang),\n workspace: resolveWorkspace(userWorkspace ?? resolvedConfig.workspace),\n };\n\n resolvedConfig.sharedDir = resolveSharedDir(resolvedConfig.workspace, resolvedConfig.sharedDir);\n\n resolvedConfig = validateConfig(resolvedConfig);\n\n vars = {...vars, ...loadDotenv(resolvedConfig)};\n\n /**\n * IMPORTANT: the order of plugins matters. Early plugins prepare the environment and artifacts for the following ones\n * (e.g., environment variables/output/transpilation/assets → page/version generation → bundling).\n * Reordering may result in missing artifacts, incorrect configuration, or build failures.\n */\n const corePlugins: Plugin[] = [\n pluginDotenv(vars),\n pluginOutput(),\n pluginOptimization(),\n pluginTypescript(),\n pluginReact(),\n pluginIcon(),\n pluginAsset(),\n pluginStyle(),\n pluginLocale(),\n pluginMeta(),\n pluginContent(),\n pluginBackground(),\n pluginOptions(),\n pluginOverride(),\n pluginPopup(),\n pluginPublic(),\n pluginSidebar(),\n pluginOffscreen(),\n pluginSandbox(),\n pluginPage(),\n pluginView(),\n pluginHtml(),\n pluginVersion(),\n pluginBundler(),\n pluginManifest(),\n ];\n\n return {\n ...resolvedConfig,\n plugins: [...plugins, ...userPlugins, ...corePlugins],\n };\n};\n"],"mappings":"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","names":[]}
@@ -1,17 +1,14 @@
1
1
  // raw-loader:/home/runner/work/addon-bone/addon-bone/src/cli/virtual/background.ts?raw
2
- var background_default = 'import type {BackgroundDefinition} from "adnbn";\nimport background, {isValidBackgroundDefinition, isValidBackgroundMainHandler} from "adnbn/entry/background";\n\nimport * as module from "virtual:background-entrypoint";\n\ntry {\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: BackgroundDefinition = otherDefinition;\n\n if (isValidBackgroundDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidBackgroundMainHandler(defaultDefinition)) {\n definition = {...definition, main: defaultDefinition};\n }\n\n const {main, ...options} = definition;\n\n background({main, ...options});\n} catch (e) {\n console.error("The background crashed on startup:", e);\n}\n';
2
+ var background_default = 'import background, {resolveDefinition} from "adnbn/entry/background";\n\nimport * as module from "virtual:background-entrypoint";\n\ntry {\n background(resolveDefinition(module));\n} catch (e) {\n console.error("The background crashed on startup:", e);\n}\n';
3
3
 
4
4
  // raw-loader:/home/runner/work/addon-bone/addon-bone/src/cli/virtual/command.ts?raw
5
- var command_default = 'import type {CommandUnresolvedDefinition} from "adnbn";\nimport command, {isValidCommandDefinition, isValidCommandExecuteFunction} from "adnbn/entry/command";\n\nimport * as module from "virtual:command-entrypoint";\n\ntry {\n const commandName = "virtual:command-name";\n\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: CommandUnresolvedDefinition = otherDefinition;\n\n if (isValidCommandDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidCommandExecuteFunction(defaultDefinition)) {\n definition = {...definition, execute: defaultDefinition};\n }\n\n const {execute, name = commandName, ...options} = definition;\n\n command({\n name,\n execute,\n ...options,\n });\n} catch (e) {\n console.error("The command crashed on startup:", e);\n}\n';
5
+ var command_default = 'import command, {resolveDefinition} from "adnbn/entry/command";\n\nimport * as module from "virtual:command-entrypoint";\n\ntry {\n command(resolveDefinition(module, "virtual:command-name"));\n} catch (e) {\n console.error("The command crashed on startup:", e);\n}\n';
6
6
 
7
7
  // raw-loader:/home/runner/work/addon-bone/addon-bone/src/cli/virtual/content.ts?raw
8
8
  var content_default = 'import contentScript, {resolveDefinition} from "virtual:content-builder";\n\nimport * as module from "virtual:content-entrypoint";\n\ntry {\n contentScript(resolveDefinition(module));\n} catch (e) {\n console.error("The content script crashed on startup:", e);\n}\n';
9
9
 
10
- // raw-loader:/home/runner/work/addon-bone/addon-bone/src/cli/virtual/transport.ts?raw
11
- var transport_default = 'import type {TransportOptions, TransportType, TransportUnresolvedDefinition} from "adnbn/transport";\nimport {isValidTransportDefinition, isValidTransportInitFunction} from "adnbn/entry/transport";\n\n//@ts-ignore\nimport transport from "adnbn/entry/:entry";\n\nimport * as module from "virtual:transport-entrypoint";\n\ntry {\n const transportName = "virtual:transport-name";\n\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: TransportUnresolvedDefinition<TransportOptions, TransportType> = otherDefinition;\n\n if (isValidTransportDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidTransportInitFunction(defaultDefinition)) {\n definition = {...definition, init: defaultDefinition};\n }\n\n const {init, name, ...options} = definition;\n\n transport({name: transportName, init, ...options});\n} catch (e) {\n console.error("The :entry crashed on startup:", e);\n}\n';
12
-
13
10
  // raw-loader:/home/runner/work/addon-bone/addon-bone/src/cli/virtual/offscreen.ts?raw
14
- var offscreen_default = 'import type {OffscreenUnresolvedDefinition} from "adnbn";\nimport type {TransportType} from "adnbn/transport";\nimport {isValidTransportDefinition, isValidTransportInitFunction} from "adnbn/entry/transport";\nimport {Builder as OffscreenBuilder} from "adnbn/entry/offscreen";\n\nimport {Builder as ViewBuilder} from "virtual:view-framework";\n\nimport * as module from "virtual:offscreen-entrypoint";\n\ntry {\n const offscreenName = "virtual:offscreen-name";\n\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: OffscreenUnresolvedDefinition<TransportType> = otherDefinition;\n\n if (isValidTransportDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidTransportInitFunction(defaultDefinition)) {\n definition = {...definition, init: defaultDefinition};\n }\n\n const {init, main, name, ...options} = definition;\n\n new OffscreenBuilder({\n name: offscreenName,\n init,\n main,\n ...options,\n })\n .view(new ViewBuilder(options))\n .build()\n .catch(e => {\n console.error("Failed to build offscreen: ", e);\n });\n} catch (e) {\n console.error("The offscreen crashed on startup:", e);\n}\n';
11
+ var offscreen_default = 'import offscreen, {resolveDefinition} from "adnbn/entry/offscreen";\n\nimport {Builder as ViewBuilder} from "virtual:view-builder";\n\nimport * as module from "virtual:offscreen-entrypoint";\n\ntry {\n offscreen(resolveDefinition(module, "virtual:offscreen-name"), ViewBuilder);\n} catch (e) {\n console.error("The offscreen crashed on startup:", e);\n}\n';
15
12
 
16
13
  // raw-loader:/home/runner/work/addon-bone/addon-bone/src/cli/virtual/offscreen.background.ts?raw
17
14
  var offscreen_background_default = 'import {OffscreenBackground} from "adnbn/offscreen";\n\ntry {\n new OffscreenBackground().build();\n} catch (e) {\n console.error("Failed to build offscreen layer on background:", e);\n}\n';
@@ -20,10 +17,13 @@ var offscreen_background_default = 'import {OffscreenBackground} from "adnbn/off
20
17
  var relay_default = 'import relay, {resolveDefinition} from "adnbn/entry/relay";\n\nimport {Builder as ContentBuilder} from "virtual:content-builder";\n\nimport * as module from "virtual:relay-entrypoint";\n\ntry {\n relay(resolveDefinition(module, "virtual:relay-name"), ContentBuilder);\n} catch (error) {\n console.error("The relay crashed on startup:", error);\n}\n';
21
18
 
22
19
  // raw-loader:/home/runner/work/addon-bone/addon-bone/src/cli/virtual/sandbox.ts?raw
23
- var sandbox_default = 'import type {SandboxUnresolvedDefinition} from "adnbn";\nimport type {TransportType} from "adnbn/transport";\nimport {isValidTransportDefinition, isValidTransportInitFunction} from "adnbn/entry/transport";\nimport {Builder as SandboxBuilder} from "adnbn/entry/sandbox";\n\nimport {Builder as ViewBuilder} from "virtual:view-framework";\n\nimport * as module from "virtual:sandbox-entrypoint";\n\ntry {\n const sandboxName = "virtual:sandbox-name";\n\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: SandboxUnresolvedDefinition<TransportType> = otherDefinition;\n\n if (isValidTransportDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidTransportInitFunction(defaultDefinition)) {\n definition = {...definition, init: defaultDefinition};\n }\n\n const {init, main, name, ...options} = definition;\n\n new SandboxBuilder({\n name: sandboxName,\n init,\n main,\n ...options,\n })\n .view(new ViewBuilder(options))\n .build()\n .catch(e => {\n console.error("Failed to build sandbox: ", e);\n });\n} catch (e) {\n console.error("The sandbox crashed on startup:", e);\n}\n';
20
+ var sandbox_default = 'import sandbox, {resolveDefinition} from "adnbn/entry/sandbox";\n\nimport {Builder as ViewBuilder} from "virtual:view-builder";\n\nimport * as module from "virtual:sandbox-entrypoint";\n\ntry {\n sandbox(resolveDefinition(module, "virtual:sandbox-name"), ViewBuilder);\n} catch (e) {\n console.error("The sandbox crashed on startup:", e);\n}\n';
21
+
22
+ // raw-loader:/home/runner/work/addon-bone/addon-bone/src/cli/virtual/service.ts?raw
23
+ var service_default = 'import service, {resolveDefinition} from "adnbn/entry/service";\n\nimport * as module from "virtual:service-entrypoint";\n\ntry {\n service(resolveDefinition(module, "virtual:service-name"));\n} catch (e) {\n console.error("The service crashed on startup:", e);\n}\n';
24
24
 
25
25
  // raw-loader:/home/runner/work/addon-bone/addon-bone/src/cli/virtual/view.ts?raw
26
- var view_default = 'import type {ViewDefinition, ViewOptions} from "adnbn";\nimport {isViewDefinition, isValidViewDefinitionRenderValue} from "adnbn/entry/view";\n\nimport view from "virtual:view-framework";\n\nimport * as module from "virtual:view-entrypoint";\n\ntry {\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: ViewDefinition<ViewOptions> = otherDefinition;\n\n if (isViewDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidViewDefinitionRenderValue(defaultDefinition)) {\n definition = {...definition, render: defaultDefinition};\n }\n\n view(definition);\n} catch (e) {\n console.error("The view crashed on startup:", e);\n}\n';
26
+ var view_default = 'import view, {resolveDefinition} from "virtual:view-builder";\n\nimport * as module from "virtual:view-entrypoint";\n\ntry {\n view(resolveDefinition(module));\n} catch (e) {\n console.error("The view crashed on startup:", e);\n}\n';
27
27
 
28
28
  // src/cli/virtual/index.ts
29
29
  import { inferEntrypointFramework } from "../entrypoint/index.js";
@@ -32,15 +32,12 @@ import { inferEntrypointFramework } from "../entrypoint/index.js";
32
32
  var PackageName = "adnbn";
33
33
 
34
34
  // src/cli/virtual/index.ts
35
- var templates = { background: background_default, command: command_default, content: content_default, offscreen: offscreen_default, relay: relay_default, sandbox: sandbox_default, view: view_default, transport: transport_default };
35
+ var templates = { background: background_default, command: command_default, content: content_default, offscreen: offscreen_default, relay: relay_default, sandbox: sandbox_default, service: service_default, view: view_default };
36
36
  var getEntryFramework = (file, entry) => {
37
37
  return `${PackageName}/entry/${entry}/${inferEntrypointFramework(file)}`;
38
38
  };
39
39
  var getVirtualModule = (file, template) => {
40
- return templates[template].replaceAll("//@ts-ignore", "").replace(`virtual:${template}-entrypoint`, file.import);
41
- };
42
- var getTransportModule = (file, name, layer) => {
43
- return getVirtualModule(file, "transport").replace("virtual:transport-name", name).replaceAll(":entry", layer);
40
+ return templates[template].replace(`virtual:${template}-entrypoint`, file.import);
44
41
  };
45
42
  var virtualBackgroundModule = (file) => {
46
43
  return getVirtualModule(file, "background");
@@ -52,7 +49,7 @@ var virtualContentScriptModule = (file, navigation = false) => {
52
49
  return getVirtualModule(file, "content").replace(`virtual:content-builder`, navigation ? `${PackageName}/entry/content` : getEntryFramework(file, "content"));
53
50
  };
54
51
  var virtualOffscreenModule = (file, name) => {
55
- return getVirtualModule(file, "offscreen").replace("virtual:offscreen-name", name).replace(`virtual:view-framework`, getEntryFramework(file, "view"));
52
+ return getVirtualModule(file, "offscreen").replace("virtual:offscreen-name", name).replace(`virtual:view-builder`, getEntryFramework(file, "view"));
56
53
  };
57
54
  var virtualOffscreenBackgroundModule = () => {
58
55
  return offscreen_background_default;
@@ -64,13 +61,13 @@ var virtualRelayModule = (file, name, navigation = false) => {
64
61
  );
65
62
  };
66
63
  var virtualSandboxModule = (file, name) => {
67
- return getVirtualModule(file, "sandbox").replace("virtual:sandbox-name", name).replace(`virtual:view-framework`, getEntryFramework(file, "view"));
64
+ return getVirtualModule(file, "sandbox").replace("virtual:sandbox-name", name).replace(`virtual:view-builder`, getEntryFramework(file, "view"));
68
65
  };
69
66
  var virtualServiceModule = (file, name) => {
70
- return getTransportModule(file, name, "service");
67
+ return getVirtualModule(file, "service").replace("virtual:service-name", name);
71
68
  };
72
69
  var virtualViewModule = (file) => {
73
- return getVirtualModule(file, "view").replace(`virtual:view-framework`, getEntryFramework(file, "view"));
70
+ return getVirtualModule(file, "view").replace(`virtual:view-builder`, getEntryFramework(file, "view"));
74
71
  };
75
72
  export {
76
73
  virtualBackgroundModule,
@@ -1,34 +1,6 @@
1
- declare module "virtual:background-entrypoint" {
2
- type BackgroundDefinition = import("../../types/background.js").BackgroundDefinition;
3
-
4
- interface ModuleType extends BackgroundDefinition {
5
- default: BackgroundDefinition | BackgroundDefinition["main"] | undefined;
6
- }
7
-
8
- const module: ModuleType;
9
- export = module;
10
- }
11
-
12
- declare module "virtual:command-entrypoint" {
13
- type CommandDefinition = import("../../types/command.js").CommandDefinition;
14
-
15
- interface ModuleType extends CommandDefinition {
16
- default: CommandDefinition | CommandDefinition["execute"] | undefined;
17
- }
18
-
19
- const module: ModuleType;
20
- export = module;
21
- }
22
-
23
- declare module "virtual:content-entrypoint" {
24
- type ContentScriptDefinition = import("../../types/content/index.js").ContentScriptDefinition;
25
-
26
- interface ModuleType {
27
- [name: string]: unknown;
28
- default: ContentScriptDefinition | ContentScriptDefinition["render"] | undefined;
29
- }
30
-
31
- const module: ModuleType;
1
+ /** Generated modules import the entrypoint as a namespace and pass it to their runtime resolveDefinition(). */
2
+ declare module "virtual:*-entrypoint" {
3
+ const module: {readonly [name: string]: unknown};
32
4
  export = module;
33
5
  }
34
6
 
@@ -47,85 +19,11 @@ declare module "virtual:content-builder" {
47
19
  export default content;
48
20
  }
49
21
 
50
- declare module "virtual:offscreen-entrypoint" {
51
- type OffscreenDefinition = import("../../types/offscreen.js").OffscreenDefinition<
52
- import("../../types/transport.js").TransportType
53
- >;
54
-
55
- interface ModuleType extends OffscreenDefinition {
56
- default: OffscreenDefinition | OffscreenDefinition["init"] | undefined;
57
- }
58
-
59
- const module: ModuleType;
60
- export = module;
61
- }
62
-
63
- declare module "virtual:relay-entrypoint" {
64
- type RelayDefinition = import("../../types/relay.js").RelayDefinition<import("../../types/transport.js").TransportType>;
65
-
66
- export const {
67
- init,
68
- main,
69
- name,
70
- method,
71
- isolation,
72
- allFrames,
73
- matches,
74
- excludeMatches,
75
- includeGlobs,
76
- excludeGlobs,
77
- runAt,
78
- world,
79
- matchAboutBlank,
80
- matchOriginAsFallback,
81
- declarative,
82
- marker,
83
- anchor,
84
- mount,
85
- prepare,
86
- render,
87
- container,
88
- boundary,
89
- target,
90
- watch,
91
- includeBrowser,
92
- excludeBrowser,
93
- includeApp,
94
- excludeApp,
95
- mode,
96
- manifestVersion,
97
- debug,
98
- }: Partial<RelayDefinition>;
99
-
100
- const definition: RelayDefinition | RelayDefinition["init"] | undefined;
101
- export default definition;
102
- }
22
+ declare module "virtual:view-builder" {
23
+ export const resolveDefinition: (
24
+ module: object
25
+ ) => import("../../types/view/index.js").ViewDefinition<import("../../types/view/index.js").ViewConfig>;
103
26
 
104
- declare module "virtual:sandbox-entrypoint" {
105
- type SandboxDefinition = import("../../types/sandbox.js").SandboxDefinition<any>;
106
-
107
- interface ModuleType extends SandboxDefinition {
108
- default: SandboxDefinition | SandboxDefinition["init"] | undefined;
109
- }
110
-
111
- const module: ModuleType;
112
- export = module;
113
- }
114
-
115
- declare module "virtual:view-entrypoint" {
116
- import {ViewOptions} from "../../types/view.js";
117
-
118
- type ViewDefinition = import("../../types/view.js").ViewDefinition<ViewOptions>;
119
-
120
- interface ModuleType extends ViewDefinition {
121
- default: ViewDefinition | ViewDefinition["render"] | undefined;
122
- }
123
-
124
- const module: ModuleType;
125
- export = module;
126
- }
127
-
128
- declare module "virtual:view-framework" {
129
27
  export const Builder:
130
28
  | typeof import("../../entry/view/adapters/vanilla/index.js").Builder
131
29
  | typeof import("../../entry/view/adapters/react/index.js").Builder;
@@ -135,21 +33,3 @@ declare module "virtual:view-framework" {
135
33
  | typeof import("../../entry/view/adapters/react/index.js").default;
136
34
  export default view;
137
35
  }
138
-
139
- declare module "virtual:transport-entrypoint" {
140
- type TransportDefinition = import("../../types/transport.js").TransportDefinition<any, any>;
141
-
142
- interface ModuleType extends TransportDefinition {
143
- default: TransportDefinition | TransportDefinition["init"] | undefined;
144
- }
145
-
146
- const module: ModuleType;
147
- export = module;
148
- }
149
-
150
- declare module "adnbn/entry/:entry" {
151
- import type {TransportUnresolvedDefinition, TransportOptions, TransportType} from "../../types/transport.js";
152
-
153
- const transport: (definition: TransportUnresolvedDefinition<TransportOptions, TransportType>) => void;
154
- export default transport;
155
- }
@@ -1,5 +1,5 @@
1
1
  import Builder from "./../../entry/core/Builder.js";
2
- import { isValidBackgroundMainHandler } from "./resolvers/index.js";
2
+ import { isValidBackgroundMainHandler } from "./resolvers/definition.js";
3
3
  class Builder_default extends Builder {
4
4
  constructor(definition) {
5
5
  super();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/entry/background/Builder.ts"],"sourcesContent":["import Builder from \"@entry/core/Builder\";\n\nimport {isValidBackgroundMainHandler} from \"./resolvers\";\n\nimport {BackgroundBuilder, BackgroundDefinition} from \"@typing/background\";\n\nexport default class extends Builder implements BackgroundBuilder {\n constructor(private readonly definition: BackgroundDefinition) {\n super();\n }\n\n public async build(): Promise<void> {\n await this.destroy();\n\n const {main, ...options} = this.definition;\n\n if (isValidBackgroundMainHandler(main)) {\n await main(options);\n }\n }\n\n public async destroy(): Promise<void> {\n // Nothing to do\n }\n}\n"],"mappings":"AAAA,OAAO,aAAa;AAEpB,SAAQ,oCAAmC;AAI3C,MAAO,wBAAsB,QAAqC;AAAA,EAC9D,YAA6B,YAAkC;AAC3D,UAAM;AADmB;AAAA,EAE7B;AAAA,EAF6B;AAAA,EAI7B,MAAa,QAAuB;AAChC,UAAM,KAAK,QAAQ;AAEnB,UAAM,EAAC,MAAM,GAAG,QAAO,IAAI,KAAK;AAEhC,QAAI,6BAA6B,IAAI,GAAG;AACpC,YAAM,KAAK,OAAO;AAAA,IACtB;AAAA,EACJ;AAAA,EAEA,MAAa,UAAyB;AAAA,EAEtC;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/entry/background/Builder.ts"],"sourcesContent":["import Builder from \"@entry/core/Builder\";\n\nimport {isValidBackgroundMainHandler} from \"./resolvers/definition\";\n\nimport {BackgroundBuilder, BackgroundDefinition} from \"@typing/background\";\n\nexport default class extends Builder implements BackgroundBuilder {\n constructor(private readonly definition: BackgroundDefinition) {\n super();\n }\n\n public async build(): Promise<void> {\n await this.destroy();\n\n const {main, ...options} = this.definition;\n\n if (isValidBackgroundMainHandler(main)) {\n await main(options);\n }\n }\n\n public async destroy(): Promise<void> {\n // Nothing to do\n }\n}\n"],"mappings":"AAAA,OAAO,aAAa;AAEpB,SAAQ,oCAAmC;AAI3C,MAAO,wBAAsB,QAAqC;AAAA,EAC9D,YAA6B,YAAkC;AAC3D,UAAM;AADmB;AAAA,EAE7B;AAAA,EAF6B;AAAA,EAI7B,MAAa,QAAuB;AAChC,UAAM,KAAK,QAAQ;AAEnB,UAAM,EAAC,MAAM,GAAG,QAAO,IAAI,KAAK;AAEhC,QAAI,6BAA6B,IAAI,GAAG;AACpC,YAAM,KAAK,OAAO;AAAA,IACtB;AAAA,EACJ;AAAA,EAEA,MAAa,UAAyB;AAAA,EAEtC;AACJ;","names":[]}
@@ -1,3 +1,3 @@
1
- export * from "./resolvers/index.js";
1
+ export { resolveDefinition } from "./resolvers/definition.js";
2
2
  declare const _default: (definition: import("../../index.js").BackgroundDefinition) => void;
3
3
  export default _default;
@@ -1,7 +1,8 @@
1
1
  import Builder from "./Builder.js";
2
- export * from "./resolvers/index.js";
2
+ import { resolveDefinition } from "./resolvers/definition.js";
3
3
  var background_default = Builder.resolver();
4
4
  export {
5
- background_default as default
5
+ background_default as default,
6
+ resolveDefinition
6
7
  };
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/entry/background/index.ts"],"sourcesContent":["import Builder from \"./Builder\";\n\nexport * from \"./resolvers\";\n\nexport default Builder.resolver();\n"],"mappings":"AAAA,OAAO,aAAa;AAEpB,cAAc;AAEd,IAAO,qBAAQ,QAAQ,SAAS;","names":[]}
1
+ {"version":3,"sources":["../../../src/entry/background/index.ts"],"sourcesContent":["import Builder from \"./Builder\";\n\nexport {resolveDefinition} from \"./resolvers/definition\";\n\nexport default Builder.resolver();\n"],"mappings":"AAAA,OAAO,aAAa;AAEpB,SAAQ,yBAAwB;AAEhC,IAAO,qBAAQ,QAAQ,SAAS;","names":[]}
@@ -1,3 +1,7 @@
1
1
  import { BackgroundDefinition, BackgroundMainHandler } from "../../../types/background.js";
2
- export declare const isValidBackgroundDefinition: (definition: any) => definition is BackgroundDefinition;
3
2
  export declare const isValidBackgroundMainHandler: (main: unknown) => main is BackgroundMainHandler;
3
+ /**
4
+ * Merge background exports without executing main: default options override named exports,
5
+ * and a default function is the main handler. Any other default value is ignored.
6
+ */
7
+ export declare const resolveDefinition: (module: object) => BackgroundDefinition;
@@ -1,11 +1,22 @@
1
- const isValidBackgroundDefinition = (definition) => {
2
- return definition && typeof definition === "object" && definition.constructor === Object;
1
+ const isDefinitionObject = (value) => {
2
+ return value !== null && typeof value === "object" && value.constructor === Object;
3
3
  };
4
4
  const isValidBackgroundMainHandler = (main) => {
5
5
  return typeof main === "function";
6
6
  };
7
+ const resolveDefinition = (module) => {
8
+ const { default: defaultDefinition, ...namedDefinition } = module;
9
+ const definition = namedDefinition;
10
+ if (isDefinitionObject(defaultDefinition)) {
11
+ return { ...definition, ...defaultDefinition };
12
+ }
13
+ if (isValidBackgroundMainHandler(defaultDefinition)) {
14
+ return { ...definition, main: defaultDefinition };
15
+ }
16
+ return definition;
17
+ };
7
18
  export {
8
- isValidBackgroundDefinition,
9
- isValidBackgroundMainHandler
19
+ isValidBackgroundMainHandler,
20
+ resolveDefinition
10
21
  };
11
22
  //# sourceMappingURL=definition.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/entry/background/resolvers/definition.ts"],"sourcesContent":["import {BackgroundDefinition, BackgroundMainHandler} from \"@typing/background\";\n\nexport const isValidBackgroundDefinition = (definition: any): definition is BackgroundDefinition => {\n return definition && typeof definition === \"object\" && definition.constructor === Object;\n};\n\nexport const isValidBackgroundMainHandler = (main: unknown): main is BackgroundMainHandler => {\n return typeof main === \"function\";\n};\n"],"mappings":"AAEO,MAAM,8BAA8B,CAAC,eAAwD;AAChG,SAAO,cAAc,OAAO,eAAe,YAAY,WAAW,gBAAgB;AACtF;AAEO,MAAM,+BAA+B,CAAC,SAAiD;AAC1F,SAAO,OAAO,SAAS;AAC3B;","names":[]}
1
+ {"version":3,"sources":["../../../../src/entry/background/resolvers/definition.ts"],"sourcesContent":["import {BackgroundDefinition, BackgroundMainHandler} from \"@typing/background\";\n\nconst isDefinitionObject = (value: unknown): value is BackgroundDefinition => {\n return value !== null && typeof value === \"object\" && value.constructor === Object;\n};\n\nexport const isValidBackgroundMainHandler = (main: unknown): main is BackgroundMainHandler => {\n return typeof main === \"function\";\n};\n\n/**\n * Merge background exports without executing main: default options override named exports,\n * and a default function is the main handler. Any other default value is ignored.\n */\nexport const resolveDefinition = (module: object): BackgroundDefinition => {\n const {default: defaultDefinition, ...namedDefinition} = module as Record<string, unknown>;\n const definition = namedDefinition as BackgroundDefinition;\n\n if (isDefinitionObject(defaultDefinition)) {\n return {...definition, ...defaultDefinition};\n }\n\n if (isValidBackgroundMainHandler(defaultDefinition)) {\n return {...definition, main: defaultDefinition};\n }\n\n return definition;\n};\n"],"mappings":"AAEA,MAAM,qBAAqB,CAAC,UAAkD;AAC1E,SAAO,UAAU,QAAQ,OAAO,UAAU,YAAY,MAAM,gBAAgB;AAChF;AAEO,MAAM,+BAA+B,CAAC,SAAiD;AAC1F,SAAO,OAAO,SAAS;AAC3B;AAMO,MAAM,oBAAoB,CAAC,WAAyC;AACvE,QAAM,EAAC,SAAS,mBAAmB,GAAG,gBAAe,IAAI;AACzD,QAAM,aAAa;AAEnB,MAAI,mBAAmB,iBAAiB,GAAG;AACvC,WAAO,EAAC,GAAG,YAAY,GAAG,kBAAiB;AAAA,EAC/C;AAEA,MAAI,6BAA6B,iBAAiB,GAAG;AACjD,WAAO,EAAC,GAAG,YAAY,MAAM,kBAAiB;AAAA,EAClD;AAEA,SAAO;AACX;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import { onActionClicked, onSpecificCommand } from "@addon-core/browser";
2
2
  import Builder from "./../../entry/core/Builder.js";
3
- import { isValidCommandExecuteFunction, isValidCommandName } from "./resolvers/index.js";
3
+ import { isValidCommandExecuteFunction, isValidCommandName } from "./resolvers/definition.js";
4
4
  import {
5
5
  CommandExecuteActionName
6
6
  } from "./../../types/command.js";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/entry/command/Builder.ts"],"sourcesContent":["import {onActionClicked, onSpecificCommand} from \"@addon-core/browser\";\n\nimport Builder from \"@entry/core/Builder\";\n\nimport {isValidCommandExecuteFunction, isValidCommandName} from \"./resolvers\";\n\nimport {\n CommandBuilder,\n CommandExecuteActionName,\n CommandResolvedDefinition,\n CommandUnresolvedDefinition,\n} from \"@typing/command\";\n\ntype Tab = chrome.tabs.Tab;\n\nexport default class extends Builder implements CommandBuilder {\n protected readonly definition: CommandResolvedDefinition;\n\n protected unsubscribe?: () => void;\n\n public constructor(definition: CommandUnresolvedDefinition) {\n super();\n\n const {name, execute} = definition;\n\n if (!isValidCommandExecuteFunction(execute)) {\n throw new Error(\"The command entrypoint must export a execute function\");\n }\n\n if (!isValidCommandName(name)) {\n throw new Error(\"The command entrypoint must export a name string\");\n }\n\n this.definition = {\n ...definition,\n name,\n execute,\n };\n }\n\n public async build(): Promise<void> {\n await this.destroy();\n\n const {name} = this.definition;\n\n if (name == CommandExecuteActionName) {\n this.unsubscribe = onActionClicked(tab => {\n this.handle(tab);\n });\n\n return;\n }\n\n this.unsubscribe = onSpecificCommand(name, tab => {\n this.handle(tab);\n });\n }\n\n public async destroy(): Promise<void> {\n this.unsubscribe?.();\n }\n\n protected handle(tab?: Tab): void {\n const {name, execute, ...options} = this.definition;\n\n try {\n Promise.resolve(execute(tab, {name, ...options})).catch(e => {\n console.error(\"The command execute async function crashed:\", e);\n });\n } catch (e) {\n console.error(\"The command execute function crashed:\", e);\n }\n }\n}\n"],"mappings":"AAAA,SAAQ,iBAAiB,yBAAwB;AAEjD,OAAO,aAAa;AAEpB,SAAQ,+BAA+B,0BAAyB;AAEhE;AAAA,EAEI;AAAA,OAGG;AAIP,MAAO,wBAAsB,QAAkC;AAAA,EACxC;AAAA,EAET;AAAA,EAEH,YAAY,YAAyC;AACxD,UAAM;AAEN,UAAM,EAAC,MAAM,QAAO,IAAI;AAExB,QAAI,CAAC,8BAA8B,OAAO,GAAG;AACzC,YAAM,IAAI,MAAM,uDAAuD;AAAA,IAC3E;AAEA,QAAI,CAAC,mBAAmB,IAAI,GAAG;AAC3B,YAAM,IAAI,MAAM,kDAAkD;AAAA,IACtE;AAEA,SAAK,aAAa;AAAA,MACd,GAAG;AAAA,MACH;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAa,QAAuB;AAChC,UAAM,KAAK,QAAQ;AAEnB,UAAM,EAAC,KAAI,IAAI,KAAK;AAEpB,QAAI,QAAQ,0BAA0B;AAClC,WAAK,cAAc,gBAAgB,SAAO;AACtC,aAAK,OAAO,GAAG;AAAA,MACnB,CAAC;AAED;AAAA,IACJ;AAEA,SAAK,cAAc,kBAAkB,MAAM,SAAO;AAC9C,WAAK,OAAO,GAAG;AAAA,IACnB,CAAC;AAAA,EACL;AAAA,EAEA,MAAa,UAAyB;AA1D1C;AA2DQ,eAAK,gBAAL;AAAA,EACJ;AAAA,EAEU,OAAO,KAAiB;AAC9B,UAAM,EAAC,MAAM,SAAS,GAAG,QAAO,IAAI,KAAK;AAEzC,QAAI;AACA,cAAQ,QAAQ,QAAQ,KAAK,EAAC,MAAM,GAAG,QAAO,CAAC,CAAC,EAAE,MAAM,OAAK;AACzD,gBAAQ,MAAM,+CAA+C,CAAC;AAAA,MAClE,CAAC;AAAA,IACL,SAAS,GAAG;AACR,cAAQ,MAAM,yCAAyC,CAAC;AAAA,IAC5D;AAAA,EACJ;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/entry/command/Builder.ts"],"sourcesContent":["import {onActionClicked, onSpecificCommand} from \"@addon-core/browser\";\n\nimport Builder from \"@entry/core/Builder\";\n\nimport {isValidCommandExecuteFunction, isValidCommandName} from \"./resolvers/definition\";\n\nimport {\n CommandBuilder,\n CommandExecuteActionName,\n CommandResolvedDefinition,\n CommandUnresolvedDefinition,\n} from \"@typing/command\";\n\ntype Tab = chrome.tabs.Tab;\n\nexport default class extends Builder implements CommandBuilder {\n protected readonly definition: CommandResolvedDefinition;\n\n protected unsubscribe?: () => void;\n\n public constructor(definition: CommandUnresolvedDefinition) {\n super();\n\n const {name, execute} = definition;\n\n if (!isValidCommandExecuteFunction(execute)) {\n throw new Error(\"The command entrypoint must export a execute function\");\n }\n\n if (!isValidCommandName(name)) {\n throw new Error(\"The command entrypoint must export a name string\");\n }\n\n this.definition = {\n ...definition,\n name,\n execute,\n };\n }\n\n public async build(): Promise<void> {\n await this.destroy();\n\n const {name} = this.definition;\n\n if (name == CommandExecuteActionName) {\n this.unsubscribe = onActionClicked(tab => {\n this.handle(tab);\n });\n\n return;\n }\n\n this.unsubscribe = onSpecificCommand(name, tab => {\n this.handle(tab);\n });\n }\n\n public async destroy(): Promise<void> {\n this.unsubscribe?.();\n }\n\n protected handle(tab?: Tab): void {\n const {name, execute, ...options} = this.definition;\n\n try {\n Promise.resolve(execute(tab, {name, ...options})).catch(e => {\n console.error(\"The command execute async function crashed:\", e);\n });\n } catch (e) {\n console.error(\"The command execute function crashed:\", e);\n }\n }\n}\n"],"mappings":"AAAA,SAAQ,iBAAiB,yBAAwB;AAEjD,OAAO,aAAa;AAEpB,SAAQ,+BAA+B,0BAAyB;AAEhE;AAAA,EAEI;AAAA,OAGG;AAIP,MAAO,wBAAsB,QAAkC;AAAA,EACxC;AAAA,EAET;AAAA,EAEH,YAAY,YAAyC;AACxD,UAAM;AAEN,UAAM,EAAC,MAAM,QAAO,IAAI;AAExB,QAAI,CAAC,8BAA8B,OAAO,GAAG;AACzC,YAAM,IAAI,MAAM,uDAAuD;AAAA,IAC3E;AAEA,QAAI,CAAC,mBAAmB,IAAI,GAAG;AAC3B,YAAM,IAAI,MAAM,kDAAkD;AAAA,IACtE;AAEA,SAAK,aAAa;AAAA,MACd,GAAG;AAAA,MACH;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAa,QAAuB;AAChC,UAAM,KAAK,QAAQ;AAEnB,UAAM,EAAC,KAAI,IAAI,KAAK;AAEpB,QAAI,QAAQ,0BAA0B;AAClC,WAAK,cAAc,gBAAgB,SAAO;AACtC,aAAK,OAAO,GAAG;AAAA,MACnB,CAAC;AAED;AAAA,IACJ;AAEA,SAAK,cAAc,kBAAkB,MAAM,SAAO;AAC9C,WAAK,OAAO,GAAG;AAAA,IACnB,CAAC;AAAA,EACL;AAAA,EAEA,MAAa,UAAyB;AA1D1C;AA2DQ,eAAK,gBAAL;AAAA,EACJ;AAAA,EAEU,OAAO,KAAiB;AAC9B,UAAM,EAAC,MAAM,SAAS,GAAG,QAAO,IAAI,KAAK;AAEzC,QAAI;AACA,cAAQ,QAAQ,QAAQ,KAAK,EAAC,MAAM,GAAG,QAAO,CAAC,CAAC,EAAE,MAAM,OAAK;AACzD,gBAAQ,MAAM,+CAA+C,CAAC;AAAA,MAClE,CAAC;AAAA,IACL,SAAS,GAAG;AACR,cAAQ,MAAM,yCAAyC,CAAC;AAAA,IAC5D;AAAA,EACJ;AACJ;","names":[]}
@@ -1,3 +1,3 @@
1
- export * from "./resolvers/index.js";
1
+ export { resolveDefinition } from "./resolvers/definition.js";
2
2
  declare const _default: (definition: Partial<import("../../index.js").CommandDefinition>) => void;
3
3
  export default _default;
@@ -1,7 +1,8 @@
1
1
  import Builder from "./Builder.js";
2
- export * from "./resolvers/index.js";
2
+ import { resolveDefinition } from "./resolvers/definition.js";
3
3
  var command_default = Builder.resolver();
4
4
  export {
5
- command_default as default
5
+ command_default as default,
6
+ resolveDefinition
6
7
  };
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/entry/command/index.ts"],"sourcesContent":["import Builder from \"./Builder\";\n\nexport * from \"./resolvers\";\n\nexport default Builder.resolver();\n"],"mappings":"AAAA,OAAO,aAAa;AAEpB,cAAc;AAEd,IAAO,kBAAQ,QAAQ,SAAS;","names":[]}
1
+ {"version":3,"sources":["../../../src/entry/command/index.ts"],"sourcesContent":["import Builder from \"./Builder\";\n\nexport {resolveDefinition} from \"./resolvers/definition\";\n\nexport default Builder.resolver();\n"],"mappings":"AAAA,OAAO,aAAa;AAEpB,SAAQ,yBAAwB;AAEhC,IAAO,kBAAQ,QAAQ,SAAS;","names":[]}
@@ -1,4 +1,8 @@
1
- import { CommandDefinition, CommandExecute } from "../../../types/command.js";
2
- export declare const isValidCommandDefinition: (definition: any) => definition is CommandDefinition;
1
+ import { CommandExecute, CommandUnresolvedDefinition } from "../../../types/command.js";
3
2
  export declare const isValidCommandExecuteFunction: (execute: any) => execute is CommandExecute;
4
3
  export declare const isValidCommandName: (name: any) => name is string;
4
+ /**
5
+ * Merge command exports without executing them: default options override named exports,
6
+ * and a default function is the execute handler. The build supplies the authoritative name.
7
+ */
8
+ export declare const resolveDefinition: (module: object, name: string) => CommandUnresolvedDefinition;
@@ -1,5 +1,5 @@
1
- const isValidCommandDefinition = (definition) => {
2
- return definition && typeof definition === "object" && definition.constructor === Object;
1
+ const isDefinitionObject = (value) => {
2
+ return value !== null && typeof value === "object" && value.constructor === Object;
3
3
  };
4
4
  const isValidCommandExecuteFunction = (execute) => {
5
5
  return execute && typeof execute === "function";
@@ -7,9 +7,19 @@ const isValidCommandExecuteFunction = (execute) => {
7
7
  const isValidCommandName = (name) => {
8
8
  return name && typeof name === "string" && name.trim().length > 0;
9
9
  };
10
+ const resolveDefinition = (module, name) => {
11
+ const { default: defaultDefinition, ...namedDefinition } = module;
12
+ let definition = namedDefinition;
13
+ if (isDefinitionObject(defaultDefinition)) {
14
+ definition = { ...definition, ...defaultDefinition };
15
+ } else if (isValidCommandExecuteFunction(defaultDefinition)) {
16
+ definition = { ...definition, execute: defaultDefinition };
17
+ }
18
+ return { ...definition, name };
19
+ };
10
20
  export {
11
- isValidCommandDefinition,
12
21
  isValidCommandExecuteFunction,
13
- isValidCommandName
22
+ isValidCommandName,
23
+ resolveDefinition
14
24
  };
15
25
  //# sourceMappingURL=definition.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/entry/command/resolvers/definition.ts"],"sourcesContent":["import {CommandDefinition, CommandExecute} from \"@typing/command\";\n\nexport const isValidCommandDefinition = (definition: any): definition is CommandDefinition => {\n return definition && typeof definition === \"object\" && definition.constructor === Object;\n};\n\nexport const isValidCommandExecuteFunction = (execute: any): execute is CommandExecute => {\n return execute && typeof execute === \"function\";\n};\n\nexport const isValidCommandName = (name: any): name is string => {\n return name && typeof name === \"string\" && name.trim().length > 0;\n};\n"],"mappings":"AAEO,MAAM,2BAA2B,CAAC,eAAqD;AAC1F,SAAO,cAAc,OAAO,eAAe,YAAY,WAAW,gBAAgB;AACtF;AAEO,MAAM,gCAAgC,CAAC,YAA4C;AACtF,SAAO,WAAW,OAAO,YAAY;AACzC;AAEO,MAAM,qBAAqB,CAAC,SAA8B;AAC7D,SAAO,QAAQ,OAAO,SAAS,YAAY,KAAK,KAAK,EAAE,SAAS;AACpE;","names":[]}
1
+ {"version":3,"sources":["../../../../src/entry/command/resolvers/definition.ts"],"sourcesContent":["import {CommandDefinition, CommandExecute, CommandUnresolvedDefinition} from \"@typing/command\";\n\nconst isDefinitionObject = (value: unknown): value is CommandDefinition => {\n return value !== null && typeof value === \"object\" && value.constructor === Object;\n};\n\nexport const isValidCommandExecuteFunction = (execute: any): execute is CommandExecute => {\n return execute && typeof execute === \"function\";\n};\n\nexport const isValidCommandName = (name: any): name is string => {\n return name && typeof name === \"string\" && name.trim().length > 0;\n};\n\n/**\n * Merge command exports without executing them: default options override named exports,\n * and a default function is the execute handler. The build supplies the authoritative name.\n */\nexport const resolveDefinition = (module: object, name: string): CommandUnresolvedDefinition => {\n const {default: defaultDefinition, ...namedDefinition} = module as Record<string, unknown>;\n\n let definition = namedDefinition as CommandUnresolvedDefinition;\n\n if (isDefinitionObject(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidCommandExecuteFunction(defaultDefinition)) {\n definition = {...definition, execute: defaultDefinition};\n }\n\n return {...definition, name};\n};\n"],"mappings":"AAEA,MAAM,qBAAqB,CAAC,UAA+C;AACvE,SAAO,UAAU,QAAQ,OAAO,UAAU,YAAY,MAAM,gBAAgB;AAChF;AAEO,MAAM,gCAAgC,CAAC,YAA4C;AACtF,SAAO,WAAW,OAAO,YAAY;AACzC;AAEO,MAAM,qBAAqB,CAAC,SAA8B;AAC7D,SAAO,QAAQ,OAAO,SAAS,YAAY,KAAK,KAAK,EAAE,SAAS;AACpE;AAMO,MAAM,oBAAoB,CAAC,QAAgB,SAA8C;AAC5F,QAAM,EAAC,SAAS,mBAAmB,GAAG,gBAAe,IAAI;AAEzD,MAAI,aAAa;AAEjB,MAAI,mBAAmB,iBAAiB,GAAG;AACvC,iBAAa,EAAC,GAAG,YAAY,GAAG,kBAAiB;AAAA,EACrD,WAAW,8BAA8B,iBAAiB,GAAG;AACzD,iBAAa,EAAC,GAAG,YAAY,SAAS,kBAAiB;AAAA,EAC3D;AAEA,SAAO,EAAC,GAAG,YAAY,KAAI;AAC/B;","names":[]}
@@ -1,4 +1,6 @@
1
- import { createElement, isValidElement } from "react";
1
+ import { createElement } from "react";
2
+ import { isDomRenderValue } from "./../../../../entry/core/render.js";
3
+ import { isReactRenderValue } from "./../../../../entry/core/react.js";
2
4
  import ReactNode from "./Node.js";
3
5
  import MountBuilder from "../../lifecycle/MountBuilder.js";
4
6
  class Builder extends MountBuilder {
@@ -8,7 +10,7 @@ class Builder extends MountBuilder {
8
10
  }
9
11
  return (props) => {
10
12
  const value = typeof render === "function" ? createElement(render, props) : render;
11
- return isValidElement(value) ? value : void 0;
13
+ return isDomRenderValue(value) || isReactRenderValue(value) ? value : void 0;
12
14
  };
13
15
  }
14
16
  createRenderer(node, render, props, options) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/entry/content/adapters/react/Builder.ts"],"sourcesContent":["import {createElement, isValidElement} from \"react\";\n\nimport ReactNode from \"./Node\";\n\nimport MountBuilder from \"../../lifecycle/MountBuilder\";\nimport type {ContentScriptRenderOptions} from \"../../lifecycle/types\";\n\nimport type {\n ContentScriptNode,\n ContentScriptIsolation,\n ContentScriptProps,\n ContentScriptRenderHandler,\n ContentScriptRenderReactComponent,\n ContentScriptRenderValue,\n} from \"@typing/content\";\n\nexport default class Builder<\n Data = unknown,\n Isolation extends `${ContentScriptIsolation}` = `${ContentScriptIsolation}`,\n> extends MountBuilder<Data, Isolation> {\n protected resolveRender(\n render?: ContentScriptRenderValue<Data> | ContentScriptRenderHandler<Data>\n ): true | ContentScriptRenderHandler<Data> | undefined {\n if (render === true || render === undefined) {\n return render;\n }\n\n return props => {\n // Functions in React entrypoints are components; React owns their invocation and hooks.\n const value =\n typeof render === \"function\"\n ? createElement(render as ContentScriptRenderReactComponent<Data>, props)\n : render;\n\n return isValidElement(value) ? value : undefined;\n };\n }\n\n protected createRenderer(\n node: ContentScriptNode,\n render: ContentScriptRenderHandler<Data>,\n props: () => ContentScriptProps<Data>,\n options: ContentScriptRenderOptions\n ): ReactNode<Data> {\n return new ReactNode(node, render, props, options);\n }\n}\n"],"mappings":"AAAA,SAAQ,eAAe,sBAAqB;AAE5C,OAAO,eAAe;AAEtB,OAAO,kBAAkB;AAYzB,MAAO,gBAGG,aAA8B;AAAA,EAC1B,cACN,QACmD;AACnD,QAAI,WAAW,QAAQ,WAAW,QAAW;AACzC,aAAO;AAAA,IACX;AAEA,WAAO,WAAS;AAEZ,YAAM,QACF,OAAO,WAAW,aACZ,cAAc,QAAmD,KAAK,IACtE;AAEV,aAAO,eAAe,KAAK,IAAI,QAAQ;AAAA,IAC3C;AAAA,EACJ;AAAA,EAEU,eACN,MACA,QACA,OACA,SACe;AACf,WAAO,IAAI,UAAU,MAAM,QAAQ,OAAO,OAAO;AAAA,EACrD;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/entry/content/adapters/react/Builder.ts"],"sourcesContent":["import {createElement} from \"react\";\n\nimport {isDomRenderValue} from \"@entry/core/render\";\nimport {isReactRenderValue} from \"@entry/core/react\";\n\nimport ReactNode from \"./Node\";\n\nimport MountBuilder from \"../../lifecycle/MountBuilder\";\nimport type {ContentScriptRenderOptions} from \"../../lifecycle/types\";\n\nimport type {\n ContentScriptNode,\n ContentScriptIsolation,\n ContentScriptProps,\n ContentScriptRenderHandler,\n ContentScriptRenderReactComponent,\n ContentScriptRenderValue,\n} from \"@typing/content\";\n\nexport default class Builder<\n Data = unknown,\n Isolation extends `${ContentScriptIsolation}` = `${ContentScriptIsolation}`,\n> extends MountBuilder<Data, Isolation> {\n protected resolveRender(\n render?: ContentScriptRenderValue<Data> | ContentScriptRenderHandler<Data>\n ): true | ContentScriptRenderHandler<Data> | undefined {\n if (render === true || render === undefined) {\n return render;\n }\n\n return props => {\n // Functions in React entrypoints are components; React owns their invocation and hooks.\n const value =\n typeof render === \"function\"\n ? createElement(render as ContentScriptRenderReactComponent<Data>, props)\n : render;\n\n return isDomRenderValue(value) || isReactRenderValue(value) ? value : undefined;\n };\n }\n\n protected createRenderer(\n node: ContentScriptNode,\n render: ContentScriptRenderHandler<Data>,\n props: () => ContentScriptProps<Data>,\n options: ContentScriptRenderOptions\n ): ReactNode<Data> {\n return new ReactNode(node, render, props, options);\n }\n}\n"],"mappings":"AAAA,SAAQ,qBAAoB;AAE5B,SAAQ,wBAAuB;AAC/B,SAAQ,0BAAyB;AAEjC,OAAO,eAAe;AAEtB,OAAO,kBAAkB;AAYzB,MAAO,gBAGG,aAA8B;AAAA,EAC1B,cACN,QACmD;AACnD,QAAI,WAAW,QAAQ,WAAW,QAAW;AACzC,aAAO;AAAA,IACX;AAEA,WAAO,WAAS;AAEZ,YAAM,QACF,OAAO,WAAW,aACZ,cAAc,QAAmD,KAAK,IACtE;AAEV,aAAO,iBAAiB,KAAK,KAAK,mBAAmB,KAAK,IAAI,QAAQ;AAAA,IAC1E;AAAA,EACJ;AAAA,EAEU,eACN,MACA,QACA,OACA,SACe;AACf,WAAO,IAAI,UAAU,MAAM,QAAQ,OAAO,OAAO;AAAA,EACrD;AACJ;","names":[]}
@@ -1,15 +1,20 @@
1
- import { isValidElement } from "react";
2
1
  import { createRoot } from "react-dom/client";
2
+ import { isDomRenderValue, renderDomValue } from "./../../../../entry/core/render.js";
3
+ import { isReactRenderValue } from "./../../../../entry/core/react.js";
3
4
  import { RenderNode } from "../../lifecycle/nodes/index.js";
4
5
  class Node extends RenderNode {
5
6
  root;
6
7
  render(value, target) {
7
- if (!isValidElement(value)) {
8
- return false;
8
+ if (isDomRenderValue(value)) {
9
+ renderDomValue(target, value);
10
+ return true;
9
11
  }
10
- this.root = createRoot(target);
11
- this.root.render(value);
12
- return true;
12
+ if (isReactRenderValue(value)) {
13
+ this.root = createRoot(target);
14
+ this.root.render(value);
15
+ return true;
16
+ }
17
+ return false;
13
18
  }
14
19
  clear() {
15
20
  const root = this.root;