adnbn 0.12.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (400) hide show
  1. package/dist/cli/builders/manifest/ManifestBase.d.ts +4 -1
  2. package/dist/cli/builders/manifest/ManifestBase.js +14 -0
  3. package/dist/cli/builders/manifest/ManifestBase.js.map +1 -1
  4. package/dist/cli/bundler/layers.d.ts +3 -3
  5. package/dist/cli/bundler/layers.js +6 -7
  6. package/dist/cli/bundler/layers.js.map +1 -1
  7. package/dist/cli/bundler/plugins/build-assets-map/BuildAssetsMapPlugin.js +42 -14
  8. package/dist/cli/bundler/plugins/build-assets-map/BuildAssetsMapPlugin.js.map +1 -1
  9. package/dist/cli/bundler/plugins/build-assets-map/normalize.d.ts +3 -0
  10. package/dist/cli/bundler/plugins/build-assets-map/normalize.js +24 -0
  11. package/dist/cli/bundler/plugins/build-assets-map/normalize.js.map +1 -0
  12. package/dist/cli/bundler/plugins/build-assets-map/templates/runtime.template.d.ts +2 -0
  13. package/dist/cli/bundler/plugins/build-assets-map/templates.d.ts +9 -0
  14. package/dist/cli/bundler/plugins/build-assets-map/templates.js +32 -0
  15. package/dist/cli/bundler/plugins/entrypoint/EntrypointPlugin.js +11 -0
  16. package/dist/cli/bundler/plugins/entrypoint/EntrypointPlugin.js.map +1 -1
  17. package/dist/cli/bundler/plugins/isolated-styles/IsolatedStylesPlugin.d.ts +1 -1
  18. package/dist/cli/bundler/plugins/isolated-styles/IsolatedStylesPlugin.js +38 -13
  19. package/dist/cli/bundler/plugins/isolated-styles/IsolatedStylesPlugin.js.map +1 -1
  20. package/dist/cli/bundler/plugins/isolated-styles/chunks.d.ts +5 -1
  21. package/dist/cli/bundler/plugins/isolated-styles/chunks.js +17 -16
  22. package/dist/cli/bundler/plugins/isolated-styles/chunks.js.map +1 -1
  23. package/dist/cli/bundler/plugins/isolated-styles/split-chunks.d.ts +4 -0
  24. package/dist/cli/bundler/plugins/isolated-styles/split-chunks.js +51 -0
  25. package/dist/cli/bundler/plugins/isolated-styles/split-chunks.js.map +1 -0
  26. package/dist/cli/bundler/plugins/isolated-styles/templates.js +36 -6
  27. package/dist/cli/entrypoint/finder/AbstractOverrideFinder.d.ts +15 -0
  28. package/dist/cli/entrypoint/finder/AbstractOverrideFinder.js +20 -0
  29. package/dist/cli/entrypoint/finder/AbstractOverrideFinder.js.map +1 -0
  30. package/dist/cli/entrypoint/finder/AbstractViewFinder.d.ts +6 -1
  31. package/dist/cli/entrypoint/finder/AbstractViewFinder.js +15 -0
  32. package/dist/cli/entrypoint/finder/AbstractViewFinder.js.map +1 -1
  33. package/dist/cli/entrypoint/finder/BookmarksFinder.d.ts +9 -0
  34. package/dist/cli/entrypoint/finder/BookmarksFinder.js +18 -0
  35. package/dist/cli/entrypoint/finder/BookmarksFinder.js.map +1 -0
  36. package/dist/cli/entrypoint/finder/CommandFinder.d.ts +4 -0
  37. package/dist/cli/entrypoint/finder/CommandFinder.js +20 -6
  38. package/dist/cli/entrypoint/finder/CommandFinder.js.map +1 -1
  39. package/dist/cli/entrypoint/finder/HistoryFinder.d.ts +9 -0
  40. package/dist/cli/entrypoint/finder/HistoryFinder.js +18 -0
  41. package/dist/cli/entrypoint/finder/HistoryFinder.js.map +1 -0
  42. package/dist/cli/entrypoint/finder/NewtabFinder.d.ts +9 -0
  43. package/dist/cli/entrypoint/finder/NewtabFinder.js +18 -0
  44. package/dist/cli/entrypoint/finder/NewtabFinder.js.map +1 -0
  45. package/dist/cli/entrypoint/finder/OptionsFinder.d.ts +2 -2
  46. package/dist/cli/entrypoint/finder/OptionsFinder.js +2 -2
  47. package/dist/cli/entrypoint/finder/OptionsFinder.js.map +1 -1
  48. package/dist/cli/entrypoint/finder/PageFinder.js +1 -1
  49. package/dist/cli/entrypoint/finder/PageFinder.js.map +1 -1
  50. package/dist/cli/entrypoint/finder/PopupFinder.d.ts +2 -2
  51. package/dist/cli/entrypoint/finder/PopupFinder.js +2 -2
  52. package/dist/cli/entrypoint/finder/PopupFinder.js.map +1 -1
  53. package/dist/cli/entrypoint/finder/SidebarFinder.d.ts +2 -2
  54. package/dist/cli/entrypoint/finder/SidebarFinder.js +2 -2
  55. package/dist/cli/entrypoint/finder/SidebarFinder.js.map +1 -1
  56. package/dist/cli/entrypoint/finder/ViewCspFinder.d.ts +2 -3
  57. package/dist/cli/entrypoint/finder/ViewCspFinder.js.map +1 -1
  58. package/dist/cli/entrypoint/finder/ViewPermissionsFinder.d.ts +22 -0
  59. package/dist/cli/entrypoint/finder/ViewPermissionsFinder.js +43 -0
  60. package/dist/cli/entrypoint/finder/ViewPermissionsFinder.js.map +1 -0
  61. package/dist/cli/entrypoint/finder/index.d.ts +5 -0
  62. package/dist/cli/entrypoint/finder/index.js +50 -40
  63. package/dist/cli/entrypoint/finder/index.js.map +1 -1
  64. package/dist/cli/entrypoint/name/NameGenerator.d.ts +2 -0
  65. package/dist/cli/entrypoint/name/NameGenerator.js +5 -1
  66. package/dist/cli/entrypoint/name/NameGenerator.js.map +1 -1
  67. package/dist/cli/entrypoint/parser/AbstractOverrideParser.d.ts +9 -0
  68. package/dist/cli/entrypoint/parser/AbstractOverrideParser.js +11 -0
  69. package/dist/cli/entrypoint/parser/AbstractOverrideParser.js.map +1 -0
  70. package/dist/cli/entrypoint/parser/BackgroundParser.js +3 -6
  71. package/dist/cli/entrypoint/parser/BackgroundParser.js.map +1 -1
  72. package/dist/cli/entrypoint/parser/BookmarksParser.d.ts +5 -0
  73. package/dist/cli/entrypoint/parser/BookmarksParser.js +10 -0
  74. package/dist/cli/entrypoint/parser/BookmarksParser.js.map +1 -0
  75. package/dist/cli/entrypoint/parser/HistoryParser.d.ts +5 -0
  76. package/dist/cli/entrypoint/parser/HistoryParser.js +10 -0
  77. package/dist/cli/entrypoint/parser/HistoryParser.js.map +1 -0
  78. package/dist/cli/entrypoint/parser/NewtabParser.d.ts +5 -0
  79. package/dist/cli/entrypoint/parser/NewtabParser.js +10 -0
  80. package/dist/cli/entrypoint/parser/NewtabParser.js.map +1 -0
  81. package/dist/cli/entrypoint/parser/OptionsParser.js +2 -1
  82. package/dist/cli/entrypoint/parser/OptionsParser.js.map +1 -1
  83. package/dist/cli/entrypoint/parser/PopupParser.js +2 -1
  84. package/dist/cli/entrypoint/parser/PopupParser.js.map +1 -1
  85. package/dist/cli/entrypoint/parser/SidebarParser.js +2 -1
  86. package/dist/cli/entrypoint/parser/SidebarParser.js.map +1 -1
  87. package/dist/cli/entrypoint/parser/ViewCspParser.d.ts +1 -1
  88. package/dist/cli/entrypoint/parser/ViewParser.d.ts +1 -1243
  89. package/dist/cli/entrypoint/parser/ViewParser.js +2 -72
  90. package/dist/cli/entrypoint/parser/ViewParser.js.map +1 -1
  91. package/dist/cli/entrypoint/parser/index.d.ts +4 -0
  92. package/dist/cli/entrypoint/parser/index.js +28 -20
  93. package/dist/cli/entrypoint/parser/index.js.map +1 -1
  94. package/dist/cli/entrypoint/parser/schemas/html.d.ts +903 -0
  95. package/dist/cli/entrypoint/parser/schemas/html.js +64 -0
  96. package/dist/cli/entrypoint/parser/schemas/html.js.map +1 -0
  97. package/dist/cli/entrypoint/parser/schemas/permissions.d.ts +23 -0
  98. package/dist/cli/entrypoint/parser/schemas/permissions.js +11 -0
  99. package/dist/cli/entrypoint/parser/schemas/permissions.js.map +1 -0
  100. package/dist/cli/plugins/content/bundler.d.ts +0 -3
  101. package/dist/cli/plugins/content/bundler.js +4 -20
  102. package/dist/cli/plugins/content/bundler.js.map +1 -1
  103. package/dist/cli/plugins/content/index.js +2 -3
  104. package/dist/cli/plugins/content/index.js.map +1 -1
  105. package/dist/cli/plugins/index.d.ts +1 -0
  106. package/dist/cli/plugins/index.js +22 -20
  107. package/dist/cli/plugins/index.js.map +1 -1
  108. package/dist/cli/plugins/locale/Locale.js +5 -2
  109. package/dist/cli/plugins/locale/Locale.js.map +1 -1
  110. package/dist/cli/plugins/options/index.js +1 -1
  111. package/dist/cli/plugins/options/index.js.map +1 -1
  112. package/dist/cli/plugins/override/Override.d.ts +31 -0
  113. package/dist/cli/plugins/override/Override.js +112 -0
  114. package/dist/cli/plugins/override/Override.js.map +1 -0
  115. package/dist/cli/plugins/override/index.d.ts +2 -0
  116. package/dist/cli/plugins/override/index.js +48 -0
  117. package/dist/cli/plugins/override/index.js.map +1 -0
  118. package/dist/cli/plugins/popup/index.js +1 -1
  119. package/dist/cli/plugins/popup/index.js.map +1 -1
  120. package/dist/cli/plugins/sidebar/index.js +1 -2
  121. package/dist/cli/plugins/sidebar/index.js.map +1 -1
  122. package/dist/cli/plugins/style/index.d.ts +1 -2
  123. package/dist/cli/plugins/style/index.js +19 -30
  124. package/dist/cli/plugins/style/index.js.map +1 -1
  125. package/dist/cli/plugins/view/View.d.ts +1 -1
  126. package/dist/cli/plugins/view/View.js +2 -10
  127. package/dist/cli/plugins/view/View.js.map +1 -1
  128. package/dist/cli/plugins/view/index.js +10 -1
  129. package/dist/cli/plugins/view/index.js.map +1 -1
  130. package/dist/cli/resolvers/config.js +3 -2
  131. package/dist/cli/resolvers/config.js.map +1 -1
  132. package/dist/cli/virtual/index.js +14 -17
  133. package/dist/cli/virtual/virtual.d.ts +7 -127
  134. package/dist/entry/background/Builder.js +1 -1
  135. package/dist/entry/background/Builder.js.map +1 -1
  136. package/dist/entry/background/index.d.ts +1 -1
  137. package/dist/entry/background/index.js +3 -2
  138. package/dist/entry/background/index.js.map +1 -1
  139. package/dist/entry/background/resolvers/definition.d.ts +5 -1
  140. package/dist/entry/background/resolvers/definition.js +15 -4
  141. package/dist/entry/background/resolvers/definition.js.map +1 -1
  142. package/dist/entry/command/Builder.js +1 -1
  143. package/dist/entry/command/Builder.js.map +1 -1
  144. package/dist/entry/command/index.d.ts +1 -1
  145. package/dist/entry/command/index.js +3 -2
  146. package/dist/entry/command/index.js.map +1 -1
  147. package/dist/entry/command/resolvers/definition.d.ts +6 -2
  148. package/dist/entry/command/resolvers/definition.js +14 -4
  149. package/dist/entry/command/resolvers/definition.js.map +1 -1
  150. package/dist/entry/content/adapters/react/Builder.d.ts +4 -2
  151. package/dist/entry/content/adapters/react/Builder.js +13 -5
  152. package/dist/entry/content/adapters/react/Builder.js.map +1 -1
  153. package/dist/entry/content/adapters/react/Node.js +13 -8
  154. package/dist/entry/content/adapters/react/Node.js.map +1 -1
  155. package/dist/entry/content/adapters/react/definition.d.ts +2 -0
  156. package/dist/entry/content/adapters/react/definition.js +13 -0
  157. package/dist/entry/content/adapters/react/definition.js.map +1 -0
  158. package/dist/entry/content/adapters/react/index.d.ts +1 -1
  159. package/dist/entry/content/adapters/react/index.js +1 -1
  160. package/dist/entry/content/adapters/react/index.js.map +1 -1
  161. package/dist/entry/content/adapters/vanilla/Builder.d.ts +4 -2
  162. package/dist/entry/content/adapters/vanilla/Builder.js +14 -5
  163. package/dist/entry/content/adapters/vanilla/Builder.js.map +1 -1
  164. package/dist/entry/content/adapters/vanilla/Node.js +3 -5
  165. package/dist/entry/content/adapters/vanilla/Node.js.map +1 -1
  166. package/dist/entry/content/adapters/vanilla/definition.d.ts +2 -0
  167. package/dist/entry/content/adapters/vanilla/definition.js +9 -0
  168. package/dist/entry/content/adapters/vanilla/definition.js.map +1 -0
  169. package/dist/entry/content/adapters/vanilla/index.d.ts +1 -1
  170. package/dist/entry/content/adapters/vanilla/index.js +1 -1
  171. package/dist/entry/content/adapters/vanilla/index.js.map +1 -1
  172. package/dist/entry/content/lifecycle/Builder.d.ts +10 -4
  173. package/dist/entry/content/lifecycle/Builder.js +107 -69
  174. package/dist/entry/content/lifecycle/Builder.js.map +1 -1
  175. package/dist/entry/content/lifecycle/MountBuilder.d.ts +6 -3
  176. package/dist/entry/content/lifecycle/MountBuilder.js +32 -16
  177. package/dist/entry/content/lifecycle/MountBuilder.js.map +1 -1
  178. package/dist/entry/content/lifecycle/context/ContainerRegistry.d.ts +7 -0
  179. package/dist/entry/content/lifecycle/context/ContainerRegistry.js +45 -0
  180. package/dist/entry/content/lifecycle/context/ContainerRegistry.js.map +1 -0
  181. package/dist/entry/content/lifecycle/context/Context.d.ts +6 -3
  182. package/dist/entry/content/lifecycle/context/Context.js +21 -6
  183. package/dist/entry/content/lifecycle/context/Context.js.map +1 -1
  184. package/dist/entry/content/lifecycle/context/ManagedContext.d.ts +4 -1
  185. package/dist/entry/content/lifecycle/context/ManagedContext.js +7 -0
  186. package/dist/entry/content/lifecycle/context/ManagedContext.js.map +1 -1
  187. package/dist/entry/content/lifecycle/context/index.d.ts +1 -0
  188. package/dist/entry/content/lifecycle/context/index.js +6 -4
  189. package/dist/entry/content/lifecycle/context/index.js.map +1 -1
  190. package/dist/entry/content/lifecycle/markers/AttributeMarker.js +3 -1
  191. package/dist/entry/content/lifecycle/markers/AttributeMarker.js.map +1 -1
  192. package/dist/entry/content/lifecycle/nodes/EventNode.d.ts +4 -2
  193. package/dist/entry/content/lifecycle/nodes/EventNode.js +7 -2
  194. package/dist/entry/content/lifecycle/nodes/EventNode.js.map +1 -1
  195. package/dist/entry/content/lifecycle/nodes/FrameNode.d.ts +2 -1
  196. package/dist/entry/content/lifecycle/nodes/FrameNode.js +3 -0
  197. package/dist/entry/content/lifecycle/nodes/FrameNode.js.map +1 -1
  198. package/dist/entry/content/lifecycle/nodes/MarkerNode.d.ts +1 -1
  199. package/dist/entry/content/lifecycle/nodes/MarkerNode.js.map +1 -1
  200. package/dist/entry/content/lifecycle/nodes/MountNode.d.ts +7 -3
  201. package/dist/entry/content/lifecycle/nodes/MountNode.js +47 -12
  202. package/dist/entry/content/lifecycle/nodes/MountNode.js.map +1 -1
  203. package/dist/entry/content/lifecycle/nodes/Node.d.ts +1 -1
  204. package/dist/entry/content/lifecycle/nodes/Node.js.map +1 -1
  205. package/dist/entry/content/lifecycle/nodes/RenderNode.d.ts +13 -4
  206. package/dist/entry/content/lifecycle/nodes/RenderNode.js +71 -6
  207. package/dist/entry/content/lifecycle/nodes/RenderNode.js.map +1 -1
  208. package/dist/entry/content/lifecycle/nodes/ShadowNode.d.ts +2 -1
  209. package/dist/entry/content/lifecycle/nodes/ShadowNode.js +3 -0
  210. package/dist/entry/content/lifecycle/nodes/ShadowNode.js.map +1 -1
  211. package/dist/entry/content/lifecycle/types.d.ts +28 -0
  212. package/dist/entry/content/resolvers/watch.d.ts +1 -1
  213. package/dist/entry/content/resolvers/watch.js +29 -14
  214. package/dist/entry/content/resolvers/watch.js.map +1 -1
  215. package/dist/entry/core/react.d.ts +6 -0
  216. package/dist/entry/core/react.js +16 -0
  217. package/dist/entry/core/react.js.map +1 -0
  218. package/dist/entry/core/render.d.ts +5 -0
  219. package/dist/entry/core/render.js +16 -0
  220. package/dist/entry/core/render.js.map +1 -0
  221. package/dist/entry/offscreen/Builder.d.ts +6 -7
  222. package/dist/entry/offscreen/Builder.js +12 -13
  223. package/dist/entry/offscreen/Builder.js.map +1 -1
  224. package/dist/entry/offscreen/TransportBuilder.d.ts +1 -1
  225. package/dist/entry/offscreen/TransportBuilder.js +4 -3
  226. package/dist/entry/offscreen/TransportBuilder.js.map +1 -1
  227. package/dist/entry/offscreen/index.d.ts +5 -2
  228. package/dist/entry/offscreen/index.js +8 -2
  229. package/dist/entry/offscreen/index.js.map +1 -1
  230. package/dist/entry/offscreen/resolvers/definition.d.ts +4 -0
  231. package/dist/entry/offscreen/resolvers/definition.js +8 -0
  232. package/dist/entry/offscreen/resolvers/definition.js.map +1 -0
  233. package/dist/entry/relay/index.js.map +1 -1
  234. package/dist/entry/relay/resolvers/definition.d.ts +1 -1
  235. package/dist/entry/relay/resolvers/definition.js +2 -10
  236. package/dist/entry/relay/resolvers/definition.js.map +1 -1
  237. package/dist/entry/sandbox/Builder.d.ts +6 -7
  238. package/dist/entry/sandbox/Builder.js +8 -12
  239. package/dist/entry/sandbox/Builder.js.map +1 -1
  240. package/dist/entry/sandbox/TransportBuilder.d.ts +1 -1
  241. package/dist/entry/sandbox/TransportBuilder.js +4 -3
  242. package/dist/entry/sandbox/TransportBuilder.js.map +1 -1
  243. package/dist/entry/sandbox/index.d.ts +7 -2
  244. package/dist/entry/sandbox/index.js +10 -4
  245. package/dist/entry/sandbox/index.js.map +1 -1
  246. package/dist/entry/sandbox/resolvers/definition.d.ts +4 -0
  247. package/dist/entry/sandbox/resolvers/definition.js +8 -0
  248. package/dist/entry/sandbox/resolvers/definition.js.map +1 -0
  249. package/dist/entry/service/index.d.ts +1 -0
  250. package/dist/entry/service/index.js +3 -1
  251. package/dist/entry/service/index.js.map +1 -1
  252. package/dist/entry/service/resolvers/definition.d.ts +3 -0
  253. package/dist/entry/service/resolvers/definition.js +8 -0
  254. package/dist/entry/service/resolvers/definition.js.map +1 -0
  255. package/dist/entry/transport/AbstractBuilder.js +1 -1
  256. package/dist/entry/transport/AbstractBuilder.js.map +1 -1
  257. package/dist/entry/transport/resolvers/definition.d.ts +7 -5
  258. package/dist/entry/transport/resolvers/definition.js +15 -4
  259. package/dist/entry/transport/resolvers/definition.js.map +1 -1
  260. package/dist/entry/view/{core/Builder.d.ts → Builder.d.ts} +9 -4
  261. package/dist/entry/view/Builder.js +62 -0
  262. package/dist/entry/view/Builder.js.map +1 -0
  263. package/dist/entry/view/adapters/react/Builder.d.ts +6 -7
  264. package/dist/entry/view/adapters/react/Builder.js +20 -23
  265. package/dist/entry/view/adapters/react/Builder.js.map +1 -1
  266. package/dist/entry/view/adapters/react/definition.d.ts +2 -0
  267. package/dist/entry/view/adapters/react/definition.js +13 -0
  268. package/dist/entry/view/adapters/react/definition.js.map +1 -0
  269. package/dist/entry/view/adapters/react/index.d.ts +2 -1
  270. package/dist/entry/view/adapters/react/index.js +3 -1
  271. package/dist/entry/view/adapters/react/index.js.map +1 -1
  272. package/dist/entry/view/adapters/vanilla/Builder.d.ts +5 -6
  273. package/dist/entry/view/adapters/vanilla/Builder.js +14 -25
  274. package/dist/entry/view/adapters/vanilla/Builder.js.map +1 -1
  275. package/dist/entry/view/adapters/vanilla/definition.d.ts +2 -0
  276. package/dist/entry/view/adapters/vanilla/definition.js +9 -0
  277. package/dist/entry/view/adapters/vanilla/definition.js.map +1 -0
  278. package/dist/entry/view/adapters/vanilla/index.d.ts +2 -1
  279. package/dist/entry/view/adapters/vanilla/index.js +3 -1
  280. package/dist/entry/view/adapters/vanilla/index.js.map +1 -1
  281. package/dist/entry/view/{core/resolvers → resolvers}/container.d.ts +1 -1
  282. package/dist/entry/view/resolvers/container.js.map +1 -0
  283. package/dist/entry/view/resolvers/definition.d.ts +3 -0
  284. package/dist/entry/view/resolvers/definition.js +18 -0
  285. package/dist/entry/view/resolvers/definition.js.map +1 -0
  286. package/dist/main/index.d.ts +2 -0
  287. package/dist/main/index.js +2 -0
  288. package/dist/main/index.js.map +1 -1
  289. package/dist/main/override.d.ts +5 -0
  290. package/dist/main/override.js +15 -0
  291. package/dist/main/override.js.map +1 -0
  292. package/dist/main/permissions.d.ts +1 -0
  293. package/dist/main/permissions.js +1 -0
  294. package/dist/main/view.d.ts +1 -1
  295. package/dist/shared/locale/index.d.ts +1 -1
  296. package/dist/shared/locale/index.js +3 -1
  297. package/dist/shared/locale/index.js.map +1 -1
  298. package/dist/shared/locale/messages.d.ts +4 -0
  299. package/dist/shared/locale/messages.js +12 -0
  300. package/dist/shared/locale/messages.js.map +1 -1
  301. package/dist/types/background.d.ts +2 -8
  302. package/dist/types/background.js.map +1 -1
  303. package/dist/types/content/common.d.ts +8 -0
  304. package/dist/types/content/common.js.map +1 -1
  305. package/dist/types/content/definition.d.ts +5 -0
  306. package/dist/types/entrypoint.d.ts +5 -1
  307. package/dist/types/entrypoint.js +3 -0
  308. package/dist/types/entrypoint.js.map +1 -1
  309. package/dist/types/locale.d.ts +3 -0
  310. package/dist/types/locale.js.map +1 -1
  311. package/dist/types/manifest.d.ts +20 -2
  312. package/dist/types/manifest.js.map +1 -1
  313. package/dist/types/offscreen.d.ts +2 -2
  314. package/dist/types/offscreen.js.map +1 -1
  315. package/dist/types/options.d.ts +3 -2
  316. package/dist/types/override.d.ts +22 -0
  317. package/dist/types/override.js +1 -0
  318. package/dist/types/override.js.map +1 -0
  319. package/dist/types/page.d.ts +1 -1
  320. package/dist/types/permissions.d.ts +39 -0
  321. package/dist/types/permissions.js +1 -0
  322. package/dist/types/permissions.js.map +1 -0
  323. package/dist/types/plugin.d.ts +4 -1
  324. package/dist/types/popup.d.ts +3 -2
  325. package/dist/types/sandbox.d.ts +2 -2
  326. package/dist/types/sandbox.js.map +1 -1
  327. package/dist/types/sidebar.d.ts +3 -2
  328. package/dist/types/sidebar.js.map +1 -1
  329. package/dist/types/view/adapters/index.d.ts +2 -0
  330. package/dist/types/view/adapters/index.js +1 -0
  331. package/dist/types/view/adapters/index.js.map +1 -0
  332. package/dist/types/view/adapters/react.d.ts +4 -0
  333. package/dist/types/view/adapters/react.js +1 -0
  334. package/dist/types/view/adapters/react.js.map +1 -0
  335. package/dist/types/view/adapters/vanilla.d.ts +1 -0
  336. package/dist/types/view/adapters/vanilla.js +1 -0
  337. package/dist/types/view/adapters/vanilla.js.map +1 -0
  338. package/dist/types/{view.d.ts → view/common.d.ts} +2 -14
  339. package/dist/types/view/common.js +1 -0
  340. package/dist/types/view/common.js.map +1 -0
  341. package/dist/types/view/definition.d.ts +15 -0
  342. package/dist/types/view/definition.js +1 -0
  343. package/dist/types/view/definition.js.map +1 -0
  344. package/dist/types/view/index.d.ts +4 -0
  345. package/dist/types/view/index.js +1 -0
  346. package/dist/types/view/index.js.map +1 -0
  347. package/dist/types/view/render.d.ts +7 -0
  348. package/dist/types/view/render.js +1 -0
  349. package/dist/types/view/render.js.map +1 -0
  350. package/package.json +1 -3
  351. package/types/client.d.ts +3 -3
  352. package/dist/cli/plugins/style/types.d.ts +0 -5
  353. package/dist/entry/background/resolvers/index.d.ts +0 -1
  354. package/dist/entry/background/resolvers/index.js +0 -2
  355. package/dist/entry/background/resolvers/index.js.map +0 -1
  356. package/dist/entry/command/resolvers/index.d.ts +0 -1
  357. package/dist/entry/command/resolvers/index.js +0 -2
  358. package/dist/entry/command/resolvers/index.js.map +0 -1
  359. package/dist/entry/content/adapters/react/resolvers/definition.d.ts +0 -2
  360. package/dist/entry/content/adapters/react/resolvers/definition.js +0 -12
  361. package/dist/entry/content/adapters/react/resolvers/definition.js.map +0 -1
  362. package/dist/entry/content/adapters/react/resolvers/render.d.ts +0 -2
  363. package/dist/entry/content/adapters/react/resolvers/render.js +0 -9
  364. package/dist/entry/content/adapters/react/resolvers/render.js.map +0 -1
  365. package/dist/entry/content/adapters/vanilla/resolvers/definition.d.ts +0 -2
  366. package/dist/entry/content/adapters/vanilla/resolvers/definition.js +0 -9
  367. package/dist/entry/content/adapters/vanilla/resolvers/definition.js.map +0 -1
  368. package/dist/entry/content/adapters/vanilla/resolvers/render.d.ts +0 -3
  369. package/dist/entry/content/adapters/vanilla/resolvers/render.js +0 -15
  370. package/dist/entry/content/adapters/vanilla/resolvers/render.js.map +0 -1
  371. package/dist/entry/content/resolvers/index.d.ts +0 -6
  372. package/dist/entry/content/resolvers/index.js +0 -7
  373. package/dist/entry/content/resolvers/index.js.map +0 -1
  374. package/dist/entry/transport/index.d.ts +0 -1
  375. package/dist/entry/transport/index.js +0 -2
  376. package/dist/entry/transport/index.js.map +0 -1
  377. package/dist/entry/transport/resolvers/index.d.ts +0 -1
  378. package/dist/entry/transport/resolvers/index.js +0 -2
  379. package/dist/entry/transport/resolvers/index.js.map +0 -1
  380. package/dist/entry/view/adapters/react/resolvers/render.d.ts +0 -2
  381. package/dist/entry/view/adapters/react/resolvers/render.js +0 -11
  382. package/dist/entry/view/adapters/react/resolvers/render.js.map +0 -1
  383. package/dist/entry/view/core/Builder.js +0 -35
  384. package/dist/entry/view/core/Builder.js.map +0 -1
  385. package/dist/entry/view/core/resolvers/container.js.map +0 -1
  386. package/dist/entry/view/core/resolvers/definition.d.ts +0 -3
  387. package/dist/entry/view/core/resolvers/definition.js +0 -12
  388. package/dist/entry/view/core/resolvers/definition.js.map +0 -1
  389. package/dist/entry/view/core/resolvers/render.d.ts +0 -3
  390. package/dist/entry/view/core/resolvers/render.js +0 -18
  391. package/dist/entry/view/core/resolvers/render.js.map +0 -1
  392. package/dist/entry/view/index.d.ts +0 -1
  393. package/dist/entry/view/index.js +0 -2
  394. package/dist/entry/view/index.js.map +0 -1
  395. package/dist/types/view.js +0 -1
  396. /package/dist/cli/virtual/{transport.d.ts → service.d.ts} +0 -0
  397. /package/dist/{cli/plugins/style → entry/content/lifecycle}/types.js +0 -0
  398. /package/dist/{cli/plugins/style → entry/content/lifecycle}/types.js.map +0 -0
  399. /package/dist/entry/view/{core/resolvers → resolvers}/container.js +0 -0
  400. /package/dist/{types/view.js.map → main/permissions.js.map} +0 -0
@@ -0,0 +1,64 @@
1
+ import { z } from "zod";
2
+ const HtmlTypeStringSchema = z.enum(["css", "js"]);
3
+ const HtmlAttributesObjectSchema = z.record(z.string(), z.union([z.string(), z.boolean(), z.number()]));
4
+ const HtmlAddHashFunctionSchema = z.function().args(z.string(), z.string()).returns(z.string());
5
+ const HtmlAddPublicPathFunctionSchema = z.function().args(z.string(), z.string()).returns(z.string());
6
+ const HtmlCommonOptionsSchema = z.object({
7
+ append: z.boolean().optional(),
8
+ useHash: z.boolean().optional(),
9
+ addHash: HtmlAddHashFunctionSchema.optional(),
10
+ hash: z.union([z.boolean(), z.string(), HtmlAddHashFunctionSchema]).optional(),
11
+ usePublicPath: z.boolean().optional(),
12
+ addPublicPath: HtmlAddPublicPathFunctionSchema.optional(),
13
+ publicPath: z.union([z.boolean(), z.string(), HtmlAddPublicPathFunctionSchema]).optional()
14
+ });
15
+ const HtmlExternalObjectSchema = z.object({
16
+ packageName: z.string(),
17
+ variableName: z.string()
18
+ });
19
+ const HtmlBaseTagOptionsSchema = HtmlCommonOptionsSchema.extend({
20
+ glob: z.string().optional(),
21
+ globPath: z.string().optional(),
22
+ globFlatten: z.boolean().optional(),
23
+ sourcePath: z.string().optional()
24
+ });
25
+ const HtmlLinkTagOptionsSchema = HtmlBaseTagOptionsSchema.extend({
26
+ path: z.string(),
27
+ attributes: HtmlAttributesObjectSchema.optional()
28
+ });
29
+ const HtmlScriptTagOptionsSchema = HtmlBaseTagOptionsSchema.extend({
30
+ path: z.string(),
31
+ attributes: HtmlAttributesObjectSchema.optional(),
32
+ external: HtmlExternalObjectSchema.optional()
33
+ });
34
+ const HtmlMaybeLinkTagOptionsSchema = HtmlLinkTagOptionsSchema.extend({
35
+ type: HtmlTypeStringSchema.optional()
36
+ });
37
+ const HtmlMaybeScriptTagOptionsSchema = HtmlScriptTagOptionsSchema.extend({
38
+ type: HtmlTypeStringSchema.optional()
39
+ });
40
+ const HtmlMetaTagOptionsSchema = HtmlBaseTagOptionsSchema.extend({
41
+ path: z.string().optional(),
42
+ attributes: HtmlAttributesObjectSchema
43
+ });
44
+ const HtmlOptionsSchema = HtmlCommonOptionsSchema.extend({
45
+ append: z.boolean().optional(),
46
+ prependExternals: z.boolean().optional(),
47
+ jsExtensions: z.union([z.string(), z.array(z.string())]).optional(),
48
+ cssExtensions: z.union([z.string(), z.array(z.string())]).optional(),
49
+ tags: z.union([
50
+ z.string(),
51
+ HtmlMaybeLinkTagOptionsSchema,
52
+ HtmlMaybeScriptTagOptionsSchema,
53
+ z.array(z.union([z.string(), HtmlMaybeLinkTagOptionsSchema, HtmlMaybeScriptTagOptionsSchema]))
54
+ ]).optional(),
55
+ links: z.union([z.string(), HtmlLinkTagOptionsSchema, z.array(z.union([z.string(), HtmlLinkTagOptionsSchema]))]).optional(),
56
+ scripts: z.union([z.string(), HtmlScriptTagOptionsSchema, z.array(z.union([z.string(), HtmlScriptTagOptionsSchema]))]).optional(),
57
+ metas: z.union([z.string(), HtmlMetaTagOptionsSchema, z.array(z.union([z.string(), HtmlMetaTagOptionsSchema]))]).optional()
58
+ });
59
+ const HtmlOptionKeys = Object.keys(HtmlOptionsSchema.shape);
60
+ export {
61
+ HtmlOptionKeys,
62
+ HtmlOptionsSchema
63
+ };
64
+ //# sourceMappingURL=html.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/cli/entrypoint/parser/schemas/html.ts"],"sourcesContent":["import {z} from \"zod\";\n\nconst HtmlTypeStringSchema = z.enum([\"css\", \"js\"]);\n\nconst HtmlAttributesObjectSchema = z.record(z.string(), z.union([z.string(), z.boolean(), z.number()]));\n\nconst HtmlAddHashFunctionSchema = z.function().args(z.string(), z.string()).returns(z.string());\n\nconst HtmlAddPublicPathFunctionSchema = z.function().args(z.string(), z.string()).returns(z.string());\n\nconst HtmlCommonOptionsSchema = z.object({\n append: z.boolean().optional(),\n useHash: z.boolean().optional(),\n addHash: HtmlAddHashFunctionSchema.optional(),\n hash: z.union([z.boolean(), z.string(), HtmlAddHashFunctionSchema]).optional(),\n usePublicPath: z.boolean().optional(),\n addPublicPath: HtmlAddPublicPathFunctionSchema.optional(),\n publicPath: z.union([z.boolean(), z.string(), HtmlAddPublicPathFunctionSchema]).optional(),\n});\n\nconst HtmlExternalObjectSchema = z.object({\n packageName: z.string(),\n variableName: z.string(),\n});\n\nconst HtmlBaseTagOptionsSchema = HtmlCommonOptionsSchema.extend({\n glob: z.string().optional(),\n globPath: z.string().optional(),\n globFlatten: z.boolean().optional(),\n sourcePath: z.string().optional(),\n});\n\nconst HtmlLinkTagOptionsSchema = HtmlBaseTagOptionsSchema.extend({\n path: z.string(),\n attributes: HtmlAttributesObjectSchema.optional(),\n});\n\nconst HtmlScriptTagOptionsSchema = HtmlBaseTagOptionsSchema.extend({\n path: z.string(),\n attributes: HtmlAttributesObjectSchema.optional(),\n external: HtmlExternalObjectSchema.optional(),\n});\n\nconst HtmlMaybeLinkTagOptionsSchema = HtmlLinkTagOptionsSchema.extend({\n type: HtmlTypeStringSchema.optional(),\n});\n\nconst HtmlMaybeScriptTagOptionsSchema = HtmlScriptTagOptionsSchema.extend({\n type: HtmlTypeStringSchema.optional(),\n});\n\nconst HtmlMetaTagOptionsSchema = HtmlBaseTagOptionsSchema.extend({\n path: z.string().optional(),\n attributes: HtmlAttributesObjectSchema,\n});\n\n/**\n * Options a view passes to the HTML tags plugin.\n *\n * The same list validates what an entrypoint may declare and selects what reaches the HTML plugin,\n * so manifest-only options such as permissions or CSP never leak into it.\n */\nexport const HtmlOptionsSchema = HtmlCommonOptionsSchema.extend({\n append: z.boolean().optional(),\n prependExternals: z.boolean().optional(),\n jsExtensions: z.union([z.string(), z.array(z.string())]).optional(),\n cssExtensions: z.union([z.string(), z.array(z.string())]).optional(),\n tags: z\n .union([\n z.string(),\n HtmlMaybeLinkTagOptionsSchema,\n HtmlMaybeScriptTagOptionsSchema,\n z.array(z.union([z.string(), HtmlMaybeLinkTagOptionsSchema, HtmlMaybeScriptTagOptionsSchema])),\n ])\n .optional(),\n links: z\n .union([z.string(), HtmlLinkTagOptionsSchema, z.array(z.union([z.string(), HtmlLinkTagOptionsSchema]))])\n .optional(),\n scripts: z\n .union([z.string(), HtmlScriptTagOptionsSchema, z.array(z.union([z.string(), HtmlScriptTagOptionsSchema]))])\n .optional(),\n metas: z\n .union([z.string(), HtmlMetaTagOptionsSchema, z.array(z.union([z.string(), HtmlMetaTagOptionsSchema]))])\n .optional(),\n});\n\nexport const HtmlOptionKeys: readonly string[] = Object.keys(HtmlOptionsSchema.shape);\n"],"mappings":"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","names":[]}
@@ -0,0 +1,23 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Schema of `PermissionsOptions`.
4
+ *
5
+ * It is a mixin, not a part of any parser class: an entrypoint opts into the contract
6
+ * when its parser imports and merges this schema, and entrypoints that do not never read these keys.
7
+ */
8
+ export declare const PermissionsSchema: z.ZodObject<{
9
+ permissions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
10
+ optionalPermissions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
11
+ hostPermissions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
12
+ optionalHostPermissions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
13
+ }, "strip", z.ZodTypeAny, {
14
+ permissions?: string[] | undefined;
15
+ optionalPermissions?: string[] | undefined;
16
+ hostPermissions?: string[] | undefined;
17
+ optionalHostPermissions?: string[] | undefined;
18
+ }, {
19
+ permissions?: string[] | undefined;
20
+ optionalPermissions?: string[] | undefined;
21
+ hostPermissions?: string[] | undefined;
22
+ optionalHostPermissions?: string[] | undefined;
23
+ }>;
@@ -0,0 +1,11 @@
1
+ import { z } from "zod";
2
+ const PermissionsSchema = z.object({
3
+ permissions: z.array(z.string()).optional(),
4
+ optionalPermissions: z.array(z.string()).optional(),
5
+ hostPermissions: z.array(z.string()).optional(),
6
+ optionalHostPermissions: z.array(z.string()).optional()
7
+ });
8
+ export {
9
+ PermissionsSchema
10
+ };
11
+ //# sourceMappingURL=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/cli/entrypoint/parser/schemas/permissions.ts"],"sourcesContent":["import {z} from \"zod\";\n\n/**\n * Schema of `PermissionsOptions`.\n *\n * It is a mixin, not a part of any parser class: an entrypoint opts into the contract\n * when its parser imports and merges this schema, and entrypoints that do not never read these keys.\n */\nexport const PermissionsSchema = z.object({\n permissions: z.array(z.string()).optional(),\n optionalPermissions: z.array(z.string()).optional(),\n hostPermissions: z.array(z.string()).optional(),\n optionalHostPermissions: z.array(z.string()).optional(),\n});\n"],"mappings":"AAAA,SAAQ,SAAQ;AAQT,MAAM,oBAAoB,EAAE,OAAO;AAAA,EACtC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC1C,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAClD,iBAAiB,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC9C,yBAAyB,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AAC1D,CAAC;","names":[]}
@@ -1,7 +1,4 @@
1
1
  import type { ResourceAccessPluginRequirement } from "../../bundler/plugins/resource-access/index.js";
2
- import type { IsolatedStylesPluginFiles } from "../../bundler/plugins/isolated-styles/index.js";
3
2
  import { ContentScriptWorld, type ContentScriptEntrypointOptions } from "../../../types/content/index.js";
4
- /** Reject unavailable destinations and warn about likely missing query flags without changing CSS routing. */
5
- export declare const validateContentStyles: (entry: string, options: ContentScriptEntrypointOptions | undefined, files: IsolatedStylesPluginFiles) => readonly string[];
6
3
  export declare const createPageAccessRequirements: (entries: ReadonlyMap<string, ContentScriptEntrypointOptions>, pages: ReadonlyMap<string, string>) => ResourceAccessPluginRequirement[];
7
4
  export declare const getContentChunkName: (world: ContentScriptWorld) => string;
@@ -1,28 +1,13 @@
1
- import { isContentScriptFrameNavigation } from "./../../../shared/content/index.js";
2
- import { hasIsolatedTarget } from "./utils.js";
3
1
  import { ContentScriptMatches, ContentScriptWorld } from "./../../../types/content/index.js";
4
2
  import { EntrypointType } from "./../../../types/entrypoint.js";
5
- const validateContentStyles = (entry, options, files) => {
6
- var _a;
7
- if (!options) return [];
8
- if (files.isolated.length > 0 && isContentScriptFrameNavigation(options.isolation)) {
9
- throw new Error(
10
- `Entrypoint "${entry}" uses ?isolation CSS with isolation.page/isolation.src, but has no local render target. Import these styles in the embedded page instead.`
11
- );
12
- }
13
- if (hasIsolatedTarget(options) && files.document.length > 0 && files.isolated.length === 0) {
14
- return [
15
- `[adnbn:missing-isolation-css] Entrypoint "${entry}" uses isolation: "${(_a = options.isolation) == null ? void 0 : _a.type}", but has no CSS marked with ?isolation. Imported CSS will be delivered to the page document. If these styles belong to the isolated UI, import them with ?isolation. Document-only styles are valid; this warning can be suppressed with bundler ignoreWarnings.`
16
- ];
17
- }
18
- return [];
19
- };
20
3
  const createPageAccessRequirements = (entries, pages) => {
21
4
  var _a;
22
5
  const requirements = [];
23
6
  for (const [entry, options] of entries) {
24
7
  const alias = (_a = options.isolation) == null ? void 0 : _a.page;
25
- if (alias === void 0) continue;
8
+ if (alias === void 0) {
9
+ continue;
10
+ }
26
11
  const resource = pages.get(alias);
27
12
  if (!resource) {
28
13
  throw new Error(`Content entrypoint "${entry}" references unknown page "${alias}"`);
@@ -41,7 +26,6 @@ const getContentChunkName = (world) => {
41
26
  };
42
27
  export {
43
28
  createPageAccessRequirements,
44
- getContentChunkName,
45
- validateContentStyles
29
+ getContentChunkName
46
30
  };
47
31
  //# sourceMappingURL=bundler.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/plugins/content/bundler.ts"],"sourcesContent":["import type {ResourceAccessPluginRequirement} from \"@cli/bundler/plugins/resource-access\";\nimport type {IsolatedStylesPluginFiles} from \"@cli/bundler/plugins/isolated-styles\";\nimport {isContentScriptFrameNavigation} from \"@shared/content\";\nimport {hasIsolatedTarget} from \"./utils\";\n\nimport {ContentScriptMatches, ContentScriptWorld, type ContentScriptEntrypointOptions} from \"@typing/content\";\nimport {EntrypointType} from \"@typing/entrypoint\";\n\n/** Reject unavailable destinations and warn about likely missing query flags without changing CSS routing. */\nexport const validateContentStyles = (\n entry: string,\n options: ContentScriptEntrypointOptions | undefined,\n files: IsolatedStylesPluginFiles\n): readonly string[] => {\n if (!options) return [];\n if (files.isolated.length > 0 && isContentScriptFrameNavigation(options.isolation)) {\n throw new Error(\n `Entrypoint \"${entry}\" uses ?isolation CSS with isolation.page/isolation.src, but has no local render target. Import these styles in the embedded page instead.`\n );\n }\n if (hasIsolatedTarget(options) && files.document.length > 0 && files.isolated.length === 0) {\n return [\n `[adnbn:missing-isolation-css] Entrypoint \"${entry}\" uses isolation: \"${options.isolation?.type}\", but has no CSS marked with ?isolation. Imported CSS will be delivered to the page document. If these styles belong to the isolated UI, import them with ?isolation. Document-only styles are valid; this warning can be suppressed with bundler ignoreWarnings.`,\n ];\n }\n return [];\n};\n\nexport const createPageAccessRequirements = (\n entries: ReadonlyMap<string, ContentScriptEntrypointOptions>,\n pages: ReadonlyMap<string, string>\n): ResourceAccessPluginRequirement[] => {\n const requirements: ResourceAccessPluginRequirement[] = [];\n\n for (const [entry, options] of entries) {\n const alias = options.isolation?.page;\n if (alias === undefined) continue;\n\n const resource = pages.get(alias);\n if (!resource) {\n throw new Error(`Content entrypoint \"${entry}\" references unknown page \"${alias}\"`);\n }\n\n requirements.push({\n resource,\n matches: options.matches ?? ContentScriptMatches,\n issuer: `Content entrypoint \"${entry}\" embedding page \"${alias}\"`,\n hint: \"add matches to the page or narrow the content matches\",\n });\n }\n\n return requirements;\n};\n\nexport const getContentChunkName = (world: ContentScriptWorld): string => {\n return `${world === ContentScriptWorld.Main ? \"common-main\" : \"common\"}.${EntrypointType.ContentScript}`;\n};\n"],"mappings":"AAEA,SAAQ,sCAAqC;AAC7C,SAAQ,yBAAwB;AAEhC,SAAQ,sBAAsB,0BAA8D;AAC5F,SAAQ,sBAAqB;AAGtB,MAAM,wBAAwB,CACjC,OACA,SACA,UACoB;AAbxB;AAcI,MAAI,CAAC,QAAS,QAAO,CAAC;AACtB,MAAI,MAAM,SAAS,SAAS,KAAK,+BAA+B,QAAQ,SAAS,GAAG;AAChF,UAAM,IAAI;AAAA,MACN,eAAe,KAAK;AAAA,IACxB;AAAA,EACJ;AACA,MAAI,kBAAkB,OAAO,KAAK,MAAM,SAAS,SAAS,KAAK,MAAM,SAAS,WAAW,GAAG;AACxF,WAAO;AAAA,MACH,6CAA6C,KAAK,uBAAsB,aAAQ,cAAR,mBAAmB,IAAI;AAAA,IACnG;AAAA,EACJ;AACA,SAAO,CAAC;AACZ;AAEO,MAAM,+BAA+B,CACxC,SACA,UACoC;AA/BxC;AAgCI,QAAM,eAAkD,CAAC;AAEzD,aAAW,CAAC,OAAO,OAAO,KAAK,SAAS;AACpC,UAAM,SAAQ,aAAQ,cAAR,mBAAmB;AACjC,QAAI,UAAU,OAAW;AAEzB,UAAM,WAAW,MAAM,IAAI,KAAK;AAChC,QAAI,CAAC,UAAU;AACX,YAAM,IAAI,MAAM,uBAAuB,KAAK,8BAA8B,KAAK,GAAG;AAAA,IACtF;AAEA,iBAAa,KAAK;AAAA,MACd;AAAA,MACA,SAAS,QAAQ,WAAW;AAAA,MAC5B,QAAQ,uBAAuB,KAAK,qBAAqB,KAAK;AAAA,MAC9D,MAAM;AAAA,IACV,CAAC;AAAA,EACL;AAEA,SAAO;AACX;AAEO,MAAM,sBAAsB,CAAC,UAAsC;AACtE,SAAO,GAAG,UAAU,mBAAmB,OAAO,gBAAgB,QAAQ,IAAI,eAAe,aAAa;AAC1G;","names":[]}
1
+ {"version":3,"sources":["../../../../src/cli/plugins/content/bundler.ts"],"sourcesContent":["import type {ResourceAccessPluginRequirement} from \"@cli/bundler/plugins/resource-access\";\n\nimport {ContentScriptMatches, ContentScriptWorld, type ContentScriptEntrypointOptions} from \"@typing/content\";\nimport {EntrypointType} from \"@typing/entrypoint\";\n\nexport const createPageAccessRequirements = (\n entries: ReadonlyMap<string, ContentScriptEntrypointOptions>,\n pages: ReadonlyMap<string, string>\n): ResourceAccessPluginRequirement[] => {\n const requirements: ResourceAccessPluginRequirement[] = [];\n\n for (const [entry, options] of entries) {\n const alias = options.isolation?.page;\n\n if (alias === undefined) {\n continue;\n }\n\n const resource = pages.get(alias);\n\n if (!resource) {\n throw new Error(`Content entrypoint \"${entry}\" references unknown page \"${alias}\"`);\n }\n\n requirements.push({\n resource,\n matches: options.matches ?? ContentScriptMatches,\n issuer: `Content entrypoint \"${entry}\" embedding page \"${alias}\"`,\n hint: \"add matches to the page or narrow the content matches\",\n });\n }\n\n return requirements;\n};\n\nexport const getContentChunkName = (world: ContentScriptWorld): string => {\n return `${world === ContentScriptWorld.Main ? \"common-main\" : \"common\"}.${EntrypointType.ContentScript}`;\n};\n"],"mappings":"AAEA,SAAQ,sBAAsB,0BAA8D;AAC5F,SAAQ,sBAAqB;AAEtB,MAAM,+BAA+B,CACxC,SACA,UACoC;AARxC;AASI,QAAM,eAAkD,CAAC;AAEzD,aAAW,CAAC,OAAO,OAAO,KAAK,SAAS;AACpC,UAAM,SAAQ,aAAQ,cAAR,mBAAmB;AAEjC,QAAI,UAAU,QAAW;AACrB;AAAA,IACJ;AAEA,UAAM,WAAW,MAAM,IAAI,KAAK;AAEhC,QAAI,CAAC,UAAU;AACX,YAAM,IAAI,MAAM,uBAAuB,KAAK,8BAA8B,KAAK,GAAG;AAAA,IACtF;AAEA,iBAAa,KAAK;AAAA,MACd;AAAA,MACA,SAAS,QAAQ,WAAW;AAAA,MAC5B,QAAQ,uBAAuB,KAAK,qBAAqB,KAAK;AAAA,MAC9D,MAAM;AAAA,IACV,CAAC;AAAA,EACL;AAEA,SAAO;AACX;AAEO,MAAM,sBAAsB,CAAC,UAAsC;AACtE,SAAO,GAAG,UAAU,mBAAmB,OAAO,gBAAgB,QAAQ,IAAI,eAAe,aAAa;AAC1G;","names":[]}
@@ -3,7 +3,7 @@ import Content from "./Content.js";
3
3
  import Relay from "./Relay.js";
4
4
  import RelayDeclaration from "./RelayDeclaration.js";
5
5
  import { hasIsolatedTarget } from "./utils.js";
6
- import { createPageAccessRequirements, getContentChunkName, validateContentStyles } from "./bundler.js";
6
+ import { createPageAccessRequirements, getContentChunkName } from "./bundler.js";
7
7
  import { createRelayModule, RelayModuleName } from "./relay-module.js";
8
8
  import { definePlugin } from "./../../../main/plugin.js";
9
9
  import { PageFinder } from "./../../../cli/entrypoint/index.js";
@@ -124,8 +124,7 @@ var content_default = definePlugin(() => {
124
124
  test: (entry) => {
125
125
  const options = entryOptionsByName.get(entry);
126
126
  return options !== void 0 && hasIsolatedTarget(options);
127
- },
128
- validate: (entry, files) => validateContentStyles(entry, entryOptionsByName.get(entry), files)
127
+ }
129
128
  }),
130
129
  ...basePlugins
131
130
  ],
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/plugins/content/index.ts"],"sourcesContent":["import type {Chunk, Configuration as RspackConfig, NormalModule, Plugins} from \"@rspack/core\";\n\nimport ContentManager from \"./ContentManager\";\nimport Content from \"./Content\";\nimport Relay from \"./Relay\";\nimport RelayDeclaration from \"./RelayDeclaration\";\nimport {hasIsolatedTarget} from \"./utils\";\nimport {createPageAccessRequirements, getContentChunkName, validateContentStyles} from \"./bundler\";\nimport {createRelayModule, RelayModuleName} from \"./relay-module\";\n\nimport {definePlugin} from \"@main/plugin\";\nimport {PageFinder} from \"@cli/entrypoint/index.js\";\nimport {getContentLayer} from \"@cli/bundler/layers\";\n\nimport {\n appFilenameResolver,\n ChunkLoaderPlugin,\n EntrypointPlugin,\n onlyViaTopLevelEntry,\n IsolatedStylesPlugin,\n ResourceAccessPlugin,\n GenerateModulePlugin,\n} from \"@cli/bundler\";\n\nimport {Command} from \"@typing/app\";\nimport {ContentScriptStylesRuntimeProperty, ContentScriptWorld} from \"@typing/content\";\n\nexport default definePlugin(() => {\n let contentProvider: Content;\n let relayProvider: Relay;\n let contentManager: ContentManager;\n let relayDeclaration: RelayDeclaration;\n\n return {\n name: \"adnbn:content\",\n startup: ({config}) => {\n contentProvider = new Content(config);\n relayProvider = new Relay(config);\n\n // prettier-ignore\n contentManager = new ContentManager(config)\n .provider(contentProvider)\n .provider(relayProvider);\n\n relayDeclaration = new RelayDeclaration(config);\n },\n content: () => contentProvider.files(),\n relay: () => relayProvider.files(),\n bundler: async ({config}) => {\n relayDeclaration.dictionary(await relayProvider.dictionary()).build();\n\n let entryOptionsByName = await contentManager.entryOptions();\n\n const getModules = async () => ({\n [RelayModuleName]: createRelayModule(await relayProvider.getOptionsMap()),\n });\n const modulePlugin = new GenerateModulePlugin(await getModules());\n\n if (config.command === Command.Watch) {\n modulePlugin.watch(getModules);\n }\n\n const basePlugins: Plugins = [\n modulePlugin,\n new ResourceAccessPlugin({\n requirements: async () => {\n if (\n !Array.from(entryOptionsByName.values()).some(\n options => options.isolation?.page !== undefined\n )\n ) {\n return [];\n }\n\n const views = await new PageFinder(config).views();\n const pages = new Map(Array.from(views.values(), view => [view.alias, view.filename]));\n return createPageAccessRequirements(entryOptionsByName, pages);\n },\n }),\n ];\n\n if (await contentManager.empty()) {\n if (config.debug) {\n console.warn(\"Content script or relay entries not found\");\n }\n\n return {plugins: basePlugins};\n }\n\n const entries = await contentManager.entries();\n const getEntryWorld = (name: string): ContentScriptWorld => {\n const options = entryOptionsByName.get(name);\n\n if (!options) {\n throw new Error(`Execution world for content entrypoint \"${name}\" is unavailable`);\n }\n\n return options.world === ContentScriptWorld.Main\n ? ContentScriptWorld.Main\n : ContentScriptWorld.Isolated;\n };\n\n // prettier-ignore\n const entrypointPlugin = EntrypointPlugin.from(entries)\n .virtual(file => contentManager.virtual(file))\n .entryOptions(name => {\n const world = getEntryWorld(name);\n\n return {\n // MAIN cannot resolve an installed extension URL without crossing contexts.\n // ISOLATED keeps physical async chunks and resolves them through the extension API.\n asyncChunks: world === ContentScriptWorld.Isolated,\n layer: getContentLayer(world),\n publicPath: \"\",\n };\n });\n\n if (config.command === Command.Watch) {\n entrypointPlugin.watch(async () => {\n contentManager.clear();\n\n relayDeclaration.dictionary(await relayProvider.dictionary()).build();\n\n const entries = await contentManager.entries();\n entryOptionsByName = await contentManager.entryOptions();\n\n return entries;\n });\n }\n\n const isContentModule = onlyViaTopLevelEntry([\"content\", \"relay\"]);\n\n const createCacheGroup = (world: ContentScriptWorld) => ({\n minChunks: 2,\n name: getContentChunkName(world),\n test: (\n module: Parameters<typeof isContentModule>[0],\n context: Parameters<typeof isContentModule>[1]\n ) => {\n const normalModule = module as NormalModule;\n\n if (!normalModule.resource) {\n return false;\n }\n\n return isContentModule(module, context);\n },\n chunks: (chunk: Chunk): boolean =>\n chunk.name !== undefined &&\n entryOptionsByName.has(chunk.name) &&\n getEntryWorld(chunk.name) === world,\n enforce: false,\n reuseExistingChunk: false,\n priority: 20,\n });\n\n return {\n plugins: [\n entrypointPlugin,\n new ChunkLoaderPlugin({\n test: entry =>\n entryOptionsByName.has(entry) && getEntryWorld(entry) === ContentScriptWorld.Isolated,\n }),\n new IsolatedStylesPlugin({\n cssFilename: appFilenameResolver(config.app, config.cssFilename, config.cssDir),\n cssChunkFilename: appFilenameResolver(config.app, config.cssFilename, config.cssDir),\n property: ContentScriptStylesRuntimeProperty,\n test: entry => {\n const options = entryOptionsByName.get(entry);\n return options !== undefined && hasIsolatedTarget(options);\n },\n validate: (entry, files) => validateContentStyles(entry, entryOptionsByName.get(entry), files),\n }),\n ...basePlugins,\n ],\n optimization: config.commonChunks\n ? {\n splitChunks: {\n cacheGroups: {\n adnbnContentIsolated: createCacheGroup(ContentScriptWorld.Isolated),\n adnbnContentMain: createCacheGroup(ContentScriptWorld.Main),\n },\n },\n }\n : undefined,\n } satisfies RspackConfig;\n },\n manifest: async ({manifest}) => {\n // prettier-ignore\n manifest\n .setContentScripts(await contentManager.manifest())\n .appendHostPermissions(await contentManager.hostPermissions())\n .appendOptionalHostPermissions(await contentManager.optionalHostPermissions())\n .appendPermissions(await contentManager.permissions())\n .appendOptionalPermissions(await contentManager.optionalPermissions());\n },\n };\n});\n"],"mappings":"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","names":["entries"]}
1
+ {"version":3,"sources":["../../../../src/cli/plugins/content/index.ts"],"sourcesContent":["import type {Chunk, Configuration as RspackConfig, NormalModule, Plugins} from \"@rspack/core\";\n\nimport ContentManager from \"./ContentManager\";\nimport Content from \"./Content\";\nimport Relay from \"./Relay\";\nimport RelayDeclaration from \"./RelayDeclaration\";\nimport {hasIsolatedTarget} from \"./utils\";\nimport {createPageAccessRequirements, getContentChunkName} from \"./bundler\";\nimport {createRelayModule, RelayModuleName} from \"./relay-module\";\n\nimport {definePlugin} from \"@main/plugin\";\nimport {PageFinder} from \"@cli/entrypoint/index.js\";\nimport {getContentLayer} from \"@cli/bundler/layers\";\n\nimport {\n appFilenameResolver,\n ChunkLoaderPlugin,\n EntrypointPlugin,\n onlyViaTopLevelEntry,\n IsolatedStylesPlugin,\n ResourceAccessPlugin,\n GenerateModulePlugin,\n} from \"@cli/bundler\";\n\nimport {Command} from \"@typing/app\";\nimport {ContentScriptStylesRuntimeProperty, ContentScriptWorld} from \"@typing/content\";\n\nexport default definePlugin(() => {\n let contentProvider: Content;\n let relayProvider: Relay;\n let contentManager: ContentManager;\n let relayDeclaration: RelayDeclaration;\n\n return {\n name: \"adnbn:content\",\n startup: ({config}) => {\n contentProvider = new Content(config);\n relayProvider = new Relay(config);\n\n // prettier-ignore\n contentManager = new ContentManager(config)\n .provider(contentProvider)\n .provider(relayProvider);\n\n relayDeclaration = new RelayDeclaration(config);\n },\n content: () => contentProvider.files(),\n relay: () => relayProvider.files(),\n bundler: async ({config}) => {\n relayDeclaration.dictionary(await relayProvider.dictionary()).build();\n\n let entryOptionsByName = await contentManager.entryOptions();\n\n const getModules = async () => ({\n [RelayModuleName]: createRelayModule(await relayProvider.getOptionsMap()),\n });\n\n const modulePlugin = new GenerateModulePlugin(await getModules());\n\n if (config.command === Command.Watch) {\n modulePlugin.watch(getModules);\n }\n\n const basePlugins: Plugins = [\n modulePlugin,\n new ResourceAccessPlugin({\n requirements: async () => {\n if (\n !Array.from(entryOptionsByName.values()).some(\n options => options.isolation?.page !== undefined\n )\n ) {\n return [];\n }\n\n const views = await new PageFinder(config).views();\n const pages = new Map(Array.from(views.values(), view => [view.alias, view.filename]));\n\n return createPageAccessRequirements(entryOptionsByName, pages);\n },\n }),\n ];\n\n if (await contentManager.empty()) {\n if (config.debug) {\n console.warn(\"Content script or relay entries not found\");\n }\n\n return {plugins: basePlugins};\n }\n\n const entries = await contentManager.entries();\n\n const getEntryWorld = (name: string): ContentScriptWorld => {\n const options = entryOptionsByName.get(name);\n\n if (!options) {\n throw new Error(`Execution world for content entrypoint \"${name}\" is unavailable`);\n }\n\n return options.world === ContentScriptWorld.Main\n ? ContentScriptWorld.Main\n : ContentScriptWorld.Isolated;\n };\n\n // prettier-ignore\n const entrypointPlugin = EntrypointPlugin.from(entries)\n .virtual(file => contentManager.virtual(file))\n .entryOptions(name => {\n const world = getEntryWorld(name);\n\n return {\n // MAIN cannot resolve an installed extension URL without crossing contexts.\n // ISOLATED keeps physical async chunks and resolves them through the extension API.\n asyncChunks: world === ContentScriptWorld.Isolated,\n layer: getContentLayer(world),\n publicPath: \"\",\n };\n });\n\n if (config.command === Command.Watch) {\n entrypointPlugin.watch(async () => {\n contentManager.clear();\n\n relayDeclaration.dictionary(await relayProvider.dictionary()).build();\n\n const entries = await contentManager.entries();\n entryOptionsByName = await contentManager.entryOptions();\n\n return entries;\n });\n }\n\n const isContentModule = onlyViaTopLevelEntry([\"content\", \"relay\"]);\n\n const createCacheGroup = (world: ContentScriptWorld) => ({\n minChunks: 2,\n name: getContentChunkName(world),\n test: (\n module: Parameters<typeof isContentModule>[0],\n context: Parameters<typeof isContentModule>[1]\n ) => {\n const normalModule = module as NormalModule;\n\n if (!normalModule.resource) {\n return false;\n }\n\n return isContentModule(module, context);\n },\n chunks: (chunk: Chunk): boolean =>\n chunk.name !== undefined &&\n entryOptionsByName.has(chunk.name) &&\n getEntryWorld(chunk.name) === world,\n enforce: false,\n reuseExistingChunk: false,\n priority: 20,\n });\n\n return {\n plugins: [\n entrypointPlugin,\n new ChunkLoaderPlugin({\n test: entry =>\n entryOptionsByName.has(entry) && getEntryWorld(entry) === ContentScriptWorld.Isolated,\n }),\n new IsolatedStylesPlugin({\n cssFilename: appFilenameResolver(config.app, config.cssFilename, config.cssDir),\n cssChunkFilename: appFilenameResolver(config.app, config.cssFilename, config.cssDir),\n property: ContentScriptStylesRuntimeProperty,\n test: entry => {\n const options = entryOptionsByName.get(entry);\n\n return options !== undefined && hasIsolatedTarget(options);\n },\n }),\n ...basePlugins,\n ],\n optimization: config.commonChunks\n ? {\n splitChunks: {\n cacheGroups: {\n adnbnContentIsolated: createCacheGroup(ContentScriptWorld.Isolated),\n adnbnContentMain: createCacheGroup(ContentScriptWorld.Main),\n },\n },\n }\n : undefined,\n } satisfies RspackConfig;\n },\n manifest: async ({manifest}) => {\n // prettier-ignore\n manifest\n .setContentScripts(await contentManager.manifest())\n .appendHostPermissions(await contentManager.hostPermissions())\n .appendOptionalHostPermissions(await contentManager.optionalHostPermissions())\n .appendPermissions(await contentManager.permissions())\n .appendOptionalPermissions(await contentManager.optionalPermissions());\n },\n };\n});\n"],"mappings":"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","names":["entries"]}
@@ -12,6 +12,7 @@ export { default as pluginLocale } from "./locale/index.js";
12
12
  export { default as pluginMeta } from "./meta/index.js";
13
13
  export { default as pluginOffscreen } from "./offscreen/index.js";
14
14
  export { default as pluginOptions } from "./options/index.js";
15
+ export { default as pluginOverride } from "./override/index.js";
15
16
  export { default as pluginPage } from "./page/index.js";
16
17
  export { default as pluginPopup } from "./popup/index.js";
17
18
  export { default as pluginPublic } from "./public.js";
@@ -12,16 +12,17 @@ import { default as default12 } from "./locale/index.js";
12
12
  import { default as default13 } from "./meta/index.js";
13
13
  import { default as default14 } from "./offscreen/index.js";
14
14
  import { default as default15 } from "./options/index.js";
15
- import { default as default16 } from "./page/index.js";
16
- import { default as default17 } from "./popup/index.js";
17
- import { default as default18 } from "./public.js";
18
- import { default as default19 } from "./sandbox/index.js";
19
- import { default as default20 } from "./sidebar/index.js";
20
- import { default as default21, TypescriptConfig, FileBuilder, VendorDeclaration } from "./typescript/index.js";
21
- import { default as default22 } from "./react.js";
22
- import { default as default23 } from "./style/index.js";
23
- import { default as default24 } from "./view/index.js";
24
- import { default as default25 } from "./version/index.js";
15
+ import { default as default16 } from "./override/index.js";
16
+ import { default as default17 } from "./page/index.js";
17
+ import { default as default18 } from "./popup/index.js";
18
+ import { default as default19 } from "./public.js";
19
+ import { default as default20 } from "./sandbox/index.js";
20
+ import { default as default21 } from "./sidebar/index.js";
21
+ import { default as default22, TypescriptConfig, FileBuilder, VendorDeclaration } from "./typescript/index.js";
22
+ import { default as default23 } from "./react.js";
23
+ import { default as default24 } from "./style/index.js";
24
+ import { default as default25 } from "./view/index.js";
25
+ import { default as default26 } from "./version/index.js";
25
26
  export {
26
27
  FileBuilder,
27
28
  TypescriptConfig,
@@ -40,15 +41,16 @@ export {
40
41
  default9 as pluginOptimization,
41
42
  default15 as pluginOptions,
42
43
  default10 as pluginOutput,
43
- default16 as pluginPage,
44
- default17 as pluginPopup,
45
- default18 as pluginPublic,
46
- default22 as pluginReact,
47
- default19 as pluginSandbox,
48
- default20 as pluginSidebar,
49
- default23 as pluginStyle,
50
- default21 as pluginTypescript,
51
- default25 as pluginVersion,
52
- default24 as pluginView
44
+ default16 as pluginOverride,
45
+ default17 as pluginPage,
46
+ default18 as pluginPopup,
47
+ default19 as pluginPublic,
48
+ default23 as pluginReact,
49
+ default20 as pluginSandbox,
50
+ default21 as pluginSidebar,
51
+ default24 as pluginStyle,
52
+ default22 as pluginTypescript,
53
+ default26 as pluginVersion,
54
+ default25 as pluginView
53
55
  };
54
56
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/plugins/index.ts"],"sourcesContent":["export {default as pluginAsset} from \"./asset\";\nexport {default as pluginBundler} from \"./bundler\";\nexport {default as pluginBackground} from \"./background\";\nexport {default as pluginContent} from \"./content\";\nexport {default as pluginDotenv} from \"./dotenv\";\nexport {default as pluginHtml} from \"./html\";\nexport {default as pluginManifest} from \"./manifest\";\nexport {default as pluginOptimization} from \"./optimization\";\nexport {default as pluginOutput} from \"./output\";\nexport {default as pluginIcon} from \"./icon\";\nexport {default as pluginLocale} from \"./locale\";\nexport {default as pluginMeta} from \"./meta\";\nexport {default as pluginOffscreen} from \"./offscreen\";\nexport {default as pluginOptions} from \"./options\";\nexport {default as pluginPage} from \"./page\";\nexport {default as pluginPopup} from \"./popup\";\nexport {default as pluginPublic} from \"./public\";\nexport {default as pluginSandbox} from \"./sandbox\";\nexport {default as pluginSidebar} from \"./sidebar\";\nexport {default as pluginTypescript, TypescriptConfig, FileBuilder, VendorDeclaration} from \"./typescript\";\nexport {default as pluginReact} from \"./react\";\nexport {default as pluginStyle} from \"./style\";\nexport {default as pluginView} from \"./view\";\nexport {default as pluginVersion} from \"./version\";\n"],"mappings":"AAAA,SAAmB,WAAXA,gBAA6B;AACrC,SAAmB,WAAXA,gBAA+B;AACvC,SAAmB,WAAXA,gBAAkC;AAC1C,SAAmB,WAAXA,gBAA+B;AACvC,SAAmB,WAAXA,gBAA8B;AACtC,SAAmB,WAAXA,gBAA4B;AACpC,SAAmB,WAAXA,gBAAgC;AACxC,SAAmB,WAAXA,gBAAoC;AAC5C,SAAmB,WAAXA,iBAA8B;AACtC,SAAmB,WAAXA,iBAA4B;AACpC,SAAmB,WAAXA,iBAA8B;AACtC,SAAmB,WAAXA,iBAA4B;AACpC,SAAmB,WAAXA,iBAAiC;AACzC,SAAmB,WAAXA,iBAA+B;AACvC,SAAmB,WAAXA,iBAA4B;AACpC,SAAmB,WAAXA,iBAA6B;AACrC,SAAmB,WAAXA,iBAA8B;AACtC,SAAmB,WAAXA,iBAA+B;AACvC,SAAmB,WAAXA,iBAA+B;AACvC,SAAmB,WAAXA,WAA6B,kBAAkB,aAAa,yBAAwB;AAC5F,SAAmB,WAAXA,iBAA6B;AACrC,SAAmB,WAAXA,iBAA6B;AACrC,SAAmB,WAAXA,iBAA4B;AACpC,SAAmB,WAAXA,iBAA+B;","names":["default"]}
1
+ {"version":3,"sources":["../../../src/cli/plugins/index.ts"],"sourcesContent":["export {default as pluginAsset} from \"./asset\";\nexport {default as pluginBundler} from \"./bundler\";\nexport {default as pluginBackground} from \"./background\";\nexport {default as pluginContent} from \"./content\";\nexport {default as pluginDotenv} from \"./dotenv\";\nexport {default as pluginHtml} from \"./html\";\nexport {default as pluginManifest} from \"./manifest\";\nexport {default as pluginOptimization} from \"./optimization\";\nexport {default as pluginOutput} from \"./output\";\nexport {default as pluginIcon} from \"./icon\";\nexport {default as pluginLocale} from \"./locale\";\nexport {default as pluginMeta} from \"./meta\";\nexport {default as pluginOffscreen} from \"./offscreen\";\nexport {default as pluginOptions} from \"./options\";\nexport {default as pluginOverride} from \"./override\";\nexport {default as pluginPage} from \"./page\";\nexport {default as pluginPopup} from \"./popup\";\nexport {default as pluginPublic} from \"./public\";\nexport {default as pluginSandbox} from \"./sandbox\";\nexport {default as pluginSidebar} from \"./sidebar\";\nexport {default as pluginTypescript, TypescriptConfig, FileBuilder, VendorDeclaration} from \"./typescript\";\nexport {default as pluginReact} from \"./react\";\nexport {default as pluginStyle} from \"./style\";\nexport {default as pluginView} from \"./view\";\nexport {default as pluginVersion} from \"./version\";\n"],"mappings":"AAAA,SAAmB,WAAXA,gBAA6B;AACrC,SAAmB,WAAXA,gBAA+B;AACvC,SAAmB,WAAXA,gBAAkC;AAC1C,SAAmB,WAAXA,gBAA+B;AACvC,SAAmB,WAAXA,gBAA8B;AACtC,SAAmB,WAAXA,gBAA4B;AACpC,SAAmB,WAAXA,gBAAgC;AACxC,SAAmB,WAAXA,gBAAoC;AAC5C,SAAmB,WAAXA,iBAA8B;AACtC,SAAmB,WAAXA,iBAA4B;AACpC,SAAmB,WAAXA,iBAA8B;AACtC,SAAmB,WAAXA,iBAA4B;AACpC,SAAmB,WAAXA,iBAAiC;AACzC,SAAmB,WAAXA,iBAA+B;AACvC,SAAmB,WAAXA,iBAAgC;AACxC,SAAmB,WAAXA,iBAA4B;AACpC,SAAmB,WAAXA,iBAA6B;AACrC,SAAmB,WAAXA,iBAA8B;AACtC,SAAmB,WAAXA,iBAA+B;AACvC,SAAmB,WAAXA,iBAA+B;AACvC,SAAmB,WAAXA,WAA6B,kBAAkB,aAAa,yBAAwB;AAC5F,SAAmB,WAAXA,iBAA6B;AACrC,SAAmB,WAAXA,iBAA6B;AACrC,SAAmB,WAAXA,iBAA4B;AACpC,SAAmB,WAAXA,iBAA+B;","names":["default"]}
@@ -1,7 +1,7 @@
1
1
  import path from "path";
2
2
  import { LocaleFinder } from "./../../../cli/entrypoint/index.js";
3
3
  import { getSourcePath, getSharedPath, getAppPath, getAppSourcePath } from "./../../../cli/resolvers/path.js";
4
- import { flattenLocaleMessages, getLocaleFilename } from "./../../../shared/locale/index.js";
4
+ import { escapeLocaleMessages, flattenLocaleMessages, getLocaleFilename } from "./../../../shared/locale/index.js";
5
5
  class Locale extends LocaleFinder {
6
6
  _messages;
7
7
  async dependencies() {
@@ -18,7 +18,10 @@ class Locale extends LocaleFinder {
18
18
  }
19
19
  async json() {
20
20
  return Object.fromEntries(
21
- [...await this.messages()].map(([lang, messages]) => [getLocaleFilename(lang), messages])
21
+ [...await this.messages()].map(([lang, messages]) => [
22
+ getLocaleFilename(lang),
23
+ escapeLocaleMessages(messages)
24
+ ])
22
25
  );
23
26
  }
24
27
  async catalogue() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/plugins/locale/Locale.ts"],"sourcesContent":["import path from \"path\";\nimport {LocaleFinder} from \"@cli/entrypoint/index.js\";\nimport type {GenerateJsonPluginData, GenerateModulePluginDependencies} from \"@cli/bundler\";\nimport {getSourcePath, getSharedPath, getAppPath, getAppSourcePath} from \"@cli/resolvers/path\";\n\nimport {flattenLocaleMessages, getLocaleFilename} from \"@shared/locale\";\n\nimport type {Language, LocaleCatalogue, LocaleMessages} from \"@typing/locale\";\n\nexport default class Locale extends LocaleFinder {\n private _messages?: Promise<Map<Language, LocaleMessages>>;\n\n public async dependencies(): Promise<GenerateModulePluginDependencies> {\n const files = [...(await this.plugin().files())].map(({file}) => file);\n const directory = this.getDirectory();\n const directories = new Set([\n getSourcePath(this.config, directory),\n getSharedPath(this.config, directory),\n getAppPath(this.config, directory),\n getAppSourcePath(this.config, directory),\n ...files.map(file => path.dirname(file)),\n ]);\n\n return {files, directories};\n }\n\n public async json(): Promise<GenerateJsonPluginData> {\n return Object.fromEntries(\n [...(await this.messages())].map(([lang, messages]) => [getLocaleFilename(lang), messages])\n );\n }\n\n public async catalogue(): Promise<LocaleCatalogue> {\n return Object.fromEntries(\n [...(await this.messages())].map(([lang, messages]) => [lang, flattenLocaleMessages(messages)])\n );\n }\n\n private messages(): Promise<Map<Language, LocaleMessages>> {\n return (this._messages ??= this.createMessages());\n }\n\n private async createMessages(): Promise<Map<Language, LocaleMessages>> {\n await this.validate();\n\n const data = new Map<Language, LocaleMessages>();\n\n const builders = await this.builders();\n const defaultBuilder = this.getValidator().getDefaultBuilder(builders);\n const defaultMessages = defaultBuilder?.build() ?? {};\n\n for (const builder of builders.values()) {\n // Builders already include this app's layers and browser overrides.\n // Every target plural has been validated; only ordinary gaps remain.\n const messages = builder === defaultBuilder ? defaultMessages : builder.build();\n\n data.set(builder.lang(), {...defaultMessages, ...messages});\n }\n\n return data;\n }\n\n public clear(): this {\n this._messages = undefined;\n\n return super.clear();\n }\n}\n"],"mappings":"AAAA,OAAO,UAAU;AACjB,SAAQ,oBAAmB;AAE3B,SAAQ,eAAe,eAAe,YAAY,wBAAuB;AAEzE,SAAQ,uBAAuB,yBAAwB;AAIvD,MAAO,eAA6B,aAAa;AAAA,EACrC;AAAA,EAER,MAAa,eAA0D;AACnE,UAAM,QAAQ,CAAC,GAAI,MAAM,KAAK,OAAO,EAAE,MAAM,CAAE,EAAE,IAAI,CAAC,EAAC,KAAI,MAAM,IAAI;AACrE,UAAM,YAAY,KAAK,aAAa;AACpC,UAAM,cAAc,oBAAI,IAAI;AAAA,MACxB,cAAc,KAAK,QAAQ,SAAS;AAAA,MACpC,cAAc,KAAK,QAAQ,SAAS;AAAA,MACpC,WAAW,KAAK,QAAQ,SAAS;AAAA,MACjC,iBAAiB,KAAK,QAAQ,SAAS;AAAA,MACvC,GAAG,MAAM,IAAI,UAAQ,KAAK,QAAQ,IAAI,CAAC;AAAA,IAC3C,CAAC;AAED,WAAO,EAAC,OAAO,YAAW;AAAA,EAC9B;AAAA,EAEA,MAAa,OAAwC;AACjD,WAAO,OAAO;AAAA,MACV,CAAC,GAAI,MAAM,KAAK,SAAS,CAAE,EAAE,IAAI,CAAC,CAAC,MAAM,QAAQ,MAAM,CAAC,kBAAkB,IAAI,GAAG,QAAQ,CAAC;AAAA,IAC9F;AAAA,EACJ;AAAA,EAEA,MAAa,YAAsC;AAC/C,WAAO,OAAO;AAAA,MACV,CAAC,GAAI,MAAM,KAAK,SAAS,CAAE,EAAE,IAAI,CAAC,CAAC,MAAM,QAAQ,MAAM,CAAC,MAAM,sBAAsB,QAAQ,CAAC,CAAC;AAAA,IAClG;AAAA,EACJ;AAAA,EAEQ,WAAmD;AACvD,WAAQ,KAAK,cAAL,KAAK,YAAc,KAAK,eAAe;AAAA,EACnD;AAAA,EAEA,MAAc,iBAAyD;AACnE,UAAM,KAAK,SAAS;AAEpB,UAAM,OAAO,oBAAI,IAA8B;AAE/C,UAAM,WAAW,MAAM,KAAK,SAAS;AACrC,UAAM,iBAAiB,KAAK,aAAa,EAAE,kBAAkB,QAAQ;AACrE,UAAM,mBAAkB,iDAAgB,YAAW,CAAC;AAEpD,eAAW,WAAW,SAAS,OAAO,GAAG;AAGrC,YAAM,WAAW,YAAY,iBAAiB,kBAAkB,QAAQ,MAAM;AAE9E,WAAK,IAAI,QAAQ,KAAK,GAAG,EAAC,GAAG,iBAAiB,GAAG,SAAQ,CAAC;AAAA,IAC9D;AAEA,WAAO;AAAA,EACX;AAAA,EAEO,QAAc;AACjB,SAAK,YAAY;AAEjB,WAAO,MAAM,MAAM;AAAA,EACvB;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/cli/plugins/locale/Locale.ts"],"sourcesContent":["import path from \"path\";\nimport {LocaleFinder} from \"@cli/entrypoint/index.js\";\nimport type {GenerateJsonPluginData, GenerateModulePluginDependencies} from \"@cli/bundler\";\nimport {getSourcePath, getSharedPath, getAppPath, getAppSourcePath} from \"@cli/resolvers/path\";\n\nimport {escapeLocaleMessages, flattenLocaleMessages, getLocaleFilename} from \"@shared/locale\";\n\nimport type {Language, LocaleCatalogue, LocaleMessages} from \"@typing/locale\";\n\nexport default class Locale extends LocaleFinder {\n private _messages?: Promise<Map<Language, LocaleMessages>>;\n\n public async dependencies(): Promise<GenerateModulePluginDependencies> {\n const files = [...(await this.plugin().files())].map(({file}) => file);\n const directory = this.getDirectory();\n const directories = new Set([\n getSourcePath(this.config, directory),\n getSharedPath(this.config, directory),\n getAppPath(this.config, directory),\n getAppSourcePath(this.config, directory),\n ...files.map(file => path.dirname(file)),\n ]);\n\n return {files, directories};\n }\n\n public async json(): Promise<GenerateJsonPluginData> {\n return Object.fromEntries(\n [...(await this.messages())].map(([lang, messages]) => [\n getLocaleFilename(lang),\n escapeLocaleMessages(messages),\n ])\n );\n }\n\n public async catalogue(): Promise<LocaleCatalogue> {\n return Object.fromEntries(\n [...(await this.messages())].map(([lang, messages]) => [lang, flattenLocaleMessages(messages)])\n );\n }\n\n private messages(): Promise<Map<Language, LocaleMessages>> {\n return (this._messages ??= this.createMessages());\n }\n\n private async createMessages(): Promise<Map<Language, LocaleMessages>> {\n await this.validate();\n\n const data = new Map<Language, LocaleMessages>();\n\n const builders = await this.builders();\n const defaultBuilder = this.getValidator().getDefaultBuilder(builders);\n const defaultMessages = defaultBuilder?.build() ?? {};\n\n for (const builder of builders.values()) {\n // Builders already include this app's layers and browser overrides.\n // Every target plural has been validated; only ordinary gaps remain.\n const messages = builder === defaultBuilder ? defaultMessages : builder.build();\n\n data.set(builder.lang(), {...defaultMessages, ...messages});\n }\n\n return data;\n }\n\n public clear(): this {\n this._messages = undefined;\n\n return super.clear();\n }\n}\n"],"mappings":"AAAA,OAAO,UAAU;AACjB,SAAQ,oBAAmB;AAE3B,SAAQ,eAAe,eAAe,YAAY,wBAAuB;AAEzE,SAAQ,sBAAsB,uBAAuB,yBAAwB;AAI7E,MAAO,eAA6B,aAAa;AAAA,EACrC;AAAA,EAER,MAAa,eAA0D;AACnE,UAAM,QAAQ,CAAC,GAAI,MAAM,KAAK,OAAO,EAAE,MAAM,CAAE,EAAE,IAAI,CAAC,EAAC,KAAI,MAAM,IAAI;AACrE,UAAM,YAAY,KAAK,aAAa;AACpC,UAAM,cAAc,oBAAI,IAAI;AAAA,MACxB,cAAc,KAAK,QAAQ,SAAS;AAAA,MACpC,cAAc,KAAK,QAAQ,SAAS;AAAA,MACpC,WAAW,KAAK,QAAQ,SAAS;AAAA,MACjC,iBAAiB,KAAK,QAAQ,SAAS;AAAA,MACvC,GAAG,MAAM,IAAI,UAAQ,KAAK,QAAQ,IAAI,CAAC;AAAA,IAC3C,CAAC;AAED,WAAO,EAAC,OAAO,YAAW;AAAA,EAC9B;AAAA,EAEA,MAAa,OAAwC;AACjD,WAAO,OAAO;AAAA,MACV,CAAC,GAAI,MAAM,KAAK,SAAS,CAAE,EAAE,IAAI,CAAC,CAAC,MAAM,QAAQ,MAAM;AAAA,QACnD,kBAAkB,IAAI;AAAA,QACtB,qBAAqB,QAAQ;AAAA,MACjC,CAAC;AAAA,IACL;AAAA,EACJ;AAAA,EAEA,MAAa,YAAsC;AAC/C,WAAO,OAAO;AAAA,MACV,CAAC,GAAI,MAAM,KAAK,SAAS,CAAE,EAAE,IAAI,CAAC,CAAC,MAAM,QAAQ,MAAM,CAAC,MAAM,sBAAsB,QAAQ,CAAC,CAAC;AAAA,IAClG;AAAA,EACJ;AAAA,EAEQ,WAAmD;AACvD,WAAQ,KAAK,cAAL,KAAK,YAAc,KAAK,eAAe;AAAA,EACnD;AAAA,EAEA,MAAc,iBAAyD;AACnE,UAAM,KAAK,SAAS;AAEpB,UAAM,OAAO,oBAAI,IAA8B;AAE/C,UAAM,WAAW,MAAM,KAAK,SAAS;AACrC,UAAM,iBAAiB,KAAK,aAAa,EAAE,kBAAkB,QAAQ;AACrE,UAAM,mBAAkB,iDAAgB,YAAW,CAAC;AAEpD,eAAW,WAAW,SAAS,OAAO,GAAG;AAGrC,YAAM,WAAW,YAAY,iBAAiB,kBAAkB,QAAQ,MAAM;AAE9E,WAAK,IAAI,QAAQ,KAAK,GAAG,EAAC,GAAG,iBAAiB,GAAG,SAAQ,CAAC;AAAA,IAC9D;AAEA,WAAO;AAAA,EACX;AAAA,EAEO,QAAc;AACjB,SAAK,YAAY;AAEjB,WAAO,MAAM,MAAM;AAAA,EACvB;AACJ;","names":[]}
@@ -31,7 +31,7 @@ var options_default = definePlugin(() => {
31
31
  };
32
32
  },
33
33
  manifest: async ({ manifest }) => {
34
- manifest.setOptions(await options.manifest()).appendCsp(await options.csp());
34
+ manifest.setOptions(await options.manifest()).appendCsp(await options.csp()).appendPermissions(await options.permissions()).appendOptionalPermissions(await options.optionalPermissions()).appendHostPermissions(await options.hostPermissions()).appendOptionalHostPermissions(await options.optionalHostPermissions());
35
35
  }
36
36
  };
37
37
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/plugins/options/index.ts"],"sourcesContent":["import {Configuration as RspackConfig, HtmlRspackPlugin} from \"@rspack/core\";\nimport HtmlRspackTagsPlugin from \"html-rspack-tags-plugin\";\n\nimport Options from \"./Options\";\n\nimport {definePlugin} from \"@main/plugin\";\nimport {EntrypointPlugin} from \"@cli/bundler\";\nimport {virtualViewModule} from \"@cli/virtual/index.js\";\n\nimport {Command} from \"@typing/app\";\n\nexport default definePlugin(() => {\n let options: Options;\n\n return {\n name: \"adnbn:options\",\n startup: ({config}) => {\n options = new Options(config);\n },\n options: () => options.files(),\n bundler: async ({config}) => {\n if (await options.empty()) {\n if (config.debug) {\n console.info(\"Options entry not found\");\n }\n\n return {};\n }\n\n const plugin = EntrypointPlugin.from(await options.view().entries()).virtual(virtualViewModule);\n\n if (config.command === Command.Watch) {\n plugin.watch(async () => options.clear().view().entries());\n }\n\n const htmlPlugins = (await options.view().html()).map(options => new HtmlRspackPlugin(options));\n const tagsPlugins = (await options.view().tags()).map(options => new HtmlRspackTagsPlugin(options));\n\n return {\n plugins: [plugin, ...htmlPlugins, ...tagsPlugins],\n } satisfies RspackConfig;\n },\n manifest: async ({manifest}) => {\n manifest.setOptions(await options.manifest()).appendCsp(await options.csp());\n },\n };\n});\n"],"mappings":"AAAA,SAAuC,wBAAuB;AAC9D,OAAO,0BAA0B;AAEjC,OAAO,aAAa;AAEpB,SAAQ,oBAAmB;AAC3B,SAAQ,wBAAuB;AAC/B,SAAQ,yBAAwB;AAEhC,SAAQ,eAAc;AAEtB,IAAO,kBAAQ,aAAa,MAAM;AAC9B,MAAI;AAEJ,SAAO;AAAA,IACH,MAAM;AAAA,IACN,SAAS,CAAC,EAAC,OAAM,MAAM;AACnB,gBAAU,IAAI,QAAQ,MAAM;AAAA,IAChC;AAAA,IACA,SAAS,MAAM,QAAQ,MAAM;AAAA,IAC7B,SAAS,OAAO,EAAC,OAAM,MAAM;AACzB,UAAI,MAAM,QAAQ,MAAM,GAAG;AACvB,YAAI,OAAO,OAAO;AACd,kBAAQ,KAAK,yBAAyB;AAAA,QAC1C;AAEA,eAAO,CAAC;AAAA,MACZ;AAEA,YAAM,SAAS,iBAAiB,KAAK,MAAM,QAAQ,KAAK,EAAE,QAAQ,CAAC,EAAE,QAAQ,iBAAiB;AAE9F,UAAI,OAAO,YAAY,QAAQ,OAAO;AAClC,eAAO,MAAM,YAAY,QAAQ,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;AAAA,MAC7D;AAEA,YAAM,eAAe,MAAM,QAAQ,KAAK,EAAE,KAAK,GAAG,IAAI,CAAAA,aAAW,IAAI,iBAAiBA,QAAO,CAAC;AAC9F,YAAM,eAAe,MAAM,QAAQ,KAAK,EAAE,KAAK,GAAG,IAAI,CAAAA,aAAW,IAAI,qBAAqBA,QAAO,CAAC;AAElG,aAAO;AAAA,QACH,SAAS,CAAC,QAAQ,GAAG,aAAa,GAAG,WAAW;AAAA,MACpD;AAAA,IACJ;AAAA,IACA,UAAU,OAAO,EAAC,SAAQ,MAAM;AAC5B,eAAS,WAAW,MAAM,QAAQ,SAAS,CAAC,EAAE,UAAU,MAAM,QAAQ,IAAI,CAAC;AAAA,IAC/E;AAAA,EACJ;AACJ,CAAC;","names":["options"]}
1
+ {"version":3,"sources":["../../../../src/cli/plugins/options/index.ts"],"sourcesContent":["import {Configuration as RspackConfig, HtmlRspackPlugin} from \"@rspack/core\";\nimport HtmlRspackTagsPlugin from \"html-rspack-tags-plugin\";\n\nimport Options from \"./Options\";\n\nimport {definePlugin} from \"@main/plugin\";\nimport {EntrypointPlugin} from \"@cli/bundler\";\nimport {virtualViewModule} from \"@cli/virtual/index.js\";\n\nimport {Command} from \"@typing/app\";\n\nexport default definePlugin(() => {\n let options: Options;\n\n return {\n name: \"adnbn:options\",\n startup: ({config}) => {\n options = new Options(config);\n },\n options: () => options.files(),\n bundler: async ({config}) => {\n if (await options.empty()) {\n if (config.debug) {\n console.info(\"Options entry not found\");\n }\n\n return {};\n }\n\n const plugin = EntrypointPlugin.from(await options.view().entries()).virtual(virtualViewModule);\n\n if (config.command === Command.Watch) {\n plugin.watch(async () => options.clear().view().entries());\n }\n\n const htmlPlugins = (await options.view().html()).map(options => new HtmlRspackPlugin(options));\n const tagsPlugins = (await options.view().tags()).map(options => new HtmlRspackTagsPlugin(options));\n\n return {\n plugins: [plugin, ...htmlPlugins, ...tagsPlugins],\n } satisfies RspackConfig;\n },\n manifest: async ({manifest}) => {\n manifest\n .setOptions(await options.manifest())\n .appendCsp(await options.csp())\n .appendPermissions(await options.permissions())\n .appendOptionalPermissions(await options.optionalPermissions())\n .appendHostPermissions(await options.hostPermissions())\n .appendOptionalHostPermissions(await options.optionalHostPermissions());\n },\n };\n});\n"],"mappings":"AAAA,SAAuC,wBAAuB;AAC9D,OAAO,0BAA0B;AAEjC,OAAO,aAAa;AAEpB,SAAQ,oBAAmB;AAC3B,SAAQ,wBAAuB;AAC/B,SAAQ,yBAAwB;AAEhC,SAAQ,eAAc;AAEtB,IAAO,kBAAQ,aAAa,MAAM;AAC9B,MAAI;AAEJ,SAAO;AAAA,IACH,MAAM;AAAA,IACN,SAAS,CAAC,EAAC,OAAM,MAAM;AACnB,gBAAU,IAAI,QAAQ,MAAM;AAAA,IAChC;AAAA,IACA,SAAS,MAAM,QAAQ,MAAM;AAAA,IAC7B,SAAS,OAAO,EAAC,OAAM,MAAM;AACzB,UAAI,MAAM,QAAQ,MAAM,GAAG;AACvB,YAAI,OAAO,OAAO;AACd,kBAAQ,KAAK,yBAAyB;AAAA,QAC1C;AAEA,eAAO,CAAC;AAAA,MACZ;AAEA,YAAM,SAAS,iBAAiB,KAAK,MAAM,QAAQ,KAAK,EAAE,QAAQ,CAAC,EAAE,QAAQ,iBAAiB;AAE9F,UAAI,OAAO,YAAY,QAAQ,OAAO;AAClC,eAAO,MAAM,YAAY,QAAQ,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;AAAA,MAC7D;AAEA,YAAM,eAAe,MAAM,QAAQ,KAAK,EAAE,KAAK,GAAG,IAAI,CAAAA,aAAW,IAAI,iBAAiBA,QAAO,CAAC;AAC9F,YAAM,eAAe,MAAM,QAAQ,KAAK,EAAE,KAAK,GAAG,IAAI,CAAAA,aAAW,IAAI,qBAAqBA,QAAO,CAAC;AAElG,aAAO;AAAA,QACH,SAAS,CAAC,QAAQ,GAAG,aAAa,GAAG,WAAW;AAAA,MACpD;AAAA,IACJ;AAAA,IACA,UAAU,OAAO,EAAC,SAAQ,MAAM;AAC5B,eACK,WAAW,MAAM,QAAQ,SAAS,CAAC,EACnC,UAAU,MAAM,QAAQ,IAAI,CAAC,EAC7B,kBAAkB,MAAM,QAAQ,YAAY,CAAC,EAC7C,0BAA0B,MAAM,QAAQ,oBAAoB,CAAC,EAC7D,sBAAsB,MAAM,QAAQ,gBAAgB,CAAC,EACrD,8BAA8B,MAAM,QAAQ,wBAAwB,CAAC;AAAA,IAC9E;AAAA,EACJ;AACJ,CAAC;","names":["options"]}
@@ -0,0 +1,31 @@
1
+ import View from "../view/View.js";
2
+ import { AbstractOverrideFinder } from "../../entrypoint/index.js";
3
+ import { EntrypointFile } from "../../../types/entrypoint.js";
4
+ import type { ReadonlyConfig } from "../../../types/config.js";
5
+ import type { CspConfig } from "../../../types/csp.js";
6
+ import type { ManifestHostPermissions, ManifestOptionalPermissions, ManifestOverride, ManifestPermissions } from "../../../types/manifest.js";
7
+ import type { OverrideEntrypointOptions, OverrideEntrypointType } from "../../../types/override.js";
8
+ type OverrideFinder = AbstractOverrideFinder<OverrideEntrypointOptions>;
9
+ /**
10
+ * Owns the rule shared by the override entrypoints: a build carries at most one of them.
11
+ * Pages the target browser does not support are skipped first, then the remaining ones must not compete.
12
+ */
13
+ export default class Override {
14
+ protected readonly config: ReadonlyConfig;
15
+ protected readonly finders: Readonly<Record<OverrideEntrypointType, OverrideFinder>>;
16
+ protected _finder?: Promise<OverrideFinder | undefined>;
17
+ constructor(config: ReadonlyConfig);
18
+ files(type: OverrideEntrypointType): Promise<Set<EntrypointFile>>;
19
+ view(): Promise<View<OverrideEntrypointOptions> | undefined>;
20
+ manifest(): Promise<ManifestOverride | undefined>;
21
+ csp(): Promise<CspConfig[]>;
22
+ permissions(): Promise<ManifestPermissions>;
23
+ optionalPermissions(): Promise<ManifestOptionalPermissions>;
24
+ hostPermissions(): Promise<ManifestHostPermissions>;
25
+ optionalHostPermissions(): Promise<ManifestHostPermissions>;
26
+ clear(): this;
27
+ protected finder(): Promise<OverrideFinder | undefined>;
28
+ protected select(): Promise<OverrideFinder | undefined>;
29
+ protected describeConflict(finders: OverrideFinder[]): Promise<string>;
30
+ }
31
+ export {};
@@ -0,0 +1,112 @@
1
+ import path from "path";
2
+ import View from "../view/View.js";
3
+ import { BookmarksFinder, HistoryFinder, NewtabFinder } from "./../../../cli/entrypoint/index.js";
4
+ import { resolveRootPath } from "./../../../cli/resolvers/path.js";
5
+ import { toPosix } from "./../../../cli/utils/path.js";
6
+ import { Browser } from "./../../../types/browser.js";
7
+ import { EntrypointType } from "./../../../types/entrypoint.js";
8
+ const ChromiumBrowsers = [Browser.Chrome, Browser.Chromium, Browser.Edge];
9
+ const OverrideBrowsers = {
10
+ [EntrypointType.Newtab]: /* @__PURE__ */ new Set([...ChromiumBrowsers, Browser.Firefox, Browser.Safari]),
11
+ [EntrypointType.Bookmarks]: new Set(ChromiumBrowsers),
12
+ [EntrypointType.History]: new Set(ChromiumBrowsers)
13
+ };
14
+ class Override {
15
+ constructor(config) {
16
+ this.config = config;
17
+ this.finders = {
18
+ [EntrypointType.Newtab]: new NewtabFinder(config),
19
+ [EntrypointType.Bookmarks]: new BookmarksFinder(config),
20
+ [EntrypointType.History]: new HistoryFinder(config)
21
+ };
22
+ }
23
+ config;
24
+ finders;
25
+ _finder;
26
+ files(type) {
27
+ return this.finders[type].files();
28
+ }
29
+ async view() {
30
+ const finder = await this.finder();
31
+ return finder && new View(this.config, finder);
32
+ }
33
+ async manifest() {
34
+ const finder = await this.finder();
35
+ if (!finder) {
36
+ return;
37
+ }
38
+ const [view] = (await finder.views()).values();
39
+ return { page: `${finder.type()}`, path: view.filename };
40
+ }
41
+ async csp() {
42
+ const finder = await this.finder();
43
+ return finder ? finder.csp() : [];
44
+ }
45
+ // Permissions of the override that reaches the build; skipped and losing candidates contribute nothing.
46
+ async permissions() {
47
+ var _a;
48
+ return await ((_a = await this.finder()) == null ? void 0 : _a.permissions()) ?? /* @__PURE__ */ new Set();
49
+ }
50
+ async optionalPermissions() {
51
+ var _a;
52
+ return await ((_a = await this.finder()) == null ? void 0 : _a.optionalPermissions()) ?? /* @__PURE__ */ new Set();
53
+ }
54
+ async hostPermissions() {
55
+ var _a;
56
+ return await ((_a = await this.finder()) == null ? void 0 : _a.hostPermissions()) ?? /* @__PURE__ */ new Set();
57
+ }
58
+ async optionalHostPermissions() {
59
+ var _a;
60
+ return await ((_a = await this.finder()) == null ? void 0 : _a.optionalHostPermissions()) ?? /* @__PURE__ */ new Set();
61
+ }
62
+ clear() {
63
+ this._finder = void 0;
64
+ for (const finder of Object.values(this.finders)) {
65
+ finder.clear();
66
+ }
67
+ return this;
68
+ }
69
+ finder() {
70
+ return this._finder ?? (this._finder = this.select());
71
+ }
72
+ async select() {
73
+ const { browser, debug } = this.config;
74
+ const finders = [];
75
+ for (const finder of Object.values(this.finders)) {
76
+ if (await finder.empty()) {
77
+ continue;
78
+ }
79
+ if (!OverrideBrowsers[finder.type()].has(browser)) {
80
+ if (debug) {
81
+ console.warn(`The "${finder.type()}" override is not supported by ${browser} and was skipped`);
82
+ }
83
+ continue;
84
+ }
85
+ finders.push(finder);
86
+ }
87
+ if (finders.length > 1) {
88
+ throw new Error(await this.describeConflict(finders));
89
+ }
90
+ return finders[0];
91
+ }
92
+ async describeConflict(finders) {
93
+ const { app, browser } = this.config;
94
+ const rootDir = resolveRootPath(this.config);
95
+ const entries = await Promise.all(
96
+ finders.map(async (finder) => {
97
+ const [{ file }] = (await finder.views()).values();
98
+ const location = file.external ? file.import : toPosix(path.relative(rootDir, file.file));
99
+ return ` - ${finder.type()}: ${location}`;
100
+ })
101
+ );
102
+ return [
103
+ `An extension can override only one browser page, but app "${app}" enables ${finders.length} override entrypoints for ${browser}:`,
104
+ ...entries,
105
+ `Keep a single override or limit the others with "includeApp", "excludeApp", "includeBrowser" or "excludeBrowser".`
106
+ ].join("\n");
107
+ }
108
+ }
109
+ export {
110
+ Override as default
111
+ };
112
+ //# sourceMappingURL=Override.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/cli/plugins/override/Override.ts"],"sourcesContent":["import path from \"path\";\n\nimport View from \"../view/View\";\n\nimport {AbstractOverrideFinder, BookmarksFinder, HistoryFinder, NewtabFinder} from \"@cli/entrypoint/index.js\";\nimport {resolveRootPath} from \"@cli/resolvers/path\";\nimport {toPosix} from \"@cli/utils/path\";\n\nimport {Browser} from \"@typing/browser\";\nimport {EntrypointFile, EntrypointType} from \"@typing/entrypoint\";\nimport type {ReadonlyConfig} from \"@typing/config\";\nimport type {CspConfig} from \"@typing/csp\";\nimport type {\n ManifestHostPermissions,\n ManifestOptionalPermissions,\n ManifestOverride,\n ManifestPermissions,\n} from \"@typing/manifest\";\nimport type {OverrideEntrypointOptions, OverrideEntrypointType} from \"@typing/override\";\n\ntype OverrideFinder = AbstractOverrideFinder<OverrideEntrypointOptions>;\n\nconst ChromiumBrowsers: readonly Browser[] = [Browser.Chrome, Browser.Chromium, Browser.Edge];\n\n/** Browsers that honour each overridden page. Other targets are built without that entrypoint. */\nconst OverrideBrowsers: Readonly<Record<OverrideEntrypointType, ReadonlySet<Browser>>> = {\n [EntrypointType.Newtab]: new Set([...ChromiumBrowsers, Browser.Firefox, Browser.Safari]),\n [EntrypointType.Bookmarks]: new Set(ChromiumBrowsers),\n [EntrypointType.History]: new Set(ChromiumBrowsers),\n};\n\n/**\n * Owns the rule shared by the override entrypoints: a build carries at most one of them.\n * Pages the target browser does not support are skipped first, then the remaining ones must not compete.\n */\nexport default class Override {\n protected readonly finders: Readonly<Record<OverrideEntrypointType, OverrideFinder>>;\n\n protected _finder?: Promise<OverrideFinder | undefined>;\n\n public constructor(protected readonly config: ReadonlyConfig) {\n this.finders = {\n [EntrypointType.Newtab]: new NewtabFinder(config),\n [EntrypointType.Bookmarks]: new BookmarksFinder(config),\n [EntrypointType.History]: new HistoryFinder(config),\n };\n }\n\n public files(type: OverrideEntrypointType): Promise<Set<EntrypointFile>> {\n return this.finders[type].files();\n }\n\n public async view(): Promise<View<OverrideEntrypointOptions> | undefined> {\n const finder = await this.finder();\n\n return finder && new View(this.config, finder);\n }\n\n public async manifest(): Promise<ManifestOverride | undefined> {\n const finder = await this.finder();\n\n if (!finder) {\n return;\n }\n\n const [view] = (await finder.views()).values();\n\n return {page: `${finder.type()}` as const, path: view.filename};\n }\n\n public async csp(): Promise<CspConfig[]> {\n const finder = await this.finder();\n\n return finder ? finder.csp() : [];\n }\n\n // Permissions of the override that reaches the build; skipped and losing candidates contribute nothing.\n public async permissions(): Promise<ManifestPermissions> {\n return (await (await this.finder())?.permissions()) ?? new Set();\n }\n\n public async optionalPermissions(): Promise<ManifestOptionalPermissions> {\n return (await (await this.finder())?.optionalPermissions()) ?? new Set();\n }\n\n public async hostPermissions(): Promise<ManifestHostPermissions> {\n return (await (await this.finder())?.hostPermissions()) ?? new Set();\n }\n\n public async optionalHostPermissions(): Promise<ManifestHostPermissions> {\n return (await (await this.finder())?.optionalHostPermissions()) ?? new Set();\n }\n\n public clear(): this {\n this._finder = undefined;\n\n for (const finder of Object.values(this.finders)) {\n finder.clear();\n }\n\n return this;\n }\n\n protected finder(): Promise<OverrideFinder | undefined> {\n return (this._finder ??= this.select());\n }\n\n protected async select(): Promise<OverrideFinder | undefined> {\n const {browser, debug} = this.config;\n\n const finders: OverrideFinder[] = [];\n\n for (const finder of Object.values(this.finders)) {\n if (await finder.empty()) {\n continue;\n }\n\n if (!OverrideBrowsers[finder.type()].has(browser)) {\n if (debug) {\n console.warn(`The \"${finder.type()}\" override is not supported by ${browser} and was skipped`);\n }\n\n continue;\n }\n\n finders.push(finder);\n }\n\n if (finders.length > 1) {\n throw new Error(await this.describeConflict(finders));\n }\n\n return finders[0];\n }\n\n protected async describeConflict(finders: OverrideFinder[]): Promise<string> {\n const {app, browser} = this.config;\n\n const rootDir = resolveRootPath(this.config);\n\n const entries = await Promise.all(\n finders.map(async finder => {\n const [{file}] = (await finder.views()).values();\n\n const location = file.external ? file.import : toPosix(path.relative(rootDir, file.file));\n\n return ` - ${finder.type()}: ${location}`;\n })\n );\n\n return [\n `An extension can override only one browser page, but app \"${app}\" enables ${finders.length} override entrypoints for ${browser}:`,\n ...entries,\n `Keep a single override or limit the others with \"includeApp\", \"excludeApp\", \"includeBrowser\" or \"excludeBrowser\".`,\n ].join(\"\\n\");\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,2 @@
1
+ declare const _default: import("../../../main/plugin.js").PluginDefinition<[]>;
2
+ export default _default;