adnbn 0.10.0 → 0.11.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 (570) hide show
  1. package/dist/cli/builders/locale/LocaleBuilder.js +2 -11
  2. package/dist/cli/builders/locale/LocaleBuilder.js.map +1 -1
  3. package/dist/cli/builders/locale/index.js +1 -1
  4. package/dist/cli/builders/locale/index.js.map +1 -1
  5. package/dist/cli/builders/manifest/ManifestBase.js +16 -6
  6. package/dist/cli/builders/manifest/ManifestBase.js.map +1 -1
  7. package/dist/cli/builders/manifest/ManifestV2.js +1 -1
  8. package/dist/cli/builders/manifest/ManifestV3.js +12 -5
  9. package/dist/cli/builders/manifest/ManifestV3.js.map +1 -1
  10. package/dist/cli/builders/manifest/utils/data-collection-permissions.d.ts +15 -0
  11. package/dist/cli/builders/manifest/utils/data-collection-permissions.js +26 -0
  12. package/dist/cli/builders/manifest/utils/data-collection-permissions.js.map +1 -0
  13. package/dist/cli/builders/manifest/utils/host-patterns.d.ts +1 -0
  14. package/dist/cli/builders/manifest/utils/host-patterns.js +40 -0
  15. package/dist/cli/builders/manifest/utils/host-patterns.js.map +1 -0
  16. package/dist/cli/builders/manifest/utils/index.d.ts +4 -0
  17. package/dist/cli/builders/manifest/utils/index.js +19 -0
  18. package/dist/cli/builders/manifest/utils/index.js.map +1 -0
  19. package/dist/cli/builders/manifest/utils/permissions.d.ts +14 -0
  20. package/dist/cli/builders/manifest/utils/permissions.js +34 -0
  21. package/dist/cli/builders/manifest/utils/permissions.js.map +1 -0
  22. package/dist/cli/builders/manifest/utils/web-accessible-resources.d.ts +2 -0
  23. package/dist/cli/builders/manifest/utils/web-accessible-resources.js +92 -0
  24. package/dist/cli/builders/manifest/utils/web-accessible-resources.js.map +1 -0
  25. package/dist/cli/bundler/plugins/build-assets-map/BuildAssetsMapPlugin.d.ts +14 -0
  26. package/dist/cli/bundler/plugins/build-assets-map/BuildAssetsMapPlugin.js +523 -0
  27. package/dist/cli/bundler/plugins/build-assets-map/BuildAssetsMapPlugin.js.map +1 -0
  28. package/dist/cli/bundler/plugins/build-assets-map/entrypoint-module.d.ts +13 -0
  29. package/dist/cli/bundler/plugins/build-assets-map/entrypoint-module.js +16 -0
  30. package/dist/cli/bundler/plugins/build-assets-map/entrypoint-module.js.map +1 -0
  31. package/dist/cli/bundler/plugins/build-assets-map/index.d.ts +3 -0
  32. package/dist/cli/bundler/plugins/build-assets-map/index.js +8 -0
  33. package/dist/cli/bundler/plugins/build-assets-map/index.js.map +1 -0
  34. package/dist/cli/bundler/plugins/build-assets-map/usage.d.ts +12 -0
  35. package/dist/cli/bundler/plugins/build-assets-map/usage.js +28 -0
  36. package/dist/cli/bundler/plugins/build-assets-map/usage.js.map +1 -0
  37. package/dist/cli/bundler/plugins/chunk-loader/ChunkLoaderPlugin.d.ts +9 -0
  38. package/dist/cli/bundler/plugins/chunk-loader/ChunkLoaderPlugin.js +43 -0
  39. package/dist/cli/bundler/plugins/chunk-loader/ChunkLoaderPlugin.js.map +1 -0
  40. package/dist/cli/bundler/plugins/chunk-loader/index.d.ts +1 -0
  41. package/dist/cli/bundler/plugins/chunk-loader/index.js +5 -0
  42. package/dist/cli/bundler/plugins/chunk-loader/index.js.map +1 -0
  43. package/dist/cli/bundler/plugins/chunk-loader/templates/runtime.template.d.ts +2 -0
  44. package/dist/cli/bundler/plugins/chunk-loader/templates.d.ts +7 -0
  45. package/dist/cli/bundler/plugins/chunk-loader/templates.js +30 -0
  46. package/dist/cli/bundler/plugins/{EntrypointPlugin.d.ts → entrypoint/EntrypointPlugin.d.ts} +7 -2
  47. package/dist/cli/bundler/plugins/{EntrypointPlugin.js → entrypoint/EntrypointPlugin.js} +46 -26
  48. package/dist/cli/bundler/plugins/entrypoint/EntrypointPlugin.js.map +1 -0
  49. package/dist/cli/bundler/plugins/entrypoint/index.d.ts +1 -0
  50. package/dist/cli/bundler/plugins/entrypoint/index.js +7 -0
  51. package/dist/cli/bundler/plugins/entrypoint/index.js.map +1 -0
  52. package/dist/cli/bundler/plugins/{GenerateJsonPlugin.d.ts → generate-json/GenerateJsonPlugin.d.ts} +1 -0
  53. package/dist/cli/bundler/plugins/generate-json/GenerateJsonPlugin.js +73 -0
  54. package/dist/cli/bundler/plugins/generate-json/GenerateJsonPlugin.js.map +1 -0
  55. package/dist/cli/bundler/plugins/generate-json/index.d.ts +1 -0
  56. package/dist/cli/bundler/plugins/generate-json/index.js +5 -0
  57. package/dist/cli/bundler/plugins/generate-json/index.js.map +1 -0
  58. package/dist/cli/bundler/plugins/generate-module/GenerateModulePlugin.d.ts +23 -0
  59. package/dist/cli/bundler/plugins/generate-module/GenerateModulePlugin.js +88 -0
  60. package/dist/cli/bundler/plugins/generate-module/GenerateModulePlugin.js.map +1 -0
  61. package/dist/cli/bundler/plugins/generate-module/index.d.ts +1 -0
  62. package/dist/cli/bundler/plugins/generate-module/index.js +7 -0
  63. package/dist/cli/bundler/plugins/generate-module/index.js.map +1 -0
  64. package/dist/cli/bundler/plugins/index.d.ts +11 -5
  65. package/dist/cli/bundler/plugins/index.js +32 -10
  66. package/dist/cli/bundler/plugins/index.js.map +1 -1
  67. package/dist/cli/bundler/plugins/isolated-styles/IsolatedStylesPlugin.d.ts +21 -0
  68. package/dist/cli/bundler/plugins/isolated-styles/IsolatedStylesPlugin.js +174 -0
  69. package/dist/cli/bundler/plugins/isolated-styles/IsolatedStylesPlugin.js.map +1 -0
  70. package/dist/cli/bundler/plugins/isolated-styles/index.d.ts +1 -0
  71. package/dist/cli/bundler/plugins/isolated-styles/index.js +5 -0
  72. package/dist/cli/bundler/plugins/isolated-styles/index.js.map +1 -0
  73. package/dist/cli/bundler/plugins/isolated-styles/templates/css-loader.template.d.ts +1 -0
  74. package/dist/cli/bundler/plugins/isolated-styles/templates/runtime.template.d.ts +7 -0
  75. package/dist/cli/bundler/plugins/isolated-styles/templates.d.ts +18 -0
  76. package/dist/cli/bundler/plugins/isolated-styles/templates.js +174 -0
  77. package/dist/cli/bundler/plugins/manifest/ManifestPlugin.d.ts +10 -0
  78. package/dist/cli/bundler/plugins/manifest/ManifestPlugin.js +55 -0
  79. package/dist/cli/bundler/plugins/manifest/ManifestPlugin.js.map +1 -0
  80. package/dist/cli/bundler/plugins/manifest/index.d.ts +1 -0
  81. package/dist/cli/bundler/plugins/manifest/index.js +6 -0
  82. package/dist/cli/bundler/plugins/manifest/index.js.map +1 -0
  83. package/dist/cli/bundler/plugins/replace/ReplacePlugin.js.map +1 -0
  84. package/dist/cli/bundler/plugins/replace/index.d.ts +1 -0
  85. package/dist/cli/bundler/plugins/replace/index.js +5 -0
  86. package/dist/cli/bundler/plugins/replace/index.js.map +1 -0
  87. package/dist/cli/bundler/plugins/resource-access/ResourceAccessPlugin.d.ts +19 -0
  88. package/dist/cli/bundler/plugins/resource-access/ResourceAccessPlugin.js +20 -0
  89. package/dist/cli/bundler/plugins/resource-access/ResourceAccessPlugin.js.map +1 -0
  90. package/dist/cli/bundler/plugins/resource-access/index.d.ts +1 -0
  91. package/dist/cli/bundler/plugins/resource-access/index.js +5 -0
  92. package/dist/cli/bundler/plugins/resource-access/index.js.map +1 -0
  93. package/dist/cli/bundler/plugins/resource-access/utils.d.ts +8 -0
  94. package/dist/cli/bundler/plugins/resource-access/utils.js +42 -0
  95. package/dist/cli/bundler/plugins/resource-access/utils.js.map +1 -0
  96. package/dist/cli/bundler/plugins/types.d.ts +4 -0
  97. package/dist/cli/bundler/plugins/types.js +1 -0
  98. package/dist/cli/bundler/plugins/types.js.map +1 -0
  99. package/dist/cli/bundler/plugins/utils/index.d.ts +3 -0
  100. package/dist/cli/bundler/plugins/utils/index.js +9 -0
  101. package/dist/cli/bundler/plugins/utils/index.js.map +1 -0
  102. package/dist/cli/bundler/plugins/utils/manifest-hooks.d.ts +13 -0
  103. package/dist/cli/bundler/plugins/utils/manifest-hooks.js +17 -0
  104. package/dist/cli/bundler/plugins/utils/manifest-hooks.js.map +1 -0
  105. package/dist/cli/bundler/plugins/utils/runtime-template.d.ts +1 -0
  106. package/dist/cli/bundler/plugins/utils/runtime-template.js +18 -0
  107. package/dist/cli/bundler/plugins/utils/runtime-template.js.map +1 -0
  108. package/dist/cli/bundler/plugins/utils/watch-compilation.d.ts +3 -0
  109. package/dist/cli/bundler/plugins/utils/watch-compilation.js +18 -0
  110. package/dist/cli/bundler/plugins/utils/watch-compilation.js.map +1 -0
  111. package/dist/cli/bundler/plugins/watch/WatchPlugin.js +16 -0
  112. package/dist/cli/bundler/plugins/watch/WatchPlugin.js.map +1 -0
  113. package/dist/cli/bundler/plugins/watch/index.d.ts +1 -0
  114. package/dist/cli/bundler/plugins/watch/index.js +5 -0
  115. package/dist/cli/bundler/plugins/watch/index.js.map +1 -0
  116. package/dist/cli/bundler/utils/chunk-filename.d.ts +6 -0
  117. package/dist/cli/bundler/utils/chunk-filename.js +93 -0
  118. package/dist/cli/bundler/utils/chunk-filename.js.map +1 -0
  119. package/dist/cli/bundler/utils/index.d.ts +2 -0
  120. package/dist/cli/bundler/utils/index.js +2 -0
  121. package/dist/cli/bundler/utils/index.js.map +1 -1
  122. package/dist/cli/bundler/utils/layers.d.ts +4 -0
  123. package/dist/cli/bundler/utils/layers.js +10 -0
  124. package/dist/cli/bundler/utils/layers.js.map +1 -0
  125. package/dist/cli/bundler/utils/output.d.ts +6 -2
  126. package/dist/cli/bundler/utils/output.js +165 -7
  127. package/dist/cli/bundler/utils/output.js.map +1 -1
  128. package/dist/cli/bundler/utils/styles.d.ts +5 -0
  129. package/dist/cli/bundler/utils/styles.js +30 -0
  130. package/dist/cli/bundler/utils/styles.js.map +1 -0
  131. package/dist/cli/entrypoint/file/ExpressionFile.d.ts +4 -1
  132. package/dist/cli/entrypoint/file/ExpressionFile.js +11 -0
  133. package/dist/cli/entrypoint/file/ExpressionFile.js.map +1 -1
  134. package/dist/cli/entrypoint/file/OptionFile.d.ts +4 -2
  135. package/dist/cli/entrypoint/file/OptionFile.js +35 -31
  136. package/dist/cli/entrypoint/file/OptionFile.js.map +1 -1
  137. package/dist/cli/entrypoint/file/SourceFile.d.ts +18 -7
  138. package/dist/cli/entrypoint/file/SourceFile.js +260 -156
  139. package/dist/cli/entrypoint/file/SourceFile.js.map +1 -1
  140. package/dist/cli/entrypoint/file/index.d.ts +2 -0
  141. package/dist/cli/entrypoint/file/index.js +2 -0
  142. package/dist/cli/entrypoint/file/index.js.map +1 -1
  143. package/dist/cli/entrypoint/file/injectors/core.js +22 -1
  144. package/dist/cli/entrypoint/file/injectors/core.js.map +1 -1
  145. package/dist/cli/entrypoint/file/parsers/ExportParser.d.ts +14 -0
  146. package/dist/cli/entrypoint/file/parsers/ExportParser.js +71 -0
  147. package/dist/cli/entrypoint/file/parsers/ExportParser.js.map +1 -0
  148. package/dist/cli/entrypoint/file/parsers/NodeFinder.d.ts +2 -0
  149. package/dist/cli/entrypoint/file/parsers/NodeFinder.js +9 -0
  150. package/dist/cli/entrypoint/file/parsers/NodeFinder.js.map +1 -1
  151. package/dist/cli/entrypoint/file/parsers/ObjectParser.js +5 -1
  152. package/dist/cli/entrypoint/file/parsers/ObjectParser.js.map +1 -1
  153. package/dist/cli/entrypoint/file/parsers/index.d.ts +1 -0
  154. package/dist/cli/entrypoint/file/parsers/index.js +2 -0
  155. package/dist/cli/entrypoint/file/parsers/index.js.map +1 -1
  156. package/dist/cli/entrypoint/file/parsers/types.d.ts +16 -0
  157. package/dist/cli/entrypoint/file/parsers/types.js +13 -0
  158. package/dist/cli/entrypoint/file/parsers/types.js.map +1 -1
  159. package/dist/cli/entrypoint/file/resolvers/ImportResolver.d.ts +1 -0
  160. package/dist/cli/entrypoint/file/resolvers/ImportResolver.js +3 -0
  161. package/dist/cli/entrypoint/file/resolvers/ImportResolver.js.map +1 -1
  162. package/dist/cli/entrypoint/file/types.d.ts +26 -1
  163. package/dist/cli/entrypoint/finder/AbstractEntrypointFinder.js.map +1 -1
  164. package/dist/cli/entrypoint/parser/AbstractParser.d.ts +3 -2
  165. package/dist/cli/entrypoint/parser/AbstractParser.js +6 -3
  166. package/dist/cli/entrypoint/parser/AbstractParser.js.map +1 -1
  167. package/dist/cli/entrypoint/parser/CommandParser.js +1 -1
  168. package/dist/cli/entrypoint/parser/CommandParser.js.map +1 -1
  169. package/dist/cli/entrypoint/parser/ContentParser.d.ts +5 -1
  170. package/dist/cli/entrypoint/parser/ContentParser.js +55 -3
  171. package/dist/cli/entrypoint/parser/ContentParser.js.map +1 -1
  172. package/dist/cli/entrypoint/parser/RelayParser.d.ts +21 -2
  173. package/dist/cli/entrypoint/parser/RelayParser.js +4 -0
  174. package/dist/cli/entrypoint/parser/RelayParser.js.map +1 -1
  175. package/dist/cli/plugins/asset.js +9 -4
  176. package/dist/cli/plugins/asset.js.map +1 -1
  177. package/dist/cli/plugins/background/index.js +1 -1
  178. package/dist/cli/plugins/background/index.js.map +1 -1
  179. package/dist/cli/plugins/content/Content.d.ts +1 -1
  180. package/dist/cli/plugins/content/Content.js +3 -2
  181. package/dist/cli/plugins/content/Content.js.map +1 -1
  182. package/dist/cli/plugins/content/ContentManager.d.ts +8 -5
  183. package/dist/cli/plugins/content/ContentManager.js +79 -28
  184. package/dist/cli/plugins/content/ContentManager.js.map +1 -1
  185. package/dist/cli/plugins/content/ContentName.d.ts +1 -1
  186. package/dist/cli/plugins/content/ContentName.js +8 -7
  187. package/dist/cli/plugins/content/ContentName.js.map +1 -1
  188. package/dist/cli/plugins/content/Relay.d.ts +1 -1
  189. package/dist/cli/plugins/content/Relay.js +3 -2
  190. package/dist/cli/plugins/content/Relay.js.map +1 -1
  191. package/dist/cli/plugins/content/bundler.d.ts +7 -0
  192. package/dist/cli/plugins/content/bundler.js +47 -0
  193. package/dist/cli/plugins/content/bundler.js.map +1 -0
  194. package/dist/cli/plugins/content/index.js +121 -62
  195. package/dist/cli/plugins/content/index.js.map +1 -1
  196. package/dist/cli/plugins/content/relay-module.d.ts +3 -0
  197. package/dist/cli/plugins/content/relay-module.js +11 -0
  198. package/dist/cli/plugins/content/relay-module.js.map +1 -0
  199. package/dist/cli/plugins/content/types.d.ts +1 -1
  200. package/dist/cli/plugins/content/utils.d.ts +2 -0
  201. package/dist/cli/plugins/content/utils.js +8 -1
  202. package/dist/cli/plugins/content/utils.js.map +1 -1
  203. package/dist/cli/plugins/icon/declaration/IconDeclaration.d.ts +1 -1
  204. package/dist/cli/plugins/icon/declaration/IconDeclaration.js +6 -6
  205. package/dist/cli/plugins/icon/declaration/IconDeclaration.js.map +1 -1
  206. package/dist/cli/plugins/icon/declaration/icon.d.ts +3 -5
  207. package/dist/cli/plugins/icon/icon-module.d.ts +2 -0
  208. package/dist/cli/plugins/icon/icon-module.js +11 -0
  209. package/dist/cli/plugins/icon/icon-module.js.map +1 -0
  210. package/dist/cli/plugins/icon/index.js +5 -3
  211. package/dist/cli/plugins/icon/index.js.map +1 -1
  212. package/dist/cli/plugins/locale/Locale.d.ts +9 -2
  213. package/dist/cli/plugins/locale/Locale.js +37 -5
  214. package/dist/cli/plugins/locale/Locale.js.map +1 -1
  215. package/dist/cli/plugins/locale/declaration/locale.d.ts +1 -1
  216. package/dist/cli/plugins/locale/index.js +57 -22
  217. package/dist/cli/plugins/locale/index.js.map +1 -1
  218. package/dist/cli/plugins/locale/locale-module.d.ts +4 -0
  219. package/dist/cli/plugins/locale/locale-module.js +16 -0
  220. package/dist/cli/plugins/locale/locale-module.js.map +1 -0
  221. package/dist/cli/plugins/offscreen/Offscreen.d.ts +2 -3
  222. package/dist/cli/plugins/offscreen/Offscreen.js.map +1 -1
  223. package/dist/cli/plugins/offscreen/index.js +5 -4
  224. package/dist/cli/plugins/offscreen/index.js.map +1 -1
  225. package/dist/cli/plugins/offscreen/offscreen-module.d.ts +3 -0
  226. package/dist/cli/plugins/offscreen/offscreen-module.js +11 -0
  227. package/dist/cli/plugins/offscreen/offscreen-module.js.map +1 -0
  228. package/dist/cli/plugins/output.js +33 -3
  229. package/dist/cli/plugins/output.js.map +1 -1
  230. package/dist/cli/plugins/page/declaration/PageDeclaration.js +4 -4
  231. package/dist/cli/plugins/page/declaration/PageDeclaration.js.map +1 -1
  232. package/dist/cli/plugins/page/declaration/page.d.ts +3 -3
  233. package/dist/cli/plugins/page/index.js +14 -10
  234. package/dist/cli/plugins/page/index.js.map +1 -1
  235. package/dist/cli/plugins/page/page-module.d.ts +2 -0
  236. package/dist/cli/plugins/page/page-module.js +11 -0
  237. package/dist/cli/plugins/page/page-module.js.map +1 -0
  238. package/dist/cli/plugins/popup/Popup.d.ts +1 -1
  239. package/dist/cli/plugins/popup/Popup.js +2 -2
  240. package/dist/cli/plugins/popup/Popup.js.map +1 -1
  241. package/dist/cli/plugins/popup/declaration/PopupDeclaration.d.ts +1 -1
  242. package/dist/cli/plugins/popup/declaration/PopupDeclaration.js +6 -6
  243. package/dist/cli/plugins/popup/declaration/PopupDeclaration.js.map +1 -1
  244. package/dist/cli/plugins/popup/declaration/popup.d.ts +3 -3
  245. package/dist/cli/plugins/popup/index.js +6 -5
  246. package/dist/cli/plugins/popup/index.js.map +1 -1
  247. package/dist/cli/plugins/popup/popup-module.d.ts +3 -0
  248. package/dist/cli/plugins/popup/popup-module.js +11 -0
  249. package/dist/cli/plugins/popup/popup-module.js.map +1 -0
  250. package/dist/cli/plugins/sandbox/Sandbox.d.ts +1 -2
  251. package/dist/cli/plugins/sandbox/Sandbox.js.map +1 -1
  252. package/dist/cli/plugins/sandbox/index.js +5 -4
  253. package/dist/cli/plugins/sandbox/index.js.map +1 -1
  254. package/dist/cli/plugins/sandbox/sandbox-module.d.ts +3 -0
  255. package/dist/cli/plugins/sandbox/sandbox-module.js +11 -0
  256. package/dist/cli/plugins/sandbox/sandbox-module.js.map +1 -0
  257. package/dist/cli/plugins/sidebar/Sidebar.d.ts +1 -1
  258. package/dist/cli/plugins/sidebar/Sidebar.js +2 -2
  259. package/dist/cli/plugins/sidebar/Sidebar.js.map +1 -1
  260. package/dist/cli/plugins/sidebar/declaration/SidebarDeclaration.d.ts +1 -1
  261. package/dist/cli/plugins/sidebar/declaration/SidebarDeclaration.js +6 -6
  262. package/dist/cli/plugins/sidebar/declaration/SidebarDeclaration.js.map +1 -1
  263. package/dist/cli/plugins/sidebar/declaration/sidebar.d.ts +3 -3
  264. package/dist/cli/plugins/sidebar/index.js +6 -5
  265. package/dist/cli/plugins/sidebar/index.js.map +1 -1
  266. package/dist/cli/plugins/sidebar/sidebar-module.d.ts +3 -0
  267. package/dist/cli/plugins/sidebar/sidebar-module.js +11 -0
  268. package/dist/cli/plugins/sidebar/sidebar-module.js.map +1 -0
  269. package/dist/cli/plugins/style/index.d.ts +2 -1
  270. package/dist/cli/plugins/style/index.js +52 -25
  271. package/dist/cli/plugins/style/index.js.map +1 -1
  272. package/dist/cli/plugins/style/types.d.ts +5 -0
  273. package/dist/cli/plugins/style/types.js +1 -0
  274. package/dist/cli/plugins/style/types.js.map +1 -0
  275. package/dist/cli/raw.d.ts +4 -0
  276. package/dist/cli/resolvers/bundler.js +9 -7
  277. package/dist/cli/resolvers/bundler.js.map +1 -1
  278. package/dist/cli/resolvers/config.js +2 -1
  279. package/dist/cli/resolvers/config.js.map +1 -1
  280. package/dist/cli/virtual/index.d.ts +2 -2
  281. package/dist/cli/virtual/index.js +11 -8
  282. package/dist/cli/virtual/virtual.d.ts +8 -10
  283. package/dist/entry/content/adapters/react/Builder.js +1 -1
  284. package/dist/entry/content/adapters/react/Builder.js.map +1 -1
  285. package/dist/entry/content/adapters/react/Node.d.ts +2 -0
  286. package/dist/entry/content/adapters/react/Node.js +10 -2
  287. package/dist/entry/content/adapters/react/Node.js.map +1 -1
  288. package/dist/entry/content/adapters/vanilla/Builder.js +1 -1
  289. package/dist/entry/content/adapters/vanilla/Builder.js.map +1 -1
  290. package/dist/entry/content/adapters/vanilla/Node.d.ts +2 -1
  291. package/dist/entry/content/adapters/vanilla/Node.js +10 -7
  292. package/dist/entry/content/adapters/vanilla/Node.js.map +1 -1
  293. package/dist/entry/content/core/Builder.d.ts +1 -2
  294. package/dist/entry/content/core/Builder.js +9 -5
  295. package/dist/entry/content/core/Builder.js.map +1 -1
  296. package/dist/entry/content/core/MountBuilder.js +14 -6
  297. package/dist/entry/content/core/MountBuilder.js.map +1 -1
  298. package/dist/entry/content/core/{Context.d.ts → context/Context.d.ts} +2 -1
  299. package/dist/entry/content/core/{Context.js → context/Context.js} +7 -0
  300. package/dist/entry/content/core/context/Context.js.map +1 -0
  301. package/dist/entry/content/core/{EventEmitter.d.ts → context/EventEmitter.d.ts} +1 -1
  302. package/dist/entry/content/core/{EventEmitter.js → context/EventEmitter.js} +1 -1
  303. package/dist/entry/content/core/context/EventEmitter.js.map +1 -0
  304. package/dist/entry/content/core/{ManagedContext.d.ts → context/ManagedContext.d.ts} +1 -1
  305. package/dist/entry/content/core/context/ManagedContext.js.map +1 -0
  306. package/dist/entry/content/core/context/index.d.ts +3 -0
  307. package/dist/entry/content/core/context/index.js +9 -0
  308. package/dist/entry/content/core/context/index.js.map +1 -0
  309. package/dist/entry/content/core/{AbstractMarker.d.ts → markers/AbstractMarker.d.ts} +1 -1
  310. package/dist/entry/content/core/{AbstractMarker.js → markers/AbstractMarker.js} +1 -1
  311. package/dist/entry/content/core/markers/AbstractMarker.js.map +1 -0
  312. package/dist/entry/content/core/{AttributeMarker.d.ts → markers/AttributeMarker.d.ts} +1 -1
  313. package/dist/entry/content/core/markers/AttributeMarker.js.map +1 -0
  314. package/dist/entry/content/core/{WeakMarker.d.ts → markers/WeakMarker.d.ts} +1 -1
  315. package/dist/entry/content/core/markers/WeakMarker.js.map +1 -0
  316. package/dist/entry/content/core/markers/index.d.ts +3 -0
  317. package/dist/entry/content/core/markers/index.js +9 -0
  318. package/dist/entry/content/core/markers/index.js.map +1 -0
  319. package/dist/entry/content/core/{EventNode.d.ts → nodes/EventNode.d.ts} +2 -1
  320. package/dist/entry/content/core/{EventNode.js → nodes/EventNode.js} +3 -0
  321. package/dist/entry/content/core/nodes/EventNode.js.map +1 -0
  322. package/dist/entry/content/core/nodes/FrameNode.d.ts +23 -0
  323. package/dist/entry/content/core/nodes/FrameNode.js +125 -0
  324. package/dist/entry/content/core/nodes/FrameNode.js.map +1 -0
  325. package/dist/entry/content/core/{MarkerNode.d.ts → nodes/MarkerNode.d.ts} +2 -1
  326. package/dist/entry/content/core/{MarkerNode.js → nodes/MarkerNode.js} +3 -0
  327. package/dist/entry/content/core/nodes/MarkerNode.js.map +1 -0
  328. package/dist/entry/content/core/{MountNode.d.ts → nodes/MountNode.d.ts} +2 -1
  329. package/dist/entry/content/core/{MountNode.js → nodes/MountNode.js} +3 -0
  330. package/dist/entry/content/core/nodes/MountNode.js.map +1 -0
  331. package/dist/entry/content/core/{Node.d.ts → nodes/Node.d.ts} +2 -1
  332. package/dist/entry/content/core/{Node.js → nodes/Node.js} +3 -0
  333. package/dist/entry/content/core/nodes/Node.js.map +1 -0
  334. package/dist/entry/content/core/nodes/ShadowNode.d.ts +14 -0
  335. package/dist/entry/content/core/nodes/ShadowNode.js +67 -0
  336. package/dist/entry/content/core/nodes/ShadowNode.js.map +1 -0
  337. package/dist/entry/content/core/nodes/index.d.ts +6 -0
  338. package/dist/entry/content/core/nodes/index.js +15 -0
  339. package/dist/entry/content/core/nodes/index.js.map +1 -0
  340. package/dist/entry/content/core/nodes/isolated-styles.d.ts +2 -0
  341. package/dist/entry/content/core/nodes/isolated-styles.js +14 -0
  342. package/dist/entry/content/core/nodes/isolated-styles.js.map +1 -0
  343. package/dist/entry/content/core/resolvers/watch.js +1 -1
  344. package/dist/entry/content/core/resolvers/watch.js.map +1 -1
  345. package/dist/entry/content/frame/Builder.d.ts +7 -0
  346. package/dist/entry/content/frame/Builder.js +14 -0
  347. package/dist/entry/content/frame/Builder.js.map +1 -0
  348. package/dist/entry/content/frame/index.d.ts +4 -0
  349. package/dist/entry/content/frame/index.js +7 -0
  350. package/dist/entry/content/frame/index.js.map +1 -0
  351. package/dist/entry/relay/Builder.js +5 -1
  352. package/dist/entry/relay/Builder.js.map +1 -1
  353. package/dist/entry/relay/index.d.ts +1 -1
  354. package/dist/locale/adapters/react/ReactLocale.d.ts +18 -0
  355. package/dist/locale/adapters/react/ReactLocale.js +41 -0
  356. package/dist/locale/adapters/react/ReactLocale.js.map +1 -0
  357. package/dist/locale/adapters/react/hooks/use-locale-attributes.d.ts +7 -0
  358. package/dist/locale/adapters/react/hooks/use-locale-attributes.js +30 -0
  359. package/dist/locale/adapters/react/hooks/use-locale-attributes.js.map +1 -0
  360. package/dist/locale/adapters/react/hooks/use-locale.d.ts +3 -0
  361. package/dist/locale/adapters/react/hooks/use-locale.js +17 -0
  362. package/dist/locale/adapters/react/hooks/use-locale.js.map +1 -0
  363. package/dist/locale/adapters/react/hooks/use-native-locale.d.ts +3 -0
  364. package/dist/locale/adapters/react/hooks/use-native-locale.js +10 -0
  365. package/dist/locale/adapters/react/hooks/use-native-locale.js.map +1 -0
  366. package/dist/locale/adapters/react/index.d.ts +4 -2
  367. package/dist/locale/adapters/react/index.js +6 -4
  368. package/dist/locale/adapters/react/index.js.map +1 -1
  369. package/dist/locale/adapters/react/types.d.ts +22 -0
  370. package/dist/locale/adapters/react/types.js +1 -0
  371. package/dist/locale/adapters/react/types.js.map +1 -0
  372. package/dist/locale/helpers.d.ts +4 -5
  373. package/dist/locale/helpers.js +1 -1
  374. package/dist/locale/helpers.js.map +1 -1
  375. package/dist/locale/index.d.ts +2 -1
  376. package/dist/locale/index.js +1 -0
  377. package/dist/locale/index.js.map +1 -1
  378. package/dist/locale/providers/AbstractLocale.d.ts +4 -4
  379. package/dist/locale/providers/AbstractLocale.js +13 -94
  380. package/dist/locale/providers/AbstractLocale.js.map +1 -1
  381. package/dist/locale/providers/CustomLocale.d.ts +3 -3
  382. package/dist/locale/providers/CustomLocale.js +6 -5
  383. package/dist/locale/providers/CustomLocale.js.map +1 -1
  384. package/dist/locale/providers/DynamicLocale.d.ts +18 -11
  385. package/dist/locale/providers/DynamicLocale.js +60 -47
  386. package/dist/locale/providers/DynamicLocale.js.map +1 -1
  387. package/dist/locale/providers/NativeLocale.d.ts +4 -7
  388. package/dist/locale/providers/NativeLocale.js +5 -14
  389. package/dist/locale/providers/NativeLocale.js.map +1 -1
  390. package/dist/locale/providers/ObservableLocale.d.ts +35 -0
  391. package/dist/locale/providers/ObservableLocale.js +179 -0
  392. package/dist/locale/providers/ObservableLocale.js.map +1 -0
  393. package/dist/locale/providers/index.d.ts +2 -1
  394. package/dist/locale/providers/index.js +3 -1
  395. package/dist/locale/providers/index.js.map +1 -1
  396. package/dist/locale/storage/LocaleStorage.d.ts +11 -0
  397. package/dist/locale/storage/LocaleStorage.js +40 -0
  398. package/dist/locale/storage/LocaleStorage.js.map +1 -0
  399. package/dist/locale/storage/index.d.ts +1 -0
  400. package/dist/locale/storage/index.js +5 -0
  401. package/dist/locale/storage/index.js.map +1 -0
  402. package/dist/main/entrypoint.d.ts +4 -0
  403. package/dist/main/entrypoint.js +20 -0
  404. package/dist/main/entrypoint.js.map +1 -0
  405. package/dist/main/icon.d.ts +2 -3
  406. package/dist/main/icon.js +2 -1
  407. package/dist/main/icon.js.map +1 -1
  408. package/dist/main/index.d.ts +1 -0
  409. package/dist/main/index.js +1 -0
  410. package/dist/main/index.js.map +1 -1
  411. package/dist/main/offscreen.d.ts +2 -5
  412. package/dist/main/offscreen.js +5 -2
  413. package/dist/main/offscreen.js.map +1 -1
  414. package/dist/main/page.d.ts +2 -4
  415. package/dist/main/page.js +2 -1
  416. package/dist/main/page.js.map +1 -1
  417. package/dist/main/popup.d.ts +2 -5
  418. package/dist/main/popup.js +3 -3
  419. package/dist/main/popup.js.map +1 -1
  420. package/dist/main/relay.d.ts +1 -2
  421. package/dist/main/relay.js +2 -1
  422. package/dist/main/relay.js.map +1 -1
  423. package/dist/main/sandbox.d.ts +1 -4
  424. package/dist/main/sandbox.js +2 -1
  425. package/dist/main/sandbox.js.map +1 -1
  426. package/dist/main/service.d.ts +1 -2
  427. package/dist/main/service.js.map +1 -1
  428. package/dist/main/sidebar.d.ts +2 -5
  429. package/dist/main/sidebar.js +3 -3
  430. package/dist/main/sidebar.js.map +1 -1
  431. package/dist/message/index.d.ts +2 -4
  432. package/dist/message/index.js.map +1 -1
  433. package/dist/offscreen/index.d.ts +2 -6
  434. package/dist/offscreen/index.js.map +1 -1
  435. package/dist/relay/index.d.ts +2 -5
  436. package/dist/relay/index.js.map +1 -1
  437. package/dist/sandbox/index.d.ts +1 -5
  438. package/dist/sandbox/index.js.map +1 -1
  439. package/dist/service/index.d.ts +2 -6
  440. package/dist/service/index.js.map +1 -1
  441. package/dist/shared/content/index.d.ts +1 -0
  442. package/dist/shared/content/index.js +6 -0
  443. package/dist/shared/content/index.js.map +1 -0
  444. package/dist/shared/content/isolation.d.ts +4 -0
  445. package/dist/shared/content/isolation.js +70 -0
  446. package/dist/shared/content/isolation.js.map +1 -0
  447. package/dist/shared/locale/index.d.ts +5 -0
  448. package/dist/shared/locale/index.js +21 -0
  449. package/dist/shared/locale/index.js.map +1 -0
  450. package/dist/shared/locale/keys.d.ts +5 -0
  451. package/dist/shared/locale/keys.js +33 -0
  452. package/dist/shared/locale/keys.js.map +1 -0
  453. package/dist/shared/locale/language.d.ts +4 -0
  454. package/dist/shared/locale/language.js +23 -0
  455. package/dist/shared/locale/language.js.map +1 -0
  456. package/dist/shared/locale/messages.d.ts +3 -0
  457. package/dist/shared/locale/messages.js +9 -0
  458. package/dist/shared/locale/messages.js.map +1 -0
  459. package/dist/shared/locale/plural.d.ts +2 -0
  460. package/dist/shared/locale/plural.js +81 -0
  461. package/dist/shared/locale/plural.js.map +1 -0
  462. package/dist/shared/locale/substitutions.d.ts +10 -0
  463. package/dist/shared/locale/substitutions.js +32 -0
  464. package/dist/shared/locale/substitutions.js.map +1 -0
  465. package/dist/types/background.d.ts +1 -1
  466. package/dist/types/background.js.map +1 -1
  467. package/dist/types/command.d.ts +1 -1
  468. package/dist/types/command.js.map +1 -1
  469. package/dist/types/content.d.ts +120 -31
  470. package/dist/types/content.js +22 -1
  471. package/dist/types/content.js.map +1 -1
  472. package/dist/types/entrypoint.d.ts +20 -0
  473. package/dist/types/entrypoint.js +4 -0
  474. package/dist/types/entrypoint.js.map +1 -1
  475. package/dist/types/icon.d.ts +8 -0
  476. package/dist/types/icon.js.map +1 -1
  477. package/dist/types/language.d.ts +57 -0
  478. package/dist/types/language.js +62 -0
  479. package/dist/types/language.js.map +1 -0
  480. package/dist/types/locale.d.ts +34 -63
  481. package/dist/types/locale.js +62 -119
  482. package/dist/types/locale.js.map +1 -1
  483. package/dist/types/manifest.d.ts +10 -7
  484. package/dist/types/manifest.js.map +1 -1
  485. package/dist/types/message.d.ts +7 -0
  486. package/dist/types/message.js.map +1 -1
  487. package/dist/types/offscreen.d.ts +14 -1
  488. package/dist/types/offscreen.js.map +1 -1
  489. package/dist/types/page.d.ts +8 -0
  490. package/dist/types/popup.d.ts +9 -0
  491. package/dist/types/relay.d.ts +16 -7
  492. package/dist/types/relay.js.map +1 -1
  493. package/dist/types/sandbox.d.ts +12 -0
  494. package/dist/types/sandbox.js.map +1 -1
  495. package/dist/types/service.d.ts +10 -1
  496. package/dist/types/service.js.map +1 -1
  497. package/dist/types/sidebar.d.ts +9 -0
  498. package/dist/types/sidebar.js.map +1 -1
  499. package/dist/types/transport.d.ts +4 -0
  500. package/dist/virtual/entrypoint.d.ts +5 -0
  501. package/dist/virtual/entrypoint.js +7 -0
  502. package/dist/virtual/entrypoint.js.map +1 -0
  503. package/dist/virtual/icon.d.ts +2 -0
  504. package/dist/virtual/icon.js +5 -0
  505. package/dist/virtual/icon.js.map +1 -0
  506. package/dist/virtual/locale.d.ts +7 -0
  507. package/dist/virtual/locale.js +13 -0
  508. package/dist/virtual/locale.js.map +1 -0
  509. package/dist/virtual/modules.d.ts +40 -0
  510. package/dist/virtual/offscreen.d.ts +3 -0
  511. package/dist/virtual/offscreen.js +5 -0
  512. package/dist/virtual/offscreen.js.map +1 -0
  513. package/dist/virtual/page.d.ts +2 -0
  514. package/dist/virtual/page.js +5 -0
  515. package/dist/virtual/page.js.map +1 -0
  516. package/dist/virtual/popup.d.ts +3 -0
  517. package/dist/virtual/popup.js +5 -0
  518. package/dist/virtual/popup.js.map +1 -0
  519. package/dist/virtual/relay.d.ts +3 -0
  520. package/dist/virtual/relay.js +5 -0
  521. package/dist/virtual/relay.js.map +1 -0
  522. package/dist/virtual/sandbox.d.ts +3 -0
  523. package/dist/virtual/sandbox.js +5 -0
  524. package/dist/virtual/sandbox.js.map +1 -0
  525. package/dist/virtual/sidebar.d.ts +3 -0
  526. package/dist/virtual/sidebar.js +5 -0
  527. package/dist/virtual/sidebar.js.map +1 -0
  528. package/package.json +31 -10
  529. package/scripts/clean-dist.js +7 -0
  530. package/scripts/copy-dts.js +11 -1
  531. package/types/client.d.ts +15 -0
  532. package/dist/cli/builders/manifest/utils.d.ts +0 -32
  533. package/dist/cli/builders/manifest/utils.js +0 -209
  534. package/dist/cli/builders/manifest/utils.js.map +0 -1
  535. package/dist/cli/bundler/plugins/EntrypointPlugin.js.map +0 -1
  536. package/dist/cli/bundler/plugins/GenerateJsonPlugin.js +0 -40
  537. package/dist/cli/bundler/plugins/GenerateJsonPlugin.js.map +0 -1
  538. package/dist/cli/bundler/plugins/ManifestPlugin.d.ts +0 -10
  539. package/dist/cli/bundler/plugins/ManifestPlugin.js +0 -78
  540. package/dist/cli/bundler/plugins/ManifestPlugin.js.map +0 -1
  541. package/dist/cli/bundler/plugins/ReplacePlugin.js.map +0 -1
  542. package/dist/cli/bundler/plugins/WatchPlugin.js +0 -21
  543. package/dist/cli/bundler/plugins/WatchPlugin.js.map +0 -1
  544. package/dist/cli/entrypoint/finder/tests/fixtures/options/discovery/account.options.d.ts +0 -1
  545. package/dist/cli/entrypoint/finder/tests/fixtures/options/discovery/advanced.options/index.d.ts +0 -1
  546. package/dist/entry/content/core/AbstractMarker.js.map +0 -1
  547. package/dist/entry/content/core/AttributeMarker.js.map +0 -1
  548. package/dist/entry/content/core/Context.js.map +0 -1
  549. package/dist/entry/content/core/EventEmitter.js.map +0 -1
  550. package/dist/entry/content/core/EventNode.js.map +0 -1
  551. package/dist/entry/content/core/ManagedContext.js.map +0 -1
  552. package/dist/entry/content/core/MarkerNode.js.map +0 -1
  553. package/dist/entry/content/core/MountNode.js.map +0 -1
  554. package/dist/entry/content/core/Node.js.map +0 -1
  555. package/dist/entry/content/core/WeakMarker.js.map +0 -1
  556. package/dist/locale/adapters/react/LocaleProvider.d.ts +0 -7
  557. package/dist/locale/adapters/react/LocaleProvider.js +0 -58
  558. package/dist/locale/adapters/react/LocaleProvider.js.map +0 -1
  559. package/dist/locale/adapters/react/context.d.ts +0 -14
  560. package/dist/locale/adapters/react/context.js +0 -25
  561. package/dist/locale/adapters/react/context.js.map +0 -1
  562. package/dist/locale/utils.d.ts +0 -11
  563. package/dist/locale/utils.js +0 -67
  564. package/dist/locale/utils.js.map +0 -1
  565. /package/dist/cli/bundler/plugins/{ReplacePlugin.d.ts → replace/ReplacePlugin.d.ts} +0 -0
  566. /package/dist/cli/bundler/plugins/{ReplacePlugin.js → replace/ReplacePlugin.js} +0 -0
  567. /package/dist/cli/bundler/plugins/{WatchPlugin.d.ts → watch/WatchPlugin.d.ts} +0 -0
  568. /package/dist/entry/content/core/{ManagedContext.js → context/ManagedContext.js} +0 -0
  569. /package/dist/entry/content/core/{AttributeMarker.js → markers/AttributeMarker.js} +0 -0
  570. /package/dist/entry/content/core/{WeakMarker.js → markers/WeakMarker.js} +0 -0
@@ -1,5 +1,5 @@
1
1
  import _ from "lodash";
2
- import { convertLocaleKey } from "./../../../locale/utils.js";
2
+ import { convertLocaleKey, parsePlaceholders } from "./../../../shared/locale/index.js";
3
3
  import { LocaleError } from "./LocaleValidator.js";
4
4
  import {
5
5
  LocaleCustomKeyForLanguage,
@@ -42,21 +42,12 @@ class LocaleBuilder {
42
42
  );
43
43
  }
44
44
  structure() {
45
- const substitutions = (value) => {
46
- const pattern = /{{([^{}]+)}}/g;
47
- const substitutions2 = [];
48
- let match;
49
- while ((match = pattern.exec(value)) !== null) {
50
- substitutions2.push(match[1].trim());
51
- }
52
- return _.uniq(substitutions2.filter(Boolean)).sort();
53
- };
54
45
  return this.get().entries().reduce(
55
46
  (structure, [key, value]) => ({
56
47
  ...structure,
57
48
  [key]: {
58
49
  plural: value.includes(LocaleValuesSeparator),
59
- substitutions: substitutions(value)
50
+ substitutions: _.uniq(parsePlaceholders(value).map((placeholder) => placeholder.name)).sort()
60
51
  }
61
52
  }),
62
53
  {}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/builders/locale/LocaleBuilder.ts"],"sourcesContent":["import _ from \"lodash\";\n\nimport {convertLocaleKey} from \"@locale/utils\";\n\nimport {LocaleError} from \"./LocaleValidator\";\n\nimport {\n Language,\n LocaleBuilder as LocaleBuilderContract,\n LocaleCustomKeyForLanguage,\n LocaleData,\n LocaleItems,\n LocaleKeys,\n LocaleMessages,\n LocaleNestedKeysSeparator,\n LocaleStructure,\n LocaleValidator,\n LocaleValuesSeparator,\n} from \"@typing/locale\";\nimport {Browser} from \"@typing/browser\";\n\nexport default class LocaleBuilder implements LocaleBuilderContract {\n protected data: LocaleData[] = [];\n protected items?: LocaleItems;\n\n protected validator?: LocaleValidator;\n\n constructor(\n protected readonly browser: Browser,\n protected readonly language: Language\n ) {}\n\n public get(): LocaleItems {\n if (this.items) {\n return this.items;\n }\n\n const items: LocaleItems = new Map();\n\n for (const data of this.data) {\n for (const [key, value] of this.convert(data).entries()) {\n items.set(key, value);\n }\n }\n\n /**\n We inject a locale marker into each `messages.json`.\n Chrome provides no API to query the effective i18n locale:\n browser UI language may differ from the translation actually used\n (Chrome silently falls back to default_locale).\n Reading this marker via chrome.i18n.getMessage() is the only reliable way\n to detect the language currently displayed in the extension UI.\n */\n items.set(LocaleCustomKeyForLanguage, this.language);\n\n return (this.items = items);\n }\n\n public keys(): LocaleKeys {\n return new Set(this.get().keys());\n }\n\n public build(): LocaleMessages {\n return this.validate()\n .get()\n .entries()\n .reduce(\n (locale, [key, value]) => ({\n ...locale,\n [convertLocaleKey(key)]: {message: value},\n }),\n {}\n );\n }\n\n public structure(): LocaleStructure {\n const substitutions = (value: string): string[] => {\n const pattern = /{{([^{}]+)}}/g;\n const substitutions: string[] = [];\n\n let match: RegExpExecArray | null;\n\n while ((match = pattern.exec(value)) !== null) {\n substitutions.push(match[1].trim());\n }\n\n return _.uniq(substitutions.filter(Boolean)).sort();\n };\n\n return this.get()\n .entries()\n .reduce(\n (structure, [key, value]) => ({\n ...structure,\n [key]: {\n plural: value.includes(LocaleValuesSeparator),\n substitutions: substitutions(value),\n },\n }),\n {} as LocaleStructure\n );\n }\n\n public merge(data: LocaleData): this {\n this.data.push(data);\n this.items = undefined;\n\n return this;\n }\n\n public lang(): Language {\n return this.language;\n }\n\n public isValid(): boolean {\n try {\n this.validate();\n return true;\n } catch {\n return false;\n }\n }\n\n public validate(): this {\n if (!this.validator) {\n throw new LocaleError(this.browser, this.language, \"Validator is not set\");\n }\n\n this.validator.validate(this);\n\n return this;\n }\n\n public setValidator(validator: LocaleValidator): this {\n this.validator = validator;\n\n return this;\n }\n\n protected convert(data: LocaleData, prefix?: string): LocaleItems {\n const items: LocaleItems = new Map();\n\n for (const [key, value] of Object.entries(data)) {\n const resolvedKey = prefix ? [prefix, key].join(LocaleNestedKeysSeparator) : key;\n\n if (_.isString(value) || _.isNumber(value)) {\n items.set(resolvedKey, value.toString());\n } else if (_.isArray(value)) {\n items.set(\n resolvedKey,\n _.filter(value, v => _.isString(v) || _.isNumber(v)).join(LocaleValuesSeparator)\n );\n } else if (_.isPlainObject(value)) {\n for (const [k, v] of this.convert(value, resolvedKey).entries()) {\n items.set(k, v);\n }\n }\n }\n\n return items;\n }\n}\n"],"mappings":"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","names":["substitutions"]}
1
+ {"version":3,"sources":["../../../../src/cli/builders/locale/LocaleBuilder.ts"],"sourcesContent":["import _ from \"lodash\";\n\nimport {convertLocaleKey, parsePlaceholders} from \"@shared/locale\";\n\nimport {LocaleError} from \"./LocaleValidator\";\n\nimport {\n Language,\n LocaleBuilder as LocaleBuilderContract,\n LocaleCustomKeyForLanguage,\n LocaleData,\n LocaleItems,\n LocaleKeys,\n LocaleMessages,\n LocaleNestedKeysSeparator,\n LocaleStructure,\n LocaleValidator,\n LocaleValuesSeparator,\n} from \"@typing/locale\";\nimport {Browser} from \"@typing/browser\";\n\nexport default class LocaleBuilder implements LocaleBuilderContract {\n protected data: LocaleData[] = [];\n protected items?: LocaleItems;\n\n protected validator?: LocaleValidator;\n\n constructor(\n protected readonly browser: Browser,\n protected readonly language: Language\n ) {}\n\n public get(): LocaleItems {\n if (this.items) {\n return this.items;\n }\n\n const items: LocaleItems = new Map();\n\n for (const data of this.data) {\n for (const [key, value] of this.convert(data).entries()) {\n items.set(key, value);\n }\n }\n\n /**\n We inject a locale marker into each `messages.json`.\n Chrome provides no API to query the effective i18n locale:\n browser UI language may differ from the translation actually used\n (Chrome silently falls back to default_locale).\n Reading this marker via chrome.i18n.getMessage() is the only reliable way\n to detect the language currently displayed in the extension UI.\n */\n items.set(LocaleCustomKeyForLanguage, this.language);\n\n return (this.items = items);\n }\n\n public keys(): LocaleKeys {\n return new Set(this.get().keys());\n }\n\n public build(): LocaleMessages {\n return this.validate()\n .get()\n .entries()\n .reduce(\n (locale, [key, value]) => ({\n ...locale,\n [convertLocaleKey(key)]: {message: value},\n }),\n {}\n );\n }\n\n public structure(): LocaleStructure {\n return this.get()\n .entries()\n .reduce(\n (structure, [key, value]) => ({\n ...structure,\n [key]: {\n plural: value.includes(LocaleValuesSeparator),\n substitutions: _.uniq(parsePlaceholders(value).map(placeholder => placeholder.name)).sort(),\n },\n }),\n {} as LocaleStructure\n );\n }\n\n public merge(data: LocaleData): this {\n this.data.push(data);\n this.items = undefined;\n\n return this;\n }\n\n public lang(): Language {\n return this.language;\n }\n\n public isValid(): boolean {\n try {\n this.validate();\n return true;\n } catch {\n return false;\n }\n }\n\n public validate(): this {\n if (!this.validator) {\n throw new LocaleError(this.browser, this.language, \"Validator is not set\");\n }\n\n this.validator.validate(this);\n\n return this;\n }\n\n public setValidator(validator: LocaleValidator): this {\n this.validator = validator;\n\n return this;\n }\n\n protected convert(data: LocaleData, prefix?: string): LocaleItems {\n const items: LocaleItems = new Map();\n\n for (const [key, value] of Object.entries(data)) {\n const resolvedKey = prefix ? [prefix, key].join(LocaleNestedKeysSeparator) : key;\n\n if (_.isString(value) || _.isNumber(value)) {\n items.set(resolvedKey, value.toString());\n } else if (_.isArray(value)) {\n items.set(\n resolvedKey,\n _.filter(value, v => _.isString(v) || _.isNumber(v)).join(LocaleValuesSeparator)\n );\n } else if (_.isPlainObject(value)) {\n for (const [k, v] of this.convert(value, resolvedKey).entries()) {\n items.set(k, v);\n }\n }\n }\n\n return items;\n }\n}\n"],"mappings":"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","names":[]}
@@ -3,7 +3,7 @@ import LocaleValidator from "./LocaleValidator.js";
3
3
  import OperaLocaleValidator from "./OperaLocaleValidator.js";
4
4
  import FirefoxLocaleValidator from "./FirefoxLocaleValidator.js";
5
5
  import LocaleStructureValidator from "./LocaleStructureValidator.js";
6
- import { extractLocaleKey } from "./../../../locale/utils.js";
6
+ import { extractLocaleKey } from "./../../../shared/locale/index.js";
7
7
  import { Browser } from "./../../../types/browser.js";
8
8
  var locale_default = (language, config) => {
9
9
  const { browser, name, shortName, description, lang } = config;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/builders/locale/index.ts"],"sourcesContent":["import LocaleBuilder from \"./LocaleBuilder\";\nimport LocaleValidator from \"./LocaleValidator\";\nimport OperaLocaleValidator from \"./OperaLocaleValidator\";\nimport FirefoxLocaleValidator from \"./FirefoxLocaleValidator\";\nimport LocaleStructureValidator from \"./LocaleStructureValidator\";\n\nimport {extractLocaleKey} from \"@locale/utils\";\n\nimport {Language, LocaleBuilder as LocaleBuilderContract} from \"@typing/locale\";\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {Browser} from \"@typing/browser\";\n\nexport {LocaleBuilder, LocaleValidator, OperaLocaleValidator, FirefoxLocaleValidator, LocaleStructureValidator};\n\nexport default (language: Language, config: ReadonlyConfig): LocaleBuilderContract => {\n const {browser, name, shortName, description, lang} = config;\n\n let Validator = LocaleValidator;\n\n if (browser === Browser.Opera && lang !== language) {\n Validator = OperaLocaleValidator;\n }\n\n if (browser === Browser.Firefox && lang !== language) {\n Validator = FirefoxLocaleValidator;\n }\n\n const validator = new Validator(browser, language)\n .setNameKey(extractLocaleKey(name))\n .setShortNameKey(extractLocaleKey(shortName))\n .setDescriptionKey(extractLocaleKey(description));\n\n return new LocaleBuilder(browser, language).setValidator(validator);\n};\n"],"mappings":"AAAA,OAAO,mBAAmB;AAC1B,OAAO,qBAAqB;AAC5B,OAAO,0BAA0B;AACjC,OAAO,4BAA4B;AACnC,OAAO,8BAA8B;AAErC,SAAQ,wBAAuB;AAI/B,SAAQ,eAAc;AAItB,IAAO,iBAAQ,CAAC,UAAoB,WAAkD;AAClF,QAAM,EAAC,SAAS,MAAM,WAAW,aAAa,KAAI,IAAI;AAEtD,MAAI,YAAY;AAEhB,MAAI,YAAY,QAAQ,SAAS,SAAS,UAAU;AAChD,gBAAY;AAAA,EAChB;AAEA,MAAI,YAAY,QAAQ,WAAW,SAAS,UAAU;AAClD,gBAAY;AAAA,EAChB;AAEA,QAAM,YAAY,IAAI,UAAU,SAAS,QAAQ,EAC5C,WAAW,iBAAiB,IAAI,CAAC,EACjC,gBAAgB,iBAAiB,SAAS,CAAC,EAC3C,kBAAkB,iBAAiB,WAAW,CAAC;AAEpD,SAAO,IAAI,cAAc,SAAS,QAAQ,EAAE,aAAa,SAAS;AACtE;","names":[]}
1
+ {"version":3,"sources":["../../../../src/cli/builders/locale/index.ts"],"sourcesContent":["import LocaleBuilder from \"./LocaleBuilder\";\nimport LocaleValidator from \"./LocaleValidator\";\nimport OperaLocaleValidator from \"./OperaLocaleValidator\";\nimport FirefoxLocaleValidator from \"./FirefoxLocaleValidator\";\nimport LocaleStructureValidator from \"./LocaleStructureValidator\";\n\nimport {extractLocaleKey} from \"@shared/locale\";\n\nimport {Language, LocaleBuilder as LocaleBuilderContract} from \"@typing/locale\";\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {Browser} from \"@typing/browser\";\n\nexport {LocaleBuilder, LocaleValidator, OperaLocaleValidator, FirefoxLocaleValidator, LocaleStructureValidator};\n\nexport default (language: Language, config: ReadonlyConfig): LocaleBuilderContract => {\n const {browser, name, shortName, description, lang} = config;\n\n let Validator = LocaleValidator;\n\n if (browser === Browser.Opera && lang !== language) {\n Validator = OperaLocaleValidator;\n }\n\n if (browser === Browser.Firefox && lang !== language) {\n Validator = FirefoxLocaleValidator;\n }\n\n const validator = new Validator(browser, language)\n .setNameKey(extractLocaleKey(name))\n .setShortNameKey(extractLocaleKey(shortName))\n .setDescriptionKey(extractLocaleKey(description));\n\n return new LocaleBuilder(browser, language).setValidator(validator);\n};\n"],"mappings":"AAAA,OAAO,mBAAmB;AAC1B,OAAO,qBAAqB;AAC5B,OAAO,0BAA0B;AACjC,OAAO,4BAA4B;AACnC,OAAO,8BAA8B;AAErC,SAAQ,wBAAuB;AAI/B,SAAQ,eAAc;AAItB,IAAO,iBAAQ,CAAC,UAAoB,WAAkD;AAClF,QAAM,EAAC,SAAS,MAAM,WAAW,aAAa,KAAI,IAAI;AAEtD,MAAI,YAAY;AAEhB,MAAI,YAAY,QAAQ,SAAS,SAAS,UAAU;AAChD,gBAAY;AAAA,EAChB;AAEA,MAAI,YAAY,QAAQ,WAAW,SAAS,UAAU;AAClD,gBAAY;AAAA,EAChB;AAEA,QAAM,YAAY,IAAI,UAAU,SAAS,QAAQ,EAC5C,WAAW,iBAAiB,IAAI,CAAC,EACjC,gBAAgB,iBAAiB,SAAS,CAAC,EAC3C,kBAAkB,iBAAiB,WAAW,CAAC;AAEpD,SAAO,IAAI,cAAc,SAAS,QAAQ,EAAE,aAAa,SAAS;AACtE;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import _ from "lodash";
2
2
  import { Csp, SandboxCsp } from "../csp/index.js";
3
- import { mergeWebAccessibleResources, normalizeDataCollectionPermissions } from "./utils.js";
3
+ import { mergeWebAccessibleResources, normalizeDataCollectionPermissions } from "./utils/index.js";
4
4
  import { Browser } from "./../../../types/browser.js";
5
5
  import { CommandExecuteActionName } from "./../../../types/command.js";
6
6
  import { DefaultIconGroupName } from "./../../../types/icon.js";
@@ -279,7 +279,7 @@ class ManifestBase_default {
279
279
  return this;
280
280
  }
281
281
  build() {
282
- return this.merge(
282
+ const manifest = this.merge(
283
283
  this.buildName(),
284
284
  this.buildShortName(),
285
285
  this.buildDescription(),
@@ -307,6 +307,7 @@ class ManifestBase_default {
307
307
  this.buildBrowserSpecificSettings(),
308
308
  this.buildRaw()
309
309
  );
310
+ return manifest;
310
311
  }
311
312
  get() {
312
313
  return this.build();
@@ -591,10 +592,10 @@ class ManifestBase_default {
591
592
  }
592
593
  }
593
594
  getWebAccessibleResources() {
594
- var _a;
595
595
  const resources = [...this.accessibleResources];
596
596
  for (const contentScript of this.contentScripts.values()) {
597
- const assets = (_a = this.dependencies.get(contentScript.entry)) == null ? void 0 : _a.assets;
597
+ const dependencies = this.dependencies.get(contentScript.entry);
598
+ const assets = dependencies == null ? void 0 : dependencies.assets;
598
599
  if (assets && assets.size > 0) {
599
600
  resources.push({
600
601
  resources: Array.from(assets),
@@ -602,8 +603,17 @@ class ManifestBase_default {
602
603
  });
603
604
  }
604
605
  }
605
- if (this.combinedRaws.web_accessible_resources) {
606
- resources.push(...this.combinedRaws.web_accessible_resources);
606
+ for (const resource of this.combinedRaws.web_accessible_resources || []) {
607
+ if (typeof resource === "string") {
608
+ resources.push({ resources: [resource], matches: ["<all_urls>"], extensionIds: ["*"] });
609
+ } else {
610
+ resources.push({
611
+ resources: resource.resources,
612
+ matches: resource.matches,
613
+ extensionIds: resource.extension_ids,
614
+ useDynamicUrl: resource.use_dynamic_url
615
+ });
616
+ }
607
617
  }
608
618
  return mergeWebAccessibleResources(resources);
609
619
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/builders/manifest/ManifestBase.ts"],"sourcesContent":["import _ from \"lodash\";\n\nimport {Csp, type CspBuilder, SandboxCsp} from \"../csp\";\n\nimport {mergeWebAccessibleResources, normalizeDataCollectionPermissions} from \"./utils\";\n\nimport {\n CoreManifest,\n Manifest,\n ManifestAccessibleResource,\n ManifestAccessibleResources,\n ManifestBackground,\n ManifestBuilder,\n ManifestCommands,\n ManifestContentScripts,\n ManifestDependencies,\n ManifestHostPermissions,\n ManifestIcons,\n ManifestIncognito,\n ManifestOptionalPermissions,\n ManifestOptions,\n ManifestPermissions,\n ManifestPopup,\n ManifestSandbox,\n ManifestSandboxes,\n ManifestSidebar,\n ManifestVersion,\n OptionalManifest,\n} from \"@typing/manifest\";\nimport {CspConfig} from \"@typing/csp\";\nimport {SandboxCspConfig} from \"@typing/sandbox\";\nimport {Browser, BrowserSpecific} from \"@typing/browser\";\nimport {Language} from \"@typing/locale\";\nimport {CommandExecuteActionName} from \"@typing/command\";\nimport {DefaultIconGroupName} from \"@typing/icon\";\nimport {SidebarAlternativeBrowsers} from \"@typing/sidebar\";\nimport {ContentScriptMatches} from \"@typing/content\";\n\ntype ManifestV3 = chrome.runtime.ManifestV3;\ntype ManifestPermission = chrome.runtime.ManifestPermission;\ntype ManifestOptionalPermission = chrome.runtime.ManifestOptionalPermission;\ntype CoreManifestIcons = chrome.runtime.ManifestIcons;\n\nexport class ManifestError extends Error {\n public constructor(message: string) {\n super(\"Manifest: \" + message);\n }\n}\n\nexport default abstract class<T extends CoreManifest> implements ManifestBuilder<T> {\n protected name?: string;\n protected author?: string;\n protected homepage?: string;\n protected shortName?: string;\n protected description?: string;\n protected minimumVersion?: string;\n protected version?: string;\n protected icon?: string;\n protected incognito?: ManifestIncognito;\n protected specific?: BrowserSpecific;\n protected locale?: Language;\n protected icons: ManifestIcons = new Map();\n protected background?: ManifestBackground;\n protected popup?: ManifestPopup;\n protected sidebar?: ManifestSidebar;\n protected options?: ManifestOptions;\n protected sandboxes: ManifestSandboxes = new Set();\n protected sandboxCsp: CspBuilder<SandboxCspConfig> = new SandboxCsp();\n protected csp: CspBuilder<CspConfig> = new Csp();\n protected commands: ManifestCommands = new Set();\n protected contentScripts: ManifestContentScripts = new Set();\n protected dependencies: ManifestDependencies = new Map();\n protected permissions: ManifestPermissions = new Set();\n protected optionalPermissions: ManifestOptionalPermissions = new Set();\n protected hostPermissions: ManifestHostPermissions = new Set();\n protected optionalHostPermissions: ManifestHostPermissions = new Set();\n protected accessibleResources: ManifestAccessibleResources = new Set();\n\n protected raws: Set<OptionalManifest> = new Set();\n protected mergedRaws?: OptionalManifest;\n\n public abstract getManifestVersion(): ManifestVersion;\n\n protected abstract buildAction(): Partial<T> | undefined;\n\n protected abstract buildPermissions(): Partial<T> | undefined;\n\n protected abstract buildOptionalPermissions(): Partial<T> | undefined;\n\n protected abstract buildHostPermissions(): Partial<T> | undefined;\n\n protected abstract buildOptionalHostPermissions(): Partial<T> | undefined;\n\n protected abstract buildWebAccessibleResources(): Partial<T> | undefined;\n\n protected abstract buildSandbox(): Partial<T> | undefined;\n\n protected abstract buildCsp(): Partial<T> | undefined;\n\n protected get combinedRaws(): OptionalManifest {\n return (this.mergedRaws ??= Array.from(this.raws).reduce((result, raw) => {\n return _.mergeWith(result, raw, (objValue, srcValue) => {\n if (Array.isArray(objValue) && Array.isArray(srcValue)) {\n return objValue.concat(srcValue);\n }\n });\n }, {}));\n }\n\n protected get combinedPermissions(): ManifestPermissions {\n const result = new Set(this.permissions);\n\n if (this.combinedRaws.permissions) {\n for (const permission of this.combinedRaws.permissions) {\n result.add(permission);\n }\n }\n\n return result;\n }\n\n protected get combinedOptionalPermissions(): ManifestOptionalPermissions {\n const result = new Set(this.optionalPermissions);\n\n if (this.combinedRaws.optional_permissions) {\n for (const permission of this.combinedRaws.optional_permissions) {\n result.add(permission);\n }\n }\n\n return result;\n }\n\n protected get combinedHostPermissions(): ManifestHostPermissions {\n const result = new Set(this.hostPermissions);\n\n if (this.combinedRaws.host_permissions) {\n for (const permission of this.combinedRaws.host_permissions) {\n result.add(permission);\n }\n }\n\n return result;\n }\n\n protected get combinedOptionalHostPermissions(): ManifestHostPermissions {\n const result = new Set(this.optionalHostPermissions);\n if (this.combinedRaws.optional_host_permissions) {\n for (const permission of this.combinedRaws.optional_host_permissions) {\n result.add(permission);\n }\n }\n return result;\n }\n\n protected constructor(protected readonly browser: Browser = Browser.Chrome) {}\n\n public setAuthor(author?: string): this {\n this.author = author;\n\n return this;\n }\n\n public setHomepage(homepage?: string): this {\n this.homepage = homepage;\n\n return this;\n }\n\n public setName(name: string): this {\n this.name = name;\n\n return this;\n }\n\n public setShortName(shortName?: string): this {\n this.shortName = shortName;\n\n return this;\n }\n\n public setDescription(description?: string): this {\n this.description = description;\n\n return this;\n }\n\n public setVersion(version?: string): this {\n this.version = version;\n\n return this;\n }\n\n public setMinimumVersion(minimumVersion?: string): this {\n this.minimumVersion = minimumVersion;\n\n return this;\n }\n\n public setLocale(lang?: Language): this {\n this.locale = lang;\n\n return this;\n }\n\n public setIncognito(incognito?: ManifestIncognito): this {\n this.incognito = incognito;\n\n return this;\n }\n\n public setSpecific(settings?: BrowserSpecific): this {\n this.specific = settings;\n\n return this;\n }\n\n public mergeSpecific(settings: BrowserSpecific): this {\n this.specific = _.mergeWith({}, this.specific, settings, (objValue, srcValue) => {\n if (_.isArray(objValue) && _.isArray(srcValue)) {\n return _.union(objValue, srcValue);\n }\n });\n\n return this;\n }\n\n public setIcons(icons?: ManifestIcons): this {\n this.icons = icons || new Map();\n\n return this;\n }\n\n public setIcon(icon?: string): this {\n this.icon = icon;\n\n return this;\n }\n\n public setBackground(background?: ManifestBackground): this {\n this.background = background;\n\n return this;\n }\n\n public setCommands(commands?: ManifestCommands): this {\n this.commands = commands || new Set();\n\n return this;\n }\n\n public setContentScripts(contentScripts?: ManifestContentScripts): this {\n this.contentScripts = contentScripts || new Set();\n\n return this;\n }\n\n public setPopup(popup?: ManifestPopup): this {\n this.popup = popup;\n\n return this;\n }\n\n public setSidebar(sidebar?: ManifestSidebar): this {\n this.sidebar = sidebar;\n\n return this;\n }\n\n public setOptions(options?: ManifestOptions): this {\n this.options = options;\n\n return this;\n }\n\n public addSandbox(sandbox: ManifestSandbox): this {\n this.sandboxes.add(sandbox);\n\n return this;\n }\n\n public appendSandboxes(sandboxes: Iterable<ManifestSandbox>): this {\n for (const sandbox of sandboxes) {\n this.addSandbox(sandbox);\n }\n\n return this;\n }\n\n public addSandboxCsp(csp: SandboxCspConfig): this {\n this.sandboxCsp.add(csp);\n\n return this;\n }\n\n public appendSandboxCsp(csps: Iterable<SandboxCspConfig>): this {\n for (const csp of csps) {\n this.addSandboxCsp(csp);\n }\n\n return this;\n }\n\n public addCsp(csp: CspConfig): this {\n this.csp.add(csp);\n\n return this;\n }\n\n public appendCsp(csps: Iterable<CspConfig>): this {\n for (const csp of csps) {\n this.addCsp(csp);\n }\n\n return this;\n }\n\n public setDependencies(dependencies: ManifestDependencies): this {\n this.dependencies = dependencies;\n\n return this;\n }\n\n public addPermission(permission: ManifestPermission): this {\n this.permissions.add(permission);\n\n return this;\n }\n\n public setPermissions(permissions: ManifestPermissions): this {\n this.permissions = permissions;\n\n return this;\n }\n\n public appendPermissions(permissions: ManifestPermissions): this {\n for (const permission of permissions) {\n this.permissions.add(permission);\n }\n\n return this;\n }\n\n public addOptionalPermission(permission: ManifestOptionalPermission): this {\n this.optionalPermissions.add(permission);\n\n return this;\n }\n\n public setOptionalPermissions(permissions: ManifestOptionalPermissions): this {\n this.optionalPermissions = permissions;\n\n return this;\n }\n\n public appendOptionalPermissions(permissions: ManifestOptionalPermissions): this {\n for (const permission of permissions) {\n this.optionalPermissions.add(permission);\n }\n\n return this;\n }\n\n public addHostPermission(permission: string): this {\n this.hostPermissions.add(permission);\n\n return this;\n }\n\n public setHostPermissions(permissions: ManifestHostPermissions): this {\n this.hostPermissions = permissions;\n\n return this;\n }\n\n public appendHostPermissions(permissions: ManifestHostPermissions): this {\n for (const permission of permissions) {\n this.hostPermissions.add(permission);\n }\n\n return this;\n }\n\n public addOptionalHostPermission(permission: string): this {\n this.optionalHostPermissions.add(permission);\n\n return this;\n }\n\n public setOptionalHostPermissions(permissions: ManifestHostPermissions): this {\n this.optionalHostPermissions = permissions;\n\n return this;\n }\n\n public appendOptionalHostPermissions(permissions: ManifestHostPermissions): this {\n for (const permission of permissions) {\n this.optionalHostPermissions.add(permission);\n }\n\n return this;\n }\n\n public addAccessibleResource(accessibleResource: ManifestAccessibleResource): this {\n this.accessibleResources.add(accessibleResource);\n\n return this;\n }\n\n public appendAccessibleResources(accessibleResources: ManifestAccessibleResources): this {\n for (const accessibleResource of accessibleResources) {\n this.accessibleResources.add(accessibleResource);\n }\n\n return this;\n }\n\n public setAccessibleResource(accessibleResources: ManifestAccessibleResources): this {\n this.accessibleResources = accessibleResources;\n\n return this;\n }\n\n public raw(manifest: OptionalManifest): this {\n this.raws.add(manifest);\n\n return this;\n }\n\n public build(): T {\n return this.merge<Manifest>(\n this.buildName(),\n this.buildShortName(),\n this.buildDescription(),\n this.buildVersion(),\n this.buildManifestVersion(),\n this.buildMinimumChromeVersion(),\n this.buildAuthor(),\n this.buildHomepageUrl(),\n this.buildIncognito(),\n this.buildLocale(),\n this.buildIcons(),\n this.buildBackground(),\n this.buildCommands(),\n this.buildAction(),\n this.buildSidebar(),\n this.buildOptions(),\n this.buildContentScripts(),\n this.buildPermissions(),\n this.buildOptionalPermissions(),\n this.buildHostPermissions(),\n this.buildOptionalHostPermissions(),\n this.buildWebAccessibleResources(),\n this.buildSandbox(),\n this.buildCsp(),\n this.buildBrowserSpecificSettings(),\n this.buildRaw()\n ) as T;\n }\n\n public get(): T {\n return this.build();\n }\n\n private merge<T extends CoreManifest>(...sources: Array<Partial<T> | undefined>): T {\n sources = sources.filter(source => source !== undefined);\n\n if (sources.length === 0) {\n throw new ManifestError(\"No sources provided for manifest merging\");\n }\n\n const result = {} as T;\n\n for (const source of sources) {\n Object.assign(result, source);\n }\n\n return result;\n }\n\n protected buildName(): Partial<CoreManifest> {\n return {name: this.name || this.combinedRaws.name || \"__MSG_app_name__\"};\n }\n\n protected buildShortName(): Partial<CoreManifest> | undefined {\n const shortName = this.shortName || this.combinedRaws.short_name;\n return shortName ? {short_name: shortName} : undefined;\n }\n\n protected buildDescription(): Partial<CoreManifest> | undefined {\n const description = this.description || this.combinedRaws.description;\n return description ? {description} : undefined;\n }\n\n protected buildVersion(): Partial<CoreManifest> {\n return {version: this.version || this.combinedRaws.version || \"0.0.0\"};\n }\n\n protected buildManifestVersion(): Partial<CoreManifest> {\n return {manifest_version: this.getManifestVersion()};\n }\n\n protected buildMinimumChromeVersion(): Partial<CoreManifest> | undefined {\n const version = this.minimumVersion || this.combinedRaws.minimum_chrome_version;\n return version ? {minimum_chrome_version: version} : undefined;\n }\n\n protected buildAuthor(): Partial<CoreManifest> | undefined {\n const author = this.author || this.combinedRaws.author;\n return author ? {author} : undefined;\n }\n\n protected buildHomepageUrl(): Partial<CoreManifest> | undefined {\n const homepage = this.homepage || this.combinedRaws.homepage_url;\n return homepage ? {homepage_url: homepage} : undefined;\n }\n\n protected buildIncognito(): Partial<CoreManifest> | undefined {\n const incognito = this.incognito || this.combinedRaws.incognito;\n return incognito !== undefined ? {incognito} : undefined;\n }\n\n protected buildLocale(): Partial<CoreManifest> | undefined {\n const defaultLocale = this.locale || this.combinedRaws.default_locale;\n return defaultLocale ? {default_locale: defaultLocale} : undefined;\n }\n\n protected buildIcons(): Partial<CoreManifest> | undefined {\n const icons = {\n ...this.combinedRaws.icons,\n ...this.getIconsByName(this.icon),\n };\n return Object.keys(icons).length ? {icons} : undefined;\n }\n\n protected buildBackground(): Partial<CoreManifest> | undefined {\n if (this.background) {\n const {entry, persistent} = this.background;\n\n const dependencies = this.dependencies.get(entry);\n\n if (!dependencies) {\n throw new ManifestError(`Background entry \"${entry}\" not found in dependencies`);\n }\n\n if (dependencies.js.size === 0) {\n throw new ManifestError(`Background entry \"${entry}\" has no dependencies`);\n }\n\n const scripts = Array.from(dependencies.js);\n\n return {background: {scripts, persistent: persistent || undefined}};\n }\n }\n\n protected buildCommands(): Partial<CoreManifest> | undefined {\n const internalCommands = Array.from(this.commands).reduce(\n (commands, command) => {\n return {\n ...commands,\n [command.name]: {\n suggested_key: {\n default: command?.defaultKey,\n windows: command?.windowsKey,\n mac: command?.macKey,\n chromeos: command?.chromeosKey,\n linux: command?.linuxKey,\n },\n description:\n command?.description ||\n (command.name === CommandExecuteActionName ? undefined : command.name),\n global: command?.global,\n },\n };\n },\n {} as CoreManifest[\"commands\"]\n );\n\n const commands = _.merge(this.combinedRaws.commands, internalCommands);\n\n if (Object.keys(commands).length) return {commands};\n }\n\n protected buildContentScripts(): Partial<CoreManifest> | undefined {\n const contentScripts: ManifestV3[\"content_scripts\"] = [];\n\n if (this.combinedRaws.content_scripts) {\n contentScripts.push(...this.combinedRaws.content_scripts);\n }\n\n if (this.contentScripts.size > 0) {\n for (const script of this.contentScripts.values()) {\n const {\n entry,\n matches,\n excludeMatches,\n allFrames,\n runAt,\n excludeGlobs,\n includeGlobs,\n world,\n matchAboutBlank,\n matchOriginAsFallback,\n } = script;\n\n const dependencies = this.dependencies.get(entry);\n\n if (!dependencies) {\n throw new ManifestError(`Content script entry \"${entry}\" not found in dependencies`);\n }\n\n const js = Array.from(dependencies.js);\n const css = Array.from(dependencies.css);\n\n if (js.length === 0 && css.length === 0) {\n throw new ManifestError(`Content script and style entry \"${entry}\" not found in dependencies`);\n }\n\n contentScripts.push({\n matches,\n exclude_matches: excludeMatches,\n js: js.length > 0 ? js : undefined,\n css: css.length > 0 ? css : undefined,\n all_frames: allFrames,\n run_at: runAt,\n exclude_globs: excludeGlobs,\n include_globs: includeGlobs,\n match_about_blank: matchAboutBlank,\n //@ts-ignore\n match_origin_as_fallback: matchOriginAsFallback,\n world,\n });\n }\n }\n\n return contentScripts.length ? {content_scripts: contentScripts} : undefined;\n }\n\n protected buildSidebar(): Partial<CoreManifest> | undefined {\n if (!this.sidebar) {\n const sidebarAction = this.combinedRaws.sidebar_action;\n const sidePanel = this.combinedRaws.side_panel;\n\n if (SidebarAlternativeBrowsers.has(this.browser)) {\n if (sidebarAction) return {sidebar_action: sidebarAction};\n } else {\n if (sidePanel) return {side_panel: sidePanel};\n }\n\n return;\n }\n\n const {path, icon, title} = this.sidebar;\n\n const commonProps = {\n open_at_install: this.browser === Browser.Firefox ? false : undefined,\n default_title: title || this.name,\n default_icon: this.getIconsByName(icon),\n };\n\n return SidebarAlternativeBrowsers.has(this.browser)\n ? {sidebar_action: {...commonProps, default_panel: path}}\n : {side_panel: {...commonProps, default_path: path}};\n }\n\n protected buildOptions(): Partial<CoreManifest> {\n if (this.options) {\n return {\n options_ui: {\n page: this.options.path,\n open_in_tab: this.options.openInTab ?? true,\n },\n };\n }\n\n return _.pick(this.combinedRaws, [\"options_ui\", \"options_page\"]);\n }\n\n protected buildBrowserSpecificSettings(): Partial<Manifest> | undefined {\n const optionalSettings = this.combinedRaws.browser_specific_settings;\n const {safari, gecko, geckoAndroid} = this.specific || {};\n\n if (this.browser === Browser.Firefox) {\n const id = gecko?.id || optionalSettings?.gecko?.id;\n const updateUrl = gecko?.updateUrl || optionalSettings?.gecko?.update_url;\n const geckoMinVersion = gecko?.strictMinVersion || optionalSettings?.gecko?.strict_min_version;\n const geckoMaxVersion = gecko?.strictMaxVersion || optionalSettings?.gecko?.strict_max_version;\n const dataCollectionPermissions = _.mergeWith(\n optionalSettings?.gecko?.data_collection_permissions,\n gecko?.dataCollectionPermissions,\n (objValue, srcValue) => {\n if (Array.isArray(objValue) && Array.isArray(srcValue)) {\n return objValue.concat(srcValue);\n }\n }\n );\n\n const androidMinVersion =\n geckoAndroid?.strictMinVersion || optionalSettings?.gecko_android?.strict_min_version;\n const androidMaxVersion =\n geckoAndroid?.strictMaxVersion || optionalSettings?.gecko_android?.strict_max_version;\n\n return {\n browser_specific_settings: {\n gecko: {\n id,\n update_url: updateUrl,\n strict_min_version: geckoMinVersion,\n strict_max_version: geckoMaxVersion,\n data_collection_permissions: normalizeDataCollectionPermissions(dataCollectionPermissions),\n },\n gecko_android:\n _.isEmpty(androidMinVersion) && _.isEmpty(androidMaxVersion)\n ? undefined\n : {\n strict_min_version: androidMinVersion,\n strict_max_version: androidMaxVersion,\n },\n },\n };\n } else if (this.browser === Browser.Safari) {\n const minVersion = safari?.strictMinVersion || optionalSettings?.safari?.strict_min_version;\n const maxVersion = safari?.strictMaxVersion || optionalSettings?.safari?.strict_max_version;\n\n if (_.isEmpty(minVersion) && _.isEmpty(maxVersion)) {\n return;\n }\n\n return {\n browser_specific_settings: {\n safari: {\n strict_min_version: minVersion,\n strict_max_version: maxVersion,\n },\n },\n };\n }\n }\n\n protected buildRaw(): Partial<Manifest> | undefined {\n const {\n name,\n short_name,\n description,\n version,\n minimum_chrome_version,\n author,\n homepage_url,\n incognito,\n default_locale,\n icons,\n background,\n commands,\n action,\n sidebar,\n options_ui,\n options_page,\n content_scripts,\n permissions,\n optional_permissions,\n host_permissions,\n optional_host_permissions,\n web_accessible_resources,\n sandbox,\n content_security_policy,\n browser_specific_settings,\n ...other\n } = this.combinedRaws;\n\n return other;\n }\n\n protected getSandboxes(): string[] {\n const sandboxes = new Set<string>();\n const rawSandbox = this.combinedRaws.sandbox as {pages?: string[]} | undefined;\n\n for (const sandbox of rawSandbox?.pages || []) {\n sandboxes.add(sandbox);\n }\n\n for (const sandbox of this.sandboxes) {\n sandboxes.add(sandbox);\n }\n\n return Array.from(sandboxes);\n }\n\n protected hasExecuteActionCommand(): boolean {\n const optionalCommands = this.combinedRaws.commands;\n\n const inInternalCommands =\n this.commands.size > 0 && Array.from(this.commands).some(({name}) => name === CommandExecuteActionName);\n const inOptionalCommands = optionalCommands && Object.keys(optionalCommands).includes(CommandExecuteActionName);\n return inInternalCommands || inOptionalCommands;\n }\n\n protected getIconsByName(name?: string): CoreManifestIcons | undefined {\n if (this.icons.size === 0) {\n return;\n }\n\n if (!name) {\n name = DefaultIconGroupName;\n }\n\n const icons = this.icons.get(name) || this.icons.get(DefaultIconGroupName) || this.icons.values().next().value;\n\n if (icons) {\n return Object.fromEntries(icons);\n }\n }\n\n public getWebAccessibleResources(): ManifestAccessibleResource[] {\n const resources: ManifestAccessibleResource[] = [...this.accessibleResources];\n\n for (const contentScript of this.contentScripts.values()) {\n const assets = this.dependencies.get(contentScript.entry)?.assets;\n\n if (assets && assets.size > 0) {\n resources.push({\n resources: Array.from(assets),\n matches: contentScript.matches || ContentScriptMatches,\n });\n }\n }\n\n if (this.combinedRaws.web_accessible_resources) {\n resources.push(...this.combinedRaws.web_accessible_resources);\n }\n\n return mergeWebAccessibleResources(resources);\n }\n}\n"],"mappings":"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","names":["commands"]}
1
+ {"version":3,"sources":["../../../../src/cli/builders/manifest/ManifestBase.ts"],"sourcesContent":["import _ from \"lodash\";\n\nimport {Csp, type CspBuilder, SandboxCsp} from \"../csp\";\n\nimport {mergeWebAccessibleResources, normalizeDataCollectionPermissions} from \"./utils\";\n\nimport {\n CoreManifest,\n Manifest,\n ManifestAccessibleResource,\n ManifestAccessibleResources,\n ManifestBackground,\n ManifestBuilder,\n ManifestCommands,\n ManifestContentScripts,\n ManifestDependencies,\n ManifestHostPermissions,\n ManifestIcons,\n ManifestIncognito,\n ManifestOptionalPermissions,\n ManifestOptions,\n ManifestPermissions,\n ManifestPopup,\n ManifestSandbox,\n ManifestSandboxes,\n ManifestSidebar,\n ManifestVersion,\n OptionalManifest,\n} from \"@typing/manifest\";\nimport {CspConfig} from \"@typing/csp\";\nimport {SandboxCspConfig} from \"@typing/sandbox\";\nimport {Browser, BrowserSpecific} from \"@typing/browser\";\nimport {Language} from \"@typing/locale\";\nimport {CommandExecuteActionName} from \"@typing/command\";\nimport {DefaultIconGroupName} from \"@typing/icon\";\nimport {SidebarAlternativeBrowsers} from \"@typing/sidebar\";\nimport {ContentScriptMatches} from \"@typing/content\";\n\ntype ManifestV3 = chrome.runtime.ManifestV3;\ntype ManifestPermission = chrome.runtime.ManifestPermission;\ntype ManifestOptionalPermission = chrome.runtime.ManifestOptionalPermission;\ntype CoreManifestIcons = chrome.runtime.ManifestIcons;\n\nexport class ManifestError extends Error {\n public constructor(message: string) {\n super(\"Manifest: \" + message);\n }\n}\n\nexport default abstract class<T extends CoreManifest> implements ManifestBuilder<T> {\n protected name?: string;\n protected author?: string;\n protected homepage?: string;\n protected shortName?: string;\n protected description?: string;\n protected minimumVersion?: string;\n protected version?: string;\n protected icon?: string;\n protected incognito?: ManifestIncognito;\n protected specific?: BrowserSpecific;\n protected locale?: Language;\n protected icons: ManifestIcons = new Map();\n protected background?: ManifestBackground;\n protected popup?: ManifestPopup;\n protected sidebar?: ManifestSidebar;\n protected options?: ManifestOptions;\n protected sandboxes: ManifestSandboxes = new Set();\n protected sandboxCsp: CspBuilder<SandboxCspConfig> = new SandboxCsp();\n protected csp: CspBuilder<CspConfig> = new Csp();\n protected commands: ManifestCommands = new Set();\n protected contentScripts: ManifestContentScripts = new Set();\n protected dependencies: ManifestDependencies = new Map();\n protected permissions: ManifestPermissions = new Set();\n protected optionalPermissions: ManifestOptionalPermissions = new Set();\n protected hostPermissions: ManifestHostPermissions = new Set();\n protected optionalHostPermissions: ManifestHostPermissions = new Set();\n protected accessibleResources: ManifestAccessibleResources = new Set();\n\n protected raws: Set<OptionalManifest> = new Set();\n protected mergedRaws?: OptionalManifest;\n\n public abstract getManifestVersion(): ManifestVersion;\n\n protected abstract buildAction(): Partial<T> | undefined;\n\n protected abstract buildPermissions(): Partial<T> | undefined;\n\n protected abstract buildOptionalPermissions(): Partial<T> | undefined;\n\n protected abstract buildHostPermissions(): Partial<T> | undefined;\n\n protected abstract buildOptionalHostPermissions(): Partial<T> | undefined;\n\n protected abstract buildWebAccessibleResources(): Partial<T> | undefined;\n\n protected abstract buildSandbox(): Partial<T> | undefined;\n\n protected abstract buildCsp(): Partial<T> | undefined;\n\n protected get combinedRaws(): OptionalManifest {\n return (this.mergedRaws ??= Array.from(this.raws).reduce((result, raw) => {\n return _.mergeWith(result, raw, (objValue, srcValue) => {\n if (Array.isArray(objValue) && Array.isArray(srcValue)) {\n return objValue.concat(srcValue);\n }\n });\n }, {}));\n }\n\n protected get combinedPermissions(): ManifestPermissions {\n const result = new Set(this.permissions);\n\n if (this.combinedRaws.permissions) {\n for (const permission of this.combinedRaws.permissions) {\n result.add(permission);\n }\n }\n\n return result;\n }\n\n protected get combinedOptionalPermissions(): ManifestOptionalPermissions {\n const result = new Set(this.optionalPermissions);\n\n if (this.combinedRaws.optional_permissions) {\n for (const permission of this.combinedRaws.optional_permissions) {\n result.add(permission);\n }\n }\n\n return result;\n }\n\n protected get combinedHostPermissions(): ManifestHostPermissions {\n const result = new Set(this.hostPermissions);\n\n if (this.combinedRaws.host_permissions) {\n for (const permission of this.combinedRaws.host_permissions) {\n result.add(permission);\n }\n }\n\n return result;\n }\n\n protected get combinedOptionalHostPermissions(): ManifestHostPermissions {\n const result = new Set(this.optionalHostPermissions);\n if (this.combinedRaws.optional_host_permissions) {\n for (const permission of this.combinedRaws.optional_host_permissions) {\n result.add(permission);\n }\n }\n return result;\n }\n\n protected constructor(protected readonly browser: Browser = Browser.Chrome) {}\n\n public setAuthor(author?: string): this {\n this.author = author;\n\n return this;\n }\n\n public setHomepage(homepage?: string): this {\n this.homepage = homepage;\n\n return this;\n }\n\n public setName(name: string): this {\n this.name = name;\n\n return this;\n }\n\n public setShortName(shortName?: string): this {\n this.shortName = shortName;\n\n return this;\n }\n\n public setDescription(description?: string): this {\n this.description = description;\n\n return this;\n }\n\n public setVersion(version?: string): this {\n this.version = version;\n\n return this;\n }\n\n public setMinimumVersion(minimumVersion?: string): this {\n this.minimumVersion = minimumVersion;\n\n return this;\n }\n\n public setLocale(lang?: Language): this {\n this.locale = lang;\n\n return this;\n }\n\n public setIncognito(incognito?: ManifestIncognito): this {\n this.incognito = incognito;\n\n return this;\n }\n\n public setSpecific(settings?: BrowserSpecific): this {\n this.specific = settings;\n\n return this;\n }\n\n public mergeSpecific(settings: BrowserSpecific): this {\n this.specific = _.mergeWith({}, this.specific, settings, (objValue, srcValue) => {\n if (_.isArray(objValue) && _.isArray(srcValue)) {\n return _.union(objValue, srcValue);\n }\n });\n\n return this;\n }\n\n public setIcons(icons?: ManifestIcons): this {\n this.icons = icons || new Map();\n\n return this;\n }\n\n public setIcon(icon?: string): this {\n this.icon = icon;\n\n return this;\n }\n\n public setBackground(background?: ManifestBackground): this {\n this.background = background;\n\n return this;\n }\n\n public setCommands(commands?: ManifestCommands): this {\n this.commands = commands || new Set();\n\n return this;\n }\n\n public setContentScripts(contentScripts?: ManifestContentScripts): this {\n this.contentScripts = contentScripts || new Set();\n\n return this;\n }\n\n public setPopup(popup?: ManifestPopup): this {\n this.popup = popup;\n\n return this;\n }\n\n public setSidebar(sidebar?: ManifestSidebar): this {\n this.sidebar = sidebar;\n\n return this;\n }\n\n public setOptions(options?: ManifestOptions): this {\n this.options = options;\n\n return this;\n }\n\n public addSandbox(sandbox: ManifestSandbox): this {\n this.sandboxes.add(sandbox);\n\n return this;\n }\n\n public appendSandboxes(sandboxes: Iterable<ManifestSandbox>): this {\n for (const sandbox of sandboxes) {\n this.addSandbox(sandbox);\n }\n\n return this;\n }\n\n public addSandboxCsp(csp: SandboxCspConfig): this {\n this.sandboxCsp.add(csp);\n\n return this;\n }\n\n public appendSandboxCsp(csps: Iterable<SandboxCspConfig>): this {\n for (const csp of csps) {\n this.addSandboxCsp(csp);\n }\n\n return this;\n }\n\n public addCsp(csp: CspConfig): this {\n this.csp.add(csp);\n\n return this;\n }\n\n public appendCsp(csps: Iterable<CspConfig>): this {\n for (const csp of csps) {\n this.addCsp(csp);\n }\n\n return this;\n }\n\n public setDependencies(dependencies: ManifestDependencies): this {\n this.dependencies = dependencies;\n\n return this;\n }\n\n public addPermission(permission: ManifestPermission): this {\n this.permissions.add(permission);\n\n return this;\n }\n\n public setPermissions(permissions: ManifestPermissions): this {\n this.permissions = permissions;\n\n return this;\n }\n\n public appendPermissions(permissions: ManifestPermissions): this {\n for (const permission of permissions) {\n this.permissions.add(permission);\n }\n\n return this;\n }\n\n public addOptionalPermission(permission: ManifestOptionalPermission): this {\n this.optionalPermissions.add(permission);\n\n return this;\n }\n\n public setOptionalPermissions(permissions: ManifestOptionalPermissions): this {\n this.optionalPermissions = permissions;\n\n return this;\n }\n\n public appendOptionalPermissions(permissions: ManifestOptionalPermissions): this {\n for (const permission of permissions) {\n this.optionalPermissions.add(permission);\n }\n\n return this;\n }\n\n public addHostPermission(permission: string): this {\n this.hostPermissions.add(permission);\n\n return this;\n }\n\n public setHostPermissions(permissions: ManifestHostPermissions): this {\n this.hostPermissions = permissions;\n\n return this;\n }\n\n public appendHostPermissions(permissions: ManifestHostPermissions): this {\n for (const permission of permissions) {\n this.hostPermissions.add(permission);\n }\n\n return this;\n }\n\n public addOptionalHostPermission(permission: string): this {\n this.optionalHostPermissions.add(permission);\n\n return this;\n }\n\n public setOptionalHostPermissions(permissions: ManifestHostPermissions): this {\n this.optionalHostPermissions = permissions;\n\n return this;\n }\n\n public appendOptionalHostPermissions(permissions: ManifestHostPermissions): this {\n for (const permission of permissions) {\n this.optionalHostPermissions.add(permission);\n }\n\n return this;\n }\n\n public addAccessibleResource(accessibleResource: ManifestAccessibleResource): this {\n this.accessibleResources.add(accessibleResource);\n\n return this;\n }\n\n public appendAccessibleResources(accessibleResources: ManifestAccessibleResources): this {\n for (const accessibleResource of accessibleResources) {\n this.accessibleResources.add(accessibleResource);\n }\n\n return this;\n }\n\n public setAccessibleResource(accessibleResources: ManifestAccessibleResources): this {\n this.accessibleResources = accessibleResources;\n\n return this;\n }\n\n public raw(manifest: OptionalManifest): this {\n this.raws.add(manifest);\n\n return this;\n }\n\n public build(): T {\n const manifest = this.merge<Manifest>(\n this.buildName(),\n this.buildShortName(),\n this.buildDescription(),\n this.buildVersion(),\n this.buildManifestVersion(),\n this.buildMinimumChromeVersion(),\n this.buildAuthor(),\n this.buildHomepageUrl(),\n this.buildIncognito(),\n this.buildLocale(),\n this.buildIcons(),\n this.buildBackground(),\n this.buildCommands(),\n this.buildAction(),\n this.buildSidebar(),\n this.buildOptions(),\n this.buildContentScripts(),\n this.buildPermissions(),\n this.buildOptionalPermissions(),\n this.buildHostPermissions(),\n this.buildOptionalHostPermissions(),\n this.buildWebAccessibleResources(),\n this.buildSandbox(),\n this.buildCsp(),\n this.buildBrowserSpecificSettings(),\n this.buildRaw()\n ) as T;\n\n return manifest;\n }\n\n public get(): T {\n return this.build();\n }\n\n private merge<T extends CoreManifest>(...sources: Array<Partial<T> | undefined>): T {\n sources = sources.filter(source => source !== undefined);\n\n if (sources.length === 0) {\n throw new ManifestError(\"No sources provided for manifest merging\");\n }\n\n const result = {} as T;\n\n for (const source of sources) {\n Object.assign(result, source);\n }\n\n return result;\n }\n\n protected buildName(): Partial<CoreManifest> {\n return {name: this.name || this.combinedRaws.name || \"__MSG_app_name__\"};\n }\n\n protected buildShortName(): Partial<CoreManifest> | undefined {\n const shortName = this.shortName || this.combinedRaws.short_name;\n return shortName ? {short_name: shortName} : undefined;\n }\n\n protected buildDescription(): Partial<CoreManifest> | undefined {\n const description = this.description || this.combinedRaws.description;\n return description ? {description} : undefined;\n }\n\n protected buildVersion(): Partial<CoreManifest> {\n return {version: this.version || this.combinedRaws.version || \"0.0.0\"};\n }\n\n protected buildManifestVersion(): Partial<CoreManifest> {\n return {manifest_version: this.getManifestVersion()};\n }\n\n protected buildMinimumChromeVersion(): Partial<CoreManifest> | undefined {\n const version = this.minimumVersion || this.combinedRaws.minimum_chrome_version;\n return version ? {minimum_chrome_version: version} : undefined;\n }\n\n protected buildAuthor(): Partial<CoreManifest> | undefined {\n const author = this.author || this.combinedRaws.author;\n return author ? {author} : undefined;\n }\n\n protected buildHomepageUrl(): Partial<CoreManifest> | undefined {\n const homepage = this.homepage || this.combinedRaws.homepage_url;\n return homepage ? {homepage_url: homepage} : undefined;\n }\n\n protected buildIncognito(): Partial<CoreManifest> | undefined {\n const incognito = this.incognito || this.combinedRaws.incognito;\n return incognito !== undefined ? {incognito} : undefined;\n }\n\n protected buildLocale(): Partial<CoreManifest> | undefined {\n const defaultLocale = this.locale || this.combinedRaws.default_locale;\n return defaultLocale ? {default_locale: defaultLocale} : undefined;\n }\n\n protected buildIcons(): Partial<CoreManifest> | undefined {\n const icons = {\n ...this.combinedRaws.icons,\n ...this.getIconsByName(this.icon),\n };\n return Object.keys(icons).length ? {icons} : undefined;\n }\n\n protected buildBackground(): Partial<CoreManifest> | undefined {\n if (this.background) {\n const {entry, persistent} = this.background;\n\n const dependencies = this.dependencies.get(entry);\n\n if (!dependencies) {\n throw new ManifestError(`Background entry \"${entry}\" not found in dependencies`);\n }\n\n if (dependencies.js.size === 0) {\n throw new ManifestError(`Background entry \"${entry}\" has no dependencies`);\n }\n\n const scripts = Array.from(dependencies.js);\n\n return {background: {scripts, persistent: persistent || undefined}};\n }\n }\n\n protected buildCommands(): Partial<CoreManifest> | undefined {\n const internalCommands = Array.from(this.commands).reduce(\n (commands, command) => {\n return {\n ...commands,\n [command.name]: {\n suggested_key: {\n default: command?.defaultKey,\n windows: command?.windowsKey,\n mac: command?.macKey,\n chromeos: command?.chromeosKey,\n linux: command?.linuxKey,\n },\n description:\n command?.description ||\n (command.name === CommandExecuteActionName ? undefined : command.name),\n global: command?.global,\n },\n };\n },\n {} as CoreManifest[\"commands\"]\n );\n\n const commands = _.merge(this.combinedRaws.commands, internalCommands);\n\n if (Object.keys(commands).length) return {commands};\n }\n\n protected buildContentScripts(): Partial<CoreManifest> | undefined {\n const contentScripts: ManifestV3[\"content_scripts\"] = [];\n\n if (this.combinedRaws.content_scripts) {\n contentScripts.push(...this.combinedRaws.content_scripts);\n }\n\n if (this.contentScripts.size > 0) {\n for (const script of this.contentScripts.values()) {\n const {\n entry,\n matches,\n excludeMatches,\n allFrames,\n runAt,\n excludeGlobs,\n includeGlobs,\n world,\n matchAboutBlank,\n matchOriginAsFallback,\n } = script;\n\n const dependencies = this.dependencies.get(entry);\n\n if (!dependencies) {\n throw new ManifestError(`Content script entry \"${entry}\" not found in dependencies`);\n }\n\n const js = Array.from(dependencies.js);\n const css = Array.from(dependencies.css);\n\n if (js.length === 0 && css.length === 0) {\n throw new ManifestError(`Content script and style entry \"${entry}\" not found in dependencies`);\n }\n\n contentScripts.push({\n matches,\n exclude_matches: excludeMatches,\n js: js.length > 0 ? js : undefined,\n css: css.length > 0 ? css : undefined,\n all_frames: allFrames,\n run_at: runAt,\n exclude_globs: excludeGlobs,\n include_globs: includeGlobs,\n match_about_blank: matchAboutBlank,\n //@ts-ignore\n match_origin_as_fallback: matchOriginAsFallback,\n world,\n });\n }\n }\n\n return contentScripts.length ? {content_scripts: contentScripts} : undefined;\n }\n\n protected buildSidebar(): Partial<CoreManifest> | undefined {\n if (!this.sidebar) {\n const sidebarAction = this.combinedRaws.sidebar_action;\n const sidePanel = this.combinedRaws.side_panel;\n\n if (SidebarAlternativeBrowsers.has(this.browser)) {\n if (sidebarAction) return {sidebar_action: sidebarAction};\n } else {\n if (sidePanel) return {side_panel: sidePanel};\n }\n\n return;\n }\n\n const {path, icon, title} = this.sidebar;\n\n const commonProps = {\n open_at_install: this.browser === Browser.Firefox ? false : undefined,\n default_title: title || this.name,\n default_icon: this.getIconsByName(icon),\n };\n\n return SidebarAlternativeBrowsers.has(this.browser)\n ? {sidebar_action: {...commonProps, default_panel: path}}\n : {side_panel: {...commonProps, default_path: path}};\n }\n\n protected buildOptions(): Partial<CoreManifest> {\n if (this.options) {\n return {\n options_ui: {\n page: this.options.path,\n open_in_tab: this.options.openInTab ?? true,\n },\n };\n }\n\n return _.pick(this.combinedRaws, [\"options_ui\", \"options_page\"]);\n }\n\n protected buildBrowserSpecificSettings(): Partial<Manifest> | undefined {\n const optionalSettings = this.combinedRaws.browser_specific_settings;\n const {safari, gecko, geckoAndroid} = this.specific || {};\n\n if (this.browser === Browser.Firefox) {\n const id = gecko?.id || optionalSettings?.gecko?.id;\n const updateUrl = gecko?.updateUrl || optionalSettings?.gecko?.update_url;\n const geckoMinVersion = gecko?.strictMinVersion || optionalSettings?.gecko?.strict_min_version;\n const geckoMaxVersion = gecko?.strictMaxVersion || optionalSettings?.gecko?.strict_max_version;\n const dataCollectionPermissions = _.mergeWith(\n optionalSettings?.gecko?.data_collection_permissions,\n gecko?.dataCollectionPermissions,\n (objValue, srcValue) => {\n if (Array.isArray(objValue) && Array.isArray(srcValue)) {\n return objValue.concat(srcValue);\n }\n }\n );\n\n const androidMinVersion =\n geckoAndroid?.strictMinVersion || optionalSettings?.gecko_android?.strict_min_version;\n const androidMaxVersion =\n geckoAndroid?.strictMaxVersion || optionalSettings?.gecko_android?.strict_max_version;\n\n return {\n browser_specific_settings: {\n gecko: {\n id,\n update_url: updateUrl,\n strict_min_version: geckoMinVersion,\n strict_max_version: geckoMaxVersion,\n data_collection_permissions: normalizeDataCollectionPermissions(dataCollectionPermissions),\n },\n gecko_android:\n _.isEmpty(androidMinVersion) && _.isEmpty(androidMaxVersion)\n ? undefined\n : {\n strict_min_version: androidMinVersion,\n strict_max_version: androidMaxVersion,\n },\n },\n };\n } else if (this.browser === Browser.Safari) {\n const minVersion = safari?.strictMinVersion || optionalSettings?.safari?.strict_min_version;\n const maxVersion = safari?.strictMaxVersion || optionalSettings?.safari?.strict_max_version;\n\n if (_.isEmpty(minVersion) && _.isEmpty(maxVersion)) {\n return;\n }\n\n return {\n browser_specific_settings: {\n safari: {\n strict_min_version: minVersion,\n strict_max_version: maxVersion,\n },\n },\n };\n }\n }\n\n protected buildRaw(): Partial<Manifest> | undefined {\n const {\n name,\n short_name,\n description,\n version,\n minimum_chrome_version,\n author,\n homepage_url,\n incognito,\n default_locale,\n icons,\n background,\n commands,\n action,\n sidebar,\n options_ui,\n options_page,\n content_scripts,\n permissions,\n optional_permissions,\n host_permissions,\n optional_host_permissions,\n web_accessible_resources,\n sandbox,\n content_security_policy,\n browser_specific_settings,\n ...other\n } = this.combinedRaws;\n\n return other;\n }\n\n protected getSandboxes(): string[] {\n const sandboxes = new Set<string>();\n const rawSandbox = this.combinedRaws.sandbox as {pages?: string[]} | undefined;\n\n for (const sandbox of rawSandbox?.pages || []) {\n sandboxes.add(sandbox);\n }\n\n for (const sandbox of this.sandboxes) {\n sandboxes.add(sandbox);\n }\n\n return Array.from(sandboxes);\n }\n\n protected hasExecuteActionCommand(): boolean {\n const optionalCommands = this.combinedRaws.commands;\n\n const inInternalCommands =\n this.commands.size > 0 && Array.from(this.commands).some(({name}) => name === CommandExecuteActionName);\n const inOptionalCommands = optionalCommands && Object.keys(optionalCommands).includes(CommandExecuteActionName);\n return inInternalCommands || inOptionalCommands;\n }\n\n protected getIconsByName(name?: string): CoreManifestIcons | undefined {\n if (this.icons.size === 0) {\n return;\n }\n\n if (!name) {\n name = DefaultIconGroupName;\n }\n\n const icons = this.icons.get(name) || this.icons.get(DefaultIconGroupName) || this.icons.values().next().value;\n\n if (icons) {\n return Object.fromEntries(icons);\n }\n }\n\n public getWebAccessibleResources(): ManifestAccessibleResource[] {\n const resources: ManifestAccessibleResource[] = [...this.accessibleResources];\n\n for (const contentScript of this.contentScripts.values()) {\n const dependencies = this.dependencies.get(contentScript.entry);\n const assets = dependencies?.assets;\n\n if (assets && assets.size > 0) {\n resources.push({\n resources: Array.from(assets),\n matches: contentScript.matches || ContentScriptMatches,\n });\n }\n }\n\n for (const resource of this.combinedRaws.web_accessible_resources || []) {\n if (typeof resource === \"string\") {\n // MV2 resource lists grant access to all sites and extensions.\n resources.push({resources: [resource], matches: [\"<all_urls>\"], extensionIds: [\"*\"]});\n } else {\n resources.push({\n resources: resource.resources,\n matches: resource.matches,\n extensionIds: resource.extension_ids,\n useDynamicUrl: resource.use_dynamic_url,\n });\n }\n }\n\n return mergeWebAccessibleResources(resources);\n }\n}\n"],"mappings":"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","names":["commands"]}
@@ -1,5 +1,5 @@
1
1
  import ManifestBase, { ManifestError } from "./ManifestBase.js";
2
- import { filterHostPatterns, filterOptionalPermissions, filterPermissionsForMV2 } from "./utils.js";
2
+ import { filterHostPatterns, filterOptionalPermissions, filterPermissionsForMV2 } from "./utils/index.js";
3
3
  import { Browser } from "./../../../types/browser.js";
4
4
  import { SidebarAlternativeBrowsers } from "./../../../types/sidebar.js";
5
5
  class ManifestV2_default extends ManifestBase {
@@ -1,5 +1,5 @@
1
1
  import ManifestBase, { ManifestError } from "./ManifestBase.js";
2
- import { filterHostPatterns, filterOptionalPermissions, filterPermissionsForMV3 } from "./utils.js";
2
+ import { filterHostPatterns, filterOptionalPermissions, filterPermissionsForMV3 } from "./utils/index.js";
3
3
  import { Browser } from "./../../../types/browser.js";
4
4
  class ManifestV3_default extends ManifestBase {
5
5
  constructor(browser) {
@@ -79,10 +79,17 @@ class ManifestV3_default extends ManifestBase {
79
79
  }
80
80
  buildWebAccessibleResources() {
81
81
  const resources = this.getWebAccessibleResources();
82
- const transformedResources = resources.map((resource) => ({
83
- resources: resource.resources,
84
- matches: resource.matches || []
85
- }));
82
+ const transformedResources = resources.map((resource) => {
83
+ const entry = {
84
+ resources: resource.resources,
85
+ ...resource.useDynamicUrl !== void 0 ? { use_dynamic_url: resource.useDynamicUrl } : {}
86
+ };
87
+ return resource.extensionIds ? {
88
+ ...entry,
89
+ extension_ids: resource.extensionIds,
90
+ ...resource.matches ? { matches: resource.matches } : {}
91
+ } : { ...entry, matches: resource.matches || [] };
92
+ });
86
93
  if (resources.length > 0) {
87
94
  return { web_accessible_resources: transformedResources };
88
95
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/builders/manifest/ManifestV3.ts"],"sourcesContent":["import ManifestBase, {ManifestError} from \"./ManifestBase\";\n\nimport {filterHostPatterns, filterOptionalPermissions, filterPermissionsForMV3} from \"./utils\";\n\nimport {CoreManifest, ManifestAccessibleResource, ManifestVersion} from \"@typing/manifest\";\nimport {Browser} from \"@typing/browser\";\n\ntype ManifestV3 = chrome.runtime.ManifestV3;\n\nexport default class extends ManifestBase<ManifestV3> {\n public constructor(browser: Browser) {\n super(browser);\n }\n\n public getManifestVersion(): ManifestVersion {\n return 3;\n }\n\n protected buildBackground(): Partial<CoreManifest> | undefined {\n if (this.browser === Browser.Firefox) {\n const manifest = super.buildBackground();\n\n if (manifest) {\n const {background, ...other} = manifest;\n\n return {...other, background: {...background, persistent: undefined}};\n }\n\n return;\n }\n\n if (this.background) {\n const {entry} = this.background;\n\n const dependencies = this.dependencies.get(entry);\n\n if (!dependencies) {\n throw new ManifestError(`Background entry \"${entry}\" not found in dependencies`);\n }\n\n if (dependencies.js.size === 0) {\n throw new ManifestError(`Background entry \"${entry}\" has no dependencies`);\n }\n\n if (dependencies.js.size > 1) {\n throw new ManifestError(`Background entry \"${entry}\" has more than one dependency`);\n }\n\n const [js] = Array.from(dependencies.js);\n\n return {background: {service_worker: js}};\n }\n }\n\n protected buildAction(): Partial<ManifestV3> | undefined {\n if (this.popup) {\n const {path, icon, title} = this.popup;\n\n return {\n action: {\n default_title: title || this.name,\n default_popup: path,\n default_icon: this.getIconsByName(icon),\n },\n };\n } else if (this.hasExecuteActionCommand()) {\n return {\n action: {\n default_title: this.name,\n },\n };\n }\n }\n\n protected buildPermissions(): Partial<ManifestV3> | undefined {\n const permissions = Array.from(filterPermissionsForMV3(this.combinedPermissions));\n\n if (permissions.length > 0) {\n return {permissions};\n }\n }\n\n protected buildOptionalPermissions(): Partial<ManifestV3> | undefined {\n const optionalPermissions = filterOptionalPermissions(\n filterPermissionsForMV3(this.combinedOptionalPermissions),\n filterPermissionsForMV3(this.combinedPermissions)\n );\n\n if (optionalPermissions.length > 0) {\n return {optional_permissions: optionalPermissions};\n }\n }\n\n protected buildHostPermissions(): Partial<ManifestV3> | undefined {\n if (this.combinedHostPermissions.size > 0) {\n return {host_permissions: [...filterHostPatterns(this.combinedHostPermissions)]};\n }\n }\n\n protected buildOptionalHostPermissions(): Partial<ManifestV3> | undefined {\n // prettier-ignore\n const optionalHostPermissions = Array\n .from(filterHostPatterns(new Set([...this.combinedHostPermissions, ...this.combinedOptionalHostPermissions])))\n .filter((permission) => !this.combinedHostPermissions.has(permission));\n\n if (optionalHostPermissions.length > 0) {\n return {optional_host_permissions: optionalHostPermissions};\n }\n }\n\n protected buildWebAccessibleResources(): Partial<ManifestV3> | undefined {\n const resources: ManifestAccessibleResource[] = this.getWebAccessibleResources();\n\n const transformedResources = resources.map(resource => ({\n resources: resource.resources,\n matches: resource.matches || [],\n }));\n\n if (resources.length > 0) {\n return {web_accessible_resources: transformedResources};\n }\n }\n\n protected buildSandbox(): Partial<ManifestV3> | undefined {\n if (this.browser === Browser.Firefox) {\n return;\n }\n\n const rawSandbox = (this.combinedRaws.sandbox || {}) as Record<string, any>;\n const sandboxes = this.getSandboxes();\n\n if (sandboxes.length === 0 && Object.keys(rawSandbox).length === 0) {\n return;\n }\n\n return {\n sandbox: {\n ...rawSandbox,\n pages: sandboxes,\n },\n } as Partial<ManifestV3>;\n }\n\n protected buildCsp(): Partial<ManifestV3> | undefined {\n const rawCsp = this.combinedRaws.content_security_policy;\n const csp = this.csp.build();\n const sandboxCsp = this.sandboxCsp.build();\n\n if (this.browser === Browser.Firefox) {\n if (!rawCsp && !csp) {\n return;\n }\n\n if (typeof rawCsp === \"string\") {\n if (csp) {\n throw new ManifestError(\n \"Cannot merge extension pages content security policy with a string content_security_policy.\"\n );\n }\n\n return {content_security_policy: rawCsp} as Partial<ManifestV3>;\n }\n\n const {sandbox, ...contentCsp} = rawCsp || {};\n\n if (csp && contentCsp.extension_pages) {\n throw new ManifestError(\n \"Cannot merge extension pages content security policy with raw content_security_policy.extension_pages.\"\n );\n }\n\n if (csp) {\n contentCsp.extension_pages = csp;\n }\n\n return Object.keys(contentCsp).length > 0\n ? ({content_security_policy: contentCsp} as Partial<ManifestV3>)\n : undefined;\n }\n\n if (!rawCsp && !sandboxCsp && !csp) {\n return;\n }\n\n if (typeof rawCsp === \"string\") {\n if (sandboxCsp || csp) {\n throw new ManifestError(\n \"Cannot merge framework content security policy with a string content_security_policy.\"\n );\n }\n\n return {content_security_policy: rawCsp} as Partial<ManifestV3>;\n }\n\n if (csp && rawCsp?.extension_pages) {\n throw new ManifestError(\n \"Cannot merge extension pages content security policy with raw content_security_policy.extension_pages.\"\n );\n }\n\n return {\n content_security_policy: {\n ...rawCsp,\n ...(csp ? {extension_pages: csp} : {}),\n ...(sandboxCsp || rawCsp?.sandbox ? {sandbox: sandboxCsp || rawCsp?.sandbox} : {}),\n },\n } as Partial<ManifestV3>;\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/cli/builders/manifest/ManifestV3.ts"],"sourcesContent":["import ManifestBase, {ManifestError} from \"./ManifestBase\";\n\nimport {filterHostPatterns, filterOptionalPermissions, filterPermissionsForMV3} from \"./utils\";\n\nimport {CoreManifest, ManifestAccessibleResource, ManifestVersion} from \"@typing/manifest\";\nimport {Browser} from \"@typing/browser\";\n\ntype ManifestV3 = chrome.runtime.ManifestV3;\n\nexport default class extends ManifestBase<ManifestV3> {\n public constructor(browser: Browser) {\n super(browser);\n }\n\n public getManifestVersion(): ManifestVersion {\n return 3;\n }\n\n protected buildBackground(): Partial<CoreManifest> | undefined {\n if (this.browser === Browser.Firefox) {\n const manifest = super.buildBackground();\n\n if (manifest) {\n const {background, ...other} = manifest;\n\n return {...other, background: {...background, persistent: undefined}};\n }\n\n return;\n }\n\n if (this.background) {\n const {entry} = this.background;\n\n const dependencies = this.dependencies.get(entry);\n\n if (!dependencies) {\n throw new ManifestError(`Background entry \"${entry}\" not found in dependencies`);\n }\n\n if (dependencies.js.size === 0) {\n throw new ManifestError(`Background entry \"${entry}\" has no dependencies`);\n }\n\n if (dependencies.js.size > 1) {\n throw new ManifestError(`Background entry \"${entry}\" has more than one dependency`);\n }\n\n const [js] = Array.from(dependencies.js);\n\n return {background: {service_worker: js}};\n }\n }\n\n protected buildAction(): Partial<ManifestV3> | undefined {\n if (this.popup) {\n const {path, icon, title} = this.popup;\n\n return {\n action: {\n default_title: title || this.name,\n default_popup: path,\n default_icon: this.getIconsByName(icon),\n },\n };\n } else if (this.hasExecuteActionCommand()) {\n return {\n action: {\n default_title: this.name,\n },\n };\n }\n }\n\n protected buildPermissions(): Partial<ManifestV3> | undefined {\n const permissions = Array.from(filterPermissionsForMV3(this.combinedPermissions));\n\n if (permissions.length > 0) {\n return {permissions};\n }\n }\n\n protected buildOptionalPermissions(): Partial<ManifestV3> | undefined {\n const optionalPermissions = filterOptionalPermissions(\n filterPermissionsForMV3(this.combinedOptionalPermissions),\n filterPermissionsForMV3(this.combinedPermissions)\n );\n\n if (optionalPermissions.length > 0) {\n return {optional_permissions: optionalPermissions};\n }\n }\n\n protected buildHostPermissions(): Partial<ManifestV3> | undefined {\n if (this.combinedHostPermissions.size > 0) {\n return {host_permissions: [...filterHostPatterns(this.combinedHostPermissions)]};\n }\n }\n\n protected buildOptionalHostPermissions(): Partial<ManifestV3> | undefined {\n // prettier-ignore\n const optionalHostPermissions = Array\n .from(filterHostPatterns(new Set([...this.combinedHostPermissions, ...this.combinedOptionalHostPermissions])))\n .filter((permission) => !this.combinedHostPermissions.has(permission));\n\n if (optionalHostPermissions.length > 0) {\n return {optional_host_permissions: optionalHostPermissions};\n }\n }\n\n protected buildWebAccessibleResources(): Partial<ManifestV3> | undefined {\n const resources: ManifestAccessibleResource[] = this.getWebAccessibleResources();\n\n const transformedResources = resources.map(resource => {\n const entry = {\n resources: resource.resources,\n ...(resource.useDynamicUrl !== undefined ? {use_dynamic_url: resource.useDynamicUrl} : {}),\n };\n\n return resource.extensionIds\n ? {\n ...entry,\n extension_ids: resource.extensionIds,\n ...(resource.matches ? {matches: resource.matches} : {}),\n }\n : {...entry, matches: resource.matches || []};\n });\n\n if (resources.length > 0) {\n return {web_accessible_resources: transformedResources};\n }\n }\n\n protected buildSandbox(): Partial<ManifestV3> | undefined {\n if (this.browser === Browser.Firefox) {\n return;\n }\n\n const rawSandbox = (this.combinedRaws.sandbox || {}) as Record<string, any>;\n const sandboxes = this.getSandboxes();\n\n if (sandboxes.length === 0 && Object.keys(rawSandbox).length === 0) {\n return;\n }\n\n return {\n sandbox: {\n ...rawSandbox,\n pages: sandboxes,\n },\n } as Partial<ManifestV3>;\n }\n\n protected buildCsp(): Partial<ManifestV3> | undefined {\n const rawCsp = this.combinedRaws.content_security_policy;\n const csp = this.csp.build();\n const sandboxCsp = this.sandboxCsp.build();\n\n if (this.browser === Browser.Firefox) {\n if (!rawCsp && !csp) {\n return;\n }\n\n if (typeof rawCsp === \"string\") {\n if (csp) {\n throw new ManifestError(\n \"Cannot merge extension pages content security policy with a string content_security_policy.\"\n );\n }\n\n return {content_security_policy: rawCsp} as Partial<ManifestV3>;\n }\n\n const {sandbox, ...contentCsp} = rawCsp || {};\n\n if (csp && contentCsp.extension_pages) {\n throw new ManifestError(\n \"Cannot merge extension pages content security policy with raw content_security_policy.extension_pages.\"\n );\n }\n\n if (csp) {\n contentCsp.extension_pages = csp;\n }\n\n return Object.keys(contentCsp).length > 0\n ? ({content_security_policy: contentCsp} as Partial<ManifestV3>)\n : undefined;\n }\n\n if (!rawCsp && !sandboxCsp && !csp) {\n return;\n }\n\n if (typeof rawCsp === \"string\") {\n if (sandboxCsp || csp) {\n throw new ManifestError(\n \"Cannot merge framework content security policy with a string content_security_policy.\"\n );\n }\n\n return {content_security_policy: rawCsp} as Partial<ManifestV3>;\n }\n\n if (csp && rawCsp?.extension_pages) {\n throw new ManifestError(\n \"Cannot merge extension pages content security policy with raw content_security_policy.extension_pages.\"\n );\n }\n\n return {\n content_security_policy: {\n ...rawCsp,\n ...(csp ? {extension_pages: csp} : {}),\n ...(sandboxCsp || rawCsp?.sandbox ? {sandbox: sandboxCsp || rawCsp?.sandbox} : {}),\n },\n } as Partial<ManifestV3>;\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,15 @@
1
+ import { DataCollectionPermissions } from "../../../../types/browser.js";
2
+ /**
3
+ * Normalizes data collection permissions for the manifest.
4
+ *
5
+ * - Removes duplicate permissions.
6
+ * - Filters out invalid permissions not present in DataCollectionPermission enum.
7
+ * - Sets "none" as default if required permissions are empty.
8
+ * - Removes "none" if real permissions are added to required.
9
+ * - Removes "none" from optional permissions.
10
+ * - Removes any permission from optional if it's already in required.
11
+ * - Sorts both required and optional permissions alphabetically.
12
+ *
13
+ * @param permissions - The permissions object to normalize.
14
+ */
15
+ export declare const normalizeDataCollectionPermissions: (permissions?: DataCollectionPermissions) => DataCollectionPermissions;
@@ -0,0 +1,26 @@
1
+ import _ from "lodash";
2
+ import { DataCollectionPermission } from "./../../../../types/browser.js";
3
+ const normalizeDataCollectionPermissions = (permissions) => {
4
+ const validPermissions = Object.values(DataCollectionPermission);
5
+ let required = _.uniq((permissions == null ? void 0 : permissions.required) || []).filter(
6
+ (p) => p === "none" || validPermissions.includes(p)
7
+ );
8
+ let optional = _.uniq((permissions == null ? void 0 : permissions.optional) || []).filter(
9
+ (p) => p !== "none" && validPermissions.includes(p)
10
+ );
11
+ if (required.length === 0) {
12
+ required = ["none"];
13
+ }
14
+ if (required.length > 1 && required.includes("none")) {
15
+ required = _.without(required, "none");
16
+ }
17
+ optional = _.difference(optional, required);
18
+ return {
19
+ required: required.toSorted(),
20
+ optional: optional.length > 0 ? optional.toSorted() : void 0
21
+ };
22
+ };
23
+ export {
24
+ normalizeDataCollectionPermissions
25
+ };
26
+ //# sourceMappingURL=data-collection-permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/cli/builders/manifest/utils/data-collection-permissions.ts"],"sourcesContent":["import _ from \"lodash\";\nimport {DataCollectionPermission, DataCollectionPermissions} from \"@typing/browser\";\n\n/**\n * Normalizes data collection permissions for the manifest.\n *\n * - Removes duplicate permissions.\n * - Filters out invalid permissions not present in DataCollectionPermission enum.\n * - Sets \"none\" as default if required permissions are empty.\n * - Removes \"none\" if real permissions are added to required.\n * - Removes \"none\" from optional permissions.\n * - Removes any permission from optional if it's already in required.\n * - Sorts both required and optional permissions alphabetically.\n *\n * @param permissions - The permissions object to normalize.\n */\nexport const normalizeDataCollectionPermissions = (\n permissions?: DataCollectionPermissions\n): DataCollectionPermissions => {\n const validPermissions = Object.values(DataCollectionPermission) as string[];\n\n let required = _.uniq(permissions?.required || []).filter(\n p => (p as string) === \"none\" || validPermissions.includes(p as string)\n );\n\n let optional = _.uniq(permissions?.optional || []).filter(\n p => (p as string) !== \"none\" && validPermissions.includes(p as string)\n );\n\n if (required.length === 0) {\n required = [\"none\" as any];\n }\n\n if (required.length > 1 && required.includes(\"none\" as any)) {\n required = _.without(required, \"none\" as any);\n }\n\n optional = _.difference(optional, required);\n\n return {\n required: required.toSorted() as DataCollectionPermissions[\"required\"],\n optional: optional.length > 0 ? (optional.toSorted() as DataCollectionPermissions[\"optional\"]) : undefined,\n };\n};\n"],"mappings":"AAAA,OAAO,OAAO;AACd,SAAQ,gCAA0D;AAe3D,MAAM,qCAAqC,CAC9C,gBAC4B;AAC5B,QAAM,mBAAmB,OAAO,OAAO,wBAAwB;AAE/D,MAAI,WAAW,EAAE,MAAK,2CAAa,aAAY,CAAC,CAAC,EAAE;AAAA,IAC/C,OAAM,MAAiB,UAAU,iBAAiB,SAAS,CAAW;AAAA,EAC1E;AAEA,MAAI,WAAW,EAAE,MAAK,2CAAa,aAAY,CAAC,CAAC,EAAE;AAAA,IAC/C,OAAM,MAAiB,UAAU,iBAAiB,SAAS,CAAW;AAAA,EAC1E;AAEA,MAAI,SAAS,WAAW,GAAG;AACvB,eAAW,CAAC,MAAa;AAAA,EAC7B;AAEA,MAAI,SAAS,SAAS,KAAK,SAAS,SAAS,MAAa,GAAG;AACzD,eAAW,EAAE,QAAQ,UAAU,MAAa;AAAA,EAChD;AAEA,aAAW,EAAE,WAAW,UAAU,QAAQ;AAE1C,SAAO;AAAA,IACH,UAAU,SAAS,SAAS;AAAA,IAC5B,UAAU,SAAS,SAAS,IAAK,SAAS,SAAS,IAA8C;AAAA,EACrG;AACJ;","names":[]}
@@ -0,0 +1 @@
1
+ export declare const filterHostPatterns: (patterns: Set<string>) => Set<string>;
@@ -0,0 +1,40 @@
1
+ import _ from "lodash";
2
+ import { ManifestMatchSchemes } from "./../../../../types/manifest.js";
3
+ const parseHostPattern = (pattern) => {
4
+ const match = pattern.match(/^([^:]+):\/\/([^/]*)(\/.*)$/);
5
+ if (!match) return;
6
+ const [, scheme, host, path] = match;
7
+ if (scheme !== "*" && !ManifestMatchSchemes.has(scheme)) return;
8
+ return {
9
+ scheme,
10
+ host,
11
+ path,
12
+ pathMatcher: new RegExp(`^${path.split("*").map(_.escapeRegExp).join(".*")}$`)
13
+ };
14
+ };
15
+ const isHostPatternCovered = (pattern, covering) => {
16
+ if (!pattern || !covering) return false;
17
+ const schemeCovered = covering.scheme === pattern.scheme || covering.scheme === "*" && (pattern.scheme === "http" || pattern.scheme === "https");
18
+ if (!schemeCovered) return false;
19
+ const hostCovered = covering.host === "*" || covering.host === pattern.host || covering.host.startsWith("*.") && (pattern.host === covering.host.slice(2) || pattern.host.endsWith(covering.host.slice(1)));
20
+ if (!hostCovered) return false;
21
+ return covering.pathMatcher.test(pattern.path);
22
+ };
23
+ const filterHostPatterns = (patterns) => {
24
+ if (patterns.has("<all_urls>")) {
25
+ return /* @__PURE__ */ new Set(["<all_urls>"]);
26
+ }
27
+ const entries = Array.from(patterns, (pattern) => ({ pattern, parsed: parseHostPattern(pattern) }));
28
+ return new Set(
29
+ entries.filter(
30
+ (entry, index) => !entries.some(
31
+ (other, otherIndex) => index !== otherIndex && isHostPatternCovered(entry.parsed, other.parsed) && // Equivalent patterns keep their first occurrence instead of removing each other.
32
+ (otherIndex < index || !isHostPatternCovered(other.parsed, entry.parsed))
33
+ )
34
+ ).map(({ pattern }) => pattern)
35
+ );
36
+ };
37
+ export {
38
+ filterHostPatterns
39
+ };
40
+ //# sourceMappingURL=host-patterns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/cli/builders/manifest/utils/host-patterns.ts"],"sourcesContent":["import _ from \"lodash\";\nimport {ManifestMatchSchemes} from \"@typing/manifest\";\n\ninterface HostPattern {\n scheme: string;\n host: string;\n path: string;\n pathMatcher: RegExp;\n}\n\nconst parseHostPattern = (pattern: string): HostPattern | undefined => {\n const match = pattern.match(/^([^:]+):\\/\\/([^/]*)(\\/.*)$/);\n if (!match) return;\n\n const [, scheme, host, path] = match;\n if (scheme !== \"*\" && !ManifestMatchSchemes.has(scheme)) return;\n\n return {\n scheme,\n host,\n path,\n pathMatcher: new RegExp(`^${path.split(\"*\").map(_.escapeRegExp).join(\".*\")}$`),\n };\n};\n\nconst isHostPatternCovered = (pattern?: HostPattern, covering?: HostPattern): boolean => {\n if (!pattern || !covering) return false;\n\n const schemeCovered =\n covering.scheme === pattern.scheme ||\n (covering.scheme === \"*\" && (pattern.scheme === \"http\" || pattern.scheme === \"https\"));\n if (!schemeCovered) return false;\n\n const hostCovered =\n covering.host === \"*\" ||\n covering.host === pattern.host ||\n (covering.host.startsWith(\"*.\") &&\n (pattern.host === covering.host.slice(2) || pattern.host.endsWith(covering.host.slice(1))));\n if (!hostCovered) return false;\n\n // Keep path constraints: this utility also filters web-accessible resource matches.\n // Any '*' in the candidate must be consumed by a wildcard in the covering path.\n return covering.pathMatcher.test(pattern.path);\n};\n\nexport const filterHostPatterns = (patterns: Set<string>): Set<string> => {\n if (patterns.has(\"<all_urls>\")) {\n return new Set([\"<all_urls>\"]);\n }\n\n const entries = Array.from(patterns, pattern => ({pattern, parsed: parseHostPattern(pattern)}));\n\n return new Set(\n entries\n .filter(\n (entry, index) =>\n !entries.some(\n (other, otherIndex) =>\n index !== otherIndex &&\n isHostPatternCovered(entry.parsed, other.parsed) &&\n // Equivalent patterns keep their first occurrence instead of removing each other.\n (otherIndex < index || !isHostPatternCovered(other.parsed, entry.parsed))\n )\n )\n .map(({pattern}) => pattern)\n );\n};\n"],"mappings":"AAAA,OAAO,OAAO;AACd,SAAQ,4BAA2B;AASnC,MAAM,mBAAmB,CAAC,YAA6C;AACnE,QAAM,QAAQ,QAAQ,MAAM,6BAA6B;AACzD,MAAI,CAAC,MAAO;AAEZ,QAAM,CAAC,EAAE,QAAQ,MAAM,IAAI,IAAI;AAC/B,MAAI,WAAW,OAAO,CAAC,qBAAqB,IAAI,MAAM,EAAG;AAEzD,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa,IAAI,OAAO,IAAI,KAAK,MAAM,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC,GAAG;AAAA,EACjF;AACJ;AAEA,MAAM,uBAAuB,CAAC,SAAuB,aAAoC;AACrF,MAAI,CAAC,WAAW,CAAC,SAAU,QAAO;AAElC,QAAM,gBACF,SAAS,WAAW,QAAQ,UAC3B,SAAS,WAAW,QAAQ,QAAQ,WAAW,UAAU,QAAQ,WAAW;AACjF,MAAI,CAAC,cAAe,QAAO;AAE3B,QAAM,cACF,SAAS,SAAS,OAClB,SAAS,SAAS,QAAQ,QACzB,SAAS,KAAK,WAAW,IAAI,MACzB,QAAQ,SAAS,SAAS,KAAK,MAAM,CAAC,KAAK,QAAQ,KAAK,SAAS,SAAS,KAAK,MAAM,CAAC,CAAC;AAChG,MAAI,CAAC,YAAa,QAAO;AAIzB,SAAO,SAAS,YAAY,KAAK,QAAQ,IAAI;AACjD;AAEO,MAAM,qBAAqB,CAAC,aAAuC;AACtE,MAAI,SAAS,IAAI,YAAY,GAAG;AAC5B,WAAO,oBAAI,IAAI,CAAC,YAAY,CAAC;AAAA,EACjC;AAEA,QAAM,UAAU,MAAM,KAAK,UAAU,cAAY,EAAC,SAAS,QAAQ,iBAAiB,OAAO,EAAC,EAAE;AAE9F,SAAO,IAAI;AAAA,IACP,QACK;AAAA,MACG,CAAC,OAAO,UACJ,CAAC,QAAQ;AAAA,QACL,CAAC,OAAO,eACJ,UAAU,cACV,qBAAqB,MAAM,QAAQ,MAAM,MAAM;AAAA,SAE9C,aAAa,SAAS,CAAC,qBAAqB,MAAM,QAAQ,MAAM,MAAM;AAAA,MAC/E;AAAA,IACR,EACC,IAAI,CAAC,EAAC,QAAO,MAAM,OAAO;AAAA,EACnC;AACJ;","names":[]}
@@ -0,0 +1,4 @@
1
+ export { filterPermissions, filterPermissionsForMV2, filterPermissionsForMV3, filterOptionalPermissions, } from "./permissions.js";
2
+ export { filterHostPatterns } from "./host-patterns.js";
3
+ export { mergeWebAccessibleResources } from "./web-accessible-resources.js";
4
+ export { normalizeDataCollectionPermissions } from "./data-collection-permissions.js";
@@ -0,0 +1,19 @@
1
+ import {
2
+ filterPermissions,
3
+ filterPermissionsForMV2,
4
+ filterPermissionsForMV3,
5
+ filterOptionalPermissions
6
+ } from "./permissions.js";
7
+ import { filterHostPatterns } from "./host-patterns.js";
8
+ import { mergeWebAccessibleResources } from "./web-accessible-resources.js";
9
+ import { normalizeDataCollectionPermissions } from "./data-collection-permissions.js";
10
+ export {
11
+ filterHostPatterns,
12
+ filterOptionalPermissions,
13
+ filterPermissions,
14
+ filterPermissionsForMV2,
15
+ filterPermissionsForMV3,
16
+ mergeWebAccessibleResources,
17
+ normalizeDataCollectionPermissions
18
+ };
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/cli/builders/manifest/utils/index.ts"],"sourcesContent":["export {\n filterPermissions,\n filterPermissionsForMV2,\n filterPermissionsForMV3,\n filterOptionalPermissions,\n} from \"./permissions\";\nexport {filterHostPatterns} from \"./host-patterns\";\nexport {mergeWebAccessibleResources} from \"./web-accessible-resources\";\nexport {normalizeDataCollectionPermissions} from \"./data-collection-permissions\";\n"],"mappings":"AAAA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP,SAAQ,0BAAyB;AACjC,SAAQ,mCAAkC;AAC1C,SAAQ,0CAAyC;","names":[]}
@@ -0,0 +1,14 @@
1
+ type ManifestPermissions = chrome.runtime.ManifestPermission;
2
+ type ManifestOptionalPermissions = chrome.runtime.ManifestOptionalPermission;
3
+ type Permission = ManifestPermissions | ManifestOptionalPermissions;
4
+ /**
5
+ * Filters and adapts permissions for Manifest V2 compatibility.
6
+ *
7
+ * @param permissions - Set of permissions to filter
8
+ * @returns New set of permissions adapted for Manifest V2
9
+ */
10
+ export declare const filterPermissions: <T extends Permission>(permissions: Set<T>) => Set<T>;
11
+ export declare const filterPermissionsForMV2: <T extends Permission>(permissions: Set<T>) => Set<T>;
12
+ export declare const filterPermissionsForMV3: <T extends Permission>(permissions: Set<T>) => Set<T>;
13
+ export declare const filterOptionalPermissions: <O extends ManifestOptionalPermissions, R extends ManifestPermissions>(optional: Set<O>, required: Set<R>) => O[];
14
+ export {};