adnbn 0.13.0 → 0.15.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 (392) hide show
  1. package/dist/cli/builders/app/build.d.ts +7 -0
  2. package/dist/cli/builders/app/build.js +58 -0
  3. package/dist/cli/builders/app/build.js.map +1 -0
  4. package/dist/cli/builders/app/index.d.ts +6 -1
  5. package/dist/cli/builders/app/index.js +49 -14
  6. package/dist/cli/builders/app/index.js.map +1 -1
  7. package/dist/cli/builders/app/{command.d.ts → watch.d.ts} +0 -1
  8. package/dist/cli/builders/app/{command.js → watch.js} +1 -26
  9. package/dist/cli/builders/app/watch.js.map +1 -0
  10. package/dist/cli/builders/manifest/ManifestBase.d.ts +8 -1
  11. package/dist/cli/builders/manifest/ManifestBase.js +30 -0
  12. package/dist/cli/builders/manifest/ManifestBase.js.map +1 -1
  13. package/dist/cli/builders/manifest/ManifestV2.js +3 -15
  14. package/dist/cli/builders/manifest/ManifestV2.js.map +1 -1
  15. package/dist/cli/builders/manifest/ManifestV3.js +3 -15
  16. package/dist/cli/builders/manifest/ManifestV3.js.map +1 -1
  17. package/dist/cli/bundler/plugins/entrypoint/EntrypointPlugin.js +4 -0
  18. package/dist/cli/bundler/plugins/entrypoint/EntrypointPlugin.js.map +1 -1
  19. package/dist/cli/entrypoint/finder/AbstractOverrideFinder.d.ts +15 -0
  20. package/dist/cli/entrypoint/finder/AbstractOverrideFinder.js +20 -0
  21. package/dist/cli/entrypoint/finder/AbstractOverrideFinder.js.map +1 -0
  22. package/dist/cli/entrypoint/finder/AbstractViewFinder.d.ts +6 -1
  23. package/dist/cli/entrypoint/finder/AbstractViewFinder.js +15 -0
  24. package/dist/cli/entrypoint/finder/AbstractViewFinder.js.map +1 -1
  25. package/dist/cli/entrypoint/finder/BookmarksFinder.d.ts +9 -0
  26. package/dist/cli/entrypoint/finder/BookmarksFinder.js +18 -0
  27. package/dist/cli/entrypoint/finder/BookmarksFinder.js.map +1 -0
  28. package/dist/cli/entrypoint/finder/CommandFinder.d.ts +4 -0
  29. package/dist/cli/entrypoint/finder/CommandFinder.js +20 -6
  30. package/dist/cli/entrypoint/finder/CommandFinder.js.map +1 -1
  31. package/dist/cli/entrypoint/finder/HistoryFinder.d.ts +9 -0
  32. package/dist/cli/entrypoint/finder/HistoryFinder.js +18 -0
  33. package/dist/cli/entrypoint/finder/HistoryFinder.js.map +1 -0
  34. package/dist/cli/entrypoint/finder/NewtabFinder.d.ts +9 -0
  35. package/dist/cli/entrypoint/finder/NewtabFinder.js +18 -0
  36. package/dist/cli/entrypoint/finder/NewtabFinder.js.map +1 -0
  37. package/dist/cli/entrypoint/finder/OptionsFinder.d.ts +2 -2
  38. package/dist/cli/entrypoint/finder/OptionsFinder.js +2 -2
  39. package/dist/cli/entrypoint/finder/OptionsFinder.js.map +1 -1
  40. package/dist/cli/entrypoint/finder/PageFinder.js +1 -1
  41. package/dist/cli/entrypoint/finder/PageFinder.js.map +1 -1
  42. package/dist/cli/entrypoint/finder/PopupFinder.d.ts +2 -2
  43. package/dist/cli/entrypoint/finder/PopupFinder.js +2 -2
  44. package/dist/cli/entrypoint/finder/PopupFinder.js.map +1 -1
  45. package/dist/cli/entrypoint/finder/SidebarFinder.d.ts +2 -2
  46. package/dist/cli/entrypoint/finder/SidebarFinder.js +2 -2
  47. package/dist/cli/entrypoint/finder/SidebarFinder.js.map +1 -1
  48. package/dist/cli/entrypoint/finder/ViewCspFinder.d.ts +2 -3
  49. package/dist/cli/entrypoint/finder/ViewCspFinder.js.map +1 -1
  50. package/dist/cli/entrypoint/finder/ViewPermissionsFinder.d.ts +22 -0
  51. package/dist/cli/entrypoint/finder/ViewPermissionsFinder.js +43 -0
  52. package/dist/cli/entrypoint/finder/ViewPermissionsFinder.js.map +1 -0
  53. package/dist/cli/entrypoint/finder/index.d.ts +5 -0
  54. package/dist/cli/entrypoint/finder/index.js +50 -40
  55. package/dist/cli/entrypoint/finder/index.js.map +1 -1
  56. package/dist/cli/entrypoint/name/NameGenerator.d.ts +2 -0
  57. package/dist/cli/entrypoint/name/NameGenerator.js +5 -1
  58. package/dist/cli/entrypoint/name/NameGenerator.js.map +1 -1
  59. package/dist/cli/entrypoint/parser/AbstractOverrideParser.d.ts +9 -0
  60. package/dist/cli/entrypoint/parser/AbstractOverrideParser.js +11 -0
  61. package/dist/cli/entrypoint/parser/AbstractOverrideParser.js.map +1 -0
  62. package/dist/cli/entrypoint/parser/BackgroundParser.js +3 -6
  63. package/dist/cli/entrypoint/parser/BackgroundParser.js.map +1 -1
  64. package/dist/cli/entrypoint/parser/BookmarksParser.d.ts +5 -0
  65. package/dist/cli/entrypoint/parser/BookmarksParser.js +10 -0
  66. package/dist/cli/entrypoint/parser/BookmarksParser.js.map +1 -0
  67. package/dist/cli/entrypoint/parser/HistoryParser.d.ts +5 -0
  68. package/dist/cli/entrypoint/parser/HistoryParser.js +10 -0
  69. package/dist/cli/entrypoint/parser/HistoryParser.js.map +1 -0
  70. package/dist/cli/entrypoint/parser/NewtabParser.d.ts +5 -0
  71. package/dist/cli/entrypoint/parser/NewtabParser.js +10 -0
  72. package/dist/cli/entrypoint/parser/NewtabParser.js.map +1 -0
  73. package/dist/cli/entrypoint/parser/OptionsParser.js +2 -1
  74. package/dist/cli/entrypoint/parser/OptionsParser.js.map +1 -1
  75. package/dist/cli/entrypoint/parser/PopupParser.js +2 -1
  76. package/dist/cli/entrypoint/parser/PopupParser.js.map +1 -1
  77. package/dist/cli/entrypoint/parser/SidebarParser.js +2 -1
  78. package/dist/cli/entrypoint/parser/SidebarParser.js.map +1 -1
  79. package/dist/cli/entrypoint/parser/ViewCspParser.d.ts +1 -1
  80. package/dist/cli/entrypoint/parser/ViewParser.d.ts +1 -1243
  81. package/dist/cli/entrypoint/parser/ViewParser.js +2 -72
  82. package/dist/cli/entrypoint/parser/ViewParser.js.map +1 -1
  83. package/dist/cli/entrypoint/parser/index.d.ts +4 -0
  84. package/dist/cli/entrypoint/parser/index.js +28 -20
  85. package/dist/cli/entrypoint/parser/index.js.map +1 -1
  86. package/dist/cli/entrypoint/parser/schemas/html.d.ts +903 -0
  87. package/dist/cli/entrypoint/parser/schemas/html.js +64 -0
  88. package/dist/cli/entrypoint/parser/schemas/html.js.map +1 -0
  89. package/dist/cli/entrypoint/parser/schemas/permissions.d.ts +23 -0
  90. package/dist/cli/entrypoint/parser/schemas/permissions.js +11 -0
  91. package/dist/cli/entrypoint/parser/schemas/permissions.js.map +1 -0
  92. package/dist/cli/index.js +16 -3
  93. package/dist/cli/index.js.map +1 -1
  94. package/dist/cli/plugins/action.d.ts +2 -0
  95. package/dist/cli/plugins/action.js +13 -0
  96. package/dist/cli/plugins/action.js.map +1 -0
  97. package/dist/cli/plugins/index.d.ts +2 -0
  98. package/dist/cli/plugins/index.js +52 -48
  99. package/dist/cli/plugins/index.js.map +1 -1
  100. package/dist/cli/plugins/offscreen/index.js +2 -4
  101. package/dist/cli/plugins/offscreen/index.js.map +1 -1
  102. package/dist/cli/plugins/options/index.js +1 -1
  103. package/dist/cli/plugins/options/index.js.map +1 -1
  104. package/dist/cli/plugins/override/Override.d.ts +31 -0
  105. package/dist/cli/plugins/override/Override.js +112 -0
  106. package/dist/cli/plugins/override/Override.js.map +1 -0
  107. package/dist/cli/plugins/override/index.d.ts +2 -0
  108. package/dist/cli/plugins/override/index.js +48 -0
  109. package/dist/cli/plugins/override/index.js.map +1 -0
  110. package/dist/cli/plugins/popup/index.js +1 -1
  111. package/dist/cli/plugins/popup/index.js.map +1 -1
  112. package/dist/cli/plugins/sidebar/index.js +1 -2
  113. package/dist/cli/plugins/sidebar/index.js.map +1 -1
  114. package/dist/cli/plugins/style/index.js +34 -31
  115. package/dist/cli/plugins/style/index.js.map +1 -1
  116. package/dist/cli/plugins/style/rebase.d.ts +14 -0
  117. package/dist/cli/plugins/style/rebase.js +63 -0
  118. package/dist/cli/plugins/style/rebase.js.map +1 -0
  119. package/dist/cli/plugins/style/utils.d.ts +5 -1
  120. package/dist/cli/plugins/style/utils.js +21 -8
  121. package/dist/cli/plugins/style/utils.js.map +1 -1
  122. package/dist/cli/plugins/typescript/TypescriptConfig.js +2 -2
  123. package/dist/cli/plugins/typescript/TypescriptConfig.js.map +1 -1
  124. package/dist/cli/plugins/view/View.d.ts +1 -1
  125. package/dist/cli/plugins/view/View.js +2 -10
  126. package/dist/cli/plugins/view/View.js.map +1 -1
  127. package/dist/cli/plugins/view/index.js +10 -1
  128. package/dist/cli/plugins/view/index.js.map +1 -1
  129. package/dist/cli/resolvers/bundler.js +9 -1
  130. package/dist/cli/resolvers/bundler.js.map +1 -1
  131. package/dist/cli/resolvers/config.js +7 -1
  132. package/dist/cli/resolvers/config.js.map +1 -1
  133. package/dist/cli/utils/path.js +1 -1
  134. package/dist/cli/utils/path.js.map +1 -1
  135. package/dist/cli/virtual/index.js +14 -17
  136. package/dist/cli/virtual/virtual.d.ts +7 -127
  137. package/dist/entry/background/Builder.js +1 -1
  138. package/dist/entry/background/Builder.js.map +1 -1
  139. package/dist/entry/background/index.d.ts +1 -1
  140. package/dist/entry/background/index.js +3 -2
  141. package/dist/entry/background/index.js.map +1 -1
  142. package/dist/entry/background/resolvers/definition.d.ts +5 -1
  143. package/dist/entry/background/resolvers/definition.js +15 -4
  144. package/dist/entry/background/resolvers/definition.js.map +1 -1
  145. package/dist/entry/command/Builder.js +1 -1
  146. package/dist/entry/command/Builder.js.map +1 -1
  147. package/dist/entry/command/index.d.ts +1 -1
  148. package/dist/entry/command/index.js +3 -2
  149. package/dist/entry/command/index.js.map +1 -1
  150. package/dist/entry/command/resolvers/definition.d.ts +6 -2
  151. package/dist/entry/command/resolvers/definition.js +14 -4
  152. package/dist/entry/command/resolvers/definition.js.map +1 -1
  153. package/dist/entry/content/adapters/react/Builder.js +4 -2
  154. package/dist/entry/content/adapters/react/Builder.js.map +1 -1
  155. package/dist/entry/content/adapters/react/Node.js +11 -6
  156. package/dist/entry/content/adapters/react/Node.js.map +1 -1
  157. package/dist/entry/content/adapters/react/definition.js +3 -2
  158. package/dist/entry/content/adapters/react/definition.js.map +1 -1
  159. package/dist/entry/content/adapters/vanilla/Builder.js +2 -2
  160. package/dist/entry/content/adapters/vanilla/Builder.js.map +1 -1
  161. package/dist/entry/content/adapters/vanilla/Node.js +3 -5
  162. package/dist/entry/content/adapters/vanilla/Node.js.map +1 -1
  163. package/dist/entry/content/adapters/vanilla/definition.js +2 -2
  164. package/dist/entry/content/adapters/vanilla/definition.js.map +1 -1
  165. package/dist/entry/content/lifecycle/Builder.js +5 -9
  166. package/dist/entry/content/lifecycle/Builder.js.map +1 -1
  167. package/dist/entry/core/react.d.ts +6 -0
  168. package/dist/entry/core/react.js +16 -0
  169. package/dist/entry/core/react.js.map +1 -0
  170. package/dist/entry/core/render.d.ts +5 -0
  171. package/dist/entry/core/render.js +16 -0
  172. package/dist/entry/core/render.js.map +1 -0
  173. package/dist/entry/offscreen/Builder.d.ts +6 -7
  174. package/dist/entry/offscreen/Builder.js +12 -13
  175. package/dist/entry/offscreen/Builder.js.map +1 -1
  176. package/dist/entry/offscreen/TransportBuilder.d.ts +1 -1
  177. package/dist/entry/offscreen/TransportBuilder.js +4 -3
  178. package/dist/entry/offscreen/TransportBuilder.js.map +1 -1
  179. package/dist/entry/offscreen/index.d.ts +5 -2
  180. package/dist/entry/offscreen/index.js +8 -2
  181. package/dist/entry/offscreen/index.js.map +1 -1
  182. package/dist/entry/offscreen/resolvers/definition.d.ts +4 -0
  183. package/dist/entry/offscreen/resolvers/definition.js +8 -0
  184. package/dist/entry/offscreen/resolvers/definition.js.map +1 -0
  185. package/dist/entry/relay/Builder.d.ts +4 -3
  186. package/dist/entry/relay/Builder.js.map +1 -1
  187. package/dist/entry/relay/index.d.ts +4 -3
  188. package/dist/entry/relay/index.js.map +1 -1
  189. package/dist/entry/relay/resolvers/definition.d.ts +1 -1
  190. package/dist/entry/relay/resolvers/definition.js +2 -10
  191. package/dist/entry/relay/resolvers/definition.js.map +1 -1
  192. package/dist/entry/sandbox/Builder.d.ts +6 -7
  193. package/dist/entry/sandbox/Builder.js +8 -12
  194. package/dist/entry/sandbox/Builder.js.map +1 -1
  195. package/dist/entry/sandbox/TransportBuilder.d.ts +1 -1
  196. package/dist/entry/sandbox/TransportBuilder.js +4 -3
  197. package/dist/entry/sandbox/TransportBuilder.js.map +1 -1
  198. package/dist/entry/sandbox/index.d.ts +7 -2
  199. package/dist/entry/sandbox/index.js +10 -4
  200. package/dist/entry/sandbox/index.js.map +1 -1
  201. package/dist/entry/sandbox/resolvers/definition.d.ts +4 -0
  202. package/dist/entry/sandbox/resolvers/definition.js +8 -0
  203. package/dist/entry/sandbox/resolvers/definition.js.map +1 -0
  204. package/dist/entry/service/index.d.ts +1 -0
  205. package/dist/entry/service/index.js +3 -1
  206. package/dist/entry/service/index.js.map +1 -1
  207. package/dist/entry/service/resolvers/definition.d.ts +3 -0
  208. package/dist/entry/service/resolvers/definition.js +8 -0
  209. package/dist/entry/service/resolvers/definition.js.map +1 -0
  210. package/dist/entry/transport/AbstractBuilder.js +1 -1
  211. package/dist/entry/transport/AbstractBuilder.js.map +1 -1
  212. package/dist/entry/transport/resolvers/definition.d.ts +7 -5
  213. package/dist/entry/transport/resolvers/definition.js +15 -4
  214. package/dist/entry/transport/resolvers/definition.js.map +1 -1
  215. package/dist/entry/view/{core/Builder.d.ts → Builder.d.ts} +9 -4
  216. package/dist/entry/view/Builder.js +62 -0
  217. package/dist/entry/view/Builder.js.map +1 -0
  218. package/dist/entry/view/adapters/react/Builder.d.ts +6 -7
  219. package/dist/entry/view/adapters/react/Builder.js +20 -23
  220. package/dist/entry/view/adapters/react/Builder.js.map +1 -1
  221. package/dist/entry/view/adapters/react/definition.d.ts +2 -0
  222. package/dist/entry/view/adapters/react/definition.js +13 -0
  223. package/dist/entry/view/adapters/react/definition.js.map +1 -0
  224. package/dist/entry/view/adapters/react/index.d.ts +2 -1
  225. package/dist/entry/view/adapters/react/index.js +3 -1
  226. package/dist/entry/view/adapters/react/index.js.map +1 -1
  227. package/dist/entry/view/adapters/vanilla/Builder.d.ts +5 -6
  228. package/dist/entry/view/adapters/vanilla/Builder.js +14 -25
  229. package/dist/entry/view/adapters/vanilla/Builder.js.map +1 -1
  230. package/dist/entry/view/adapters/vanilla/definition.d.ts +2 -0
  231. package/dist/entry/view/adapters/vanilla/definition.js +9 -0
  232. package/dist/entry/view/adapters/vanilla/definition.js.map +1 -0
  233. package/dist/entry/view/adapters/vanilla/index.d.ts +2 -1
  234. package/dist/entry/view/adapters/vanilla/index.js +3 -1
  235. package/dist/entry/view/adapters/vanilla/index.js.map +1 -1
  236. package/dist/entry/view/{core/resolvers → resolvers}/container.d.ts +1 -1
  237. package/dist/entry/view/resolvers/container.js.map +1 -0
  238. package/dist/entry/view/resolvers/definition.d.ts +3 -0
  239. package/dist/entry/view/resolvers/definition.js +18 -0
  240. package/dist/entry/view/resolvers/definition.js.map +1 -0
  241. package/dist/locale/adapters/react/hooks/use-locale.js +1 -1
  242. package/dist/locale/adapters/react/hooks/use-locale.js.map +1 -1
  243. package/dist/locale/adapters/react/hooks/use-native-locale.js +1 -1
  244. package/dist/locale/adapters/react/hooks/use-native-locale.js.map +1 -1
  245. package/dist/locale/index.d.ts +1 -0
  246. package/dist/locale/index.js +3 -1
  247. package/dist/locale/index.js.map +1 -1
  248. package/dist/locale/{providers → observers}/ObservableLocale.js +2 -2
  249. package/dist/locale/observers/ObservableLocale.js.map +1 -0
  250. package/dist/locale/observers/index.d.ts +1 -0
  251. package/dist/locale/observers/index.js +5 -0
  252. package/dist/locale/observers/index.js.map +1 -0
  253. package/dist/locale/providers/index.d.ts +0 -1
  254. package/dist/locale/providers/index.js +1 -3
  255. package/dist/locale/providers/index.js.map +1 -1
  256. package/dist/main/config.d.ts +1 -0
  257. package/dist/main/config.js.map +1 -1
  258. package/dist/main/index.d.ts +2 -0
  259. package/dist/main/index.js +2 -0
  260. package/dist/main/index.js.map +1 -1
  261. package/dist/main/override.d.ts +5 -0
  262. package/dist/main/override.js +15 -0
  263. package/dist/main/override.js.map +1 -0
  264. package/dist/main/permissions.d.ts +1 -0
  265. package/dist/main/permissions.js +1 -0
  266. package/dist/main/relay.d.ts +1 -0
  267. package/dist/main/relay.js +2 -0
  268. package/dist/main/relay.js.map +1 -1
  269. package/dist/main/view.d.ts +1 -1
  270. package/dist/message/adapters/react/index.d.ts +1 -1
  271. package/dist/message/adapters/react/index.js +1 -1
  272. package/dist/message/adapters/react/index.js.map +1 -1
  273. package/dist/message/adapters/react/{useMessageHandler.js → use-message-handler.js} +6 -4
  274. package/dist/message/adapters/react/use-message-handler.js.map +1 -0
  275. package/dist/message/handlers/MapHandler.js +2 -1
  276. package/dist/message/handlers/MapHandler.js.map +1 -1
  277. package/dist/message/handlers/SingleHandler.js +2 -1
  278. package/dist/message/handlers/SingleHandler.js.map +1 -1
  279. package/dist/message/providers/Message.js +1 -1
  280. package/dist/message/providers/Message.js.map +1 -1
  281. package/dist/relay/RelayPermission.js +8 -2
  282. package/dist/relay/RelayPermission.js.map +1 -1
  283. package/dist/relay/adapters/RelayScriptingAdapter.d.ts +1 -0
  284. package/dist/relay/adapters/RelayScriptingAdapter.js +30 -64
  285. package/dist/relay/adapters/RelayScriptingAdapter.js.map +1 -1
  286. package/dist/relay/adapters/invoke-relay.d.ts +3 -0
  287. package/dist/relay/adapters/invoke-relay.js +69 -0
  288. package/dist/relay/adapters/invoke-relay.js.map +1 -0
  289. package/dist/relay/adapters/scripting-response.d.ts +12 -0
  290. package/dist/relay/adapters/scripting-response.js +1 -0
  291. package/dist/relay/adapters/scripting-response.js.map +1 -0
  292. package/dist/relay/result.d.ts +3 -0
  293. package/dist/relay/result.js +7 -0
  294. package/dist/relay/result.js.map +1 -1
  295. package/dist/types/action.d.ts +8 -0
  296. package/dist/types/action.js +1 -0
  297. package/dist/types/action.js.map +1 -0
  298. package/dist/types/background.d.ts +2 -8
  299. package/dist/types/background.js.map +1 -1
  300. package/dist/types/config.d.ts +17 -1
  301. package/dist/types/content/definition.d.ts +2 -1
  302. package/dist/types/entrypoint.d.ts +5 -1
  303. package/dist/types/entrypoint.js +3 -0
  304. package/dist/types/entrypoint.js.map +1 -1
  305. package/dist/types/manifest.d.ts +23 -2
  306. package/dist/types/manifest.js.map +1 -1
  307. package/dist/types/offscreen.d.ts +2 -2
  308. package/dist/types/offscreen.js.map +1 -1
  309. package/dist/types/options.d.ts +3 -2
  310. package/dist/types/override.d.ts +22 -0
  311. package/dist/types/override.js +1 -0
  312. package/dist/types/override.js.map +1 -0
  313. package/dist/types/page.d.ts +1 -1
  314. package/dist/types/permissions.d.ts +39 -0
  315. package/dist/types/permissions.js +1 -0
  316. package/dist/types/permissions.js.map +1 -0
  317. package/dist/types/plugin.d.ts +4 -1
  318. package/dist/types/popup.d.ts +5 -3
  319. package/dist/types/sandbox.d.ts +2 -2
  320. package/dist/types/sandbox.js.map +1 -1
  321. package/dist/types/sidebar.d.ts +5 -3
  322. package/dist/types/sidebar.js.map +1 -1
  323. package/dist/types/view/adapters/index.d.ts +2 -0
  324. package/dist/types/view/adapters/index.js +1 -0
  325. package/dist/types/view/adapters/index.js.map +1 -0
  326. package/dist/types/view/adapters/react.d.ts +4 -0
  327. package/dist/types/view/adapters/react.js +1 -0
  328. package/dist/types/view/adapters/react.js.map +1 -0
  329. package/dist/types/view/adapters/vanilla.d.ts +1 -0
  330. package/dist/types/view/adapters/vanilla.js +1 -0
  331. package/dist/types/view/adapters/vanilla.js.map +1 -0
  332. package/dist/types/{view.d.ts → view/common.d.ts} +2 -14
  333. package/dist/types/view/common.js +1 -0
  334. package/dist/types/view/common.js.map +1 -0
  335. package/dist/types/view/definition.d.ts +15 -0
  336. package/dist/types/view/definition.js +1 -0
  337. package/dist/types/view/definition.js.map +1 -0
  338. package/dist/types/view/index.d.ts +4 -0
  339. package/dist/types/view/index.js +1 -0
  340. package/dist/types/view/index.js.map +1 -0
  341. package/dist/types/view/render.d.ts +7 -0
  342. package/dist/types/view/render.js +1 -0
  343. package/dist/types/view/render.js.map +1 -0
  344. package/package.json +18 -31
  345. package/dist/cli/builders/app/command.js.map +0 -1
  346. package/dist/entry/background/resolvers/index.d.ts +0 -1
  347. package/dist/entry/background/resolvers/index.js +0 -2
  348. package/dist/entry/background/resolvers/index.js.map +0 -1
  349. package/dist/entry/command/resolvers/index.d.ts +0 -1
  350. package/dist/entry/command/resolvers/index.js +0 -2
  351. package/dist/entry/command/resolvers/index.js.map +0 -1
  352. package/dist/entry/content/adapters/vanilla/utils.d.ts +0 -1
  353. package/dist/entry/content/adapters/vanilla/utils.js +0 -7
  354. package/dist/entry/content/adapters/vanilla/utils.js.map +0 -1
  355. package/dist/entry/content/resolvers/index.d.ts +0 -6
  356. package/dist/entry/content/resolvers/index.js +0 -7
  357. package/dist/entry/content/resolvers/index.js.map +0 -1
  358. package/dist/entry/transport/index.d.ts +0 -1
  359. package/dist/entry/transport/index.js +0 -2
  360. package/dist/entry/transport/index.js.map +0 -1
  361. package/dist/entry/transport/resolvers/index.d.ts +0 -1
  362. package/dist/entry/transport/resolvers/index.js +0 -2
  363. package/dist/entry/transport/resolvers/index.js.map +0 -1
  364. package/dist/entry/view/adapters/react/resolvers/render.d.ts +0 -2
  365. package/dist/entry/view/adapters/react/resolvers/render.js +0 -11
  366. package/dist/entry/view/adapters/react/resolvers/render.js.map +0 -1
  367. package/dist/entry/view/core/Builder.js +0 -35
  368. package/dist/entry/view/core/Builder.js.map +0 -1
  369. package/dist/entry/view/core/resolvers/container.js.map +0 -1
  370. package/dist/entry/view/core/resolvers/definition.d.ts +0 -3
  371. package/dist/entry/view/core/resolvers/definition.js +0 -12
  372. package/dist/entry/view/core/resolvers/definition.js.map +0 -1
  373. package/dist/entry/view/core/resolvers/render.d.ts +0 -3
  374. package/dist/entry/view/core/resolvers/render.js +0 -18
  375. package/dist/entry/view/core/resolvers/render.js.map +0 -1
  376. package/dist/entry/view/index.d.ts +0 -1
  377. package/dist/entry/view/index.js +0 -2
  378. package/dist/entry/view/index.js.map +0 -1
  379. package/dist/locale/providers/ObservableLocale.js.map +0 -1
  380. package/dist/message/adapters/react/useMessageHandler.js.map +0 -1
  381. package/dist/types/view.js +0 -1
  382. package/scripts/clean-dist.js +0 -7
  383. package/scripts/copy-dts.js +0 -29
  384. package/scripts/merge-coverage.mjs +0 -12
  385. package/scripts/pre-commit.mjs +0 -22
  386. package/scripts/test-inventory.mjs +0 -38
  387. package/scripts/test-run.mjs +0 -25
  388. /package/dist/cli/virtual/{transport.d.ts → service.d.ts} +0 -0
  389. /package/dist/entry/view/{core/resolvers → resolvers}/container.js +0 -0
  390. /package/dist/locale/{providers → observers}/ObservableLocale.d.ts +0 -0
  391. /package/dist/{types/view.js.map → main/permissions.js.map} +0 -0
  392. /package/dist/message/adapters/react/{useMessageHandler.d.ts → use-message-handler.d.ts} +0 -0
@@ -1,7 +1,9 @@
1
1
  import { RsdoctorRspackPlugin } from "@rsdoctor/rspack-plugin";
2
2
  import { merge as mergeConfig } from "webpack-merge";
3
+ import path from "node:path";
3
4
  import manifestFactory from "../builders/manifest/index.js";
4
5
  import { processPluginHandler } from "./plugin.js";
6
+ import { resolveRootPath } from "./path.js";
5
7
  import ManifestPlugin from "./../../cli/bundler/plugins/manifest/index.js";
6
8
  import WatchPlugin from "./../../cli/bundler/plugins/watch/index.js";
7
9
  import { Command } from "./../../types/app.js";
@@ -36,9 +38,15 @@ const getConfigForManifest = async (config) => {
36
38
  };
37
39
  var bundler_default = async (config) => {
38
40
  let rspack = {
41
+ context: resolveRootPath(config),
39
42
  entry: {},
40
43
  mode: config.mode,
41
- cache: false
44
+ cache: false,
45
+ resolve: {
46
+ // Virtual entry modules may live outside the application. Keep issuer-local
47
+ // lookup first, then resolve the consumer's packages from its project root.
48
+ modules: ["node_modules", path.join(resolveRootPath(config), "node_modules")]
49
+ }
42
50
  };
43
51
  rspack = mergeConfig(
44
52
  rspack,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/resolvers/bundler.ts"],"sourcesContent":["import {Configuration as RspackConfig, RspackPluginInstance} from \"@rspack/core\";\nimport {RsdoctorRspackPlugin} from \"@rsdoctor/rspack-plugin\";\nimport {merge as mergeConfig} from \"webpack-merge\";\n\nimport manifestFactory from \"../builders/manifest\";\nimport {processPluginHandler} from \"./plugin\";\n\nimport ManifestPlugin from \"@cli/bundler/plugins/manifest\";\nimport WatchPlugin from \"@cli/bundler/plugins/watch\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {Command} from \"@typing/app\";\n\nconst getConfigFromPlugins = async (rspack: RspackConfig, config: ReadonlyConfig): Promise<RspackConfig> => {\n let mergedConfig: RspackConfig = {};\n\n for await (const {result: pluginConfig} of processPluginHandler(config.plugins, \"bundler\", () => ({\n rspack: mergeConfig(rspack, mergedConfig),\n config,\n }))) {\n mergedConfig = mergeConfig(mergedConfig, pluginConfig);\n }\n\n return mergedConfig;\n};\n\nconst getConfigForManifest = async (config: ReadonlyConfig): Promise<RspackConfig> => {\n let manifest = manifestFactory(config);\n\n const update = async () => {\n // Each compilation describes current entries; removed WAR/CSP rules must not accumulate.\n const next = manifestFactory(config);\n await Array.fromAsync(processPluginHandler(config.plugins, \"manifest\", {manifest: next, config}));\n manifest = next;\n };\n\n await update();\n\n const plugins: RspackPluginInstance[] = [];\n\n if (config.command === Command.Watch) {\n plugins.push(\n new WatchPlugin(async () => {\n await update();\n })\n );\n }\n\n plugins.push(new ManifestPlugin(() => manifest));\n\n return {plugins};\n};\n\nexport default async (config: ReadonlyConfig): Promise<RspackConfig> => {\n let rspack: RspackConfig = {\n entry: {},\n mode: config.mode,\n cache: false,\n };\n\n // prettier-ignore\n rspack = mergeConfig(\n rspack,\n await getConfigFromPlugins(rspack, config),\n await getConfigForManifest(config)\n );\n\n if (config.debug) {\n rspack = mergeConfig(rspack, {\n stats: {\n errorDetails: true,\n },\n });\n }\n\n if (config.command === Command.Watch) {\n rspack = mergeConfig(rspack, {\n devtool: \"inline-source-map\",\n });\n }\n\n if (config.command === Command.Build) {\n if (config.analyze) {\n rspack = mergeConfig(rspack, {\n plugins: [\n new RsdoctorRspackPlugin({\n supports: {\n banner: true,\n parseBundle: true,\n generateTileGraph: true,\n },\n }),\n ],\n });\n }\n }\n\n return rspack;\n};\n"],"mappings":"AACA,SAAQ,4BAA2B;AACnC,SAAQ,SAAS,mBAAkB;AAEnC,OAAO,qBAAqB;AAC5B,SAAQ,4BAA2B;AAEnC,OAAO,oBAAoB;AAC3B,OAAO,iBAAiB;AAGxB,SAAQ,eAAc;AAEtB,MAAM,uBAAuB,OAAO,QAAsB,WAAkD;AACxG,MAAI,eAA6B,CAAC;AAElC,mBAAiB,EAAC,QAAQ,aAAY,KAAK,qBAAqB,OAAO,SAAS,WAAW,OAAO;AAAA,IAC9F,QAAQ,YAAY,QAAQ,YAAY;AAAA,IACxC;AAAA,EACJ,EAAE,GAAG;AACD,mBAAe,YAAY,cAAc,YAAY;AAAA,EACzD;AAEA,SAAO;AACX;AAEA,MAAM,uBAAuB,OAAO,WAAkD;AAClF,MAAI,WAAW,gBAAgB,MAAM;AAErC,QAAM,SAAS,YAAY;AAEvB,UAAM,OAAO,gBAAgB,MAAM;AACnC,UAAM,MAAM,UAAU,qBAAqB,OAAO,SAAS,YAAY,EAAC,UAAU,MAAM,OAAM,CAAC,CAAC;AAChG,eAAW;AAAA,EACf;AAEA,QAAM,OAAO;AAEb,QAAM,UAAkC,CAAC;AAEzC,MAAI,OAAO,YAAY,QAAQ,OAAO;AAClC,YAAQ;AAAA,MACJ,IAAI,YAAY,YAAY;AACxB,cAAM,OAAO;AAAA,MACjB,CAAC;AAAA,IACL;AAAA,EACJ;AAEA,UAAQ,KAAK,IAAI,eAAe,MAAM,QAAQ,CAAC;AAE/C,SAAO,EAAC,QAAO;AACnB;AAEA,IAAO,kBAAQ,OAAO,WAAkD;AACpE,MAAI,SAAuB;AAAA,IACvB,OAAO,CAAC;AAAA,IACR,MAAM,OAAO;AAAA,IACb,OAAO;AAAA,EACX;AAGA,WAAS;AAAA,IACL;AAAA,IACA,MAAM,qBAAqB,QAAQ,MAAM;AAAA,IACzC,MAAM,qBAAqB,MAAM;AAAA,EACrC;AAEA,MAAI,OAAO,OAAO;AACd,aAAS,YAAY,QAAQ;AAAA,MACzB,OAAO;AAAA,QACH,cAAc;AAAA,MAClB;AAAA,IACJ,CAAC;AAAA,EACL;AAEA,MAAI,OAAO,YAAY,QAAQ,OAAO;AAClC,aAAS,YAAY,QAAQ;AAAA,MACzB,SAAS;AAAA,IACb,CAAC;AAAA,EACL;AAEA,MAAI,OAAO,YAAY,QAAQ,OAAO;AAClC,QAAI,OAAO,SAAS;AAChB,eAAS,YAAY,QAAQ;AAAA,QACzB,SAAS;AAAA,UACL,IAAI,qBAAqB;AAAA,YACrB,UAAU;AAAA,cACN,QAAQ;AAAA,cACR,aAAa;AAAA,cACb,mBAAmB;AAAA,YACvB;AAAA,UACJ,CAAC;AAAA,QACL;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,EACJ;AAEA,SAAO;AACX;","names":[]}
1
+ {"version":3,"sources":["../../../src/cli/resolvers/bundler.ts"],"sourcesContent":["import {Configuration as RspackConfig, RspackPluginInstance} from \"@rspack/core\";\nimport {RsdoctorRspackPlugin} from \"@rsdoctor/rspack-plugin\";\nimport {merge as mergeConfig} from \"webpack-merge\";\nimport path from \"node:path\";\n\nimport manifestFactory from \"../builders/manifest\";\nimport {processPluginHandler} from \"./plugin\";\nimport {resolveRootPath} from \"./path\";\n\nimport ManifestPlugin from \"@cli/bundler/plugins/manifest\";\nimport WatchPlugin from \"@cli/bundler/plugins/watch\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {Command} from \"@typing/app\";\n\nconst getConfigFromPlugins = async (rspack: RspackConfig, config: ReadonlyConfig): Promise<RspackConfig> => {\n let mergedConfig: RspackConfig = {};\n\n for await (const {result: pluginConfig} of processPluginHandler(config.plugins, \"bundler\", () => ({\n rspack: mergeConfig(rspack, mergedConfig),\n config,\n }))) {\n mergedConfig = mergeConfig(mergedConfig, pluginConfig);\n }\n\n return mergedConfig;\n};\n\nconst getConfigForManifest = async (config: ReadonlyConfig): Promise<RspackConfig> => {\n let manifest = manifestFactory(config);\n\n const update = async () => {\n // Each compilation describes current entries; removed WAR/CSP rules must not accumulate.\n const next = manifestFactory(config);\n await Array.fromAsync(processPluginHandler(config.plugins, \"manifest\", {manifest: next, config}));\n manifest = next;\n };\n\n await update();\n\n const plugins: RspackPluginInstance[] = [];\n\n if (config.command === Command.Watch) {\n plugins.push(\n new WatchPlugin(async () => {\n await update();\n })\n );\n }\n\n plugins.push(new ManifestPlugin(() => manifest));\n\n return {plugins};\n};\n\nexport default async (config: ReadonlyConfig): Promise<RspackConfig> => {\n let rspack: RspackConfig = {\n context: resolveRootPath(config),\n entry: {},\n mode: config.mode,\n cache: false,\n resolve: {\n // Virtual entry modules may live outside the application. Keep issuer-local\n // lookup first, then resolve the consumer's packages from its project root.\n modules: [\"node_modules\", path.join(resolveRootPath(config), \"node_modules\")],\n },\n };\n\n // prettier-ignore\n rspack = mergeConfig(\n rspack,\n await getConfigFromPlugins(rspack, config),\n await getConfigForManifest(config)\n );\n\n if (config.debug) {\n rspack = mergeConfig(rspack, {\n stats: {\n errorDetails: true,\n },\n });\n }\n\n if (config.command === Command.Watch) {\n rspack = mergeConfig(rspack, {\n devtool: \"inline-source-map\",\n });\n }\n\n if (config.command === Command.Build) {\n if (config.analyze) {\n rspack = mergeConfig(rspack, {\n plugins: [\n new RsdoctorRspackPlugin({\n supports: {\n banner: true,\n parseBundle: true,\n generateTileGraph: true,\n },\n }),\n ],\n });\n }\n }\n\n return rspack;\n};\n"],"mappings":"AACA,SAAQ,4BAA2B;AACnC,SAAQ,SAAS,mBAAkB;AACnC,OAAO,UAAU;AAEjB,OAAO,qBAAqB;AAC5B,SAAQ,4BAA2B;AACnC,SAAQ,uBAAsB;AAE9B,OAAO,oBAAoB;AAC3B,OAAO,iBAAiB;AAGxB,SAAQ,eAAc;AAEtB,MAAM,uBAAuB,OAAO,QAAsB,WAAkD;AACxG,MAAI,eAA6B,CAAC;AAElC,mBAAiB,EAAC,QAAQ,aAAY,KAAK,qBAAqB,OAAO,SAAS,WAAW,OAAO;AAAA,IAC9F,QAAQ,YAAY,QAAQ,YAAY;AAAA,IACxC;AAAA,EACJ,EAAE,GAAG;AACD,mBAAe,YAAY,cAAc,YAAY;AAAA,EACzD;AAEA,SAAO;AACX;AAEA,MAAM,uBAAuB,OAAO,WAAkD;AAClF,MAAI,WAAW,gBAAgB,MAAM;AAErC,QAAM,SAAS,YAAY;AAEvB,UAAM,OAAO,gBAAgB,MAAM;AACnC,UAAM,MAAM,UAAU,qBAAqB,OAAO,SAAS,YAAY,EAAC,UAAU,MAAM,OAAM,CAAC,CAAC;AAChG,eAAW;AAAA,EACf;AAEA,QAAM,OAAO;AAEb,QAAM,UAAkC,CAAC;AAEzC,MAAI,OAAO,YAAY,QAAQ,OAAO;AAClC,YAAQ;AAAA,MACJ,IAAI,YAAY,YAAY;AACxB,cAAM,OAAO;AAAA,MACjB,CAAC;AAAA,IACL;AAAA,EACJ;AAEA,UAAQ,KAAK,IAAI,eAAe,MAAM,QAAQ,CAAC;AAE/C,SAAO,EAAC,QAAO;AACnB;AAEA,IAAO,kBAAQ,OAAO,WAAkD;AACpE,MAAI,SAAuB;AAAA,IACvB,SAAS,gBAAgB,MAAM;AAAA,IAC/B,OAAO,CAAC;AAAA,IACR,MAAM,OAAO;AAAA,IACb,OAAO;AAAA,IACP,SAAS;AAAA;AAAA;AAAA,MAGL,SAAS,CAAC,gBAAgB,KAAK,KAAK,gBAAgB,MAAM,GAAG,cAAc,CAAC;AAAA,IAChF;AAAA,EACJ;AAGA,WAAS;AAAA,IACL;AAAA,IACA,MAAM,qBAAqB,QAAQ,MAAM;AAAA,IACzC,MAAM,qBAAqB,MAAM;AAAA,EACrC;AAEA,MAAI,OAAO,OAAO;AACd,aAAS,YAAY,QAAQ;AAAA,MACzB,OAAO;AAAA,QACH,cAAc;AAAA,MAClB;AAAA,IACJ,CAAC;AAAA,EACL;AAEA,MAAI,OAAO,YAAY,QAAQ,OAAO;AAClC,aAAS,YAAY,QAAQ;AAAA,MACzB,SAAS;AAAA,IACb,CAAC;AAAA,EACL;AAEA,MAAI,OAAO,YAAY,QAAQ,OAAO;AAClC,QAAI,OAAO,SAAS;AAChB,eAAS,YAAY,QAAQ;AAAA,QACzB,SAAS;AAAA,UACL,IAAI,qBAAqB;AAAA,YACrB,UAAU;AAAA,cACN,QAAQ;AAAA,cACR,aAAa;AAAA,cACb,mBAAmB;AAAA,YACvB;AAAA,UACJ,CAAC;AAAA,QACL;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,EACJ;AAEA,SAAO;AACX;","names":[]}
@@ -3,6 +3,7 @@ import dotenv from "dotenv";
3
3
  import { loadConfig } from "c12";
4
4
  import _ from "lodash";
5
5
  import {
6
+ pluginAction,
6
7
  pluginAsset,
7
8
  pluginBackground,
8
9
  pluginBundler,
@@ -17,6 +18,7 @@ import {
17
18
  pluginOptimization,
18
19
  pluginOptions,
19
20
  pluginOutput,
21
+ pluginOverride,
20
22
  pluginPage,
21
23
  pluginPopup,
22
24
  pluginPublic,
@@ -59,7 +61,7 @@ const getUserConfig = async (config) => {
59
61
  if (existsSync(configFilePath)) {
60
62
  const { config: userConfig } = await loadConfig({
61
63
  configFile: configFilePath,
62
- dotenv: true
64
+ dotenv: false
63
65
  });
64
66
  if (config.debug) {
65
67
  console.log("Loaded user config:", configFilePath);
@@ -164,6 +166,7 @@ var config_default = async (config) => {
164
166
  author = void 0,
165
167
  homepage = "HOMEPAGE",
166
168
  icon = DefaultIconGroupName,
169
+ action,
167
170
  lang = Language.English,
168
171
  incognito,
169
172
  specific,
@@ -229,6 +232,7 @@ var config_default = async (config) => {
229
232
  homepage,
230
233
  lang: resolveLanguage(lang),
231
234
  icon,
235
+ action,
232
236
  incognito,
233
237
  specific,
234
238
  manifest,
@@ -305,9 +309,11 @@ var config_default = async (config) => {
305
309
  pluginStyle(),
306
310
  pluginLocale(),
307
311
  pluginMeta(),
312
+ pluginAction(),
308
313
  pluginContent(),
309
314
  pluginBackground(),
310
315
  pluginOptions(),
316
+ pluginOverride(),
311
317
  pluginPopup(),
312
318
  pluginPublic(),
313
319
  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":"AAAA,SAAQ,kBAAiB;AACzB,OAAO,YAAsC;AAC7C,SAAQ,kBAAiB;AACzB,OAAO,OAAO;AAEd;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AAEP,SAAQ,cAAc,YAAY,kBAAkB,qBAAoB;AAGxE,SAAQ,SAAS,MAAM,iBAAgB;AACvC,SAAQ,eAAc;AAGtB,SAAQ,UAAU,qBAAoB;AACtC,SAAQ,4BAA2B;AAEnC,MAAM,kBAAkB,CAAC,SAA8C;AACnE,MAAI,CAAC,MAAM;AACP,WAAO,SAAS;AAAA,EACpB;AAEA,MAAI,cAAc,IAAI,IAAI,GAAG;AACzB,WAAO;AAAA,EACX;AAEA,QAAM,IAAI,MAAM,qBAAqB,IAAI,sBAAsB;AACnE;AAEA,MAAM,mBAAmB,CAAC,cAAsD;AAC5E,MAAI,CAAC,WAAW;AACZ,WAAO,UAAU;AAAA,EACrB;AAEA,MAAI,OAAO,OAAO,SAAS,EAAE,SAAS,SAAsB,GAAG;AAC3D,WAAO;AAAA,EACX;AAEA,QAAM,IAAI,MAAM,sBAAsB,SAAS,sBAAsB;AACzE;AAEA,MAAM,mBAAmB,CAAC,WAAsB,cAA8B;AAC1E,SAAO,cAAc,UAAU,QAAQ,YAAY;AACvD;AAEA,MAAM,gBAAgB,OAAO,WAAgD;AACzE,QAAM,iBAAiB,cAAc,MAAM;AAE3C,MAAI,WAAW,cAAc,GAAG;AAC5B,UAAM,EAAC,QAAQ,WAAU,IAAI,MAAM,WAAuB;AAAA,MACtD,YAAY;AAAA,MACZ,QAAQ;AAAA,IACZ,CAAC;AAED,QAAI,OAAO,OAAO;AACd,cAAQ,IAAI,uBAAuB,cAAc;AAAA,IACrD;AAEA,WAAO,cAAc,CAAC;AAAA,EAC1B,WAAW,OAAO,OAAO;AACrB,YAAQ,KAAK,0BAA0B,cAAc;AAAA,EACzD;AAEA,SAAO,CAAC;AACZ;AAEA,MAAM,iBAAiB,CAAC,WAA2C;AAC/D,QAAM;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAI;AAEJ,MACI;AAAA,IACI;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,EACK,OAAO,SAAO,EAAE,SAAS,GAAG,CAAC,EAC7B,KAAK,SAAO,IAAI,SAAS,IAAI,CAAC,GACrC;AACE,UAAM,IAAI,MAAM,4EAA4E;AAAA,EAChG;AAEA,MAAI,YAAY,WAAW;AACvB,UAAM,IAAI,MAAM,+EAA+E;AAAA,EACnG;AAEA,MAAI,WAAW,QAAQ;AACnB,UAAM,IAAI,MAAM,qFAAqF;AAAA,EACzG;AAEA,MAAI,WAAW,KAAK;AAChB,UAAM,IAAI,MAAM,2EAA2E;AAAA,EAC/F;AAEA,MAAI,cAAc,OAAO,CAAC,QAAQ,QAAQ,SAAS,EAAE,SAAS,SAAS,GAAG;AACtE,UAAM,IAAI;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;AAEA,MAAM,oBAAoB,CAAC,WAA8C;AACrE,QAAM,EAAC,MAAM,KAAK,SAAS,gBAAe,IAAI;AAE9C,QAAM,YAA+B;AAAA,IACjC,KAAK;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,IACN,kBAAkB,OAAO,eAAe;AAAA,EAC5C;AAEA,SAAO,OAAO,QAAQ,KAAK,SAAS;AAEpC,SAAO;AACX;AAEA,MAAM,aAAa,CAAC,WAA8C;AAC9D,QAAM,EAAC,MAAM,SAAS,MAAK,IAAI;AAE/B,QAAM,SAAS;AAAA,IACX,QAAQ,IAAI,IAAI,OAAO;AAAA,IACvB,QAAQ,IAAI,IAAI,OAAO;AAAA,IACvB,QAAQ,OAAO;AAAA,IACf,QAAQ,OAAO;AAAA,IACf,QAAQ,IAAI;AAAA,IACZ,QAAQ,IAAI;AAAA,IACZ;AAAA,IACA;AAAA,EACJ;AAEA,QAAM,iBAAiB,OAAO,IAAI,UAAQ,iBAAiB,QAAQ,IAAI,CAAC;AACxE,QAAM,WAAW,OAAO,IAAI,UAAQ,WAAW,QAAQ,IAAI,CAAC;AAC5D,QAAM,YAAY,OAAO,IAAI,UAAQ,aAAa,QAAQ,IAAI,CAAC;AAE/D,QAAM,QAAQ,CAAC,GAAG,gBAAgB,GAAG,UAAU,GAAG,SAAS;AAE3D,QAAM,EAAC,QAAQ,WAAW,CAAC,EAAC,IAAI,OAAO,OAAO,EAAC,MAAM,OAAO,OAAO,CAAC,MAAK,CAAC;AAE1E,SAAO,EAAC,GAAG,UAAU,GAAG,kBAAkB,MAAM,EAAC;AACrD;AAEA,IAAO,iBAAQ,OAAO,WAA4C;AAC9D,MAAI;AAAA,IACA,UAAU,QAAQ;AAAA,IAClB,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,UAAU,QAAQ;AAAA,IAClB,MAAM;AAAA,IACN,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,iBAAiB;AAAA,IACjB,SAAS;AAAA,IACT,WAAW;AAAA,IACX,OAAO;AAAA,IACP,OAAO,SAAS;AAAA,IAChB;AAAA,IACA;AAAA,IACA,YAAY,UAAU;AAAA,IACtB,UAAU;AAAA,IACV,SAAS;AAAA,IACT,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,OAAO,CAAC;AAAA,IACR,UAAU,CAAC;AAAA,IACX,MAAM,CAAC;AAAA,IACP;AAAA,IACA,mBAAmB,oBAAI,IAAa,CAAC,QAAQ,MAAM,CAAC,GAAE,IAAI,OAAO,IAAI,IAAI;AAAA,IACzE,OAAO,KAAK;AAAA,IACZ,UAAU;AAAA,IACV,UAAU,CAAC;AAAA,IACX,kBAAkB;AAAA,IAClB,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,IACtB,uBAAuB;AAAA,IACvB,cAAc;AAAA,IACd,aAAa;AAAA,IACb,eAAe;AAAA,IACf,aAAa;AAAA,IACb,aAAa;AAAA,IACb,cAAc;AAAA,IACd,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,kBAAkB;AAAA,IAClB,aAAa;AAAA,IACb,eAAe;AAAA,IACf,iBAAiB;AAAA,IACjB,eAAe;AAAA,IACf,eAAe;AAAA,IACf,eAAe;AAAA,IACf,iBAAiB,SAAS,KAAK,cAAc,YAAY,QAAQ,SAAS,CAAC,QACrE,yBACA;AAAA,IACN,aAAa,SAAS,KAAK,cAAc,YAAY,QAAQ,SAAS,CAAC,QACjE,uBACA;AAAA,IACN,cAAc,SAAS,KAAK,cAAc,YAAY,QAAQ,SAAS,CAAC,QAClE,wBACA;AAAA,IACN,eAAe,SAAS,KAAK,cAAc,YAAY,QAAQ,SAAS,CAAC,QACnE,0BACA;AAAA,EACV,IAAI;AAEJ,MAAI,iBAAyB;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM,gBAAgB,IAAI;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,iBAAiB,SAAS;AAAA,IACrC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEA,MAAI,OAAO,WAAW,cAAc;AAEpC,QAAM;AAAA,IACF,SAAS,cAAc,CAAC;AAAA,IACxB,MAAM;AAAA,IACN,WAAW;AAAA,IACX,GAAG;AAAA,EACP,IAAI,MAAM,cAAc,cAAc;AAEtC,mBAAiB;AAAA,IACb,GAAG;AAAA,IACH,GAAG;AAAA,IACH,MAAM,gBAAgB,YAAY,eAAe,IAAI;AAAA,IACrD,WAAW,iBAAiB,iBAAiB,eAAe,SAAS;AAAA,EACzE;AAEA,iBAAe,YAAY,iBAAiB,eAAe,WAAW,eAAe,SAAS;AAE9F,mBAAiB,eAAe,cAAc;AAE9C,SAAO,EAAC,GAAG,MAAM,GAAG,WAAW,cAAc,EAAC;AAO9C,QAAM,cAAwB;AAAA,IAC1B,aAAa,IAAI;AAAA,IACjB,aAAa;AAAA,IACb,mBAAmB;AAAA,IACnB,iBAAiB;AAAA,IACjB,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,WAAW;AAAA,IACX,cAAc;AAAA,IACd,iBAAiB;AAAA,IACjB,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,cAAc;AAAA,IACd,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,cAAc;AAAA,IACd,cAAc;AAAA,IACd,eAAe;AAAA,EACnB;AAEA,SAAO;AAAA,IACH,GAAG;AAAA,IACH,SAAS,CAAC,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW;AAAA,EACxD;AACJ;","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 pluginAction,\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: false,\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 action,\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 action,\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 pluginAction(),\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,7 +1,7 @@
1
1
  import path from "path";
2
2
  import _ from "lodash";
3
3
  const toPosix = (to) => {
4
- return path.posix.join(...to.split(path.sep));
4
+ return path.normalize(to).split(path.sep).join("/");
5
5
  };
6
6
  const toPosixPath = (pathname) => {
7
7
  const { dir, name } = path.parse(pathname);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/utils/path.ts"],"sourcesContent":["import path from \"path\";\nimport _ from \"lodash\";\n\nexport const toPosix = (to: string): string => {\n return path.posix.join(...to.split(path.sep));\n};\n\nexport const toPosixPath = (pathname: string): string => {\n const {dir, name} = path.parse(pathname);\n\n return toPosix(name === \"index\" ? dir : path.join(dir, name));\n};\n\nexport const isFileExtension = (filename: string, extension: string | string[]): boolean => {\n if (_.isString(extension)) {\n extension = [extension];\n }\n\n let {ext} = path.parse(filename);\n\n if (ext.startsWith(\".\")) {\n ext = ext.slice(1);\n }\n\n return extension.includes(ext);\n};\n"],"mappings":"AAAA,OAAO,UAAU;AACjB,OAAO,OAAO;AAEP,MAAM,UAAU,CAAC,OAAuB;AAC3C,SAAO,KAAK,MAAM,KAAK,GAAG,GAAG,MAAM,KAAK,GAAG,CAAC;AAChD;AAEO,MAAM,cAAc,CAAC,aAA6B;AACrD,QAAM,EAAC,KAAK,KAAI,IAAI,KAAK,MAAM,QAAQ;AAEvC,SAAO,QAAQ,SAAS,UAAU,MAAM,KAAK,KAAK,KAAK,IAAI,CAAC;AAChE;AAEO,MAAM,kBAAkB,CAAC,UAAkB,cAA0C;AACxF,MAAI,EAAE,SAAS,SAAS,GAAG;AACvB,gBAAY,CAAC,SAAS;AAAA,EAC1B;AAEA,MAAI,EAAC,IAAG,IAAI,KAAK,MAAM,QAAQ;AAE/B,MAAI,IAAI,WAAW,GAAG,GAAG;AACrB,UAAM,IAAI,MAAM,CAAC;AAAA,EACrB;AAEA,SAAO,UAAU,SAAS,GAAG;AACjC;","names":[]}
1
+ {"version":3,"sources":["../../../src/cli/utils/path.ts"],"sourcesContent":["import path from \"path\";\nimport _ from \"lodash\";\n\nexport const toPosix = (to: string): string => {\n return path.normalize(to).split(path.sep).join(\"/\");\n};\n\nexport const toPosixPath = (pathname: string): string => {\n const {dir, name} = path.parse(pathname);\n\n return toPosix(name === \"index\" ? dir : path.join(dir, name));\n};\n\nexport const isFileExtension = (filename: string, extension: string | string[]): boolean => {\n if (_.isString(extension)) {\n extension = [extension];\n }\n\n let {ext} = path.parse(filename);\n\n if (ext.startsWith(\".\")) {\n ext = ext.slice(1);\n }\n\n return extension.includes(ext);\n};\n"],"mappings":"AAAA,OAAO,UAAU;AACjB,OAAO,OAAO;AAEP,MAAM,UAAU,CAAC,OAAuB;AAC3C,SAAO,KAAK,UAAU,EAAE,EAAE,MAAM,KAAK,GAAG,EAAE,KAAK,GAAG;AACtD;AAEO,MAAM,cAAc,CAAC,aAA6B;AACrD,QAAM,EAAC,KAAK,KAAI,IAAI,KAAK,MAAM,QAAQ;AAEvC,SAAO,QAAQ,SAAS,UAAU,MAAM,KAAK,KAAK,KAAK,IAAI,CAAC;AAChE;AAEO,MAAM,kBAAkB,CAAC,UAAkB,cAA0C;AACxF,MAAI,EAAE,SAAS,SAAS,GAAG;AACvB,gBAAY,CAAC,SAAS;AAAA,EAC1B;AAEA,MAAI,EAAC,IAAG,IAAI,KAAK,MAAM,QAAQ;AAE/B,MAAI,IAAI,WAAW,GAAG,GAAG;AACrB,UAAM,IAAI,MAAM,CAAC;AAAA,EACrB;AAEA,SAAO,UAAU,SAAS,GAAG;AACjC;","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;